TCP报文格式详解
常见网络协议报文格式汇总

常见网络协议报文格式汇总网络协议是计算机网络通信中,用于规定通信双方传输数据的格式和规则的标准化。
协议中的报文是通信双方之间进行数据交换的载体。
下面我将简单介绍一些常见的网络协议报文格式。
1. HTTP(Hypertext Transfer Protocol)报文格式:-请求报文格式:```<Method> <Request-URI> <HTTP-Version><Headers><Entity-Body>```-响应报文格式:```<HTTP-Version> <Status-Code> <Reason-Phrase><Headers><Entity-Body>```2. TCP(Transmission Control Protocol)报文格式:-TCP报文格式如下:```Source Port Destination PortSequence Number Acknowledgment NumberData Offset Reserved Control BitsWindow Checksum Urgent PointerOptions (if any)Data```3. UDP(User Datagram Protocol)报文格式:-UDP报文格式如下:```Source Port Destination PortLength ChecksumData```4. IP(Internet Protocol)报文格式:-IPv4报文格式如下:```Version IHL Type of Service Total LengthIdentification Flags Fragment Offset Time to Live Protocol Header Checksum Source IP AddressDestination IP AddressOptions (if any)Padding (if necessary)Data```-IPv6报文格式如下:```Version Traffic Class Flow Label Payload Length Next HeaderHop LimitSource IPv6 AddressDestination IPv6 AddressOptions (if any)Padding (if necessary)Data```5. ICMP(Internet Control Message Protocol)报文格式:-ICMP报文格式如下:```Type Code ChecksumIdentifier Sequence NumberData (Optional)```6. Ethernet报文格式:- Ethernet报文格式如下:```Destination MAC AddressSource MAC AddressEthernet TypePayload```7. DNS(Domain Name System)报文格式:-DNS报文格式如下:```DNS Message HeaderDNS Message Question SectionDNS Message Answer SectionDNS Message Authority SectionDNS Message Additional Section```8. FTP(File Transfer Protocol)报文格式:-FTP报文格式如下:```Arguments```9. SMTP(Simple Mail Transfer Protocol)报文格式:-SMTP报文格式如下:```Arguments```这些是常见的网络协议的报文格式,它们用于在计算机网络中进行数据传输和通信。
数据包报文格式(IP包TCP报头UDP报头)

数据包报文格式(IP包TCP报头UDP报头)一、IP包格式IP数据包是一种可变长分组,它由首部和数据负载两部分组成。
首部长度一般为20-60字节(Byte),其中后40字节是可选的,长度不固定,前20字节格式为固定。
数据负载部分的长度一般可变,整个IP数据包的最大长度为65535B。
1、版本号(Version)长度为4位(bit),IP v4的值为0100,IP v6的值为0110。
2、首部长度指的是IP包头长度,用4位(bit)表示,十进制值就是[0,15],一个IP包前20个字节是必有的,后40个字节根据情况可能有可能没有。
如果IP包头是20个字节,则该位应是20/4=53、服务类型(Type of Service TOS)长度为8位(bit),其组成:前3位为优先级(Precedence),后4位标志位,最后1位保留未用。
优先级主要用于QoS,表示从0(普通级别)到7(网络控制分组)的优先级。
标志位可分别表示D(Delay更低的时延)、T(Throughput 更高的吞吐量)、R(Reliability更高的可靠性)、C(Cost 更低费用的路由)。
TOS只表示用户的请求,不具有强制性,实际应用中很少用,路由器通常忽略TOS字段。
4、总长度(Total Length)指IP包总长度,用16位(bit)表示,即IP包最大长度可以达216=65535字节。
在以太网中允许的最大包长为1500B,当超过网络允许的最大长度时需将过长的数据包分片。
5、标识符(Identifier)长度为16位,用于数据包在分段重组时标识其序列号。
将数据分段后,打包成IP 包,IP包因走的路由上不同,会产生不同的到达目地的时间,到达目地的后再根据标识符进行重新组装还原。
该字段要与标志、段偏移一起使用的才能达到分段组装的目标。
6、标志(Flags)长度为3位,三位从左到右分别是MF、DF、未用。
MF=1表示后面还有分段的数据包,MF=0表示没有更多分片(即最后一个分片)。
tcp 报文段的格式 举例

