第四章网络层
1. 网络层提供的服务
-
负责在不同网络之间尽力转发数据包
-
基于数据包的IP地址转发
-
不负责丢失重传
-
不负责顺序
有点像送快递,一个人往另一个地方寄快递,每个快递走不同的路线,可能后发的先到了,也可能丢件了。但是网络层不管这些,只管寄快递。

1.1 数据包在互联网中的传送
-
数据包在Internet中的传输,Internet既有局域网,又有广域网,既有光纤,又有铜线,无线,还有不同的协议,这是Internet复杂所在。
-
路由器是三层设备:能看到网络层的IP地址来选择路径。

1.2 互连网络与虚拟互连网络
(1)互联网互联的设备
中间设备又称为中间系统或中继(relay)系统。
物理层中继系统:转发器(repeater),有点像集线器。
数据链路层中继系统:网桥或桥接器(bridge)。
网络层中继系统:路由器(router)。
传输层/应用层中继系统:网关(gateway)器。
网关就是路由器接口的地址。一般是本网段第一个地址。
(2)网络需要解决的问题

(3)虚拟网络把复杂的Internet看成一个网络,化简问题。虚拟互联网络就是逻辑互联网络,他的意思就是互联起来的各种物理网络的异构性本来就是客观存在的, 但是我们利用IP协议就可以使这些性能各异的网络从用户看起来好像是一个统一的网络,而不用考虑具体的网络异构细节。
2. 网络设备和OSI参考模型关系
3.1 TCP/IP协议之间层次

3.2 发送数据的过程

PC:计算机;Hub:集线器;Switch:交换机;Router:路由
发送端(封装):
(1)应用层准备要传输的数据;
(2)传输层把文件进行分段并编号;(数据段)
(3)网络层把传输层的每一个数据包增加原IP地址和目标IP地址;(数据包)
(4)数据链路层把每个数据加上MAC地址;
两种情况:(数据帧)使用自己的子网掩码,判断自己和目标地址分别在哪个网段,若在同一个网段(不过路由器),通过ARP协议广播的方式得到目标IP地址的MAC地址,然后就能封装出一个数据帧;
如果子网掩码不是一个网段(用与运算),通过ARP协议广播的方式得到路由器(网关)的MAC地址,然后把数据通过交换机发送到路由器M2,因为M2和M3是点对点通信,没有别的主机,所以它们之间的MAC地址就是FF。
(5)物理层把数据帧变成数字信号(bit流)
接收端(解封):
(1)交换机Hub0接收bit流,能对数据进行存储转发。它根据数据帧的MAC地址,确定数据是从哪来的,要去哪。
(2)路由器M2获取交换机的数据包,识别其中的IP地址,根据路由表选择出口,它无法识别数据段内容。
(3)路由器M2到M3是点对点通信,遵守PPP协议。
(4)PC3收到bit流后,数据链路层发现MAC地址是自己的,去掉MAC地址给它的网络层,网络层去掉IP地址给传输层,传输层把数据给应用层,应用层把各个数据拼接起来。
3. ARP协议
-
IP协议:把数据包从一个网段转到另一个网段,就是用来选择路径用的。
-
ARP为IP服务,IP为ICMP/IGMP服务。
3.1 ARP简介
-
不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。
-
每一个主机都设有一个 ARP 高速缓存(ARP cache),里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。
-
当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。如有,就可查出其对应的硬件地址,再将此硬件地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此硬件地址。
3.2 ARP协议的作用
-
将IP地址通过广播(本网段,不通过路由器),目标MAC地址是FF-FF-FF-FF-FF-FF,解析目标IP地址的MAC地址。
-
ARP是解决同一个局域网上的主机或路由器的IP地址和MAC地址的映射关系。如果所找的主机和原主机不在同一个局域网上,那么就要通过ARP找一个位于本局域网上的某个路由器的MAC地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。
-
从IP地址到MAC地址的解析是自动进行的,主机的用户对这种地址解析过程是不知情的。
-
只要主机或路由器要和本网络上的另一个已知IP地址的主机或路由器进行通信,ARP协议就会自动地将该IP地址解析为链路层所需要的MAC地址。
3.3 使用ARP的四种典型情况
-
发送方是主机,要把IP数据报发送到本网络的另一个主机,此时用ARP找到目标主机的MAC地址;
-
发送方是主机,要把IP数据报发送到另一个网络的另一个主机,此时用ARP找到本网络上一个路由器的MAC地址,剩下的工作由路由器进行;
-
发送方是路由器,要把IP数据报发送到本网络的另一个主机,此时用ARP找到目标主机的MAC地址;
-
发送方是路由器,要把IP数据报发送到另一个网络的另一个主机,此时用ARP找到本网络上一个路由器的MAC地址,剩下的工作由路由器进行;
3.4 ARP高速缓存的作用
-
为了减少网络上的通信量,主机 A 在发送其 ARP 请求分组时,就将自己的 IP 地址到硬件地址的映射写入 ARP 请求分组。
-
当主机 B 收到 A 的 ARP 请求分组时,就将主机 A 的这一地址映射写入主机 B 自己的 ARP 高速缓存中。这对主机 B 以后向 A 发送数据报时就更方便了。
3.5 应当注意的问题
-
ARP 是解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题。
-
如果所要找的主机和源主机不在同一个局域网上,那么就要通过 ARP 找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。
-
从IP地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的。
-
只要主机或路由器要和本网络上的另一个已知 IP 地址的主机或路由器进行通信,ARP 协议就会自动地将该 IP 地址解析为链路层所需要的硬件地址。
3.6 逆地址解析协议RARP
逆地址解析协议 RARP 使只知道自己硬件地址的主机能够知道其 IP 地址。
4. ICMP协议
-
为了提高 IP 数据报交付成功的机会,在网际层使用了网际控制报文协议 ICMP (Internet Control Message Protocol)。
-
ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。
-
ICMP 不是高层协议,而是 IP 层的协议。
-
ICMP 报文作为 IP 层数据报的数据,加上数据报的首部,组成 IP 数据报发送出去。
4.1 ping命令诊断网络故障
-
PING(Packet Internet Grope),因特网包探索器,用于测试网络连接量的程序。Ping发送一个ICMP回声请求消息给目的地并报告是否收到所希望的ICMP回声应答。
-
ping指的是端对端连通,通常用来作为可用性的检查, 但是某些病毒木马会强行大量远程执行ping命令抢占你的网络资源,导致系统变慢,网速变慢。 严禁ping入侵作为大多数防火墙的一个基本功能提供给用户进行选择。
-
如果你打开IE浏览器访问网站失败,你可以通过ping命令测试到Internet的网络连通,可以为你排除网络故障提供线索,下面展示ping命令返回的信息以及分析其原因。
4.2 Pathping跟踪数据包的路径
使用ping能够判断网络通还是不通,比如请求超时,你就不能判断什么位置出现的网络故障造成的请求超时。使用pathping命令能跟踪数据包的路径,能够查出故障点,并且能够计算路由器转发丢包率和链路丢包率以及延迟,据此能够判断出网络拥塞情况。
5. IGMP协议和多播组播
-
点到点通信;
-
广播:目标MAC地址全是F,目标IP地址全是255,也就是全是1.全网广播不能跨越路由器;
-
组播=多播:分组广播;
6. IP数据报的格式
6.1IP数据报的总体格式
-
一个 IP 数据包由首部和数据两部分组成。
-
首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。
-
在首部的固定部分的后面是一些可选字段,其长度是可变的。
-
每一行32bit相当于1个字节,一共5行,共20字节。

