您的位置:首页 > 理论基础 > 计算机网络

TCP的三次握手和四次挥手

2017-08-02 13:21 197 查看
一.TCP数据报报头如下所示:



和UDP协议一样也有源端口号的目的端口号,通信的双方由Ip地址和端口号标识。

32位序号标识和32位确认序号标识:保证全双工

16位窗口大小:

4位首部长度的数值表示TCP协议头的长度,以4字节为单位,最小值为5,二进制序列为0101,最大值为15,二进制序列为1111,因此TCP协议头最短为4*5 = 20(不带任何选项);最长可以是4*15=60字节。(带选项)

保留6位:

URG:紧急标志位

ACK:确认标志位

PSH:在上篇博客会介绍

RST:重置标志位,如过长时间只用链接,但不访问,将被重置(断开链接),下次访问的时候要重新链接。

SYN:同步标志位,建立3次挥手链接是会使用。

`

二,TCP的特点,以及可靠性的保证。

1.TCP协议是面向链接的,全双工的,面向字节流的协议。

2.TCP协议是基于请求应答机制,只有经过确认的消息才是可靠的,没有得到响应,是不能保证可靠性的。

3.TCP的可靠性,是基于数据的有序到达。

4.TCP是基于信号,判断丢包,触发丢包重传机制。

5.TCP基于滑动窗口来进行流量控制。

6.如果出现大面积丢包,不能重传,TCP执行网络拥塞避免算法。

7.TCP会维护多种定时器,完成可靠性。

三,通信时序

TCP的建立链接——3次握手

在Client主动要求断开链接的情况下,流程如下:

1。Client发送一个SYN=1的报文到server,表示请求建立链接。

2. Server发送ACK表示收到消息,并且发送SYN =1也申请建立链接。

3,Client发送ACK表示收到消息,链接建立成功。

TCP断开链接—— 4次挥手

在Client主动要求断开链接的情况下,流程如下:

1.Client发送一个FIN=1的TCP报文段到Server,表示自己没有数据要发送了,想断开链接。

2,Server收到上面的报文段后,立马发送ACK确认已收到。

3,若Server还有需要发送的数据,继续发送完毕。

4,当Server也没有继续发送的数据时,发送一个FIN=1的TCP报文段到Server,表示自己没有数据要发送了,将断开链接,并且断开Server到Client的链接,释放相应的资源。

5,Client收到Server的FIN=1的TCP报文段,发送ACK确认消息已经收到,但是这个时候Server已经断开链接,因此这个ACK事实是无人认领的状态。

6,Client发送完最后一条报文后,进入time wait状态。等了2MSL时间,没收到消息,表示对面关闭了链接,自己也断开到Server 的链接。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息