tcp 报文段的格式举例TCP报文段的格式包括以下部分:1. 源端口和目的端口:各占2个字节,用于标识发送和接收端的应用程序端口号。
2. 序列号:占4个字节,用于标识报文段中的数据部分的第一个字节。
3. 确认号:占4个字节,用于标识期望接收的下一个报文段的第一个字节的序号。
4. 数据偏移量:占4位,用于标识报文段中的数据部分的起始位置相对于报文段头的偏移量。
5. 标志位:包含6个标志,分别是URG、ACK、PSH、RST、SYN和FIN。
这些标志用于表示报文段的不同类型和状态。
6. 窗口大小:占2个字节,用于标识发送方可以发送的最大数据量,即窗口大小。
7. 校验和:占16位,用于检测报文段在传输过程中是否发生了错误。
8. 紧急指针:占16位,用于标识紧急数据的结束位置。
9. 数据部分:包含实际的数据内容,其长度可变。
以下是一个示例TCP报文段的二进制表示形式(以十六进制表示):```0x4500 0x003c 0x1f90 0x4000 0x4006 0x73570x7357 0x7357 0x7357 0x7357 0x7357 0x73570x7357 0x7357 0x7357 0x7357 0x7357 0x73570x7357 0x7357 0x7357 0x18ec 0x001a 0xd6c1```这个示例中,报文段的源端口为4500,目的端口为1998,序列号为123456,确认号为123456,标志位为PSH、ACK、SYN、FIN,窗口大小为2字节,紧急指针为16字节,数据长度为2字节。
实际的数据内容是“HELLO WORLD”。
TCP报文格式

TCP报⽂格式转载⾃1.TCP报⽂格式TCP报头中的源端⼝号和⽬的端⼝号同IP数据报中的源IP与⽬的IP唯⼀确定⼀条TCP连接序号(4字节=32位):37 59 56 75⽤来标识TCP发端向TCP收端发送的数据字节流确认序号(4字节=32位):由于该报⽂为SYN报⽂,ACK标志为0,故没有确认序号(ACK标志为1时确认序号才有效)TCP协议规定,只有ACK=1时有效,也规定连接建⽴后所有发送的报⽂的ACK必须为1⼀旦连接建⽴,该值将始终发送(同ACK标志)头部长度:该字段占⽤4位,⽤来表⽰报⽂⾸部的长度,单位是4Byte。
如:headLen = ((packet[12]>>4)&0x0F)*4;预留6位:长度为6位,作为保留字段,暂时没有什么⽤处。
URG:长1位,表⽰紧急指针字段有效;ACK:长1位,置位表⽰确认号字段有效;TCP协议规定,只有ACK=1时有效,也规定连接建⽴后所有发送的报⽂的ACK必须为1PSH:长1位,表⽰当前报⽂需要请求推(push)操作;RST:长1位,置位表⽰复位TCP连接;SYN:长1位,在连接建⽴时⽤来同步序号。
当SYN=1⽽ACK=0时,表明这是⼀个连接请求报⽂。
对⽅若同意建⽴连接,则应在响应报⽂中使SYN=1和ACK=1. 因此,SYN置1就表⽰这是⼀个连接请求或连接接受报⽂。
FIN:长1位,⽤于释放TCP连接时标识发送⽅⽐特流结束;即完,终结的意思,⽤来释放⼀个连接。
当 FIN = 1时,表明此报⽂段的发送⽅的数据已经发送完毕,并要求释放连接。
窗⼝⼤⼩:长度为16位,2个字节。
校验和:长度为16位,2个字节。
紧急指针:长度为16位,2个字节。
以上是TCP包头必须要有的字段,也称固有字段,长度为20个字节。
2.TCP三次握⼿TCP怎样才能保证可靠的传输任务,就是通过三次握⼿⾸先由Client发出请求连接即 SYN=1 ACK=0 (请看头字段的介绍), TCP规定SYN=1时不能携带数据,但要消耗⼀个序号,因此声明⾃⼰的序号是 seq=x然后 Server 进⾏回复确认,即 SYN=1 ACK=1 seq=y, ack=x+1,再然后 Client 再进⾏⼀次确认,但不⽤SYN 了,这时即为 ACK=1, seq=x+1, ack=y+1.3.TCP四次挥⼿ 当客户A 没有东西要发送时就要释放 A 这边的连接,A会发送⼀个报⽂(没有数据),其中 FIN 设置为1, 服务器B收到后会给应⽤程序⼀个信,这时A那边的连接已经关闭,即A不再发送信息(但仍可接收信息)。
sctp和tcp报文格式

