ip头部多少字节_网络工程师(4):认识IP协议

1bd3274e0da6bc3ec4651e58ed11a262.png

我们已经知道,两台电脑间要通信,电脑A通过MAC地址可以将数据交到电脑B手里。但前提是,他们俩需要在同一个“房间”。如果不在,电脑A只能把数据交给自己的网关。

我们可以把一个“房间”叫做一个“广播域”,在一个广播域内,只要有人发出广播报文(比如ARP Request),其他人都能收到,包括网关。但网关并不会把这个广播报文转发到房间外面去,房间隔音效果没得说。

可问题是,如果二台电脑不在同一个广播域,电脑A通过ARP获得网关的MAC地址后,把数据封装在以太网中,网关收到后,发现收件人正是自己,于是拆开以太网封装,把里面的数据占为己有!

所以,必须告诉网关,你拆了以太网封装后,里面的数据是不是你的,你还要看个东西。

这个东西,就是IP地址!

IP地址?不就是电脑的“名字”吗?

是的。我们人类的身份证号码中包含了省市等地理位置信息,而名字中没有。相反,电脑的MAC地址中没有位置信息,但IP地址里却有!

所以,我们只要想办法让网关拆开以太网封装后,看到收件人的IP地址,并能根据IP地址中的位置信息去找真正的收件人,问题就可以解决。

IP(Internet Protocol,互联网协议),设计的初衷就是为了提高网络的可扩展性,比如实现不同“房间”内的电脑之间的通信,实现网络间的互连。

IP主要有三个内容:IP编址方案、分组封装格式和分组转发规则。

IP地址可以在网络中唯一地标识一台网络设备。

不是说MAC地址是唯一的吗?

没错,MAC地址的确唯一,而且不会重复、无法修改,但MAC地址不包含位置信息,一般在一个广播域内使用,无法在更大范围里用它找别人。

但IP地址可以,不管范围多大,通过IP地址都能找到你!

既然这样,直接用IP就好了,干嘛还要用MAC多此一举呢?

这是因为IP地址资源有限,分配给电脑的 IP地址可能会发生变化,并不是唯一不变的。如果一台电脑今天和明天的IP地址不同,那别人找起来会非常麻烦。比如你每天换个名字,你周围的人可能会“疯”!而MAC地址固定不变,找起来要容易得多。所以,不管你IP地址怎么变,电脑都会用ARP协议把多变的IP地址和唯一不变的MAC地址建立对应关系就可以了。

也有人把IP地址叫“逻辑地址”,MAC地址叫“物理地址”或“硬件地址”。

我们曾经说过,通过IP地址和子网掩码,可以计算出网络地址。网络地址表示了你在网络中的哪个“房间”,就是你的位置。

所以,我们只要让电脑在把数据封装为以太网格式之前,先把数据用IP封装一下。IP的分组封装“快递单”格式如下:

e21c39eb1689a2578dbfcb7bbe638c3f.png

“快递单”里要填的内容挺多,但我们最关心的是最后两行:

Source:发件人的IP地址;

Destination:收件人的IP地址。

其他内容我们也解释一下:

Version版本号,目前使用的是版本4(IPv4);

Header Length头部长度,表示这份“快递单”的大小,一般为20字节;

Differentiated Services Field区分服务字段,用于QoS,我们可以理解为表示该数据包的重要或优先程度。这东西以后讨论;

Total Length总长度,表示该数据包(被IP封装之后)的总大小。它等于里面的数据加上Header Length的大小。IP协议定义了MTU(Maximum Transmission Unit,最大传输单元),也就是IP传输的数据包最大值,一般这个值为1500字节。

Identification标识号,表示该数据包的唯一编号;

Flags标志位,共有3位:第1位保留没有使用,第2位为DF位,第3位为MF位;

Fragment offset分片偏移量;

当数据包总长度大于MTU时,IP无法传输,需要把数据包“切开”,使数据包大小不超过MTU,这叫“IP分片”。你可以理解为IP用很多辆汽车运输数据,每辆车最多能装1500字节。

如果IP在分片前发现DF置为“1”,表示该数据不允许“分片”。IP无法传输大于MTU的数据包,只能丢弃:

106dad2a4b41317b482ffce878a79336.png

图中,我们发送了一个2000字节的数据包并把DF置为“1”,发现全部丢弃了。

如果数据包需要分片,IP在分片后,除最后一片的MF位为“0”外,其他的分片均为“1”,并把第1个分片中的Identification复制到所有分片中。另外,除最后一片的Fragment offset分片偏移量为0外,其他分片的Fragment offset均为下一个分片的长度。

Time to live生存时间,这个东西以后讨论;

Protocol协议,收件人收到数据包,拆除IP封装后根据Protocol填写的内容判断把里面的数据交给谁处理,作用类似以太网封装中的Type;

Header checksum头部校验和,只校验IP头部信息,不校验里面封装的数据。这样做的好处是简单、效率高。

IP协议用于实现不同网络之间的互通,所有具备路由功能的网络设备都能实现IP寻址,比如路由器。网关也是具备路由功能的设备,可以是路由器,也可以是其他设备。

IP是一个“尽力而为”的协议,意思是IP协议答应会尽力把数据送到目的地,但不保证什么。如果数据包在传输过程中出现错误,IP会根据协议规定把它丢弃。

听上去IP很不靠谱,但这样做的好处是简单而高效。很早的时候曾因为IP的不靠谱,也有其他的协议想取代IP网络协议的地位,比如ATM(不不,不是取款机,它叫Asynchronous Transfer Mode,异步传输模式)。ATM虽然也很高效,但过于复杂,最终还是失败了。

如果想保证什么,可以想别的办法,IP还是简单点好。

既然IP成为在不同网络中寻址的协议,那IP如何编址就显得格外重要。

IP地址由32位二进制位组成,共4个字节,为书写方便,使用点分十进制表示,如192.168.1.10。

IP地址可以分成网络地址和主机地址两部分,网络地址标识了这个IP地址在什么地方,在哪个网络。你看,IP地址包含了位置信息,而MAC地址并没有。

主机地址,就是你在这个房间里的编号,只要和房间里其他人不同就行。

我们发现,一幢楼的房间有大有小,可容纳的人数也有多有少。网络也是这样,可以分成许许多多的子网,子网越大,可容纳的电脑也越多,能用的主机地址也就越多。

那么,IP如何编址呢?

小Q:IP干嘛要有MTU,要分片?不分不行吗?

欢迎留言讨论。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值