TCP与UDP的联系与区别
1.传输控制协议(Transmission ControlProtocol,TCP)
是一种可靠的 面向连接的字节流服务。源主机在传送数据前需要先和目标主机建立连接。然后在此连接上,被编号的数据段按序收发。同时要求对每个数据段进行确认,这样保证了可靠性。如果在指定的时间内没有收到目标主机对所发数据段的确认,源主机将再次发送该数据段。
TCP的三种机制。
TCP建立在无连接的IP基础之上,因此使用了三种机制实现面向连接的服务。
(1)使用序号对数据报进行标记。
这种方式便于TCP接收服务在向高层传递数据之前调整失序的数据包。
(2)TCP使用确认、校验和定时器系统提供可靠性
接收者按照顺序识别出数据报未能到达或发生错误时,接收者将通知发送者;当接收者在华时间没有发送确认信息时,那么发送者就会认为发送的数据包并没有到达接收方,这时发送者就
会考虑重传数据。
(3)TCP使用窗口机制调整数据流量。
窗口机制可以减少因接收方缓冲区满而造成丢失数据报文的可能性
2.用户数据报协议(User DatagramProtocol,UDP)
是一种不可靠的 无连接的数据报服务。源主机在传送数据前不需要和目标主机建立连接。数据附加了源端口号和目标端口号等UDP 报头字段后,直接发往目的主机。这时,每个数据段的可靠性依靠上层协议来保证。在传送数据较少且较的情况下,UDP 比 TCP 更加高效。
如图所示UDP的头部结构。
源端口号(16位) |
目的端口号(16位) |
长度(16位) |
校验和(16位) |
数据 |
源端口号字段
该字段长度为16位。作用与TCP数据段中的端口号字段相同,用来标识源端的应用进程。在需要对方回信时用,不需要时可用全0。
目标端口号字段
该字段长度为16 位。作用与TCP数据段中的端口号字段相同,用来标识目标端的应用进程。在目标交付报文时必须用到。
长度字段
该字段长度为16位。标明UDP头部和UDP数据的总长度字节。
校验和字段
该字段长度为16位。用来对UDP头部和UDP数据进行校验,有错就丢弃。和TCP不同的是,对UDP来说,此字段是可选项,而TCP数据段中的校验和字段是必须有的。
TCP与UDP基本区别:
1、基于连接与无连接。
2、TCP要求系统资源较多,UDP较少。
3、UDP程序结构较简单。
4、流模式(TCP)与数据报模式(UDP)。
5、TCP保证数据正确性,UDP可能丢包。
6、TCP保证数据顺序,UDP不保证。
7、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接。
8、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付。
9、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的,UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)。
10、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信。
11、TCP首部开销20字节;UDP的首部开销小,只有8个字节。
12、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道。
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,完成第四层传输层所指定的功能。
UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。UDP在IP报文的协议号是17。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现