tcp\ip 个人理解

2019-08-27  本文已影响0人  o9_wp

学习整理,纯属个人理解,如有问题欢迎联系,文末有参考大神资料说明


tcp的三次握手:

1.第一次握手,客户端尝试建立连接,发送SYN包(syn=j)到服务器,并且进入SYN_SENT状态进行等待;

2.第二次握手, 服务器收到客户端syn包,确认客户端的syn 并且生成ACK(j+1)和自己的SYN(k),发送SYN+ACK包给客户端,然后服务端进入SYN_RECV状态

3.第三次握手,客户端收到服务器的SYN+ACK包,向服务端发送ACK(k+1),此包发送完成,客户端和服务器同时进入ESTABLISHED状态(tcp连接成功),至此三次握手完成

通俗点的理解(打电话:)

A:歪?能听到么?( 第一次握手,发起连接)

B:能听到,可以了,什么事情?(第二次握手,目标收到,并回复确认,可以进行通讯)

A&B:聊天进行中(第三次握手,连接建立,进行数据传输)

流程图如下,

同样结束连接时候需要4次挥手:

1.第一次挥手,客户端发送连接释放报文,并且停止发送数据, 释放报文主要携带参数(FIN=1,seq=u)。此时,客户端将进入FIN-WAIT-1状态

2.第二次挥手,服务端收到客户端释放报文,发出确认报文,ACK=1,seq=v,ack=u+1,此时服务端进入CLOSE-WAIT状态。第二次挥手完成后,客户端到服务端方向的连接已经释放,服务端不会再接收数据,客户端也不会再发送数据。但服务端到客户端方向的连接仍然存在,可以继续向客户端发送数据。

3.第三次挥手,当服务端向客户端发完所有数据后,向客户端发送连接释放请求,请求头:FIN=1,ACK=1,seq=w,ack=u+1。服务端便进入LAST-ACK状态。

4.第四次挥手,客户端收到释放请求后,向服务端发送确认应答,此时客户端进入TIME-WAIT状态。该状态会持续2MSL时间,若该时间段内没有服务单的重发请求的话,就进入CLOSED状态。当服务端收到确认应答后,也便进入CLOSED状态

通俗点的理解(打电话:)

A&B:通话中...

A:行,我要挂了,还有什么其他事情么?(第一次挥手,发送释放报文)

B:好,我想想哈,.@#$@#$@#$@#$@(第二次挥手,发回确认报文,如果有往客户端的数据仍可传输)

B:没了,挂了吧(第三次挥手,向客户端发送释放报文)

A:好,你先挂吧 (第四次,客户单收到释放报文,发给服务端确认报文)

B:挂断.(收到确认报文 close)

A:(等2ms),挂断(close)

本文借鉴参考

资料链接:

https://blog.csdn.net/qq_38950316/article/details/81087809

https://www.cnblogs.com/cenglinjinran/p/8482412.html

上一篇 下一篇

猜你喜欢

热点阅读