6.2IP数据报的格式详细说明
-
版本 :用来表示 TCP/IP协议的版本 v4 v6
-
区分服务 :Windows 2008上 gpedit.msc。确定更高的传输优先级。
-
总长度:确定数据部分长度。一共是16位,最多有2^16-1=65535字节。
注意,网络层,数据包最大65535字节;而数据链路层数据最大是1500字节,是不一样的。所以说,一旦超过数据链路层的最大要求时(网络层数据部分超过1480字节),数据包会分片。最大传输单元MTU。
-
标识:如果出现数据包分片,那么标识用来确定哪些数据包是需要组合的。
-
标志(flag): 占 3 位,目前只有前两位有意义。字段的最低位是 MF (More Fragment)。MF = 1 表示后面“还有分片”。MF = 0 表示最后一个分片。标志字段中间的一位是 DF (Don't Fragment) 。只有当 DF = 0 时才允许分片。

-
片偏移
-
网络层 ,数据包,最大 65535字节
-
数据链路层 ,数据最大1500 字节 ,最大传输单元 MTU
-
数据包 ,如果不分片 ,数据包数据最大不超过1480字节
-
偏移等于当前字节在数据部分的第几个再除以8.(下图是一个举例)

-
-
生存时间:就是TTL,time to live,每过一个路由器就减1。8位二进制。防止数据包在网络中循环。
-
协议字段:指出应将数据部分交给哪一个进程
-
首部校验和:
-
首部检验和(16 位)字段只检验数据报的首部。
-
不检验数据部分。
-
这里不采用 CRC 检验码而采用简单的计算方法。
-
每经过一个路由器就会检验一次。

-
-
IP数据报首部的可变部分:
- IP 首部的可变部分就是一个选项字段,用来支持排错、测量以及安全等措施,内容很丰富。
- 选项字段的长度可变,从 1 个字节到 40 个字节不等,取决于所选择的项目。
- 增加首部的可变部分是为了增加 IP 数据报的功能,但这同时也使得 IP 数据报的首部长度成为可变的。这就增加了每一个路由器处理数据报的开销。
- 实际上这些选项很少被使用。
- 源地址和目的地址都是IP地址,32位,只符合IPv4。IPv6是128位。
7. IP协议
7.1 网络畅通的条件
数据包有去有回。

7.2 静态路由
需要管理员告诉路由器所有没有直连的网络下一跳给谁。
适合于小规模网络,不能自动调整路由。
7.3 动态路由
7.3.1 RIP协议
周期性广播(30s)路由表,选择路径的依据是最少的跳数,最大跳数是15跳,所以一般不适合大网络。
7.3.2 OSPF协议
根据带宽选择路径。