您的位置:首页 > 其它

IP封包的封装 - 首部内容

2015-08-13 14:43 211 查看
IP 封包的封装

目前因特网社会的 IP 有两种版本,一种是目前使用最广泛的 IPv4 (Internet Protocol version 4, 因特网协定第四版), 一种则是预期未来会热门的 IPv6 。IPv4 记录的地址由于仅有 32 位,预计在 2020 年前后就会分发完毕,如此一来, 新兴国家或者是新的网络公司,将没有网络可以使用。为了避免这个问题发生,因此就有 IPv6 的产生。 IPv6 的地址可以达到 128 位,可以多出 2 的 96 次方倍的网址数量,这样的 IP 数量几乎用不完啦!虽然 IPv6
具有前瞻性,但目前主流媒体大多还是使用 IPv4 ,因此本文主要谈到的 IP 都指 IPv4 而言喔!(注13)

我们在前一小节谈到 MAC 的封装,那么 IP 封包的封装也得要来了解一下,才能知道 IP 到底是如何产生的啊! IP 封包可以达到 65535 bytes 这么大,在比 MAC 大的情况下,我们的操作系统会对 IP 进行拆解的动作。至于 IP 封装的表头数据绘制如下:(下图第一行为每个字段的 bit 数)

4 bits4 bits8 bits3 bits13 bits
VersionIHLType of ServiceTotal Length
IdentificationFlagsFragmentation Offset
Time To LiveProtocolHeader Checksum
Source Address
Destination Address
OptionsPadding
Data
图 2.3-1、IP 封包的表头资料
在上面的图示中有个地方要注意,那就是『每一行所占用的位数为 32 bits』, 各个表头的内容分别介绍如下:

Version(版本)

宣告这个 IP 封包的版本,例如目前惯用的还是 IPv4 这个版本就在这里宣告。

IHL(Internet Header Length, IP表头的长度)

告知这个 IP 封包的表头长度,使用的单位应该是字组 (word) ,一个字组为 4bytes 大小喔。

Type of Service(服务类型)

这个项目的内容为『PPPDTRUU』,表示这个 IP 封包的服务类型,主要分为:

PPP:表示此 IP 封包的优先度,目前很少使用;

D:若为 0 表示一般延迟(delay),若为 1 表示为低延迟;

T:若为 0 表示为一般传输量 (throughput),若为 1 表示为高传输量;

R:若为 0 表示为一般可靠度(reliability),若为 1 表示高可靠度。

UU:保留尚未被使用。

举例来说,gigabit 以太网络的种种相关规格可以让这个 IP 封包加速且降低延迟,某些特殊的标志就是在这里说明的。

Total Length(总长度)

指这个 IP 封包的总容量,包括表头与内容 (Data) 部分。最大可达 65535 bytes。

Identification(辨别码)

我们前面提到 IP 袋子必须要放在 MAC 袋子当中。不过,如果 IP 袋子太大的话,就得先要将 IP 再重组成较小的袋子然后再放到 MAC 当中。而当 IP 被重组时,每个来自同一个 IP 的小袋子就得要有个标识符以告知接收端这些小袋子其实是来自同一个 IP 封包才行。 也就是说,假如 IP 封包其实是 65536 那么大 (前一个 Total Length 有规定), 那么这个 IP 就得要再被分成更小的 IP 分段后才能塞进 MAC 讯框中。那么每个小 IP 分段是否来自同一个 IP 资料,呵呵!那就是这个标识符的功用啦!

Flags(特殊旗标)

这个地方的内容为『0DM』,其意义为:

D:若为 0 表示可以分段,若为 1 表示不可分段

M:若为 0 表示此 IP 为最后分段,若为 1 表示非最后分段。

Fragment Offset(分段偏移)

表示目前这个 IP 分段在原始的 IP 封包中所占的位置。就有点像是序号啦,有这个序号才能将所有的小 IP 分段组合成为原本的 IP 封包大小嘛!透过 Total Length, Identification, Flags 以及这个 Fragment Offset 就能够将小 IP 分段在收受端组合起来啰!

Time To Live(TTL, 存活时间)

表示这个 IP 封包的存活时间,范围为 0-255。当这个 IP 封包通过一个路由器时, TTL 就会减一,当 TTL 为 0 时,这个封包将会被直接丢弃。说实在的,要让 IP 封包通过 255 个路由器,还挺难的~ ^_^

Protocol Number(协定代码)

来自传输层与网络层本身的其他数据都是放置在 IP 封包当中的,我们可以在 IP 表头记载这个 IP 封包内的资料是啥, 在这个字段就是记载每种数据封包的内容啦!在这个字段记载的代码与相关的封包协议名称如下所示:

IP 内的号码封包协议名称(全名)
1ICMP (Internet Control Message Protocol)
2IGMP (Internet Group Management Protocol)
3GGP (Gateway-to-Gateway Protocol)
4IP (IP in IP encapsulation)
6TCP (Transmission Control Protocol)
8EGP (Exterior Gateway Protocol)
17UDP (User Datagram Protocol)
当然啦,我们比较常见到的还是那个 TCP, UDP, ICMP 说!

Header Checksum(表头检查码)

用来检查这个 IP 表头的错误检验之用。

Source Address

还用讲吗?当然是来源的 IP 地址,从这里我们也知道 IP 是 32 位喔!

Destination Address

有来源还需要有目标才能传送,这里就是目标的 IP 地址。

Options (其他参数)

这个是额外的功能,提供包括安全处理机制、路由纪录、时间戳、严格与宽松之来源路由等。

Padding(补齐项目)

由于 Options 的内容不一定有多大,但是我们知道 IP 每个数据都必须要是 32 bits,所以,若 Options 的数据不足 32 bits 时,则由 padding 主动补齐。

你只要知道 IP 表头里面含有: TTL, Protocol, 来源地址与目标地址也就够了!而这个 IP 表头的来源与目标 IP ,以及那个判断通过多少路由器的 TTL ,就能了解到这个 IP 将被如何传送到目的端。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: