TCP的三次握手和四次挥手

来源:互联网 发布:面向对象编程 方法 编辑:程序博客网 时间:2024/04/19 23:06

一.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 的链接。

原创粉丝点击