TCP固定头部结构详解

您所在的位置:网站首页 TCP包头大小 TCP固定头部结构详解

TCP固定头部结构详解

2024-07-12 11:45| 来源: 网络整理| 查看: 265

1、前言

尽管TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务。TCP提供一种面向连接的、可靠的字节流服务。

使用TCP协议通信的双方必须先建立连接,然后才能开始数据的读写。双方都必须为该连接分配必要的内核资源,以管理连接的状态和连接上之后的数据的传输。TCP连接是全双工的,即双方的数据读写可以通过一个连接进行。完成数据交换后,通信双方都必须断开连接以释放系统资源。

TCP连接是一对一的,所以基于广播和多播应该使用UDP协议。

本文将分别讲解TCP协议建立连接(所谓的“3次握手”)和断开连接(所谓的“4次挥手”)的过程。有关TCP协议的权威理论介绍,请参见《TCP/IP详解》这本书。

2、参考资料

TCP协议的可靠传输详解 HTTP和HTTPS 网络分层模型以及对应的协议

3、TCP报文格式

TCP头部详解如下,部分图上不好画的,在下文会有文字解释。

这里写图片描述

对上图的部分说明

端口号:

在进行TCP通信时,客户端使用系统自动选择的临时端口号,服务器采用知名服务端口号,如DNS协议端口号53,HTTP协议端口号80。知名服务使用的端口号定义在/etc/services。 这里写图片描述

六位标志位包含以下几项:

URG:表示紧急指针是否有效;

ACK:表示确认号是否有效,携带ACK标志的数据报文段为确认报文段;

PSH:提示接收端的应用程序应该立即从TCP接受缓冲区中读走数据,为接受后续数据腾出空间;

RST:表示要求对方重新建立连接,携带RST标志位的TCP报文段成为复位报文段;

SYN:表示请求建立一个连接,携带SYN标志的TCP报文段为同步报文段;

FIN:通知对方本端要关闭了,带FIN标志的TCP报文段为结束报文段。

确认序号:

Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1。 TCP头部选项:

TCP头部选项是一个可变长的信息,这部分最多包含40字节,因为TCP头部最长60字节,(其中还包含前面20字节的固定部分)。

为什么在TCP首部的开始便是首部长度字段而UDP首部却没有?

因为UDP提供无连接服务,它的数据包包头,是固定长度的8字节,不存在可选字段,可以减少很多传输开销,所以它无需使用首部字段长,因为它的首部就是固定的。

而TCP提供连接服务,它的数据包包头,除了固定的20字节之外,还存在一个可选项,这个可选项字段,是根据TCP连接的要求而变动。这一字段最常见到的就是最大报文大小MSS,它指明发送端所能接收的最大长度的报文段。因为这个字段的存在,所以TCP包头使用了首部长字段。它占4位,以四字节为单位表示TCP包头长度,也就是说,TCP的首部最大长度可以是15x4=60字节,而可选项长可以为60-20=40字节



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3