tcp三次握手和四次挥手过程

网友投稿 350 2022-10-16


tcp三次握手和四次挥手过程

TCP三次握手和四次挥手过程

一 、 TCP协议

TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议 。

TCP提供全双工服务,数据可在同一时间段双向传输。每一个TCP都有发送缓存和接收缓存,用来临时存储数据。

二、TCP报文段

TCP将若干个字节构成一个分组,称为报文段(Segment)。TCP报文封装在IP数据报中

IP首部

TCP报文段

TCP报文段的首部格式图

传输时源端口号对应目标端口号

ACK:确认序列号字段是否有效 ack:=1有效 =0无效

SYN:同步序号位,TCP需要建立连接时将这个值设为1。

FIN:发送端完成发送任务位,当TCP完成数据传输需要断开连接时,提出断开连接的一方将这个值设为1。

三、TCP连接

TCP是面向连接的协议,它在源点和终点之间建立一条虚连接。

1)建立连接

TCP建立连接的过程称为三次握手,下面通过抓包软件来分析三次握手过程。

三次握手

(1)主机A向主机B发送TCP连接请求数据包,其中包含主机A的初始序列号seq(A)=x。(其中报文中同步标志位SYN=1,ACK=0,表示这是一个TCP连接请求数据报文;序号seq=x,表明传输数据时的第一个数据字节的序号是x)

( 2)主机B收到请求后,会发回连接确认数据包。(其中确认报文段中,标识位SYN=1,ACK=1,表示这是一个TCP连接响应数据报文,并含主机B的初始序列号seq(B)=y,以及主机B对主机A初始序列号的确认号ack(B)=seq(A)+1=x+1)

( 3)第三次,主机A收到主机B的确认报文后,还需作出确认,即发送一个序列号seq(A)=x+1;确认号为ack(A)=y+1的报文

四次挥手

由于TCP连接时全双工的,因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接,收到一个FIN只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭,上图描述的即是如此。        (1)第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。

(2)第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。

(3)第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。

(4)第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java 数组内置函数toArray详解
下一篇:网络分流器|3G/LTE业务采集|移动互联网采集器-专业版
相关文章

 发表评论

暂时没有评论,来抢沙发吧~