13. TCP协议

您所在的位置:网站首页 如何判断使用udp的服务程序 13. TCP协议

13. TCP协议

2024-06-27 22:54:00| 来源: 网络整理| 查看: 265

13.4.2. TCP报文段格式¶

TCP报文段如APR报文、IP数据报一样,也是由首部+数据区域组成,TCP报文段的首部我们称之为TCP首部, 其首部内推很丰富,各个字段都有不一样的含义,如果不计算选项字段,一般来说TCP首部只有20个字节, 具体见 图13_2。在LwIP中,报文段首部采用一个名字叫tcp_hdr的结构体进行描述,具体见 代码清单13_1

代码清单 13‑1 tcp_hdr结构体

PACK_STRUCT_BEGIN struct tcp_hdr { PACK_STRUCT_FIELD(u16_t src); /* 源端口 */ PACK_STRUCT_FIELD(u16_t dest); /* 目标端口 */ PACK_STRUCT_FIELD(u32_t seqno); /* 序号 */ PACK_STRUCT_FIELD(u32_t ackno); /* 确认序号 */ PACK_STRUCT_FIELD(u16_t _hdrlen_rsvd_flags); /* 首部长度+保留位+标志位 */ PACK_STRUCT_FIELD(u16_t wnd); /* 窗口大小 */ PACK_STRUCT_FIELD(u16_t chksum); /* 校验和 */ PACK_STRUCT_FIELD(u16_t urgp); /* 紧急指针 */ } PACK_STRUCT_STRUCT; PACK_STRUCT_END

图 13‑3TCP报文段格式

每个TCP报文段都包含源主机和目标主机的端口号,用于寻找发送端和接收端应用线程,这两个值加上I P首部中的源I P地址和目标I P地址就能确定唯一一个TCP连接。

序号字段用来标识从TCP发送端向TCP接收端发送的数据字节流,它的值表示在这个报文段中的第一个数据字节所处位置吗,根据接收到的数据区域长度,就能计算出报文最后一个数据所处的序号,因为TCP协议会对发送或者接收的数据进行编号(按字节的形式),那么使用序号对每个字节进行计数,就能很轻易管理这些数据。序号是32 bit的无符号整数。

当建立一个新的连接时,TCP报文段首部的 SYN标志变1,序号字段包含由这个主机随机选择的初始序号ISN(Initial Sequence Number)。该主机要发送数据的第一个字节序号为 ISN+1,因为SYN标志会占用一个序号,在这里我们只需要了解一下即可,后面会讲解的。

既然TCP协议给每个传输的字节都了编号,那么确认序号就包含接收端所期望收到的下一个序号,因此,确认序号应当是上次已成功收到数据的最后一个字节序号加 1。当然,只有ACK标志为 1时确认序号字段才有效,TCP为应用层提供全双工服务,这意味数据能在两个方向上独立地进行传输,因此确认序号通常会与反向数据(即接收端传输给发送端的数据)封装在同一个报文中(即捎带),所以连接的每一端都必须保持每个方向上的传输数据序号准确性。

首部长度字段占据4bit空间,它指出了TCP报文段首部长度,以字节为单位,最大能记录15*4=60字节的首部长度,因此,TCP报文段首部最大长度为60字节。在字段后接下来有6bit空间是保留未用的。

此外还有6bit空间,是TCP报文段首部的标志字段,用于标志一些信息:

URG:首部中的紧急指针字段标志,如果是1表示紧急指针字段有效。

ACK:首部中的确认序号字段标志,如果是1表示确认序号字段有效。

PSH:该字段置一表示接收方应该尽快将这个报文段交给应用层。

RST:重新建立TCP连接。

SYN:用同步序号发起连接。

FIN:中止连接。

TCP的流量控制由连接的每一端通过声明的窗口大小来提供,窗口大小为字节数,起始于确认序号字段指明的值,这个值是接收端正期望接收的数据序号,发送方根据窗口大小调整发送数据,以实现流量控制。窗口大小是一个占据16 bit空间的字段,因而窗口最大为 65535字节,当接收方告诉发送方一个大小为0的窗口时,将完全阻止发送方的数据发送。

检验和覆盖了整个的 TCP报文段:TCP首部和TCP数据区域,由发送端计算和填写,并由接收端进行验证。

只有当URG标志置1时紧急指针才有效,紧急指针是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。简单来说,本TCP报文段的紧急数据在报文段数据区域中,从序号字段开始,偏移紧急指针的值结束。

选项字段我们暂时就无需理会了。

自此,我们已经把TCP报文段的内容讲解完毕,我们可以通过wireshark抓包工具进行抓包查看一下TCP报文段的数据,具体见 图13_4。

图 13‑4wireshark抓包工具的TCP报文段格式

此处有一个要注意的地方:当某个主机开启一个TCP会话时,他的初始序列号(ISN)是随机的,可能是0~4294967295之间的任意值,然而,像wireshark这种抓包工具,通常显示的都是相对序列号与确认号,而不是实际序列号与确认号,相对序列号与确认号是和TCP会话的初始序列号相关联的。因为比起真实序列号与确认号,wireshark工具跟踪更小的相对序列号与确认号会相对容易一些。

当然啦,我们也可以自己选择看真实的序列号,直接在wireshark抓包工具中取消相对序列号配置即可,在wireshark菜单栏中的 Edit -> Preferences ->protocols ->TCP,去掉Relative sequence number后面勾选框中的√即可,具体见 图13_5,取消后的序列号具体见 图13_6。

图 13‑5取消相对序列号配置

图 13‑6真实序列号



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