分享
 
 
 

IP基础--7.IP封包

王朝other·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

从一直以来讨论至今我们都不断地接触到“封包”这个词相信您也很有兴趣想知道这个“封包”究竟是个什麽样的东东吧下面就让我们一起看看一个IP封包究竟包含了那些内容。

撷取IP封包

如果您的机器上面装有 netxray 等封包撷取软体或使用NT的“网路监视器”我们就可以撷取那些进出本机的封包了。

当我们打开撷取功能之後然後使用ping命令随便ping一个地址如www.hinet.net。我们可以撷取到如下这些封包

正如我们所见到的我们撷取到DNS和ICMP的封包了因为www.hinet.net需要到DNS解释而ping是一个ICMP协定。您或许知道ICMP封包的type为“Echo Request”和“Echo Reply”分别代表什麽意思吧

让我们再深入一点看看DNS封包里面有些什麽东东

如果您往上卷回有关“DNS”的文章看看我们用 nslookup 的 debug 模式查找 www.hinet.ne t这个网址时候引一下那里的内容您就知道这个封包说些什麽了。

下面让我们再看看ICMP封包里面的内容

其实我们真正撷取到的封包内容应该是红圈的围在上面和右边的栏目里面的资料是经过程式整理出来的结果。在第一行里面我们看到“00 80 c7 47 8c 9a 48 54 e8 27 75 77”这串数字所代表的分别是目的地和来源地的MAC地址然後“08 00”代表的是一个Ethernet II的IP协定类型。Ethernet II可以说是IEEE802.3的改进版本。(还记得“网路概论”里面关於“逻辑形态”的叙述麽)。这里可以说是Datalink网路层所要追踪的资料。

然后接下来的是属於IP封包的内容

请先记着上图的内容我打算在下一节里面在详细讨论每一行的意思。

IP封包格式

首先让我们看看IP封包的格式是怎样的和其组成部份以及各部份的长度如何

Version (4) Internet Header Length (4) Type of Service (8) Total Length (16)

Identification (16) Flags (3) Fragment Offset (13)

Time To Live (8) Protocol (8) Header checksum (16)

Source Address (32)

Destination Address (32)

Options (Variable) Padding (0-24)

Data

....

在上图中括号之内的数字就是各部件的长度(bit)如果您够细心就会计算得出每一列的总长度都是32bit。下面我们分别对各部件名称解释一下

Version

版本(VER)。表示的是IP规格版本目前的IP规格多为版本4(version 4)所以这里的数值通常为 0x4 (注意封包使用的数字通常都是十六进位的)。

Internet Header Length

标头长度(IHL)。我们从IP封包规格中看到前面的6列为header如果Options和Padding没有设定的话也就只有5列的长度所以这里的长度为“5”我们知道每列有32bit也就是4byte那麽5列就是20byte了20这个数值换成16进位就成了0x14所以当封包标头长度为最短的时候这里数值最终会被换算为 0x14 。

让我们看看我们撷取的ICMP封包其中属於IP部份的开头

在这里我们看到的数值是“45”前面的“4”就是版本号数而後面的“5”则是标头长度。

Type of Service

服务类型(TOS)。这里指的是IP封包在传送过程中要求的服务类型其中一共由8个bit组成其中每个bit的组合分别代表不同的意思

000..... Routine 设定IP顺序预设为0否则数值越高越优先

...0.... Delay 延迟要求0是正常值1为低要求

....0... Throughput 通讯量要求0为正常值1为高要求

.....0.. Reliability 可靠性要求0为正常值1为高要求

......00 Not Used 未使用

在下例中我们可以看到TOS的值为0也就是全部设置为正常值

Total Length

封包总长(TL)。通常以byte做单位来表示该封包的总长度此数值包括标头和数据的总和。

从上图我们看到的十六进位数值是“003C”换成十进位就是“60”了。

Identification

识别码(ID)。每一个IP封包都有一个16bit的唯一识别码。我们从OSI的网路层级知识里面知道当程式产生的数据要通过网路传送时都会被拆散成封包形式发送当封包要进行重组的时候这个ID就是依据了。

从上图我们可以看到此封包的ID为40973 (将 a00d 换成十进制就知道了)。

Flag

标记(FL)。这是当封包在传输过程中进行最佳组合时使用的3个bit的识别记号。请参考下表

000. 当此值为0的时候表示目前未被使用。

.0.. 当此值为0的时候表示封包可以被分割如果为1则不能被分割。

..0. 当上一个值为0时此值为0就示该封包是最後一个封包如果为1则表示其後还有被分割的封包。

在下例中我们看到这个封包的标记为“0”也就是目前并未使用。

Fragment Offset

分割定位(FO)。当封包被切开之後由於网路情况或其它因素影响其抵达顺序并不会和当初切割顺序一至的。所以当封包进行切割的时候会为各片段做好定位记录所以在重组的时候就能够依号入座了。

因为我们刚才撷取到的封包并没有被切割所以暂时找不到例子参考在上例中我们看到的FO为“0”。

Time To Live

延续时间(TTL)。这个TTL我们在许多网路设定上都会碰到当一个物件被赋予TTL值(以秒为单位)之後就会进行计时如果物件在到达TTL值的时候还没被处理的话就会被遗弃。 不过并不是所有的 TTL 都以时间为单位例如 ICMP 协定的 TTL则以封包路由过程中的跳站数目(Hop Count)做单位。TTL 值每经过一个跳站(或被一个 router 处理)之後就会被减低一个数值。这样当封包在传递过程中由於某些原因而未能抵达目的地的时候就可以避免其一直充斥在网路上面。

上图中我们看到的数值可不是 20 哦因为这是个十六进位数字要换成十进位才知道 TTL 原来是 32 个跳站。

Protocol

协定(PROT)。这里指的是该封包所使用的网路协定类型例如ICMPDNS等。要注意的是这里使用的协定是网路层的协定这和上层的程式协定(如 FTPPOP等)是不同的。您可以从Linux的/etc/protocol这个档案中找到这些协定和其代号此档案也存放於NT的\winnt\ system32\drivers\etc目录里面。其内容如下

------------------------------------------------------

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 89 OSPFIGP # Open Shortest Path First IGP

ipip 94 IPIP # Yet Another IP encapsulation

encap 98 ENCAP # Yet Another IP encapsulation

------------------------------------------------------

在我们这个例子中可以看得出PROT的号码为“01”对照/etc/protocol档案我们可以知道这是一个ICMP协定。

Header Checksum

标头检验值(HC)。这个数值主要用来检错用的用以确保封包被正确无误的接收到。当封包开始进行传送後接收端主机会利用这个检验值会来检验馀下的封包如果一切看来无误就会发出确认信息表示接收正常。

上图中我们看到的封包之HC为“9049”。

Source IP Address

来源地址(SA)。相信这个不用多解释了就是发送端的IP地址是也。

我们将“c0.a8.00.0f”换成十进位就可以得出“192.168.0.15”这个地址了。

Destination IP Address

目的地址(DA)。也就是接收端的IP地址啦。

看看你能不能将“a8.5f.01.54”换成“168.95.1.84”

Options & Padding

这两个选项甚少使用只有某些特殊的封包需要特定的控制才会利用到。这里也不作细表啦。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有