TCP Handshake

本文详细解析了TCP协议的连接建立与关闭过程,包括三次握手建立连接和四次挥手断开连接的具体步骤,以及各步骤的状态变化。还介绍了TimeWait定时器的作用,确保连接可靠关闭。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

温故而知新,TCP协议学习已经是很久以前了,今天再温习一下。

TCP 是面向连接的,面向连接的意思是TCP要经过3次握手来建立连接,  TCP是全双工的, 两端可以独立收发packets, ,4次握手断开连接。

首先我们从TCP建立连接握手开始:

客户端与服务器建立握手的过程

1)客户端Host A发送TCP sync packet给HOST B,同时指定一个随机的sequence number X;

2) 服务器Host B接收到A的Sync packet;

3)服务器发送SYNC-ACK packet给客户端,同时把A的串号X+1赋值给ACK  number,同时指定一个随机的sequence number Y;

4)客户端接收到SYNC-ACK;

5)客户端发送SYNC packet给服务器,同时把B的串号Y+1赋值给ACK  number;

6)服务器端接收到SYNC;

到此TCP socket 连接建立起来了。

Diagram:



Synchronize 和 Acknowledge消息是通过TCP header里面的 SYNC和ACK bit来表示的。SYNC-ACK消息就是把SYNC和ACK 位全部设为1。

我们可以通过SYNC, SYNC-ACK, ACK消息来知道当前状态,正在打开连接,同步中还是已经建立连接。


当双方的通信终止的时候, 同样需要4次握手来关闭连接,关闭连接可以由双方中任何一方终止连接。

关闭连接的过程如下:

1)A是主动断开连接方, 把FIN位设为1,seq num u是通信过程中的A发送的字节数+1,此报文的tcp len为0,为TCP协议规定

2) 此时A连接状态为Fin-wait-1;

3)B收到Fin报文;

4)  B发送ACK报文确认FIN,ACK num是A的seq num u +1, 同时发送自己的seq num v,v是B发送所有字节数+1;

5)此时B处于Close Wait状态, 这个状态服务器B正在等待服务应用关掉连接;

6)Client A收到ACK报文;

7)Client状态改为FIN Wait 2,这个状态的时候, 从客户端A到服务端B的连接以及关闭, 客户端等待服务器关闭TCP连接。

8)服务器应用程序关闭了TCP 连接。

9)服务器端发送FIN-ACK报文。

10)服务器端状态改变为Last ACK,等待client 发送ACK。

11)客户端A收到FIN;

12)客户端A发送ACK到服务器端;

13)客户端A开启一个定时器,用来处理last ACK被丢失, 服务器重新发送FIN;

14)客户端等待服务器重新发送FIN 在time wait状态;

15)服务器接收到ACK;

16)服务器把连接置为close状态;

17)客户端time wait 定时器超时,客户端连接变为close状态;

Diagram:



Time Wait定时器有两个作用:

1) 确保B能够收到最后一个ACK。如果ACK报文丢失,B会超时重传FIN+ACK,A在Time Wait状态可以重新发送ACK,并且重置定时器。如果B一直收不到last ACK,B会一直处于Close Wait状态。通过定时器可以确保TCP的全双工连接终止。

2)让老的失效的packet在网络中失效,TCP不允许处于TIME_WAIT状态的连接启动一个新的化身,因为TIME_WAIT状态持续2MSL,就可以保证当成功建立一个TCP连接的时 候,来自连接先前化身的重复分组已经在网络中消逝。

在建立连接的时候, 同时也协商MSS,MSS由TCP header中表示, 采用TCP双方中最小的MSS, MSS的计算方法为MTU - IP header - TCP header



引用:

本文参考附件的PDF及以下链接:

http://packetlife.net/blog/2010/aug/4/tcp-windows-and-window-scaling/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值