sctp和tcp报文格式TCP和SCTP的报文格式有较大差异,TCP报文格式相对固定,而SCTP报文格式则更为灵活。
TCP报文格式通常包括以下部分:1. 序号字段:用来标识传输的数据流中每个字节的序号。
2. 确认号字段:期望收到对方的下一个报文段的数据的第1个字节的序号。
3. 首部长度字段:指的是TCP报文的数据距离TCP报文段的起始处有多远。
4. 服务类型字段:QOS中做流量标记使用。
5. 紧急指针字段:告诉系统此报文中有紧急数据。
6. 确认字段:当ack=1时,确认号字段才有效,用来表示TCP建立成功的状态。
7. 推送位字段:接收方应该尽快将这个报文段交给应用层。
8. 复位字段:重建连接标识。
当RST=1时,表明TCP连接中出现严重错误,必须释放连接,然后再重新建立连接。
9. 同步序号字段:在连接建立时用来同步序号。
当SYN=1,ACK=0,表明是连接请求报文,若同意连接,则响应报文中应该使SYN=1,ACK=1。
10. 释放连接字段:当FIN=1,表明此报文的发送方的数据已经发送完毕,并且要求释放。
11. 窗口字段:通知接收方用多大的空间来接收数据。
12. 校验和字段:用来校验数据的完整性。
13. 选项字段:可变长,定义一些可选的参数。
而SCTP报文格式则包括以下几个部分:1. 信令(INIT和INIT ACK)和数据传输(DATA和SACK)数据块格式:INIT数据块用于启动SCTP偶联,INIT ACK数据块用于确认SCTP偶联的启动;DATA数据块用于传输用户数据,SACK数据块则用于向对等的端点确认接收到的DATA数据块,并通知对等的端点在收到的DATA数据块中的间隔。
2. 可变长参数:包括STATECOOKIE、IPv4地址、IPv6地址、未识别的参数、ECN能力预留和主机名地址等参数类型。
3. 序列号和确认号:序列号用于标识传输的数据块,确认号则表示期望收到对方的下一个报文段的数据的第1个字节的序号。
TCP&UDP报文格式

TCP/UDP报文格式TCP 协议为终端设备提供了面向连接的、可靠的网络服务,UDP 协议为终端设备提供了无连接的、不可靠的数据报服务。
从上图我们可以看出,TCP 协议为了保证数据传输的可靠性,相对于UDP 报文,TCP 报文头部有更多的字段选项。
首先让我们来看一下TCP 的报文头部主要字段:每个TCP 报文头部都包含源端口号(source port)和目的端口号(destination port),用于标识和区分源端设备和目的端设备的应用进程。
在TCP/IP 协议栈中,源端口号和目的端口号分别与源IP 地址和目的IP 地址组成套接字(socket),唯一的确定一条TCP 连接。
序列号(Sequence number)字段用来标识TCP 源端设备向目的端设备发送的字节流,它表示在这个报文段中的第一个数据字节。
如果将字节流看作在两个应用程序间的单向流动,则TCP 用序列号对每个字节进行计数。
序列号是一个32bits 的数。
既然每个传输的字节都被计数,确认序号(Acknowledgement number,32bits)包含发送确认的一端所期望接收到的下一个序号。
因此,确认序号应该是上次已成功收到的数据字节序列号加1。
TCP 的流量控制由连接的每一端通过声明的窗口大小(windows size)来提供。
窗口大小用数据包来表示,例如Windows size=3, 表示一次可以发送三个数据包。
窗口大小起始于确认字段指明的值,是一个16bits 字段。
窗口大小可以调节。
校验和(checksum)字段用于校验TCP 报头部分和数据部分的正确性。
最常见的可选字段是MSS(Maximum Segment Size,最大报文大小)。
MSS指明本端所能够接收的最大长度的报文段。
当一个TCP 连接建立时,连接的双方都要通告各自的MSS 协商可以传输的最大报文长度。
我们常见的MSS有1024(以太网可达1460 字节)字节。
tcp、udp、ip、icmp报文格式分析

