又称为桥接器,在数据链路层扩展以太网。网桥收到帧时,并不是向所有的接口转发,而是根据此帧的目的 MAC 地址,查找网桥中的地址表,然后确定将该帧转发到哪一个接口,或者是把它丢弃(即过滤)。网桥互连两个独立的、仅在低两层实现上有差异的子网。 将两个局域网(LAN)连起来,根据MAC地址(物理地址)来转发帧,使本地通信限制在本网段内,并转发相应的信号至另一网段。通常用于联接数量不多的、同一类型的网段。网桥的存储和转发功能与中继器相比,克服了物理限制,这意味着构成lan的数据站总数和网段数很容易扩充。网桥纳入存储和转发功能可使其适应于连接使用不同mac协议的两个lan。因而构成一个不同lan混连在一起的混合网络环境。网桥的中继功能仅仅依赖于mac帧的地址,因而对高层协议完全透明。网桥将一个较大的lan分成段,有利于改善可靠性、可用性和安全性。主要缺点是:由于网桥在执行转发前先接收帧并进行缓冲,会引入更多时延。由于网桥不提供流控功能,因此在流量较大时有可能使其过载,从而造成帧的丢失。
许多计算机网络通过一些路由器进行互连。由于参加互连的计算机网络都使用相同的网际协议 IP,可以把互连以后的计算机网络看成一个虚拟互连网络(internet)。各种物理网络的异构性本来是客观存在的,但利用 IP 协议就可以使这些性能各异的网络在网络层上看起来好像是一个统一的网络。这种使用 IP 协议的虚拟互连网络可简称为 IP 网。当 IP 网上的主机进行通信时,它们看不见互连的各网络的具体异构细节(如具体的编址方案、路由选择协议,等等)。如果在这种覆盖全球的 IP 网的上层使用 TCP 协议,那么就是现在的互联网(Internet)。
分类的 IP 地址
有关 IP 最重要的文档就是互联网的正式标准 RFC 791。
IP 地址及其表示方法
整个的互联网就是一个单一的、抽象的网络。IP 地址就是给互联网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的 32 位的标识符。IP 地址现在由互联网名字和数字分配机构
ICANN (Internet Corporation for Assigned Names and Numbers)进行分配。
IP 地址的编址方法共经过了三个历史阶段。
编址方法
文档
备注
分类的 IP 地址
1981 年通过了相应的标准协议。
最基本的编址方法
子网的划分
1985 年,RFC 950
对最基本的编址方法的改进。
构成超网
1993 年
比较新的无分类编址方法。1提出后很快就得到推广应用。
所谓“分类的 IP 地址”就是将 IP 地址划分为若干个固定类,每一类地址都由两个固定长度的字段组成。可以记为:IP 地址 ::= { <网络号>, <主机号>}
(2)若 R2 收到一个目的 IP 地址为 194.17.20.200 的 IP 分组, R2 会通过哪个接口转发该 IP分组?
(3) R1 与 R2 之间利用哪个路由协议交换路由信息?该路由协议的报文被封装到哪个协议的分组中进行传输?
IP 地址与硬件地址
尽管互连在一起的网络的硬件地址体系各不相同1,但 IP 层抽象的互联网却屏蔽了下层这些很复杂的细节。只要我们在网络层上讨论问题,就能够使用统一的、抽象的 IP 地址研究主机和主机或路由器之间的通信:虽然在网络链路上传送的帧最终是按照硬件地址找到目的主机的,但由于全世界各式各样的网络使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,由用户或用户主机来完成这项工作几乎是不可能的事。 IP 编址解决了这个复杂的问题。连接到互联网的主机只需各自拥有一个唯一的 IP 地址,相互的通信就像连接在同一个网络上那样简单方便。
主机的 IP 地址与硬件地址的区别:从层次的角度看,物理地址是数据链路层和物理层使用的地址,而 IP 地址是网络层和以上各层使用的地址,是一种逻辑地址(称 IP 地址为逻辑 地址是因为 IP 地址是用软件实现的)。
在局域网中,由于硬件地址已固化在网卡上的 ROM 中,因此常常将硬件地址称为物理地址。因为在局域网的 MAC 帧中的源地址和目的地址都是硬件地址,因此硬件地址又称为 MAC 地址。
MAC 帧在传送时使用的源地址和目的地址都写在 MAC 帧的首部中。 连接在通信链路上的设备(主机或路由器)在收到 MAC 帧时,根据帧首部中的硬件地址决定收下或丢弃。只有在剥去 MAC 帧的首部和尾部后把 MAC 层的数据上交给网络层后,网络层才能在 IP 数据报的首部中找到源 IP 地址和目的 IP 地址。
几个要点:
在 IP 层抽象的互联网上只能看到 IP 数据报。IP 数据报经过路由器转发时,首部中的源地址和目的地址始终不变。数据报中间经过的路由器的 IP 地址并不出现在 IP 数据报的首部中。
路由器只根据IP 数据报的目的站的 IP 地址(源站无关)的网络号进行路由选择。
在局域网的链路层,只能看见 MAC 帧。IP 数据报被封装在 MAC 帧中。MAC 帧在不同网络上传送时,其 MAC 帧首部中的源地址和目的地址要发生变化。路由器收到MAC 帧后,在数据链路层,要丢弃原来的 MAC 帧的首部和尾部。在转发时,要重新添加上 MAC 帧的首部和尾部。MAC 帧的首部的这种变化,在上面的 IP 层上是看不见的。
地址解析协议 ARP
网络层使用的是 IP 地址,但在实际网络的链路上传送数据帧时,最终还是必须使用该网络的硬件地址。但 IP 地址和硬件地址之间由于格式不同而不存在简单的映射关系。网络上会需要新增或撤走主机,网络适配器也会使主机的硬件地址改变。
从 IP 地址到硬件地址的解析是自动进行的,只要主机或路由器要和本网络上的另一个已知 IP 地址的主机或路由器进行通信,ARP 协议就会自动地把这个 IP 地址解析为链路层所需要的硬件地址。
每一台主机都设有一个 ARP 高速缓存(ARP cache),里面有本局域网上的各主机和路由器的 IP 地址到硬件地址的映射表,这个映射表还经常动态更新。
当主机 A 要向本局域网上的某台主机 B 发送 IP 数据报时,先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。
如有,就将其对应的硬件地址写入 MAC 帧,然后通过局域网把该 MAC 帧发往此硬件地址。
若无(可能是主机 B 才入网,或是主机 A 刚刚加电,其高速缓存还是空的3),则主机 A 就自动运行 ARP, 找出主机 B 的硬件地址 :
ARP 解析地址硬件过程:
ARP 进程在本局域网上广播发送一个 ARP 请求分组。主要内容是:“我的 IP 地址是 209.0.0.5,硬件地址是 00-00-C0-15-AD-18。我想知道 IP 地址为 209.0.0.6 的主机的硬件地址。
在本局域网上的所有主机上运行的 ARP 进程都收到此 ARP 请求分组。
主机 B 的IP 地址与 ARP 请求分组中要查询的 IP 地址一致,收下请求分组,并向主机 A 发送 ARP 响应分组(单播,即从一个源地址发送到一个目的地址)ARP 响应分组的主要内容是:“我的 IP 地址是 209.0.0.6,我的硬件地址是 08-00-2B-00-EE-0A。”,同时主机 B 还将把主机 A 的这一地址映射写入自己的 ARP 高速缓存中。其余所有主机不理睬这个 ARP 请求分组。
主机 A 收到主机 B 的 ARP 响应分组后,就在其 ARP 高速缓存中写入主机 B 的 IP 地址到硬件地址的映射。
ARP 对保存在高速缓存中的每一个映射地址项目都设置生存时间(例如,10 ~ 20 分钟)。凡超过生存时间的项目就从高速缓存中删除掉。设想 A 的 ARP 高速缓存里保存有 B 的硬件地址。但 B 的网络适配器坏了,更换了一块,因此硬件地址就改变了。A 在其 ARP 高速缓存中查找到 B 原先的硬件地址,向 B 发送数据帧,由于该硬件地址已经失效了,因此 A 无法找到主机 B。但是过了一段不长的生存时间,A 的 ARP 高速缓存中已经删除了 B 原先的硬件地址,于是 A 重新广播发送 ARP 请求分组,又找到了 B 。
注意:ARP 是解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题。如果所要找的主机和源主机不在同一个局域网上,就无法解析出硬件地址。若主机H1发送 IP 数据报到不同网络上的远程主机 H2 ,IP 数据报首先需要通过同一个局域网上的路由器 R1 转发。因此 H1 需要把 R1 的 IP 地址解析为硬件地址,剩下的工作由路由器 R1 来完成:从转发表找出了下一跳路由器 R2, 同时使用 ARP 解析出 R2的 硬件地址,于是 IP 数据报按照该硬件地址转发到路由器 R2...
网际控制报文协议 ICMP
为了更有效地转发IP数据报和提高交付成功率,网际层使用了网际控制报文协议 ICMP(Internet Control Message Protocol)。ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。ICMP是互联网的标准协议(RFC 792)。
C:\Users\huaye>tracert huayemao.run
通过最多 30 个跃点跟踪
到 huayemao.run [76.76.21.241] 的路由:
1 1 ms 1 ms <1 毫秒 192.168.1.1
2 5 ms 4 ms 4 ms 10.74.48.1
3 * 24 ms * 183.224.66.9
4 6 ms 3 ms 4 ms 39.129.236.157
5 * * * 请求超时。
6 * * * 请求超时。
7 37 ms 37 ms 36 ms 221.183.166.210
8 46 ms 46 ms 45 ms 221.183.92.206
9 39 ms 38 ms 39 ms 221.183.92.194
10 90 ms 89 ms 89 ms 223.120.14.233
11 * 93 ms 93 ms 223.120.2.246
12 97 ms 96 ms 97 ms 99.83.91.178
13 136 ms 92 ms 120 ms 150.222.90.113
14 * * * 请求超时。
15 103 ms 100 ms 100 ms 54.239.52.99
16 91 ms 95 ms 91 ms 52.95.30.12
17 * * * 请求超时。
18 95 ms 96 ms 95 ms 15.230.152.120
19 96 ms 96 ms 96 ms 76.76.21.241
跟踪完成。
互联网的规模太大,使得 AS 之间路由选择非常困难。目前在互联网的主干网路由器中,一个路由表的项目数早已超过了 5 万个网络前缀。如果使用链路状态协议,则每一个路由器必须维持一个很大的链路状态数据库,用 Dijkstra 算法计算最短路径时花费的时间也太长。另外,由于自治系统 AS 各自运行自己选定的内部路由选择协议,并使用本 AS 指明的路径度量,因此,当一条路径通过几个不同 AS 时,要想对这样的路径计算出有意义的代价,用“代价”作为度量来寻找最佳路由也是很不现实的。比较合理的做法是在自治系统之间交换“可达性”信息(即“可到达”或“不可到达”)。例如,告诉相邻路由器:“到达目的网络 N 可经过自治系统 ASx”