- UDP协议
- UDP Header、UDP伪 header、校验和
- UDP协议特点:差错检测
- IP分组与重组
- TCP协议
- TCP Header
- TCP协议特点
- 差错检测
- 差错纠正
- 队列管理
- 重复消除
- 流量控制
- 拥塞控制
- TCP生命周期器
- TCP三次握手连接(三次握手)
- TCP四个握手断开连接(四次分手)
- TCP数据传输
1、UDP协议
UDP是面向无连接、不可靠的传输层协议,它本质上就是在IP协议上添加了差错检测、超时重传、IP分组与重组等轻量级的功能组成的。
它的传输速度十分快,但不考虑网络的状态与对其他用户网络的消极影响。但它也非常适合应用于实时要求高的场景。
它是面向无连接的、不可靠的,因为数据报文是直接发送,并且不关心是否发送成功,而接收端则关心是否能收到数据包和数据报文正确与否。
1.1、UDP头、UDP伪头、校验和
|
UDP头 & UDP伪头:
UDP头的定义如下结构:
UDP Header一共8个字节,也比较简单。因为是传输层是面向端口传输编程,所以头里面有源端口号、目的端口号用于表明是哪个程序在收发。
UDP头 & UDP伪头的结构:
伪头的作用只是仅仅是用户校验和的的计算,实际上不传送出去(传送到别的层),让UDP层能验证数据是否正确到达目的地。
|
校验和:
发送方通过UDP头和UDP伪头生成校验和,接收方通过同样的数据生成校验和,通过比对两个校验和是否一致,可得出是否发生传输错误。
若发生传输错误,则舍弃整个报文,或者发起重启。
|
1.2、差错检测
UDP Header具备一个UDP校验和,通过校验和可以得知数据是否正确地传输,这就是UDP的差错检测。
NOTE:
校验和在IPV4是默认开启,但可关闭。
校验和在IPV6中是强制开启。
|
1.3、IP分组与重组
当报文超过数据链路层的MTU(max transfer unit)时,会将报文切分层若干IP报文发送,然后在接收端进行重组。而且只有一个IP报文会有UDP头。
重组失败的情况:
在IP层,当收到第一个UDP IP报文后,系统会启动计时器,若在计时器设定的时间内,都没有接收完完整的UDP报文,那么就会UDP重组失败。
|
2、TCP协议
{
- TCP协议
- TCP Header
- TCP协议特点
- 差错检测
- 差错纠正
- 队列管理
- 重复消除
- 流量控制
- 拥塞控制
- TCP生命周期器
- TCP三次握手连接(三次握手)
- TCP四个握手断开连接(四次分手)
- TCP数据传输
}
TCP协议是面向连接、可靠的单播协议。与UDP的数据模型是数据报文不一样,TCP的数据模型是字节流。
TCP Header
|
TCP的标准头部长度为20字节,若有附加的可选项就另算。
|
TCP协议特点:
|
差错检测 & 差错纠正:
TCP同样是使用校验和与CRC来检测分组里的差错。当TCP检测到分组里又差错的时候,会使用重传的方式实现差错纠正,具体流程如下:
(1)因为TCP是一个面向连接的协议,所以每一个数据包的发送成功都会得意一个ACK响应,当某一个ACK丢失了,发送方无法根据其判断出是丢失了那个组,所以只能通过重传所有数据实现差错纠正
(2)同样的,若某一个分组被校验和检测出发生传输错误,那么接收方就不会回应ACK,让发送方超时,从而启动重传。
(3)若发生重传,那必定会有重复分组存在,所以得根据序列号进行去重操作。
|
队列管理 & 重复消除:
TCP能根据序列号与相应好来轻松实现IP切块与重组。
若发生重传,那必定会有重复分组存在,所以得根据序列号进行去重操作。
|
流量控制 & 拥塞控制:
TCP是通过变量窗口来实现流量控制和拥塞控制的。
因为TCP是面向连接的协议,能根据ACK的响应速度,改变窗口大小(令牌数量)从而改变IP数据包的发送数量,从而能在恶劣的网络环境保持通信的质量。
|
TCP生命周期器:
|
TCP三次握手连接(三次握手):
|
TCP四个握手断开连接(四次分手):
|
TCP数据传输:
|