tcp、udp、ip、icmp报⽂格式分析TCP 、UDP 、IP、 ICMP协议报⽂格式分析Tcp报⽂格式:Wireshark抓包如图:源端⼝/⽬的端⼝(16bit):在TCP报⽂中包涵了源端⼝/⽬的端⼝,源端⼝标识了发送进程,⽬的端⼝标识了接收⽅进程。
由上图可以看出在此报⽂中我们的源端⼝号是54160, ⽬的端⼝是cichlid(1377)。
序列号(32bit):Sequence Number这个是发送序列号,⽤来标识从源端向⽬的端发送的数据字节流,它表⽰在这个报⽂端中的第⼀个数据字节的顺序号,序列号是32位的⽆符号类型,序列号表达达到2^32 - 1后⼜从0开始,当建⽴⼀个新的连接时,SYN标志为1,系列号将由主机随机选择⼀个顺序号ISN(Initial Sequence Number)。
此报⽂中的序列号是0x37e3d3a9如下图:确认号(32bit):Acknowledgment Number它包涵了发送确认⼀端所期望收到的下⼀个顺序号。
因此确认序列号应当是上次成功接收到数据的顺序号加1。
只有ACK标志为1时确认序号字段才有效。
TCP为应⽤层提供全双⼯服务,这意味着数据能在两个⽅向上独⽴的进⾏传输,因此连接的两断必须要保证每个⽅向上的传输数据顺序。
由图可以看出此报⽂的确认号为0xaa09ab7b。
偏移(4bit):这⾥的偏移实际指的是TCP⾸部的长度,它⽤来表明TCP⾸部中32bit字的数⽬,通过它可以知道⼀个TCP包它的⽤户数据从哪⾥开始,这个字段占4bit,若此字段的值为1000,则说明TCP⾸部的长度是8 * 4 = 32字节,所以TCP⾸部的最⼤长度是该字段的值为1111 = 15, 15 * 4 =60字节。
此报⽂我们的偏移量在0x50中,⼜因它占4bit,0x50等于⼆进制的0101 0000 所以我们的偏移量是 0101=5,所以我们的TCP报⽂⾸部长度为5* 4 = 20字节。
TCP报文结构和功能简析

