传输层协议UDP与TCP

UDP 协议
UDP 协议用于网络协议传输层交互,不同于TCP UDP 没有重传、重复包的处理,不保证传输可靠性,其下层为IP 协议。
  消息结构

Source Port 占用16 比特,为可选择域,如果不使用可以全写为0 ,指示是发送的端口,但缺乏其它有效信息时,也作为回应的目的端口;Destination Port 占用16 比特,指示目标端口号;length UDP 包的字节长度,包含header 部分,最小值为header 长度8 个字节。
Checksum 为校验位,计算时需要加上UDP 虚拟头部、真实头部、数据部分及末尾补0 部分一起计算。需要补齐整个数据长度为两个字节的倍数,计算时以16-bit 数据为最小单位进行求和,如果存在进位,则将进位1 加到低16 位数字上去,计算完成后取反的结果即为Checksum 。如果没有Checksum 时,此域需要全部填值为0
TCP 协议
TCP 提供可靠的传输模式,TCP UDP 同样是传输层协议,其主要差别在于TCP 保证可靠性,因而不同于UDP TCP 工作是面向连接的。
消息结构

Source port/Destination Port 为源和目的端口号,各占有16 比特;Sequence number 占用32 比特,指示数据包中第一个字节的SN ,如果存在携带初始SN ISN SYN 时,第一个数据字节的SN ISN+1 Acknowledgement Number 指示期望收到的下一个连续的SN 号;Data offset 占用4 比特,指示TCP 头部总的32 比特word 长度,可计算开始数据开始位置;Reserved 占用6 比特,留后续使用;URG 占用1 比特,用来指示Urgent Pointer 是否存在;ACK 占用1 比特,用来指示Acknowledgment 域是否存在意义;PSH 占用1 比特,用于指示Push 功能;RST 占用1 比特,用于重置连接;SYN 占用1 比特位,同步SN 号;FIN 占用1 比特,指示发送端是否还存在更多需要发送的数据,用于结束链接;window 占用16 比特,指示从Acknowledgment 域开始数据窗口长度;Checksum 计算校验和,包括头和内容,不足16 比特部分补零对齐,计算时需要增加IP 的虚拟头部;Urgent Pointer 占用16 比特,和URG 标志配合使用,指示正常数据起始位置,在此位置之前为带外数据( 紧急数据);Options 为字节的倍数,存在两类option ,一种是只带类型option-kind ,另一种带有option-kind + option length + option data option length 包括kind length 本身的共两个字节的长度; Padding 用于补齐TCP 头部长度,满足32 比特word 对齐。
Options
TCP 模式下,携带的Option 都需要被执行。

传输可靠性
TCP 不同于UDP ,提供了数据的可靠传输,这种可靠性依赖于停止- 等待协议机制,主要体现在SN ACK 机制上。首先需要将TCP 连接的两端SN 进行同步,也就是SYN 标志位带有的功能,当SYN 1 是带有的SN 号即为ISN( 初始SN ) ,常常听到的三/ 四次握手就是实现此功能,相当于初始建立链路过程,发起端需要首先发送SYN 给对端,对端需要对SYN 包返回ACK ,同样需要对端发送相应SYN 来确认接收的起始SN 号,并对相应TCP 包返回对应ACK ,因此此流程有四个过程交互;而对端返回ACK 时可以同时携带SYN 标志,可以简化为三条消息。相对于建立流程,链路同样可以使用类似方式释放,通过标志FIN 来控制。在传输过程中需要维护数据的SN 及其ACK 状态,加以不同的Timer 进行丢包重传控制;Window 域用来表示接收到ACK 的数据到最多允许发送的数据包的窗口大小,也就是说超出窗口的数据不能,窗口的大小影响实际情况下的速率。TCP 基于SN 次序进行有次序的传输,紧急( 带外) 数据可以采用Urgent 模式传输。Push 标志影响发送、接收的处理时间,在接收端收到标志位将不等待缓存状态,直接将数据递交上层梳理。TCP 采用的是面向连接的分组交换机制,当状态出错时,可以用Rest 机制来重新恢复链路链路,同时存在平静时间的定时器来确保分组机制网络中的残留的数据包能够处理完成,减少状态和数据类型冲突的概率。
参考文档
RFC768 User Datagram Protocol
RFC793 TRANSMISSION CONTROL PROTOCOL
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值