目录
网络层
网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。
网络在发送分组时不需要先建立连接。每一个分组(即 IP 数据报)独立发送,与其前后的分组无关(不进行编号)。
网络层不提供服务质量的承诺。即所传送的分组可能出错、丢失、重复和失序(不按序到达终点),当然也不保证分组传送的时限。
网际协议IP
与 IP 协议配套使用的还有四个协议:
-地址解析协议 ARP
(Address Resolution Protocol)
-网际控制报文协议 ICMP
(Internet Control Message Protocol)
-网际组管理协议 IGMP
(Internet Group Management Protocol)
网络互相连接起来要使用一些中间设备
中间设备又称为中间系统或中继(relay)系统。
物理层中继系统:转发器(repeater)。
数据链路层中继系统:网桥(或称桥接器,bridge)或2层交换机。
网络层中继系统:路由器(router)。
网桥和路由器的混合物:桥路器(brouter, 或3层交换机)。
网络层以上的中继系统:网关(gateway)。
互联网都是指用路由器进行互连的网络。
分类的 IP 地址
每一类地址都由两个固定长度的字段组成,其中一个字段是网络号 net-id,它标志主机(或路由器)所连接到的网络,而另一个字段则是主机号 host-id,它标志该主机(或路由器)。
好处:
第一,IP 地址管理机构在分配 IP 地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。这样就方便了 IP 地址的管理。
第二,路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间。
特点:
用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号 net-id。
所有分配到网络号 net-id 的网络,范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是平等的。
IP 地址与硬件地址
地址解析协议 ARP
不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。
每一个主机都设有一个 ARP 高速缓存(ARP cache),里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。
当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。如有,就可查出其对应的硬件地址,再将此硬件地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此硬件地址
ARP 是解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题。
IP 数据报的格式
版本——占 4 位,指 IP 协议的版本,目前的 IP 协议版本号为 4 (即 IPv4)
首部长度——占 4 位,可表示的最大数值是 15 个单位(一个单位为 4 字节)
因此 IP 的首部长度的最大值是 60 字节。
区分服务——占 8 位,用来获得更好的服务
在旧标准中叫做服务类型,但实际上一直未被使用过。
总长度——占 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 位)字段只检验数据报的首部,不检验数据部分。
源地址和目的地址都各占 4 字节。
IP 层转发分组的流程
在路由表中,对每一条路由,最主要的是(目的网络地址,下一跳地址)
划分子网
划分子网
从 1985 年起在 IP 地址中又增加了一个“子网号字段”,使两级的 IP 地址变成为三级的 IP 地址。这种做法叫作划分子网。
思路:
从主机号借用若干个位作为子网号 subnet-id,而主机号 host-id 也就相应减少了若干个位。
-凡是从其他网络发送给本单位某个主机的 IP 数据报,仍然是根据 IP 数据报的目的网络号 net-id,先找到连接在本单位网络上的路由器。
-然后此路由器在收到 IP 数据报后,再按目的网络号 net-id 和子网号 subnet-id 找到目的子网。
-最后就将 IP 数据报直接交付目的主机。
子网掩码:
从一个 IP 数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网划分。
使用子网掩码(subnet mask)可以找出 IP 地址中的子网部分。
(IP 地址) AND (子网掩码) =网络地址
已知 IP 地址是 141.14.72.24,子网掩码是 255.255.192.0。试求网络地址?
141.14.01001000.24 & 11111111 11111111 11000000 00000000 = 141.14.01000000.0 = 141.14.64.0
网际控制报文协议 ICMP
-ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。
-ICMP 不是高层协议,而是 IP 层的协议。
-ICMP 报文作为 IP 层数据报的数据,加上数据报的首部,组成 IP 数据报发送出去。
格式:
差错报告报文共有 5 种
-终点不可达
-源点抑制(Source quench)
-时间超过
-参数问题
-改变路由(重定向)(Redirect)
PING的详细过程
原理
PING 用来测试两个主机之间的连通性。
PING 使用了 ICMP 回送请求与回送回答报文。
PING 是应用层直接使用网络层 ICMP 的例子,它没有通过运输层的 TCP 或UDP。
过程
首先假设A ping B
1.ping通知系统建立一个固定格式的ICMP请求数据包。
2.ICMP协议打包这个数据包和B的IP地址转交给IP协议层
3.IP层协议将机器B的IP地址为目的地址,本机的IP地址为源地址,加上一些头部必要的控制信息,构建一个IP数据包
4.获取B的MAC地址,做这个操作首先机器A会判断B是否在同一网段内,若IP层协议通过B的IP地址和自己的子网掩码,发现它跟自己属于同一网络,就直接在本网络查找这台机器的MAC,否则则通过路由器进行类似查找。接下来是ARP协议根据IP地址查找MAC地址的过程:若两台机器之前有过通信,在机器A的ARP缓存表里应该存有B的IP与其MAC地址的映射关系。若没有,则通过发送ARP请求广播,得到回应的B机器MAC地址,并交给数据链路层
5.数据链路层构建一个数据帧,目的地址是IP层传过来的MAC地址,源地址是本机的MAC地址,再附加一些必要的控制信息,依据以太网的介质访问规则将他们传送出去
6.机器B收到这个数据帧后,先检查目的地址,和本机MAC地址对比:
符合,接受。接收后检查该数据帧。将IP数据包从帧中提取出来,交给本机的的IP地址协议层协议,IP协议层检查之后,将有用的信息提取给ICMP协议,后者处理,马上构建一个ICMP应答包,发送给A,其过程和主机A发送ICMP请求包到B的过程类似,但不用ARP广播收取A的信息,因为请求包中已经有足够的信息用于B回应A。
若不符合,丢弃。
可以知道PING的过程即一段发送报文和接受确认报文的过程,在来回直接可以计算时延。其过程简单,但其中还包括了一步ARP协议请求,广播请求,单播回应的过程。其他都是正常IP数据包的发送和接受。
路由选择协议
内部网关协议 IGP
即在一个自治系统内部使用的路由选择协议。目前这类路由选择协议使用得最多,如 RIP 和 OSPF 协议。
RIP:
1. 工作原理
路由信息协议 RIP 是内部网关协议 IGP中最先得到广泛使用的协议。
RIP 是一种分布式的基于距离向量的路由选择协议。
RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。
2.距离的定义
-从一路由器到直接连接的网络的距离定义为 1。
-从一个路由器到非直接连接的网络的距离定义为所经过的路由器数加 1。
-RIP 认为一个好的路由就是它通过的路由器的数目少,即“距离短”。
-RIP 允许一条路径最多只能包含 15 个路由器。“距离”的最大值为16 时即相当于不可达。可见 RIP 只适用于小型互联网。
3 RIP 协议的三个要点
-仅和相邻路由器交换信息。
-交换的信息是当前本路由器所知道的全部信息,即自己的路由表。
-按固定的时间间隔交换路由信息,例如,每隔 30 秒。
OSPF
特点:
“最短路径优先”是因为使用了 Dijkstra 提出的最短路径算法SPF
OSPF 只是一个协议的名字,它并不表示其他的路由选择协议不是“最短路径优先”。
是分布式的链路状态协议。
外部网关协议EGP
若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议 EGP。在外部网关协议中目前使用最多的是 BGP-4。
因特网的规模太大,使得自治系统之间路由选择非常困难。因此,边界网关协议 BGP 只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由。