三、IP 层(网络层 - 路由器 - 广域网)
网络层的作用是,在复杂的网络环境中为要发送的数据报,找到一个合适的路径进行传输。IP 是实现多个数据链路之间的通信协议,不论数据链路层是以太网还是无线LAN或是PPP,都将一视同仁。
不同数据链路有个最大区别,就是它们各自的最大传输单位(MTU: Maximum Transmission Unit)不同。在以太网中是 1500 字节,在 ATM 中是 9180 字节。
网络层向上提供简单灵活,无连接的,尽最大努力交付的数据报服务。从数据报从主机A发送到主机B的过程中可能要经历很多节点。所谓无连接是指:数据报在传输之前不需要提前规划好整个传输路线,即不用提前建立一条从发送主机到接收主机之间的传输连接路线。(如果是有连接服务,该传输路线建立好之后,各数据报必须在这条路线上传输,经历的结点路径都是相同的)。这就保证了数据传输的简单性。当数据传输到一个节点时,根据网络中的情况在决定通往下一个节点应该走哪条路线。这就保证了数据传输的灵活性。
3.1 IP 报文首部结构
- 网络层,数据包最大65535字节;链路层,数据最大是1500字节。所以,一旦超过数据链路层的最大要求时(网络层数据部分超过1480字节),数据包会分片。最大传输单元
MTU 。 - IP报文在数据链路层被分片后,到达目的主机IP层的顺序可能就会发生变化,因此要对原IP报文进行合并就要根据上述的
标识 ,标志位 ,片偏移 对原 IP 报文进行合并。 - ICMP协议号:1;IGMP协议号:2;TCP协议号:6;UDP协议号:17;IPv6协议号:41;OSPF协议号:89;
3.2 IP地址/网段/子网掩码/广播域
在IPv4中,IP地址由32位正整数来表示,所以最多 2^32(大约是43亿)个。IP地址由 “网络号 ” 和 “主机号 ” 组成,同一网络号下,主机号不能重复。相同的网络号表示处在同一个网段,主机之间组成一个网段,处在同一个链路上(可以理解为共用一个交换机)。那有人可能会问,连最小的 C 类地址都有6万多个地址,接一个交换机,也太多了吧?后面还有一个子网掩码的概念,把网络号再次分隔。
3.2.1 IP 地址分类
IP 地址分为 A, B, C, D 四大类(E类保留)。在公共互联网中,IP 地址不能重复,每台设备地址都唯一。
早期有许多独立的网络,不需要连接互联网,在这些独立的网络中,主机本来可以随意配置 IP 地址,但为了避免出现问题(例如误连了互联网,独立网络之间发生了连接),在 A~D类的基础上又规定了私有网络 IP 范围。于是有了公网 IP 和 私网 IP 之分。
再后来有了 NAT 技术,私有 IP 也可以和互联网上的 公有 IP 通信了。
在全面普及 IPv6 之前,互联网现状是使用 IPv4 和 NAT 技术,解决地址耗尽的问题。
通过将IP地址划分为网络号和主机号来标识,可以有如下特点:
- IP地址管理机构在分配IP地址时只分配网络号。剩下的主机号由得到该网络号的单位自行分配,这样就方便了管理就够的管理;
- 路由器在寻找目的主机的IP地址时,只需找到目的主机所在的局域网,再在该局域网内寻找目的主机。
- 具有不同网络号的局域网必须有路由器进行连接,所以路由器总是有两个或两个以上网络号不同的IP地址。
广播地址 :把主机号置为全 “1”,就是该网段的广播地址
3.2.1 子网掩码
早期,大家就是直接按照 A,B,C 类来使用的。但随着网络覆盖面越来越广,上网设备越来越多,直接使用 A,B,C 分类就会非常浪费资源。于是子网掩码出现了,把网络号进一步划分为子网。
划分网段是为了避免出现网络风暴,分隔各个网段。子网/子网掩码是为了充分利用网络号资源,一个网络号下可以分出多个子网。
子网掩码是一段连续的 “1” ,比既定的网络号位数长,用来计算网络标识。
IP 地址:172.20.100.52 子网掩码:255.255.255.192 问:子网掩码下的网络号是多少?
注:也可缩写为 172.20.100.52/26
答案是:26 位子网掩码下,网络号是 172.20.100.0。
进一步问,该子网的广播地址是多少?172.20.100.63 !将上图中实际主机号对应的 6 位,全部置 “1” 就可以了。
3.2.2 广播域
记住一句话:交换机分割冲突域,路由器分割广播域 。
本章前面提到过 IP层 的广播报文,是把某个网络号下的主机号全置为1 。而更早章节中也提过,在 MAC 层 以太网 中,广播 MAC 地址为 全F 。二者其实是相对应的,当 IP 层把广播报文提交给 MAC 层时,MAC 层就识别到这是一个广播帧(其实他也找不到这个 IP 对应的主机,根本不存在),会在组 MAC 帧时,把目的 MAC 地址置为全F。
广播 IP层:网络号(含子网号) + 全1主机号 MAC层:MAC地址全1,即 FF-FF-FF-FF-FF-FF
3.3 路由表
为了把数据包发给目标主机,所有主机(路由器)都维护着一张路由表,记录着IP数据在下一步该发给哪个路由器。
可以运行 route print ,显示本地计算机上的路由表。
IPv4 Route Table
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.10 35
127.0.0.0 255.0.0.0 On-link 127.0.0.1 331
127.0.0.1 255.255.255.255 On-link 127.0.0.1 331
127.255.255.255 255.255.255.255 On-link 127.0.0.1 331
192.168.1.0 255.255.255.0 On-link 192.168.1.10 291
192.168.1.10 255.255.255.255 On-link 192.168.1.10 291
192.168.1.255 255.255.255.255 On-link 192.168.1.10 291
224.0.0.0 240.0.0.0 On-link 127.0.0.1 331
224.0.0.0 240.0.0.0 On-link 192.168.1.10 291
255.255.255.255 255.255.255.255 On-link 127.0.0.1 331
255.255.255.255 255.255.255.255 On-link 192.168.1.10 291
===========================================================================
Persistent Routes:
None
C:\WINDOWS\system32>
路由表分为静态配置,和动态生成。静态路由一般由管理员手动添加,而动态路由一般由各个路由器,根据路由协议(RIP, OSPF等),互相交换路由信息而生成。这里不做详细讨论。
|