TCP Protocol Packet Capture

目录

1. TCP协议报文段语法​

2. 连接管理

2.1 三次握手

2.2 四次挥手

3. 可靠传输

两种重传机制

4. 流量控制

5. 拥塞控制

​拥塞控制的主要阶段


1. TCP协议报文段语法

sequence numbers:byte stream “number of first byte in segments data,是本报文段所发送的数据的第一个字节的序号

acknowledgement number:of next byte expected from other side,是期望收到对方的下一个报文段的数据的第一个字节的序号,与ACK一起用,只有当 ACK = 1 时确认号字段才有效。

PSH:推送 PSH (PuSH) 接收 TCP 收到 PSH = 1 的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了后再向上交付。

RST:RST = 1,表明 TCP 连接中出现严重差错,必须释放连接,再重新建立运输连接

SYN:SYN = 1,表明这是一个连接请求或连接接受报文

FIN:FIN=1,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接.

URG+Urg data pointer:当 URG = 1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送。 与“紧急指针 ”(16 位)一起用,指出在本报文段中紧急数据共有多少个字节。

2. 连接管理

2.1 三次握手

为什么三次?是为了在建立连接的过程中,告诉客户端和服务端自己和对方的发送数据能力以及接收数据能力,有来有回,再连不难。抓包截图中的1-3就是建立连接时的三次握手:

2.2 四次挥手

做了很多次关闭连接的抓包实验,但是结果都只有三次挥手,参考资料像《wireshark网络分析的艺术》P12-P21里说,由于延迟确认(也就是确认报文由下一个发送报文携带,一起传送过来),第二次挥手ACK与第三次挥手FIN合并成了一次:不过还是想抓到四次挥手的包,所以如果有人会的话可以教我吗...

3. 可靠传输

两种重传机制

①超时重传:超时周期可能相对较长。当一个报文段丢失时,这种长超时周期迫使发送方延迟重传丢失的分组,因而增加了端到端时延。

②三次冗余ack --> 快重传机制:TCP接收方收到一个具有这样序号的报文段时,即其序号大于下一个所期望的、按序的报文段,它检测到了数据流中的一个间隔,这就是说有报文段丢失。这个间隔可能是由于在网络中报文段丢失或重新排序造成的。如果TCP发送方接收到对相同数据的3个冗余ACK,它把这当作一种指示,说明跟在这个已被确认过3次的报文段之后的报文段已经丢失。一旦收到3个冗余ACKTCP就执行快速重传(fast retransmit)[RFC5681]

4. 流量控制

含义:流量控制(flow control)就是让发送方的发送速率不要太快,既要让接收方来得及接收,也不要使网络发生拥塞。

rwnd接收窗口

死锁问题?TCP为每一个连接设有一个持续计时器,只要收到对方的零窗口通知,就启动该持续计时器。如果到期,就发送一个零窗口探测报文段,主动询问对方现在的窗口值,打破死锁。

5. 拥塞控制

为什么会发生拥塞?节点缓存容量太小,链路容量不足,处理速率太慢,拥塞本身加剧了拥塞。

ssthresh门限值(慢开始阶段有个不变的初始门限值,然后在拥塞避免阶段增大为当下的cwnd/2),cwnd拥塞窗口(纵坐标,通常为2的倍数,拥塞避免时每轮增加一个单位拥塞窗口)

拥塞控制的主要阶段

慢开始(指数增大):TCP 连接进行初始化时,将拥塞窗口置为 1

拥塞避免(线性增大):新的门限值为当下拥塞窗口值的1/2,ssthresh=cwnd/2。

网络拥塞(乘法减小):当丢包率达到一定程度时。

快重传(快恢复):当这时收到三次冗余ACK时,启用快重传,并且在该点门限值为当下拥塞窗口值的1/2(同时也是在拥塞避免阶段),而唯一调整的是:新的拥塞窗口大小=当下门限值+3,即cwnd'=ssthresh+3。

小结一下,慢开始 --> 拥塞避免 --> 慢开始 --> 拥塞避免...如果启用快重传,就不需要慢开始,也就是说可能这样:慢开始 --> 拥塞避免 --> 快恢复 --> 拥塞避免 --> 慢开始 --> 拥塞避免...

  • 15
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值