在IP层抽象的互联网上只能看到IP数据报
图中的IP1 一> IP2,表示从源地址IP1到目的地址IP2
两个路由器的IP地址并不出现在IP数据报的首部中
路由器只根据目的站的IP地址的网络号进行路由选择
在具体的物理网络的链路层中只能看到mac帧而看不见IP数据报
IP层抽象的互联网屏蔽了下层很复杂的细节在抽象的网络层上讨论问题,就能够使用统一的、抽象的P地址研究主机和主机或主机和路由器之间的通信
IP地址通过ARP转化为物理地址,而物理地址通过RARP转化为IP地址
不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。
每一个主机都设有一个ARP高速缓存(ARP cache),里面有所在的局域网上的各主机和路由器的P地址到硬件地址的映射表。
当主机A欲向本局域网上的某个主机B发送IP数据报时,就先在其ARP高速缓存中查看有无主机B的IP地址。如有,就可查出其对应的硬件地址,再将此硬件地址写入MAC帧,然后通过局域网将该MAC帧发往此硬件地址。
为了减少网络上的通信量,主机A在发送其ARP请求分组时,就将自己的IP地址到硬件地址的映射写入ARP请求分组。
当主机B收到A的ARP请求分组时,就将主机A的这一地址映射写入主机B自己的ARP高速缓存中。这对主机B以后向A发送数据报时就更方便了。
ARP把保存在高速缓存中的每一个映射地址项目都设置生存时间(例如10~20分钟)。凡超过生存时间的项目就从高速缓存中删除掉。
设置这种地址映射项目的生存时间是为了保证高速缓存中信息的新鲜性。
允许局域网的物理机器从网关服务器的ARP表或缓存上请求IP地址。比如局域网中有一台主机只知道自己的物理地址而不知道自己的IP地址,那么可以通RARA协议发出征求自身IP地址的广播请求,然后由RARP服务器负责回答。RARP协议广泛应用于无盘工作站引导时获取IP地址。RARP允许局域网的物理机器从网关服务器ARP表或者缓存上请求其IP地址。
RARP用于将一个已知的MAC地址映射到IP地址。
RARP要依赖于RARP服务器,该服务器中有一张MAC地址与IP地址的映射表。
需要查找自己IP地址的站点向网上发送包含有其MAC地址的RARP广播,RARP服务器收到后将该MAC地址翻译成IP地址予以响应。
RARP同样只能用于具有广播能力的网络。
IP数据包由首部和数据两部分组成。
首部的前一部分是固定长度,共20个字节,是所有IP数据包必须有的。
在首部的固定部分的后面是一些可选字段,其长度是可变的。
按位: 4 4 8 16 16 3 13 8 8 16 16 16
占4位,指IP协议的版本。IP协议目前有两个版本IPv4和IPv6。通信双方使用的IP协议版本必须一致。目前广泛使用的IP协议版本号为4(即IPv4 )
占4位,可表示的最大十进制数值是15。
请注意,这个字段所表示数的单位是32位二进制数(即4个字节),
因此,当IP的首部长度为1111时(即十进制的15),首部长度最大达到60字节。
占8位,配置计算机给特定应用程序的数据包添加一个标志,然后再配置网络中的路由器优先转发这些带标志的数据包,在网络带宽比较紧张的情况下,也能确保这种应用的带宽有保障,这就是区分服务,为这种服务确保服务质量( Quality of Service , QoS )。
TOS常用来做QOs,用于在数据传输过程中的质量保证
占用8位二进制位,用于规定本数据报的处理方式。
服务类型字段的8位分成了5个子域
说通俗一点路窄、车多,所以对车辆标出优先级,有些车先走,有些车后走,有些车不让走。
路由器跟交警一样,指挥交通,如何操作,取决事先确定的策略。对于终端而言(比如电脑),已经收到报文,所以就不会关心这个字段。
指IP首部和数据之和的长度,也就是数据包的长度,单位为字节。总长度字段为16位,因此数据包的最大长度为216-1=65535字节。实际上传输这样长的数据包在现实中是极少遇到的。
例题:已知IP数据报首部长度和总长度分别为0101和0000001111111100,求荷载长度
首部长度(因为占4位,每位是4个字节所以要乘4):0101 转换为10进制=》5 =》5 × 4 = 20 字节
总长度:0000 0011 1111 1100 =》1020 字节
数据荷载长度 = 总长度 - 首部长度
所以为1020 - 20 = 1000 字节
占16位,它是个计数器,用来产生数据报的标识
IP软件在存储器中维持一个计数器,每产生一个数据包,计数器就加1,并将此值赋给标识字段。但这个“标识”并不是序号,因为IP是无连接服务,数据包不存在按序接收的问题。当数据包由于长度超过网络的MTU而必须分片时,同一个数据包被分成多个片,这些片的标识都一样,也就是数据包这个标识字段的值就被复制到所有的数据包分片的标识字段中。相同的标识字段的值使分片后的各数据包片最后能正确地重装成为原来的数据包。
占3位,但目前只有两位有意义。标志字段中的最低位记为MF(More Fragment )。MF= 1 即表示后面“还有分片”的数据包。MF= 0 表示这己是若干数据包片中的最后一个。标志字段中间的一位记为DF (Don’t Fragment ),意思是“不能分片”。只有当DF= 0时才允许分片。
占13位。片偏移指出︰较长的分组在分片后,某片在原分组中的相对位置。也就是说,相对于用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位。这就是说,每个分片的长度一定是8字节(64位)的整数倍。
生存时间(8位)记为TTL (Time To Live)
数据报在网络中可通过的路由器数的最大值。
表明是数据包在网络中的寿命。现在TTL字段的功能改为“跳数限制”
占8比特,最大值是255,推荐值是64。
TTL是IP数据包在计算机网络中可以转发的最大跳数,限制IP数据包在计算机网络中的存在的时间。
在IP数据包从源到目的的整个转发路径上,每经过一个路由器,路由器都会修改这个TTL字段值,具体的做法是把该TTL的值减1,然后再将IP包转发出去。
如果在IP包到达目的IP之前,TTL减少为0,路由器将会丢弃收到的TTL=0的IP包并向IP包的发送者发送ICMP time exceeded消息。
作用:
TTL的主要作用是避免IP包在网络中的无限循环和收发,节省了网络资源,并能使IP包的发送者能收到告警消息。
占8位,字段指出此数据报携带的数据使用何种协议以便目的主机的IP层将数据部分上交给哪个处理过程
占16位,这个字段只检验数据报的首部,但不包括数据部分。这是因为数据报每经过一个路由器,路由器都要重新计算一下首部检验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)。不检验数据部分可减少计算的工作量。
这里不采用CRC检验码而采用简单的计算方法。
IP首部的可变部分就是一个选项字段,用来支持排错、测量以及安全等措施,内容很丰富。
选项字段的长度可变,从1个字节到40个字节不等,取决于所选择的项目。
增加首部的可变部分是为了增加IP数据报的功能,但这同时也使得IP数据报的首部长度成为可变的,这就增加了每一个路由器处理数据报的开销。
实际上这些选项很少被使用。