文章目录
一、三次握手与四次挥手
- TCP传输特点:有连接、很可靠、面向字节流
- 实现机制:数据包名称、连接双方的状态、包序管理
1. 三次握手流程图
2. 抓网络数据包的两种方式
- win:wireshark
- linux:tcpdump -i any port [端口] -s o -w result.dat //将抓包产生的数据保存在result.dat文件中。
3.分析TCP包序号(为什么需要包序号?)
答:为了可靠传输。
客户端与服务器各维护了一套序号,当Client发送数据包给Server时,消耗了客户端维护的序号,服务端告诉客户端自己收到数据的时候是确认客户端的序号 ;当Server发送数据包给Client时,消耗了服务器维护的序号,客户端告诉服务器自己收到数据的时候是确认服务器的序号。
4.四次挥手
- MSL:报文的最大生存时间
2MSL=丢失的ACK的MSL+重传FIN的MSL,本质上是为了让主动断开连接方能接收到被动断开连接方重传的FIN报文。
二、TCP协议格式
1.协议格式
2.内容解析
- 序号:该条数据的起始序号
- 确认序号:期望对方发送数据时从哪一个序号开始发送
- 4位首部长度:指的是TCP头部的长度
符号 | 解释 |
---|---|
URG | 紧急标志位 |
ACK | 确认标志位 |
PSH | 发送数据标志位 |
RST | 重置连接标志位 |
SYN | 发起连接标志位 |
FIN | 断开连接标志位 |
- 16位窗口大小:告知信息发送方,自己对消息的接收能力是多少,这个数值是动态变化的
- 16位校验和:校验数据在传输的过程中是否失真
- 16位紧急指针:配合URG标志位发送带外数据
- MTU(Maximum Transmission Unit):最大传输单元,是网卡在传输数据帧的时候的一个限制值,这个限制值取决于网络传输设备的电气特征
- MSS(Maximum Segment Size):最大报文段长度
(1)其中,MSS+TCPHeader+IPHeader<=MTU
(2)三次握手时,双方协商MSS的大小,取两者最小值
(3)为什么要协商MSS:防止报文过大,在传输过程中数据丢失导致重传
(4)MSS的大小会受到数据链路层MTU的影响
三、TCP可靠传输机制
TCP为了保证数据高效、可靠且有序的到达对端,采用了确认应答机制、超时重传机制、拥塞控制、捎带应答机制、延时应答机制、滑动窗口机制六个必要手段来保证TCP的可靠传输。
- 确认应答:接收方对发送方进行回复,确认已收到对方发送的信息
- 超时重传:超时重传的时间并不固定,是动态变化的
RRT(Round-Trip Time ):往返时延
RTO (Retransmission Timeout ):超时重传时间
计算方法:RTO=(上次)RTT*i+(上上次)RTT*(1-i) - 拥塞控制:慢启动、快重传、快恢复、拥塞避免
- 捎带应答:回复时,不仅是回复数据包,还发送少量数据
- 延时应答:通告发送方更大的窗口大小
一旦接收方发送了一个0号窗口给发送方,则表示接收方的接受能力为0,而发送方接收到0号窗口之后,就不会在给接收方发送数据了。如何打破上述僵局:方法一:发送方发送窗口探测包;方法二:接收方主动通知窗口大小。 - 滑动窗口
文章出处登录后可见!
已经登录?立即刷新