TCP/IP报文格式

article/2025/10/13 22:06:08

1IP报文格式
  
  IP协议是TCP/IP协议族中最为核心的协议。它提供不可靠、无连接的服务,也即依赖其他层的协议进行差错控制。在局域网环境,IP协议往往被封装在以太网帧(见本章1.3节)中传送。而所有的TCPUDPICMPIGMP数据都被封装在IP数据报中传送。如图2-3所示:
 

 

2-3  TCP/IP报文封装

 图2-4IP头部(报头)格式:(RFC 791)。

 

2-4  IP头部格式
   其中: 
  版本(Version)字段:占4比特。用来表明IP协议实现的版本号,当前一般为IPv4,即0100
  报头长度(Internet Header LengthIHL)字段:占4比特。是头部占32比特的数字,包括可选项。普通IP数据报(没有任何选项),该字段的值是5,即160比特=20字节。此字段最大值为60字节。  
  服务类型(Type of Service TOS)字段:占8比特。其中前3比特为优先权子字段(Precedence,现已被忽略)。第8比特保留未用。第4至第7比特分别代表延迟、吞吐量、可靠性和花费。当它们取值为1时分别代表要求最小时延、最大吞吐量、最高可靠性和最小费用。这4比特的服务类型中只能置其中1比特为1。可以全为0,若全为0则表示一般服务。服务类型字段声明了数据报被网络系统传输时可以被怎样处理。例如:TELNET协议可能要求有最小的延迟,FTP协议(数据)可能要求有最大吞吐量,SNMP协议可能要求有最高可靠性,NNTPNetwork News Transfer Protocol,网络新闻传输协议)可能要求最小费用,而ICMP协议可能无特殊要求(4比特全为0)。实际上,大部分主机会忽略这个字段,但一些动态路由协议如OSPFOpen Shortest Path First Protocol)、IS-ISIntermediate System to Intermediate System Protocol)可以根据这些字段的值进行路由决策。  
  总长度字段:占16比特。指明整个数据报的长度(以字节为单位)。最大长度为65535字节。  
  标志字段:占16比特。用来唯一地标识主机发送的每一份数据报。通常每发一份报文,它的值会加1。  
  标志位字段:占3比特。标志一份数据报是否要求分段。  
  段偏移字段:占13比特。如果一份数据报要求分段的话,此字段指明该段偏移距原始数据报开始的位置。  
  生存期(TTLTime to Live)字段:占8比特。用来设置数据报最多可以经过的路由器数。由发送数据的源主机设置,通常为3264128等。每经过一个路由器,其值减1,直到0时该数据报被丢弃。  
  协议字段:占8比特。指明IP层所封装的上层协议类型,如ICMP1)、IGMP2) 、TCP6)、UDP17)等。  
  头部校验和字段:占16比特。内容是根据IP头部计算得到的校验和码。计算方法是:对头部中每个16比特进行二进制反码求和。(和ICMPIGMPTCPUDP不同,IP不对头部后的数据进行校验)。  
  IP地址、目标IP地址字段:各占32比特。用来标明发送IP数据报文的源主机地址和接收IP报文的目标主机地址。 
  可选项字段:占32比特。用来定义一些任选项:如记录路径、时间戳等。这些选项很少被使用,同时并不是所有主机和路由器都支持这些选项。可选项字段的长度必须是32比特的整数倍,如果不足,必须填充0以达到此长度要求。  
  2TCP数据段格式
   TCP是一种可靠的、面向连接的字节流服务。源主机在传送数据前需要先和目标主机建立连接。然后,在此连接上,被编号的数据段按序收发。同时,要求对每个数据段进行确认,保证了可靠性。如果在指定的时间内没有收到目标主机对所发数据段的确认,源主机将再次发送该数据段。 
  如图2-5所示,是TCP头部结构(RFC 7931323)。
  

 

