TCP的3次握手和4次挥手

建立链接3次握手

TCP在传输上是双工传输,不区Client分端与server端,为了便于理解,起名发起端为client

1.首先建立链接前需要server端先监听端口,因此所有端建立链接前的初始状态就是listen状态,这时client端准备建立链接,先发送一个syn同步包,Client端状态变为sent状态。

2.server端收到syn后同意建立链接,就会回复一个ack,由于TCP是双重传输,server端也会同时向Client端发送一个同步请求syn申请server向client方向建立链接,发送完ack和svn后,server端的连接状态就变成了received状态。

3.client收到server的ack后,client的链接状态就变成了establish的状态,同时Client端向server端发送ack响应,回复server端的svn请求,server端收到Client端的ack以后,server端的链接状态也就变成了established状态,此时链接完成,双方随时可以进行数据传输。

 

关闭链接的四次挥手

1.通信中的client和server两端的链接状态都是establish的状态,然后Client端先发起了关闭链接请求,向server发送了一个fin包,表示Client端已经没有数据要发送,然后Client端就进入了fin_wait1状态。

2.Server端收到fin后返回ack,然后进入close_wait的状态,此时server属于半关闭状态,因为此时client向server方向已经不会再发送数据了,可是server向Client端可能还有数据要发送,

3.当server端数据发送完毕后,server端会向Clent端发送fin,表示Server端也没有数据要发送,这时server进入last_ack状态,等待Client端应答就可以关闭链接了。

4.client端收到server端的fin后回复ack,然后进入time_wait状态需要等待两倍的msl(最大报文段生存时间)来保证链接的可靠关闭之后才会进入close的状态,而server端说到ack后,直接就可以进入close状态。

发布了159 篇原创文章 · 获赞 86 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/qq_40301026/article/details/100049807
今日推荐