目录
- TCP协议和UDP协议
- TCP首部
- TCP连接管理
- UDP首部
1. TCP协议和UDP协议
- TCP协议:面向连接的、可靠的流协议,实行“顺序控制”或“重发控制”机制,具备“流量控制”、“拥塞控制”、提高网络利用率等功能
- UDP协议:面向无连接的、不具有可靠性的数据报协议,不保证消息一定会到达
- 端口号:用来识别同一主机中不同的应用程序,也被称为程序地址,通过源IP地址、目标IP地址、协议号、源端口号、目标端口号同时进行通信识别
2. TCP首部
TCP首部- 源端口:16 bit,发送数据的源进程端口
- 目的端口:16 bit,接收数据的进程端口
- 序号:32 bit,代表当前TCP数据段第一个字节占整个字节流的相对位置
- 确认号:32 bit,代表接收端希望接收的数据序号,为上次接收到数据报的序号+1,当ACK标志位为1时才生效
- 数据偏移:4 bit,实际代表TCP首部长度,最大为60字节
- SYN:同步标志,用于数据同步
- ACK:确认标志,ACK=1时确认号才有效
- FIN:结束标志,用于发送端提出断开连接
- URG:紧急标志,URG=1是紧急指针有效
- PSH:指示接收方立即将数据提交给应用层,而不是等待缓冲区满
- RST:重置连接
- 窗口值:16 bit,标识接收方可接受的数据字节数
- 校验和:16 bit,用于检验数据完整性
- 紧急指针:16 bit,只有当URG标识位为1时,紧急指针才有效。紧急指针的值与序号的相加值为紧急数据的最后一个字节位置。用于发送紧急数据
3. TCP连接管理
- 描述:数据通信之前,通过TCP首部发送SYN包作为建立连接的请求并等待确认应答,在通信结束时会发送FIN包进行断开连接处理,一个连接的建立与断开正常至少需要来回发送7个包才能完成
-
TCP连接的建立:三次握手
连接的建立 -
TCP连接的释放:四次挥手
连接的释放 - 超时重传:在发送某一个数据以后就开启一个计时器,在一定时间内如果没有得到发送的数据报的ACK报文,那么就重新发送数据,直到发送成功为止。
- 滑动窗口:发送窗口只有收到对端对于本段发送窗口内字节的ACK确认,才会移动发送窗口的左边界。接收端可以根据自己的状况通告窗口大小,从而控制发送端的接收,进行流量控制。
- 拥塞控制:TCP拥塞控制4个核心算法包括慢开始、拥塞避免、快重传、快恢复
慢开始:先探测一下网络的拥塞程度,也就是说由小到大逐渐增加拥塞窗口的大小
拥塞避免:让拥塞窗口缓慢增长,即每经过一个往返时间RTT就把发送发的拥塞窗口cwnd加1,而不是加
倍。无论是在慢开始阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞,就把慢开始门
限设置为出现拥塞时的发送窗口大小的一半。然后把拥塞窗口设置为1,执行慢开始算法。
快重传:发送方只要一连收到3个重复确认就应当立即重传对方尚未收到的报文段,而不必继续等待设置
的重传计数器时间到期
快恢复:把拥塞窗口大小设置为慢开始门限减半后的数值,然后开始执行拥塞避免算法(“加法增大”),
使拥塞窗口缓慢地线性增大
4. UDP首部
UDP首部- 端口号:用来表示发送和接受进程。由于IP层已经把I P数据报分配给TCP或UDP(根据IP首部中协议字段值),因此TCP端口号由TCP来查看,而UDP端口号由UDP来查看。TCP端口号与UDP端口号是相互独立的
- 长度:UDP长度字段指的是UDP首部和UDP数据的字节长度
- 检验和:UDP检验和是一个端到端的检验和。它由发送端计算,然后由接收端验证。其目的是为了发现UDP首部和数据在发送端到接收端之间发生的任何改动
网友评论