2-5  TCP头部结构 
  源、目标端口号字段:占16比特。TCP协议通过使用"端口"来标识源端和目标端的应用进程。端口号可以使用065535之间的任何数字。在收到服务请求时,操作系统动态地为客户端的应用程序分配端口号。在服务器端,每种服务在"众所周知的端口"Well-Know Port)为用户提供服务。 
  顺序号字段:占32比特。用来标识从TCP源端向TCP目标端发送的数据字节流,它表示在这个报文段中的第一个数据字节。 
  确认号字段:占32比特。只有ACK标志为1时,确认号字段才有效。它包含目标端所期望收到源端的下一个数据字节。 
  头部长度字段:占4比特。给出头部占32比特的数目。没有任何选项字段的TCP头部长度为20字节;最多可以有60字节的TCP头部。
  标志位字段(UAPRSF):占6比特。各比特的含义如下:
  ◆URG:紧急指针(urgent pointer)有效。
  ◆ACK:确认序号有效。
  ◆PSH:接收方应该尽快将这个报文段交给应用层。
  ◆RST:重建连接。
  ◆SYN:发起一个连接。
  ◆FIN:释放一个连接。
  窗口大小字段:占16比特。此字段用来进行流量控制。单位为字节数,这个值是本机期望一次接收的字节数。
  ●TCP校验和字段:占16比特。对整个TCP报文段,即TCP头部和TCP数据进行校验和计算,并由目标端进行验证。
  紧急指针字段:占16比特。它是一个偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。  
  选项字段:占32比特。可能包括"窗口扩大因子""时间戳"等选项。
  
  3UDP数据段格式  
  UDP是一种不可靠的、无连接的数据报服务。源主机在传送数据前不需要和目标主机建立连接。数据被冠以源、目标端口号等UDP报头字段后直接发往目的主机。这时,每个数据段的可靠性依靠上层协议来保证。在传送数据较少、较小的情况下,UDPTCP更加高效。 
  如图2-6所示,是UDP头部结构(RFC 7931323): 

 

2-6  UDP数据段格式
  源、目标端口号字段:占16比特。作用与TCP数据段中的端口号字段相同,用来标识源端和目标端的应用进程。
  长度字段:占16比特。标明UDP头部和UDP数据的总长度字节。
  校验和字段:占16比特。用来对UDP头部和UDP数据进行校验。和TCP不同的是,对UDP来说,此字段是可选项,而TCP数据段中的校验和字段是必须有的。
  
  2.3 套接字
  在每个TCPUDP数据段中都包含源端口和目标端口字段。有时,我们把一个IP地址和一个端口号合称为一个套接字(Socket),而一个套接字对(Socket pair)可以唯一地确定互连网络中每个TCP连接的双方(客户IP地址、客户端口号、服务器IP地址、服务器端口号)。
  如图2-7所示,是常见的一些协议和它们对应的服务端口号。
  

 

2-7  常见协议和对应的端口号
  需要注意的是,不同的应用层协议可能基于不同的传输层协议,如FTPTELNETSMTP协议基于可靠的TCP协议。TFTPSNMPRIP基于不可靠的UDP协议。
  同时,有些应用层协议占用了两个不同的端口号,如FTP2021端口,SNMP161162端口。这些应用层协议在不同的端口提供不同的功能。如FTP21端口用来侦听用户的连接请求,而20端口用来传送用户的文件数据。再如,SNMP161端口用于SNMP管理进程获取SNMP代理的数据,而162端口用于SNMP代理主动向SNMP管理进程发送数据。
  还有一些协议使用了传输层的不同协议提供的服务。如DNS协议同时使用了TCP 53端口和UDP 53端口。DNS协议在UDP53端口提供域名解析服务,在TCP53端口提供DNS区域文件传输服务。
  
  2.4 TCP连接建立、释放时的握手过程
  1TCP建立连接的三次握手过程
  TCP会话通过三次握手来初始化。三次握手的目标是使数据段的发送和接收同步。同时也向其他主机表明其一次可接收的数据量(窗口大小),并建立逻辑连接。这三次握手的过程可以简述如下:
  源主机发送一个同步标志位(SYN)置1TCP数据段。此段中同时标明初始序号(Initial Sequence NumberISN)。ISN是一个随时间变化的随机值。
  目标主机发回确认数据段,此段中的同步标志位(SYN)同样被置1,且确认标志位(ACK)也置1,同时在确认序号字段表明目标主机期待收到源主机下一个数据段的序号(即表明前一个数据段已收到并且没有错误)。此外,此段中还包含目标主机的段初始序号。
  源主机再回送一个数据段,同样带有递增的发送序号和确认序号。
  至此为止,TCP会话的三次握手完成。接下来,源主机和目标主机可以互相收发数据。整个过程可用图2-8表示。
  

 


  

