TCP协议笔记整理

一、TCP 协议概述
TCP即传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议。
 
二、TCP 协议的特点
 
1. 面向连接
在通信之前,需要通过“三次握手”建立连接,通信结束后通过“四次挥手”释放连接。
2. 可靠传输
通过确认、重传、排序等机制保证数据的准确无误传输。
3. 流量控制
通过接收方窗口大小通知发送方,控制发送方的发送速度,避免接收方缓冲区溢出。
4. 拥塞控制
通过慢启动、拥塞避免、快重传、快恢复等算法,避免网络拥塞。
 
三、TCP 报文格式
 
1. 源端口和目的端口:各占 16 位,标识发送方和接收方的应用程序端口。
2. 序号:占 32 位,标识本报文中数据的第一个字节的序号。
3. 确认号:占 32 位,期望收到对方下一个报文段的第一个数据字节的序号。
4. 数据偏移:占 4 位,指出 TCP 报文段首部的长度。
5. 保留:占 6 位,保留为今后使用,目前应置为 0。
6. 控制位:
- URG:紧急指针有效位。
- ACK:确认序号有效位。
- PSH:推送位。
- RST:重置连接位。
- SYN:同步序号位,用于建立连接。
- FIN:结束位,用于释放连接。
7. 窗口:占 16 位,用于流量控制,表示自己接收窗口的大小。
8. 校验和:占 16 位,用于检验 TCP 报文段的完整性。
9. 紧急指针:占 16 位,指出本报文中紧急数据的字节数。
 
四、TCP 连接建立(三次握手)
 
1. 第一次握手
客户端向服务器发送一个 SYN 报文段,请求建立连接,其中 SYN 标志位为 1,随机选择一个初始序号 seq = x。
2. 第二次握手
服务器收到客户端的 SYN 报文段后,向客户端发送一个 SYN/ACK 报文段,其中 SYN 标志位为 1,ACK 标志位为 1,确认号 ack = x + 1,随机选择一个初始序号 seq = y。
3. 第三次握手
客户端收到服务器的 SYN/ACK 报文段后,向服务器发送一个 ACK 报文段,其中 ACK 标志位为 1,确认号 ack = y + 1,序号 seq = x + 1。此时,TCP 连接建立成功。
 
五、TCP 连接释放(四次挥手)
 
1. 第一次挥手
客户端向服务器发送一个 FIN 报文段,请求释放连接,其中 FIN 标志位为 1,序号 seq = u。
2. 第二次挥手
服务器收到客户端的 FIN 报文段后,向客户端发送一个 ACK 报文段,其中 ACK 标志位为 1,确认号 ack = u + 1,序号 seq = v。此时,客户端到服务器方向的连接关闭。
3. 第三次挥手
服务器向客户端发送一个 FIN 报文段,请求释放连接,其中 FIN 标志位为 1,序号 seq = w。
4. 第四次挥手
客户端收到服务器的 FIN 报文段后,向服务器发送一个 ACK 报文段,其中 ACK 标志位为 1,确认号 ack = w + 1,序号 seq = u + 1。此时,TCP 连接完全释放。
 
六、TCP 可靠传输机制
 
1. 确认和重传
发送方发送数据后,等待接收方的确认。如果在一定时间内没有收到确认,就重传数据。
2. 序号和确认号
通过序号和确认号保证数据的按序交付和无差错传输。
3. 超时重传时间的计算
根据往返时间(RTT)动态计算超时重传时间,以适应网络的变化。
 
七、TCP 流量控制
接收方通过在 TCP 报文段的“窗口”字段中告知发送方自己的接收窗口大小,从而控制发送方的发送速度。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值