TCP/IP三次握手四次挥手

TCP三次握手
所谓握手,也就是建立连接,三次过程。
三次握手旨在连接到服务端的指定端口,进行通信。建立一个TCP连接,需要向客户端和服务端发送三个包。
其中包含同步序列号和确认号以及TCP窗口大小的信息交换。一般触发握手在socket中都是connect()函数触发的

第一次握手:
客户端发送TCP请求, (SYN标记位置1个包,SYN=1,ACK=0 也就是带有SYN标记的TCP包,初始序列号为X,保存在包头的序列号中). 表示客户端需要建立一个TCP连接,这是握手中的第一不,发送请求。

第二次握手:
服务端收到带有SYN标记的TCP包,发送确认包(带有ACK和SYN的数据包,SYN=1,ACK=1,序列号为y是服务端的)此时服务端询问客户端是否准备好数据传输,此时服务器进入SYN_RECV状态。。

第三次握手:
客户端接收到服务端的数据包(ACK+SYN数据包)向服务端发送一个(序列号x+1,ACK=y+1)的数据包,此包发送完毕,客户端和服务器进入ESTAB_LISHED(TCP连接成功)状态,完成三次握手。

TCP四次挥手
TCP连接是双工的,所以每个方向都是单独关闭。当其中一方完成数据传输后可以发送FIN结束。接收到了FIN只是意味着没有这个方向的数据流了
收到FIN的TCP连接可以发送数据,第一个关闭方执行主动动作,另一个执行被动动作。

第一次挥手:
客户端发送FIN请求,说我要关闭TCP连接了,不再传输数据了。 (FIN=1,序列号=n)

第二次挥手:
服务端收到这个请求,并且响应此请求,发送一个ACK包,确认ack为收到的序号+1。

第三次挥手:
服务端关闭TCP连接,向客户端发送FIN消息。

第四次挥手:
客户端接收到消息,发送ACK包确认,并将确认序号seq设置为收到序号+1。

个人总结github地址:https://github.com/luoyan321?tab=repositories  有兴趣的同学可以看看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值