【软考】传输层协议TCP与UDP

目录

          • 1. TCP
            • 1.1 说明
            • 1.2 三次握手
          • 2. UDP
          • 3. 例题
            • 3.1 例题1

1. TCP
1.1 说明
  • 1.TCP(Transmission Control Protocol,传输控制协议)是整个 TCP/IP 协议族中最重要的协议之一。
  • 2.它在IP提供的不可靠数据服务的基础上为应用程序提供了一个可靠的、面向连接的、全双工的数据传输服务。
  • 3.最主要和最重要的是TCP采用了重发(Retransmission)技术。
  • 4.在 TCP 传输过程中,发送方启动一个定时器,然后将数据包发出,当接收方收到了这个信息时就给发送方一个确认(Acknowledgement)信息。
  • 5.如果发送方在定时器到点之前没有收到这个确认信息,就重新发送这个数据包。
  • 6.利用 TCP 在源主机和目的主机之间建立和关闭连接操作时,均需要通过三次握手来确认建立和关闭是否成功。
  • 7.三次握手方式如图所示,它通过“序号/确认号”使得系统正常工作,从而使它们的序号达成同步。
    在这里插入图片描述
1.2 三次握手
  • 1.源主机发送一个 SYN(同步)标志位为1的 TCP 数据包,表示想与目标主机进行通信,并发送一个同步序列号(如 SEQ=200)进行同步。
  • 2.目标主机同意进行通信,则响应一个确认(ACK 位置 1),并以下一个序列号为参考进行确认(如 201)。
  • 3.源主机以确认来响应目标主机的 TCP 包,这个确认中包括它想要接收的下一个序列号(该帧可以含有发送的数据)。至此连接建立完成。
  • 4.同样,关闭连接也进行三次握手。
2. UDP
  • 1.用户数据报协议(User Datagram Protocol,UDP)是一种不可靠的、无连接的协议,可以保证应用程序进程间的通信。
  • 2.与同样处在传输层的面向连接的TCP 相比,UDP是一种无连接的协议,它的错误检测功能要弱得多。
  • 3.可以这样说,TCP有助于提供可靠性;而 UDP有助于提高传输的高速率性。
  • 4.必须支持交互式会话的应用程序(如FTP 等)往往使用 TCP;而自己进行错误检测或不需要错误检测的应用程序(如 DNS、SNMP 等)往往使用 UDP。
  • 5.UDP 协议软件的主要作用是将 UDP 消息展示给应用层,它并不负责重新发送丢失的或出错的数据消息,不对接收到的无序 正 数据报重新排序,不消除重复的IP数据报,不对已收到的数据报进行确认,也不负责建立或终止连接。
  • 6.这些问题是由使用 UDP 进行通信的应用程序负责处理的。
  • 7.TCP 虽然提供了一个可靠的数据传输服务,但它是以牺牲通信量来实现的。
  • 8.也就是说,为了完成同样一个任务,TCP需要更多的时间和通信量。
  • 9.这在网络不可靠的时候通过牺牲一些时间换来达到网络的可靠性是可行的,但在网络十分可靠的情况下,则可以采用 UDP,通信量的浪费就会很小(减小开销)。
3. 例题
3.1 例题1
  • 1.题目
1.相比于TCP,UDP的优势为()。
A.可靠传输
B.开销较小
C.拥塞控制
D.流量控制
  • 2.分析
TCP与UDP区别:
1、TCP面向连接(如打电话要先拨号建立连接):UDP是无连接的,即发送数据之前不需要建立连接;
2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;
UDP尽最大努力交付,即不保证可靠交付;
3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流:UDP是面向报文的;
UDP没有押塞控制,因此网络出现拥不会使源主机的发送速率降低(对实时应用很有用,
如IP电话,实时视频会议等);
4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信;
5、TCP首部开销20字节;UDP的首部开销小,只有8个字节;6、TCP的逻辑通信信道是全双工的可靠信道,
UDP则是不可靠信道,整体来看UDP开销较小

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/431544.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

芝法酱学习笔记(0.3)——SpringBoot下使用mybatis做增删改查和报表

零、前言 书接上回,我们搭建了windows下的开发环境,并给出了一个hello world级别的多模块SpringBoot项目。 毕竟java后端开发,离不开数据库的操作,为方便后面内容的讲解,这里再做一期铺垫,core模块下新增一…

安卓13去掉下拉菜单的Dump SysUI 堆的选项 android13删除Dump SysUI 堆

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析3.1 位置13.2 位置24.代码修改5.编译6.彩蛋1.前言 客户需要去掉下拉菜单里面的Dump SysUI 堆图标,不让使用这个功能。 2.问题分析 android的下拉菜单在systemui里面,这里我们只需要定位到对应的添加代…

跟王道学c记录

scanf int a; scanf("%d",&a); 一定要有取地址符 printf 用%f精度修饰符指定想要的小数位数。例如,%5.2f会至少显示5位数字并带有2位小 数的浮点数 用%s精度修饰符简单地表示一个最大的长度,以补充句点前的最小字段长度 printf 数的所有输出都是右对齐的,除非…

Jetpack02-LiveData 数据驱动UI更新(类似EventBus)

前提 LiveData使用了Lifecycle的生命周期,阅读本文前,请先了解Lifecycle源码。 简介 LiveData本质是数据类型,当改变数据的时候,会通知观察者,且只在界面可见的时候才会通知观察者。只能在主线程注册观察者&#xf…

WebRTC编译后替换libwebrtc.aar时提示找不到libjingle_peerconnection_so.so库

