博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TCP的连接和释放
阅读量:5892 次
发布时间:2019-06-19

本文共 1156 字,大约阅读时间需要 3 分钟。

hot3.png

 

TCP的连接和释放

 

TCP传输控制协议,是一个面向连接的协议。在运用此协议进行数据传输前都会进行连接的建立工作(三次握手);当数据传输完毕,连接的双方都会通知对方要释放此连接(四次挥手)。

认识TCP标志位

SYN(synchronous建立联机)ACK(acknowledgement 确认)PSH(push传送)FIN(finish结束)RST(reset重置)URG(urgent紧急)

三次握手

  • 第一次握手:客户端发送一个TCP标志位SYN=1,ACK=0的数据包给服务端,并随机会产生一个Sequence number=3233.当服务端接收到这个数据后,服务端由SYN=1可知客户端是想要建立连接;

  • 第二次握手:服务端要对客户端的联机请求进行确认,向客户端发送应答号ACK=1、SYN=1

    确认号Acknowledge number=3234,此值是客户端的序列号加1,还会产生一个随机的序列号Sequence number=36457,这样就告诉客户端可以进行连接;

  • 第三次握手:客户端收到数据后检查Acknowledge number是否是3233+1的值,以及ACK的值是否为1,若为1,host1会发送ACK=1、确认号码Acknowledge number=36457,告诉服务端,你的请求连接被确认,连接可以建立。

四次挥手

  • 第一次挥手:当传输的数据到达尾部时,客户端向服务端发送FIN=1标志位;可理解成,客户端向服务端说,我这边的数据传送完成了,我准备断开了连接;

  • 第二次挥手:因TCP的连接是全双工的双向连接,关闭也是要从两边关闭;当服务端收到客户端发来的FIN=1的标志位后,服务端不会立刻向客户端发送FIND=1的请求关闭信息,

    而是先向客户端发送一个ACK=1的应答信息,表示:你请求关闭的请求我已经收到,但我可能还有数据没有完成传送,你再等下,等我数据传输完成了我就告诉你;

  • 第三次挥手:服务端数据传输完成,向客户端发送FIN=1,客户端收到请求关闭连接的请求后,客户端就明白服务端的数据已传输完成,现在可以断开连接了,

  • 第四次挥手:客户端收到FIND=1后,客户端还是怕由于网络不稳定的原因,怕服务端不知道他要断开连接,于是向服务端发送ACK=1确认信息进行确认,

    把自己设置成TIME_WAIT状态并启动定时器,如果服务端没有收到ACK,服务端TCP的定时器到达后,会要求客户端重新发送ACK,当服务端收到ACK后,服务端就断开连接;
    当客户端等待2MLS(2倍报文最大生存时间)后,没有收到服务端的重传请求后,他就知道服务端已收到了ACK,所以客户端此时才关闭自己的连接。

 

转载于:https://my.oschina.net/u/556651/blog/707589

你可能感兴趣的文章
游戏音效下载网站大全
查看>>
angular $resouse服务
查看>>
知识分析与应用基础作业(一)
查看>>
B/S与C/S区别
查看>>
实验五
查看>>
bzoj1821
查看>>
文法分析
查看>>
Java对象模型
查看>>
记那次失败了的面试
查看>>
程序包+创建包规范+创建包体+删除程序包
查看>>
css写出三角形(兼容IE)
查看>>
Vue过渡效果之JS过渡
查看>>
3-继承
查看>>
java中如何实现类似goto的作法
查看>>
Switch入门第二讲
查看>>
海归千千万 为何再无钱学森
查看>>
vue2.0 仿手机新闻站(六)详情页制作
查看>>
FreeRTOS的内存管理
查看>>
JSP----九大内置对象
查看>>
mysql存储引擎简析
查看>>