三次握手,四次断开

前段时间学习了通信的相关基础知识,由于上完相关课我就回家了,忙着跟高中同学见面玩去了……,嘿嘿,因此相关总结没写,对于通信的相关知识也记得不大清了。这两天回学校静下心来把以前的代码回味了下,思绪才渐渐的回来了,呵呵~~。下面是我对TCP连接的“三次握手,四次断开”的总结。

假如主机A客户进程要与主机B建立一个TCP连接,需要进行如下几步操作,即所谓的“三次握手”:
1、主机A向B发送一个SYN=1,ACK(确认号——用于标识接收方希望下一次接收的字节序号)=0的TCP连接请求数据报,同时为该数据报生成一个序号SEQ(序列号——用于标识TCP段区的开始位置)=x,放在数据报头中一起发送出去。
2、主机B若接受A发送的连接请求,则返回一个确认ACK=1。同时,主机B生成同步的序号,如SEQ=y,与x无关。同时用第一个数据报的序号值x加1作为对A的确认。
3、主机A再向B发送第二个数据报SEQ=x+1,同时对从主机B发来的数据报进行确认,序号为y+1。

即三次握手的过程为:A-->B SYN=1,ACK=0   我的序列号是x
                            B-->A SYN=1,ACK=1   我的序列号是y,你的序列号是x
                            A-->B SYN=0,ACK=1   我的序列号是x+1,你的序列号是y
在数据结束后,TCP需释放连接。在TCP协议中规定,通信双方都可以主动发出释放连接的请求,它的连接是双向的。TCP协议用FIN数据报(数据报头中的FIN标志位置1)来请求关闭一个连接。连接断开的四次操作如下:
1 、当主机A完成数据传输后,将控制位FIN置1,提出停止TCP连接的请求
2、 主机B收到FIN后对其作出响应,确认这一方向上的TCP连接将关闭,同时ACK=1
3、 由B 端再提出反方向的关闭请求,将FIN置1
4 、主机A对主机B的请求进行确认,将ACK=1,双方向的关闭结束.
以上操作是通信双方依次地先后关闭一个单向连接,也可以同时提出关闭连接的请求,这两种情况处理都是一样的。最后当连接在两方向上都关闭后,TCP软件便将该连接的所有记录删除。
可以看出,连接的“三次握手,四次断开”操作大大的增加了通信的可靠性。进行数据传输前的交互,提高了数据成功传输的可能性。

TCP (Transmission Control Protocol) 是一种基于连接的、可靠的传输层协议,它的通信过程包括三次握手建立连接和四次挥手关闭连接。 **三次握手(Three-way Handshake)**: 1. **SYN(同步序)阶段**:客户端发送一个 SYN 包到服务器,请求建立连接,包包含随机生成的初始序列(seq)。 2. **ACK(确认应答)阶段**:服务器接收到 SYN 包后,回应一个 SYN+ACK 包,确认序列(ack),并置自己的初始序列(seq)。 3. **FIN(结束连接)阶段**:当服务器准备好接收数据后,会发送一个 FIN 包给客户端,表明它已经不再需要进一步的数据了。此时连接还未完全关闭,客户端还会等待一段时间后再发送一个 ACK 包确认关闭。 **四次挥手(Four-way handshake)**: 1. **FIN(结束连接)阶段续**:客户端收到服务器的 FIN 包后,如果还有未发送的数据,则先发送一个 ACK 包确认,然后发送自己的 FIN 包,表示客户端也准备断开连接。 2. **ACK(确认应答)阶段续**:服务器收到客户端的 FIN 包后,回复一个 ACK 包确认,并进入半关闭状态。 3. **FIN(结束连接)阶段再续**:服务器等待一段时间后,如果没有新的数据传输,再发送一个 FIN 包给客户端,正式断开连接。 4. **ACK(确认应答)阶段终结**:客户端接收到服务器的 FIN 包后,发送最后一个 ACK 包,至此,整个连接才真正关闭。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值