Loading native library: jingle_peerconnection_so 问题原因:编译的时候只编译了armeabi-v7a的版本,但是应用程序是arm64-v8a,所以无法运行 解决方法:更新编译脚本,加上arm64-v8a进行编译 ./tools_webrtc/android/bu…

【Docker】如何让docker容器正常使用nvidia显卡

首先确保宿主机正常安装了显卡驱动 nvidia-smi打印显卡信息如下: 安装nvidia-container-toolkit工具 sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit sudo systemctl restart docker运行如下命令测试显卡是否在容器内可用 …

Maya学习笔记:物体的层级关系

文章目录 父子关系设置父子关系同时显示两个大纲视图 组 父子关系 设置父子关系 设置父子物体: 方法1 先选择子物体,按住shift再选中父物体,按P或者G键 方法2 在大纲视图中按住鼠标中间,拖动一个物体到另一个物体上 取消父子关…

TON生态系统开发指南:从零开始构建你的Web3应用

随着Web3的不断发展,TON(The Open Network)生态系统逐渐成为备受瞩目的区块链平台。依托其与Telegram的深度整合,TON生态为开发者提供了一个极具潜力的开发环境,特别是在社交、支付和金融这三个核心领域。本文旨在帮助…

基于STM32的Zeta型数控电源设计

本设计基于STM32F103C6T6为主控芯片,基于Zeta型DC/DC电源的拓扑结构设计一种数控电源。系统包含单片机主控模块、Zeta型升降压模块、驱动模块、电流采样模块、电压采样模块、OLED显示模块、电源模块及按键模块。用电流采样模块采集电流,电压采样模块采集…

【图灵完备 Turing Complete】游戏经验攻略分享 Part.5 编程

编程部分的话,第一关会让你输入机器码,这一章节还是比较简单的,因为操作码是固定给出的,只需要根据题意去编写,完成这章目的是为了解锁下面的关卡。 输入,移动COPY之后进行运算,然后输出。 激光…

【MySql】在ubuntu下安装MySql数据库

目录 查看操作系统版本 添加 MySql APT源 访问下载页面并下载发布包 安装发布包 执行安装命令 从MySql APT源更新包信息 安装MySql 执行安装命令 查看MySql状态 开启自启动 登录MySql 查看操作系统版本 rootVM-24-2-ubuntu:~# lsb_release -a No LSB modules are ava…

stm32 的UART串口波特率115200bps,一秒钟能发多少个数据包,实测给出结论

问题描述 之前觉得串口波特率115200bps,算下来115.2kbps,一秒钟发1k个数据包很容易就实现。 但是实际应用的时候,就发现不一样了。 每个数据包格式如下: 16进制:0A 55 55 00 0D 0A 55 06 24 05 4C 05 5F 05 CE 05 …

AR传送门+特定区域显示内容+放大镜 效果着色器使用

AR传送门特定区域显示内容放大镜 效果 关键词:Portal Mask 1、教程链接: AR 传送门教程 Unity - Portal Mask Implementation - Part 4_哔哩哔哩_bilibili 应用案例效果: 2、案例下载地址:使用unity 2021.3.33f1 obi 工具…

vue echarts tooltip动态绑定模板,并且处理vue事件绑定

先上代码: tooltip: {// 这里是车辆iconshow: true,// trigger: "item",// backgroundColor: "transparent",appendToBody: true,textStyle: {color: "#ffffff" //设置文字颜色},formatter: (params) > {const TruckTooltip Vue.…

全新热门电商API接口,实现闲鱼商品详细搜索功能

近年来,电商行业蓬勃发展,API(Application Programming Interface)接口已经成为电商平台的重要组成部分。API接口不仅可以实现平台间的数据交互,还可以为开发者提供丰富的功能,满足用户多样化的需求。在这个…

嵌入式算吃青春饭么?

嵌入式系统开发并不是传统意义上的“吃青春饭”的行业。这个领域更侧重于技术深度、专业能力和持续学习的态度,而非仅仅依赖于年龄或体力。 嵌入式系统广泛应用于各种设备和系统中,从智能手机、智能家居到工业自动化、医疗设备、汽车电子等,…

Streamlit:使用 Python 快速开发 Web 应用

一、简单介绍 Streamlit 是一个开源 Python 库,官网地址: https://streamlit.io/http://StreamlitStreamlit 是一个开源的 Python 框架,旨在为数据科学家和 后端工程师们提供只需几行代码即可创建动态数据应用的功能。 让没有任何前端基础…

Linux CentsOS定时删除一个目录下(包含子目录)的改动时间大于12小时的文件

Shell脚本 文件目录如下图 ** 查找/ai/img/目录下的所有文件** find /ai/img/ -type f查找/ai/img/目录下的所有上次改动时间大于720分钟(12小时)的文件 12 小时,也就是 720 分钟。所以,我们可以使用 -mmin 720 来查找修改时间超过 720 分钟(…

前端报错401 【已解决】

前端报错401 【已解决】 在前端开发中,HTTP状态码401(Unauthorized)是一个常见的错误,它表明用户试图访问受保护的资源,但未能提供有效的身份验证信息。这个错误不仅关乎用户体验,也直接关系到应用的安全性…

成都睿明智科技有限公司可靠吗?

在这个短视频风靡的时代,抖音已不仅仅是一个娱乐平台,它更是无数商家眼中的蓝海市场,是电商领域的新宠儿。在这场流量与转化的盛宴中,成都睿明智科技有限公司以其敏锐的市场洞察力和专业的服务能力,正逐步成为抖音电商…