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):用于指示紧急数据的位置。
当报文
中有紧急数据需要传输时,通过紧急指针告知接收方。
TCP包头格式详解
TCP包头格式详解⼀般来说,⽹络编程我们只需要调⽤⼀些封装好的函数或者组件就能完成⼤部分的⼯作,但是⼀些特殊的情况下,就需要深⼊的理解⽹络数据包的结构,以及协议分析。
如:⽹络监控,故障排查等……IP包是不安全的,但是它是互联⽹的基础,在各⽅⾯都有⼴泛的应⽤。
由IP协议衍⽣的协议族有10数种(据我所知),以后还会出现更多的基于IP的协议…先从实际出发吧!⼀般我们在谈上⽹速度的时候,专业上⽤带宽来描述,其实⽆论说⽹速或者带宽都是不准确的,呵呵。
⽐如:1兆,512K……有些在学校的学⽣,也许会有疑问,明明我的业务是1M,为什么下载速度到100K就飙不上去了?512K的为什么50多K就封顶了?…这⾥所说的1M是指1Mbps = 1 Million Bits Per Second,也就是1M⽐特每秒,即⼀秒钟传输1048576个⼆进制位。
我们知道⼀个字节是8个⼆进制位。
好,⼜来问题了。
即便这样⼦,1M=1048756÷8=131072÷1024=128K。
那也应该有128K啊,为什么下载速度还是很少到120K,110K都谢天谢地了。
看完本⽂,你的帐就对了……IP数据包结构:如图,⼀个刻度表⽰1个⼆进制位(⽐特)。
1-1.版本4位,表⽰版本号,⽬前最⼴泛的是4=B1000,即常说的IPv4;相信IPv6以后会⼴泛应⽤,它能给世界上每个纽扣都分配⼀个IP地址。
1-2.头长4位,数据包头部长度。
它表⽰数据包头部包括多少个32位长整型,也就是多少个4字节的数据。
⽆选项则为5(红⾊部分)。
1-3.服务类型,包括8个⼆进制位,每个位的意义如下:过程字段:3位,设置了数据包的重要性,取值越⼤数据越重要,取值范围为:0(正常)~ 7(⽹络控制)延迟字段:1位,取值:0(正常)、1(期特低的延迟)流量字段:1位,取值:0(正常)、1(期特⾼的流量)可靠性字段:1位,取值:0(正常)、1(期特⾼的可靠性)成本字段:1位,取值:0(正常)、1(期特最⼩成本)保留字段:1位,未使⽤1-4.包裹总长16位,当前数据包的总长度,单位是字节。
路由交换技术-TCP报文格式
又称注册端口号 范围是1024到49151 没有明确的定义服务对象
又称临时端口号 范围是49152到65535 系统分配给应用程序使用
使用完成后释放这个端口
端口号与协议的对应关系
服务类型 ftp-data
ftp ssh telnet smtp dns tftp http pop3 snmp https
端口号 20 21 22 23 25 53 69 80 110 161 443
传输层协议 tcp/udp tcp tcp/udp tcp/udp tcp tcp/udp udp tcp tcp udp tcp
内容 文件传输协议 文件传输协议 SSH远程登录协议 远程登录协议 简单邮件传输协议
域名系统 小型文件传输协议 超文本传输协议
1. TCP报文格式
bit0
bit31
源端口(16)
目目标标端端口((1166))
序列号(Sequence Number,32)
确认号(Acknowledgement Number,32)
UA P R S F 数据偏移 保留字段 R C S S Y I
GK H T NN
窗口大小(16位)Fra bibliotek校验和(16)
GK H T NN
窗口大小(16位)
校验和(16)
紧急指针(16)
可选项
填充
数据
3
序列号
占用32位 不同的数据段 按序列号把数据段重新排列
8
1. TCP报文格式
bit0
bit31
源端口(16)
目标端口(16)
序列号(Sequence Number,32)
确认确号认(号A(cAkcnkonowwleleddggemmeennttNNumumbebr,er3,2)32)
TCP报文格式详解
TCP报文是TCP层传输的数据单元,也叫报文段。
1、端口号:用来标识同一台计算机的不同的应用进程。
1)源端口:源端口和IP地址的作用是标识报文的返回地址。
2)目的端口:端口指明接收方计算机上的应用程序接口。
TCP报头中的源端口号和目的端口号同IP数据报中的源IP与目的IP唯一确定一条TCP连接。
2、序号和确认号:是TCP可靠传输的关键部分。
序号是本报文段发送的数据组的第一个字节的序号。
在TCP传送的流中,每一个字节一个序号。
e.g.一个报文段的序号为300,此报文段数据部分共有100字节,则下一个报文段的序号为400。
所以序号确保了TCP传输的有序性。
确认号,即ACK,指明下一个期待收到的字节序号,表明该序号之前的所有数据已经正确无误的收到。
确认号只有当ACK标志为1时才有效。
比如建立连接时,SYN报文的ACK标志位为0。
3、数据偏移/首部长度:4bits。
由于首部可能含可项内容,因此TCP报头的长度是不确定的,报头不包含任何任字段则长度为20字节,4位首部长度字段所能表示的最大值为1111,转化为10进制为15,15*32/8 = 60,故报头最大长度为60字节。
首部长度也叫数据偏移,是因为首部长度实际上指示了数据区在报文段中的起始偏移值。
4、保留:为将来定义新的用途保留,现在一般置0。
5、控制位:URG ACK PSH RST SYN FIN,共6个,每一个标志位表示一个控制功能。
1)URG:紧急指针标志,为1时表示紧急指针有效,为0则忽略紧急指针。
2)ACK:确认序号标志,为1时表示确认号有效,为0表示报文中不含确认信息,忽略确认号字段。
3)PSH:push标志,为1表示是带有push标志的数据,指示接收方在接收到该报文段以后,应尽快将这个报文段交给应用程序,而不是在缓冲区排队。
4)RST:重置连接标志,用于重置由于主机崩溃或其他原因而出现错误的连接。
或者用于拒绝非法的报文段和拒绝连接请求。
计算机网络TCP报文段格式
2TCP报文段的格式TCP 报文段地格式lTCP 虽然是面向字节流地,但TCP 传送地数据单元却是报文段。
l TCP 报文段分为首部与数据两部分。
TCP 地全部功能都体现在它首部各字段地作用。
l TCP 报文段首部地前 20个 字节是固定地,后面有 4N 字节是根据需要而增加地选项(N 需要是整数)。
因此 TCP 首部地最小长度是 20 字节。
TCP 首部20 字节地固定首部目 地 端 口数据偏移检 验 与选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FI N 32 位S Y N R S T P S H A C K UR G 位 0 8 16 24 31填 充TCP 数据部分TCP 首部TCP 报文段IP 数据部分IP 首部发送在前3TCP报文段地格式TCP 首部20字节固定首部目地端口数据偏移检验与选项(长度可变)源端口序号紧急指针窗口确认号保留F INSYNRSTPSHACKURG填充源端口与目地端口字段——各占 2 字节。
该字段定义了在主机发送与接收该报文段地应用程序所使用地端口号,用于运输层地复用与分用。
TCP报文段地格式TCP 首部20字节固定首部目地端口数据偏移检验与选项(长度可变)源端口序号紧急指针窗口确认号保留F INSYNRSTPSHACKURG填充序号字段——占 4 字节。
在一个TCP连接传送地数据流地每一个字节都按顺序进行编号。
序号字段地值则指地是本报文段所发送地数据地第一个字节地序号。
TCP报文段地格式TCP 首部20字节固定首部目地端口数据偏移检验与选项(长度可变)源端口序号紧急指针窗口确认号保留F INSYNRSTPSHACKURG填充确认号字段——占 4 字节,是期望收到对方地下一个报文段地数据地第一个字节地序号。
表示对该序号字节之前地所有字节地累积确认。
TCP报文段地格式TCP 首部20字节固定首部目地端口数据偏移检验与选项(长度可变)源端口序号紧急指针窗口确认号保留F INSYNRSTPSHACKURG填充数据偏移——占 4 位,它指出 TCP 报文段数据起始处地位置,相当于首部长度。
TCPIP几种协议数据报格式简介
TCP 是面向连接的可靠数据传输协议,因此比较复杂,在此仅作简单介绍。“序号”指数据在发送端数据流中 的位置。“确认号”指出本机希望下一个接收的字节的序号。与 IP 校验不同的是 TCP,UDP 校验采用伪头标加整个 报文一同校验的方法。TCP 协议工作原理另行介绍。
TCP 数据报中依次包括以下信息:
协议采用分层结构,因此,数据报文也采用分层封装的方法。下面以应用最广泛的以太网为例说明其数据报 文分层封装,如下图所示:
任何通讯协议都有独特的报文格式,TCP/IP 协议也不例外。对于通讯协议编程,我们首先要清楚其报文格式。 由于 TCP/IP 协议采用分层模型,各层都有专用的报头,以下就简单介绍以太网下 TCP/IP 各层报文格式。
1、 16 位源端口 Source Port。该部分占 16 个 BIT。通过此值,可以看出发起连接的计算机源端口号。
2、 16 位目的端口 Destination Port。该部分占 16 个 BIT。通过此值,可以看出要登录的目的端口号。
3、 32 位序列号 Initial Sequence Number。表示初始连接的请求号,即 SEQ 值。该部分占 32 个 BIT。
4、 32 位确认号 Next Expected SEQ Numbe。对方返回的 ACK 值。该部分占 32 个 BIT。
5、 4 位数据偏移 Data Offset。表示数据偏移的大小。该部分占 4 个 BIT。
6、 6 位保留位 Reserved Bites:保留位,此处不用。该部分占 6 个 BIT。
的 16 次方减 1,即:65535 个字节。因此,在以太网中能够传输的最大 IP 数据包为 65535 个字节。
5、 16 位标识号 Identification。该部分占 16 个 BIT,以十进制数表示。
计算机网络原理 TCP报文格式
计算机网络原理TCP报文格式两台计算机上的TCP协议之间传输的数据单元称报文段。
通过报文段的交互来建立连接、传输数据、发出确认、通告窗口大小以及关闭连接。
TCP报文格式如图7-4所示。
图7-4 TCP的报文格式下面分别介绍各段的意义:●源端口号(source port):本地通信端口,支持TCP的多路复用机制。
●目的端口号(destination port):远地通信端口,支持TCP的多路复用机制。
●序号(sequence number):数据段的第一个数据字节的序号(除含有SYN的段外)。
在SYN段中,该域是SYN的序号,即建立本次连接的初始序号,在该连接上发送的第一个数据字节的序号为初始序号+1。
●数据偏移(data offset):指出该段中数据的起始位置,以4字节为单位(TCP头总以32位边界对齐)。
●紧急指针(urgent pointer):从该段序号开始的一个正向位移,指向紧急数据的最后一个字节。
●控制位(control bits):共六个,如表7-1所示。
表7-1 TCP报头的码位字段的含义域才有效。
它表示本地希望接收的下一个数据字节的序号。
对于收到有效确认号的发送者来说,其值表示接收者已经正确接收到了该序号以前的数据。
●窗口(window):该段的发送者当前能够接收的从确认号开始的最大数据长度,该值主要向对方通告本地接收缓冲区的使用情况。
●校验和(checksum):校验对象包括协议伪头、TCP报头和数据。
●选项(options):位于TCP头的尾端。
选项有单字节和多字节两种格式。
单字节格式,只有选项类型;多字节格式由一个字节的选项类型、多字节的实际选项数据和一个字节的选项长度(三部分的长度)组成。
下面是TCP协议必须实现的选项:选项表尾选项:KIND=0。
表示TCP头中由全部选项组成的选项表的结束。
无操作选项:KIND=1。
该选项可能出现在两个选项之间,作为一个选项分隔符,或提供一种选项字边界对齐的手段,其本身无任何意义。
TCP报文格式
TCP报文格式TCP报文是TCP层传输的数据单元,也称为报文段。
TCP报文首部格式●源端口(Source Port):16位的源端口字段包含初始化通信的端口号。
源端口和IP地址的作用是标识报文的返回地址。
●目的端口(Destination Port):16位的目的端口字段定义传输的目的。
这个端口指明接收方计算机上的应用程序接口。
●序列号(Sequence Number):该字段用来标识TCP源端设备向目的端设备发送的字节流,它表示在这个报文段中的第几个数据字节。
序列号是一个32位的数。
●确认号(Acknowledge Number):TCP使用32位的确认号字段标识期望收到的下一个段的第一个字节,并声明此前的所有数据已经正确无误地收到,因此,确认号应该是上次已成功收到的数据字节序列号加1。
收到确认号的源计算机会知道特定的段已经被收到。
确认号的字段只在ACK标志被设置时才有效。
●数据偏移(Data Offset):这个4位字段包括TCP头大小。
由于首部可能含有选项内容,因此TCP首部的长度是不确定的。
首部长度的单位是32比特或4个八位组。
首部长度实际上也指示了数据区在报文段中的起始偏移值。
●保留(Reserved):6位置0的字段。
为将来定义新的用途保留。
、●控制位(Control Bits):共6位,每一位标志可以打开一个控制功能。
URG(Urgent Pointer Field Significant,紧急指针字段标志):表示TCP包的紧急指针字段有效,用来保证TCP连接不被中断,并且督促中间齐备尽快处理这些数据。
ACK(Acknowledgement field significant,确认字段标志): 取1时表示应答字段有效,也即TCP应答号将包含在TCP段中,为0则反之。
PSH(Push Function,推功能):这个标志表示Push操作。
所谓Push操作就是指在数据包到达接收端以后,立即送给应用程序,而不是在缓冲区中排队。
TCP报文格式详解
TCP报⽂格式详解TCP报⽂格局详解2011-08-31TCP和谈只定义了⼀种报⽂格局建⽴、拆除连接、传输数据应⽤同样的报⽂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。
tcpip协议报文格式
1、IP报文格式IP协议是TCP/IP协议族中最为核心的协议。
它提供不可靠、无连接的服务,也即依赖其他层的协议进行差错控制。
在局域网环境,IP协议往往被封装在以太网帧(见本章 1.3节)中传送。
而所有的TCP、UDP、ICMP、IGMP数据都被封装在IP数据报中传送。
如图2-3所示:图2-3 TCP/IP报文封装图2-4是IP头部(报头)格式:(RFC 791 )。
7强地卵H标m址町选项图2-4 IP头部格式其中:•版本(Version )字段:占4比特。
用来表明IP协议实现的版本号,当前一般为IPv4,即0100。
•报头长度(In ternet Header Len gth ,IHL )字段:占4比特。
是头部占32比特的数字,包括可选项。
普通IP数据报(没有任何选项),该字段的值是5,即160比特=20字节。
此字段最大值为60字节。
•服务类型(Type of Service ,TOS )字段:占8比特。
其中前3比特为优先权子字段(Precede nee,现已被忽略)。
第8比特保留未用。
第4至第7比特分别代表延迟、吞吐量、可靠性和花费。
当它们取值为1时分别代表要求最小时延、最大吞吐量、最高可靠性和最小费用。
这4比特的服务类型中只能置其中1比特为1。
可以全为0,若全为0则表示一般服务。
服务类型字段声明了数据报被网络系统传输时可以被怎样处理。
例如:TELNET 协议可能要求有最小的延迟,FTP协议(数据)可能要求有最大吞吐量,SNMP协议可能要求有最高可靠性,NNTP (Network News Transfer Protocol ,网络新闻传输协议)可能要求最小费用,而ICMP协议可能无特殊要求(4比特全为0)。
实际上,大部分主机会忽略这个字段,但一些动态路由协议如OSPF (Open Shortest Path First Protocol )、IS-IS (I ntermediate System to In termediate System Protocol )可以根据这些字段的值进行路由决策。
TCP报文段的首部格式
TCP报⽂段的⾸部格式TCP报⽂段的⾸部格式1.1.⾸部字段详解TCP⾸部包括20字节的固定⾸部部分及长度可变的其他选项,所以TCP⾸部长度可变。
20个字节⼜分为5部分,每部分4个字节32位,如图中的5⾏,每⾏表⽰32位。
在传输层,TCP报⽂段包括:TCP⾸部和TCP数据部分;在⽹络层,TCP报⽂段成为IP数据部分,加上IP⾸部组成IP数据报;在数据链路层,还要在IP数据报前⾯加上数据链路层的⾸部。
源端⼝和⽬的端⼝字段——各占 2 字节(16位)。
端⼝是运输层与应⽤层的服务接⼝。
运输层的复⽤和分⽤功能都要通过端⼝才能实现。
序号字段——占 4 字节。
TCP 连接中传送的数据流中的每⼀个字节都编上⼀个序号。
序号字段的值则指的是本报⽂段所发送的数据的第⼀个字节的序号。
⽐如分组的第⼀个数据包由⽂件的14个字节数据组成,那么该数据包所添加的序号就是1,同理第⼆个数据包由⽂件的59个字节数据组成,那么该数据包所添加的序号就是5;确认号字段——占 4 字节,是期望收到对⽅的下⼀个报⽂段的数据的第⼀个字节的序号。
⽐如接收端收到由⽂件14个字节数据+TCP⾸部组4个字节数据,返回的确认号为5,即告诉发送端下⼀次应该发送⽂件的第5个字节及其之后字节组成的数据包成的数据包后,删除⾸部提取1过来。
数据偏移(即⾸部长度)——占 4 位,它指出 TCP 报⽂段的数据起始处距离 TCP 报⽂段的起始处有多远,也就是TCP⾸部的长度。
“数据偏移”的单位是 32 位字(以 4 字节为计算单位),最⼤1111表⽰15x4=60个字节,即表⽰TCP⾸部最⼤长度为60个字节,因此“选项”部分最多40个字节。
保留字段——占 6 位,保留为今后使⽤,但⽬前应置为 0。
这⾥的六位⼆进制位,分别表⽰不同含义:紧急 URG —— 当 URG = 1 时,表明紧急指针字段有效。
它告诉系统此报⽂段中有紧急数据,应尽快传送(相当于⾼优先级的数据)。
即URG=1的数据包不⽤排队直接优先传输。
tcp报文标准格式
tcp报文标准格式
TCP报文标准格式
TCP报文由标头和数据组成,其中标头是用来描述连接的属性,数据是报文实际要传输的网络信息内容。
标头总共20字节,报文数据长度不定。
TCP报文的标头格式如下:
源端口号(16位)目标端口号(16位)标识号(32位)标志位(8位)窗口大小(16位)校验和(16位)紧急指针(16位)
源端口号:也称为本地端口,指的是发送端的端口,本地主机的端口与外部主机的端口之间通过端口号来识别。
目标端口号:也称为远程端口,指的是接收端的端口,本地主机的端口与外部主机的端口之间通过端口号来识别。
标识号:它用来唯一标识某个报文,以确保报文在网络中的唯一性。
标志位:它指报文状态位,用于描述报文的状态。
例如 SYN、RST、ACK的状态位。
窗口大小:它用于指明主机接收缓存区的大小,主机会根据收到的窗口大小域信息来控制发送数据报文的速率。
校验和:校验和主要是用来检验报文中有无差错,有效保证数据传输准确性。
紧急指针:它用来指明紧急数据这一块的长度,紧急数据是TCP
报文中的一个特殊部分,用来优先处理紧急数据内容。
- 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;。