您的位置:首页 > 理论基础 > 计算机网络

TCP 连接三次握手与四次挥手

2017-05-28 19:10 281 查看

1. 三次握手

TCP提供的是面向连接服务, 在一个主机(客户端)上的进程想与另一台主机(服务端)上的一个进程建立连接时会进行 “三次握手”:

1. 客户端TCP向服务端TCP发送一个特殊TCP报文, 该报文不含实际数据。 在报文段的首部将SYN(同步序列号)置为1, 并随机选择一个 ISN (初始序列号) client_isn。然后将该报文段封装在一个IP数据报中, 发送给服务器。
2. 服务端在收到数据报后, 从中提取出TCP SYN报文段, 然后为该连接分配TCP缓存和变量, 然后向客户端发送代表允许连接的报文:SYN比特置为1,选择自己的初始序列号server_isn, 设置确认号ACK = client_isn + 1 . 
3. 客户端收到服务端的回复消息后也给该连接分配缓存和变量,最后向服务器回复:SYN = 0, seq = client_isn + 1, 确认号ACK = server_isn + 1
至此, 一个TCP连接建立完成。



2. 四次挥手

对一个TCP连接双方, 任何一方都能在必要的时候中断连接,假定此时客户端需要中断连接, 要做的工作如下:
1. 要关闭连接的一方(假如是客户端)首先发送FIN位被置为1的特殊报文,进入FIN_WAIT1状态。
2. 服务端收到此报文后, 得知对方想要终止连接, 于是向上层传送一个EOF, 然后回复 ACK
3. 客户端收到ACK ,进入FIN_WAIT2, 等待服务端的FIN 报文到达。
4. 客户端收到服务端的FIN后回复一个ACK进入TIME_WAIT 状态等待2MSL,确保服务端收到,然后关闭连接。



3. 一个典型TCP客户端生存周期



4. 一个典型TCP服务端生存周期

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  网络