TCP报文结构和功能简析
TCP(Transmission Control Protocol,传输控制协议)是互联网中
最常用的一种可靠的传输层协议。
本文将对TCP报文的结构和功能进行详
细的简析。
1.报文头字段:
-源端口和目的端口:用于标识通信双方的端口号,确保数据能够被
正确传送到目的地。
- 序号(Sequence Number):用于标识报文段中的数据的起始位置。
接收方根据序号对报文段进行重新排序,并确保数据的完整性。
- 确认号(Acknowledgment Number):用于确认已经接收到的数据。
发送方根据确认号判断数据是否已经成功送达。
- 数据偏移(Data Offset):用于表示报文头的长度。
数据偏移字
段的单位为4字节,表示报文头的长度为多少个4字节。
-控制位:用于指示TCP报文的控制信息,如SYN、ACK、FIN等。
这
些控制位可以告知TCP的运行状态,协助建立、维护和关闭连接。
- 窗口大小(Window Size):用于告知发送方接收窗口的大小,进
而控制发送速度,确保网络的拥塞不会导致数据丢失。
- 校验和(Checksum):用于检验报文的完整性。
发送方计算校验和,并将结果放置在报文头中,接收方再次计算校验和,并与报文头中的值进
行比对,以确保数据在传输过程中没有发生损坏。
- 紧急指针(Urgent Pointer):用于指示紧急数据的位置。
当报文
中有紧急数据需要传输时,通过紧急指针告知接收方。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
TCP报文格式详解
TCP报文格局详解
2011-08-31 TCP和谈只定义了一种报文格局
建立、拆除连接、传输数据应用同样的报文
TCP报文格局
TCP报文段首部(20个字节)
源端口和目标端口:各占2个字节,16比特的端标语加上32比特的IP地址,共同构成相当于传输层办事接见点的地址,即“插口”;
这些端口可用来将若干高层和谈向下复用;
序号字段和确认序号字段:
序号:占4个字节,是本报文段所发送的数据项目组第一个字节的序号。
在TCP传送的数据流中,每一个字节都有一个序号。
例如,一报文段的序号为300,而起数据供100字节,则下一个报文段的序号就是400;
确认序号:占4字节,是期望收到对方下次发送的数据的第一个字节的序号,也就是期望收到的下一个报文段的首部中的序号;
因为序号字段有32比特长,可以对4GB的数据进行编号,如许就可包管当序号反复应用时,旧序号的数据早已在收集中消散了;
数据偏移字段
数据偏移:占4比特,默示数据开端的处所离TCP报文段的肇端处有多远。
这实际上就是TCP报文段首部的长度。
因为首部长度不固定,是以数据偏移字段是须要的。
保存字段:6比特,供往后应用,今朝置为0。
6个比特的把握字段
紧急比特URGent:当URG=1时,注解此报文应尽快传送,而不要按本来的列队次序来传送。
与“紧急指针”字段共同应用,紧急指针指出在本报文段中的紧急数据的最后一个字节的序号,使接管方可以知道紧急数据共有多长;
确认比特ACK:只有当ACK=1时,确认序号字段才有意义;
急迫比特PSH:当PSH=1时,注解恳求远地TCP将本报文段立即传送给其应用层,而不要比及全部缓存都填满了之后再向上交付。
复位比特ReSeT:当RST=1时,注解呈现严重错误,必须开释连接,然后再重建传输连接。
复位比特还用来拒绝一个不法的报文段或拒绝打开一个连接;
同步比特SYN:在建树连接时应用,当SYN=1而ACK=0时,注解这是一个连接恳求报文段。
对方若赞成建树连接,在发还的报文段中使SYN=1和ACK=1。
是以,SYN=1默示这是一个连接恳求或毗邻接管报文,而ACK的值用来区分
是哪一种报文;
终止比特FINal:用来开释一个连接,当FIN=1时,注解欲发送的字节串已经发完,并请求开释传输连接;
窗口字段
窗口Window:占2字节,默示报文段发送方的接管窗口,单位为字节。
此窗口告诉对方,“在未收到我的确认时,你可以或许发送的数据的字节数至多是此窗口的大小。
”
通知窗口advertised window:接管端按照其接管才能承诺的窗口值,是来自接管端的流量把握。
接管端将通知窗口的值放在TCP报文的首部中,传送给对方。
拥塞窗口congestion window:是发送端按照收集拥塞景象得出的窗口值,是来自发送端的流量把握。
查验和覆盖了全部的TCP报文段:TCP首部和TCP数据。
这是一个强迫性的字段,由发端策画和存储,由收端进行验证。
选项字段容许每台主机设定可以或许接管的最大TCP载荷才能(缺省536字节)。
TCP分节的封装
TCP的数据编号与确认
数据流、报文段和序号
TCP通信的动作
切割:按照合适传输的大小对数据流进行切割
最大报文段长度<64Kbytes
凡是:MTU-(IP头+TCP头)
答复复兴:用报文段恢答复复兴始数据流的字节次序
序号:排序、查错及数据流答复复兴
TCP数据流的切割与答复复兴
报文序号
根据数据流中的字节序号(流序号)
报文序号为报文段中第一字节的流序号
如:流序号=x,长度=L的报文段,则:
报文的序号为x,下一报文序号为x+L
序号特点
报文的次序关系
数据流的地位,更便于流的答复复兴
需较大的序号空间(32bit,4Gbyte)
例如:在一个报文中,序号为300,而报文中数占领100字节。
下一个报文符,其序号为400;。