发布网友 发布时间:2022-04-23 04:43
共1个回答
热心网友 时间:2022-05-07 22:26
具体解释IP 封包表头格式内容提要:
首先,让具体了解一下IP封包的组成部份,以及各部件的长度:
下面,分别针对各个组成部分名称进行解释一下:
1、Version
版本 (VER)。表示的是 IP 规格版本╋目前的 IP 规格多为版本 4 (version 4)╋所以这里的数值通常为 0x4 (注意?封包使用的数字通常都是十六进位的)。
2、Internet Header Length
标头长度 (IHL)。我们从 IP 封包规格中看到前面的 6 行为 header ╋如果 Options 和 Padding没有设定的话╋也就只有5 行的长度?我们知道每行有 32bit ╋也就是 4byte?那么, 5 列就是 20byte 了。20 这个数值换成 16 进位就成了 0x14╋所以╋当封包标头长度为最短的时候╋这里数值会被换算为 0x14 。
3、Type of Service
服务类型 (TOS)。这里指的是 IP 封包在传送过程中要求的服务类型╋其中一共由 8 个 bit 组成╋每组 bit 组合分别代表不同的意思?
000XXXXX routine 设定IP顺序,预设为0,否则,数值越高越优先
XXX0XXXX Delay 延迟要求,0是正常值,1为低要求
XXXX0XXX Throughput 通讯量要求,0为正常值,1为高要求
XXXXX0XX Reliability 可靠性要求,0为正常值,1为高要求
XXXXXX00 Not Used 未使用
4、Total Length
封包总长 (TL)。通常以 byte 做单位来表示该封包的总长度╋此数值包括标头和数据的总和。
5、Identification
识别码 (ID)。每一个IP封包都有一个 16bit 的唯一识别码。我们从 OSI 和 TCP/IP 的网路层级知识里面知道?当程式产生的数据要通过网路传送时╋都会在传送层被拆散成封包形式发送╋当封包要进行重组的时候╋这个 ID 就是依据了。
6、Flag
旗标 标记(FL)。这是当封包在传输过程中进行最佳组合时使用的 3 个 bit 的识别记号。请参考下表?
000. 当此值为 0 的时候╋表示目前未被使用。
.0.. 当此值为 0 的时候╋表示封包可以被分割╋若为 1 则不能被分割。
..0. 当上一个值为 0 时╋此值为 0 就表示该封包是最后一个封包╋如果为 1 则表示其后还有被分割的封包。
7、Fragment Offset
分割定位 (FO)。当一个大封包在经过一些传输单位(MTU)较小的路径时╋会被被切割成碎片(fragment) 再进行传送(这个切割和传送层的打包有所不同╋它是由网路层决定的)。由于网路情况或其它因素影响╋其抵达顺序并不会和当初切割顺序一至的。所以当封包进行切割的时候╋会为各片段做好定位记录╋所以在重组的时候╋就能够依号入座了。
如果封包没有被切割╋那么 FO 的值为“0”
8、Time To Live
存活时间 (TTL)。这个 TTL 的概念╋在许多网路协定中都会碰到。当一个封包被赋予 TTL 值(以秒或跳站数目(hop)为单位)╋之后就会进行倒数计时。在 IP 协定中,TTL 是以 hop 为单位,每经过一个 router 就减一)╋如果封包 TTL 值被降为 0 的时候╋就会被丢弃。这样╋当封包在传递过程中由于某些原因而未能抵达目的地的时候╋就可以避免其一直充斥在网路上面。有只叫做 traceroute 的程式╋就是一个上佳的 TTL 利用实作╋我们会在后面的章节里面讨论。
9、Protocol
协定(PROT)。这里指的是该封包所使用的网路协定类型╋例如?ICMP 或 TCP/UDP 等等。要注意的是?这里使用的协定是网路层的协定╋这和上层的程式协定(如?FTP?HTTP 等)是不同的。您可以从 Linux 的 /etc/protocol 这个档案中找到这些协定和其代号?其内容如下?
ip 0 IP # internet protocol, pseudo protocol number
icmp 1 ICMP # internet control message protocol
igmp 2 IGMP # Internet Group Management
ggp 3 GGP # gateway-gateway protocol
ipencap 4 IP-ENCAP # IP encapsulated in IP (officially ``IP'')
st 5 ST # ST datagram mode
tcp 6 TCP # transmission control protocol
egp 8 EGP # exterior gateway protocol
pup 12 PUP # PARC universal packet protocol
udp 17 UDP # user datagram protocol
hmp 20 HMP # host monitoring protocol
xns-idp 22 XNS-IDP # Xerox NS IDP
rdp 27 RDP # "reliable datagram" protocol
iso-tp4 29 ISO-TP4 # ISO Transport Protocol class 4
xtp 36 XTP # Xpress Tranfer Protocol
ddp 37 DDP # Datagram Delivery Protocol
idpr-cmtp 39 IDPR-CMTP # IDPR Control Message Transport
rspf 73 RSPF #Radio Shortest Path First.
vmtp 81 VMTP # Versatile Message Transport
ospf OSPFIGP # Open Shortest Path First IGP
ipip 94 IPIP # Yet Another IP encapsulation
encap 98 ENCAP # Yet Another IP encapsulation
10、Header Checksum
标头检验值(HC)。这个数值主要用来检错用的╋用以确保封包被正确无误的接收到。当封包开始进行传送后╋接收端主机会利用这个检验值会来检验余下的封包╋如果一切看来无误╋就会发出确认信息╋表示接收正常。
11、Source IP Address
来源地址(SA)。相信这个不用多解释了╋就是发送端的 IP 地址是也╋长度为 32 bit。
12、Destination IP Address
目的地地址(SA)。也就是接收端的 IP 地址╋长度为 32 bit。
13、Options & Padding
这两个选项甚少使用╋只有某些特殊的封包需要特定的控制╋才会利用到。这里也不作细表啦。
前面所介绍的 IP 封包格式╋请花点时间研究一下╋因为在日后的网路生涯中╋许多概念都要求设计者(我们看明白就行了)非常了解 IP 和 TCP 封包(标头)的结构╋例如?防火墙设定和 socket 程式设计。