2-8  TCP建立连接的三次握手过程
  2TCP释放连接的四次握手过程
  TCP连接的释放需要进行四次握手,步骤是:
  源主机发送一个释放连接标志位(FIN)为1的数据段发出结束会话请求

 


http://chatgpt.dhexx.cn/article/3JIuNZUY.shtml

相关文章

TCP首部报文段格式

最近《计算机网络》这本书看到了传输层的 TCP 协议,因为TCP 的全部功能都体现在它的首部中,因此觉得有必要将这些知识梳理一下。 首先TCP 是面向字节流的。这个流指的是流入到进程或从进程流出的字节序列。面向字节流的含义是:应用程序与 TC…

ARP报文格式详解

ARP 协议包(ARP 报文)主要分为 ARP 请求包和 ARP 响应包,本节将介绍 ARP 协议包的格式。 ARP 报文格式 ARP 协议是通过报文进行工作的,ARP 报文格式如图所示。 ARP 报文总长度为 28 字节,MAC 地址长度为 6 字节&…

CAN的报文格式

CAN的报文格式 在总线中传送的报文,每帧由7部分组成。CAN协议支持两种报文格式,其唯一的不同是标识符(ID)长度不同,标准格式为11位,扩展格式为29位。 在标准格式中,报文的起始位称为帧起始&am…

IPv4报文格式详解和报文示例

目录 一,IP数据报文的组成 二,IP报文格式 三,IPv4报文示例 作者:柒烨带你飞 一,IP数据报文的组成 一个IP数据报文都是由首部和数据两部分组成。 每个 IP 数据报都以一个 IP 报头开始。IP 报头中包含大量信息&#…

ICMP报文格式解析

ICMP报文的格式类型总共分为三大类: 1、差错报文 2、控制报文 3、查询报文 上图是ICMP报文的基本格式,上面提到的三种ICMP报文均有“类型,代码和校验和”三个字段,后面还有4个字节是根据不同的报文类型而有不同的格式&#xff…

常见网络报文数据包格式

当我们应用程序用TCP传输数据的时候,数据被送入协议栈中,然后逐个通过每一层,知道最后到物理层数据转换成比特流,送入网络。而再这个过程中,每一层都会对要发送的数据加一些首部信息。整个过程如下图。 以太网帧格式 以…

网络中的常见的各种协议--报文格式总结学习

网络中的各种协议总结学习 以太网帧结构IP报文格式ARP协议ICMP协议UDP用户数据包协议DNS TCP协议FTP协议HTTP协议SMTP协议POP协议SSH协议 以太网帧结构 注: 当LLC-PDU中携带的是数据的时候,那么左侧的2字节表示的就是长度;当然,以…

网络基础知识之报文格式介绍

1.以太网数据帧头部 DMAC:目的MAC地址,长度6个字节。 SMAC:源MAC地址,长度6个字节。 TYPE:类型字段,表明上层是哪种协议,IP协议是0x800,ARP协议是0x0806。 DATA:数据字…

计算机网络11种协议报文格式

