网络层的学习
ip
虚电路表示这只是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送,而并不是真正建立了一条物理连接。
地址解析协议 ARP (Address Resolution Protocol)逆地址解析协议 RARP (Reverse Address Resolution Protocol)网际控制报文协议 ICMP (Internet Control Message Protocol)网际组管理协议 IGMP (Internet Group Management Protocol)
中间设备 又称为 中间系统 或 中继 (relay) 系统。物理层中继系统: 转发器 (repeater) 。数据链路层中继系统: 网桥 或 桥接器 (bridge) 。网络层中继系统: 路由器 (router) 。网桥和路由器的混合物: 桥路器 ( brouter ) 。网络层以上的中继系统: 网关 (gateway) 。
如果我们只从网络层考虑问题,那么 IP 数据报就可以想象是在网络层中传送。
每一类地址都由两个固定长度的字段组成,其中一个字段是 网络号 net-id ,它标志主机(或路由器)所连接到的网络,而另一个字段则是 主机号 host-id ,它标志该主机(或路由器)。两级的 IP 地址可以记为:
A 类地址的网络号字段 net-id 为 1 字节 主机号字段 host-id 为 3 字节
B类地址的网络号字段 net-id 为 2 字节 主机号字段 host-id 为 2 字节
C 类地址的网络号字段 net-id 为 3 字节 主机号字段 host-id 为 1 字节
D 类地址是多播地址
E 类地址保留为今后使用
点分十进制记法
常用的三种类别的 IP 地址
IP 地址的一些重要特点
IP 地址是一种分等级的地址结构。分两个等级的好处是:
第一, IP 地址管理机构在分配 IP 地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。这样就方便了 IP 地址的管理。第二,路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间。
实际上 IP 地址是标志一个主机(或路由器)和一条链路的接口。
- 当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP 地址,其网络号 net-id 必须是不同的。这种主机称为多归属主机(multihomed host)。
- 由于一个路由器至少应当连接到两个网络(这样它才能将 IP 数据报从一个网络转发到另一个网络),因此一个路由器至少应当有两个不同的 IP 地址。
- 用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号 net-id。
- 所有分配到网络号 net-id 的网络,范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是平等的。
在同一个局域网上的主机或路由器的IP 地址中的网络号必须是一样的。
图中的网络号就是 IP 地址中的 net-id
IP 地址与硬件地址
从协议栈的层次上看数据的流动
从虚拟的 IP 层上看 IP 数据报的流动
在 IP 层抽象的互联网上只能看到 IP 数据报
图中的 IP1→IP2 表示从源地址 IP1 到目的地址 IP2
两个路由器的 IP 地址并不出现在 IP 数据报的首部中
路由器只根据目的站的 IP 地址的网络号进行路由选择
在链路上看 MAC 帧的流动
在具体的物理网络的链路层
只能看见 MAC 帧而看不见 IP 数据报
地址解析协议 ARP
不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。每一个主机都设有一个 ARP 高速缓存 (ARP cach e ) ,里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。如有,就可查出其对应的硬件地址,再将此硬件地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此硬件 地址
为了减少网络上的通信量,主机 A 在发送其 ARP 请求分组时,就将自己的 IP 地址到硬件地址的映射写入 ARP 请求分组。当主机 B 收到 A 的 ARP 请求分组时,就将主机 A 的这一地址映射写入主机 B 自己的 ARP 高速缓存中。这对主机 B 以后向 A 发送数据报时就更方便了。ARP 是解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题。如果所要找的主机和源主机不在同一个局域网上,那么就要通过 ARP 找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。
IP 数据报的格式
一个 IP 数据报由首部和数据两部分组成。首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。版本——占 4 位,指 IP 协议的版本目前的 IP 协议版本号为 4 (即 IPv4)
首部长度——占 4 位,可表示的最大数值是 15 个单位(一个单位为 4 字节),因此 IP 的首部长度的最大值是 60 字节。
区分服务——占 8 位,用来获得更好的服务在旧标准中叫做服务类型,但实际上一直未被使用过。1998 年这个字段改名为区分服务。只有在使用区分服务(DiffServ)时,这个字段才起作用。在一般的情况下都不使用这个字段
总长度——占 16 位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节。总长度必须不超过最大传送单元 MTU。
标识(identification)—— 占 16 位,它是一个计数器,用来产生数据报的标识。
标志(flag)—— 占 3 位,目前只有前两位有意义。标志字段的最低位是 MF (More Fragment)。MF = 1 表示后面“还有分片”。MF = 0 表示最后一个分片。标志字段中间的一位是 DF (Don't Fragment) 。只有当 DF = 0 时才允许分片。
片偏移——(12 位)指出:较长的分组在分片后,某片在原分组中的相对位置。片偏移以 8 个字节为偏移单位。
生存时间——(8 位)记为 TTL (Time To Live) : 数据报在网络中可通过的路由器数的最大值。
协议——(8 位) : 字段指出此数据报携带的数据使用何种协议以便目的主机的 IP 层将数据部分上交给哪个处理过程
首部检验和——(16 位)字段只检验数据报的首部,不检验数据部分。这里不采用 CRC 检验码而采用简单的计算方法
源地址和目的地址 : 都各占 4 字节

IP 层转发分组的流程
在路由表中,对每一条路由,最主要的是(目的网络地址,下一跳地址)
默认路由
路由器还可采用 默认路由 以减少路由表所占用的空间和搜索路由表所用的时间。这种转发方式在一个网络只有很少的对外连接时是很有用的。默认路由在主机发送 IP 数据报时往往更能显示出它的好处。如果一个主机连接在一个小网络上,而这个网络只用一个路由器和因特网连接,那么在这种情况下使用默认路由是非常合适的。
只要目的网络不是 N1 和 N2,就一律选择默认路由,把数据报先间接交付路由器 R1,让 R1 再转发给下一个路由器。
子网掩码
从一个 IP 数据报的首部并 无法判断 源主机或目的主机所连接的网络是否进行了子网划分。使用 子网掩码 (subnet mask) 可以找出 IP 地址中的子网部分。
IP 地址的各字段和子网掩码
网际控制报文协议 ICMP
为了提高 IP 数据报交付成功的机会,在网际层使用了网际控制报文协议 ICMP (Internet Control Message Protocol) 。ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。ICMP 不是高层协议,而是 IP 层的协议。ICMP 报文作为 IP 层数据报的数据,加上数据报的首部,组成 IP 数据报发送出去。
ICMP 报文的种类有两种,即 ICMP 差错报告报文 和 ICMP 询问报文 。ICMP 报文的前 4 个字节是统一的格式,共有三个字段:即 类型 、 代码 和 检验和 。接着的 4 个字节的内容与 ICMP 的类型有关。
ICMP 差错报告报文共有 5 种
终点不可达源点抑制 (Source quench)时间超过参数问题改变路由(重定向) (Redirect)

ICMP 询问报文有两种
回送请求和回答报文
时间戳请求和回答报文ICMP的应用举例

内部网关协议 RIP
路由信息协议 RIP 是内部网关协议 IGP 中最先得到广泛使用的协议。RIP 是一种分布式的基于 距离向量 的路由选择协议。RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。从一路由器到 直接连接 的网络的距离定义为 1 。从一个路由器到非直接连接的网络的距离定义为所经过的路由器数加 1 。RIP 协议中的“距离”也称为“ 跳数 ” (hop count) ,因为每经过一个路由器,跳数就加 1 。这里的“距离”实际上指的是“ 最短 距离”RIP 认为一个好的路由就是它通过的路由器的数目少,即“距离短”。RIP 允许一条路径最多只能包含 15 个路由器。距离”的最大值为16 时即相当于不可达。可见 RIP 只适用于小型互联网。RIP 不能在两个网络之间同时使用多条路由。RIP 选择一个具有最少路由器的路由(即最短路由),哪怕还存在另一条高速 ( 低时延 ) 但路由器较多的路由。
内部网关协议 OSPF
开放”表明 OSPF 协议不是受某一家厂商控制,而是公开发表的。最短路径优先”是因为使用了 Dijkstra 提出的最短路径算法 SPFOSPF 只是一个协议的名字,它并不表示其他的路由选择协议不是“最短路径优先”。是分布式的 链路状态协议 。向本自治系统中所有路由器发送信息 ,这里使用的方法是洪泛法。发送的信息就是与本路由器 相邻 的所有路由器的链路状态,但这只是路由器所知道的 部分信息 。链路状态”就是说明本路由器都和哪些路由器相邻,以及该链路的“ 度量 ” (metric) 。只有当链路状态 发生变化 时,路由器才用洪泛法向所有路由器发送此信息。