文章目录 TCPUDPIPIPV6IPSec以太网帧结构802.1Q以太网帧结构802.11无线链路帧SSL记录RTP实时传输协议OpenFlow流表参考 TCP 源端口号和目的端口号: 用16bit表示所以端口号范围为0~65535,用来标识源主机和目的主机上的进程,用于运输层的多路复用和多路分解…

EndNote X8使用总结

本文记录在使用EndNote X8(Word2013)过程中遇到的一些问题,持续更新。 1.插入参考文献序号与文本的缩进问题 问题描述:在Word中使用EndNote插入参考文献后,在文末的参考文献出现文献序号与文本内容相距较大的情况&am…

EndNote20 安装方法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、Endnote是什么?二、安装步骤 1.安装库2.中文版总结 前言 管理文献工具是科研入门的一个必要学习方面。随着写作论文的增多,以及学习…

安装 EndNote X 9.3.3

下载 链接:https://pan.baidu.com/s/1d4njrGQUZQxE-VeSA_M1Zw 提取码:0226 安装 双击 .exe文件 不想安装在C盘的可以点击 Browse 自己设置一个路径,点击 OK 出现下图这一幕是因为我 office 打开着,只要把 wor…

Endnote操作

记录一下一些要点,以便之后毕设用到 1. 用endnote插入文献后,mathtype的公式显示域代码。word-文件-选项-高级 2.word中想修改endnote格式出现can not be formatted because it is no longer open. Please chose another document. word-endnote20-Too…

EndNote安装与使用

一、安装 1、双击ENX9Inst.msi安装 2、进入安装目录,使用CHS或ENG里的文件替换安装目录文件 CHS 中文版 ENG 英文版 二、软件优化 1、EndNote Import.enf 此文件用于导入中文文献时期刊名解析错误的问题,右击使用EndNoteX9打开后关闭即可 2、geebin…

EndNote X9导入文献的5种方式

上一篇介绍了EndNote X9下载与简介。 这里再介绍一下EndNote X9导入文献的5种方式,分别如下: 1. 从数据库网站导入参考文献 2. 在网页浏览中导入参考文献 3. 轻松导入本地参考文献 4. 在线检索导入参考文献 5. 手工添加参考文献信息 1. 从数据库网站导…

学习记录:关于如何安装EndnoteX9以及汉化过程

1、下载 Endnote X9安装包,并解压。 百度网盘地址: 链接:https://pan.baidu.com/s/1s1o81RVPsYIekr9as2M-kg 提取码:iw6h 2、 点击ENX9Inst.msi开始安装。 3、安装过程 Next accept Next accept、Next Typical、Next 可默认地址…

EndnoteX9下载并安装

Endnotex9 安装包链接链接:链接:https://pan.baidu.com/s/1lZYXIkZ-LjeHAH32DT4DmQ 提取码:yz2d 破解码:1、79SHT-UQFTD-FE94J-FRRBW-UDHXL 2、3VLXS-VVXSR-RMSJ7-AKURY-GPQFG 3、LTF3T-KJ778-RPRSC-8G4FN-5LWJN 4、3SF6V-TYK7C-…

Mac版本EndNote基本用法

NoteExpress在Mac上并未覆盖,转而探索了下Mac版EndNote基本用法: 以北京科技大学为例: 一、下载安装: 1.在校外访问学校VPN:http://n.ustb.edu.cn/。登录个人账号后,点击“电子资源数据导航”进入到学校图…

EndNote X9使用方法

要先下载,word里不自带 一、如何添加引用 1、打开EndNote x9。点击文件->新建,在弹出的对话框中选择一个地址,修改文件名,新建文献库。 新建之后的效果如图所示: 2、在谷歌学术、百度学术或知网上搜索自己需要的…

「Juc并发编程」什么是可重入锁?

「Juc并发编程」什么是可重入锁? 文章目录 「Juc并发编程」什么是可重入锁?一、概述二、解释三、可重入锁种类隐式锁同步块同步方法 显式锁 四、Synchronized的重入的实现机理 一、概述 可重入锁又名递归锁,是指在同一个线程在外层方法获取锁…