接上一篇博客继续对网络层的知识进行讲解。
一、IP地址与硬件地址
二、地址解析协议 ARP
每一个主机、路由器都设有一个 ARP高速缓存(ARP cache),里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。
ARP 解决同一个局域网内的主机或路由器的IP地址和硬件地址的映射。
- 当主机A(或路由器)欲向本局域网上的某个主机B(或路由器)发送IP数据报时,就先在自己的 ARP 高速缓存中查看有无主机B的IP地址。
- 如有,则将其对应的硬件地址写入MAC帧,然后通过局域网将该MAC帧发往主机B。
- 如果没有,则进行ARP广播,得到主机B的硬件地址,写入MAC帧,再发送。
1、工作原理
网络层的 ARP 协议完成了 IP 地址与物理地址的映射。
首先,每台主机都会在自己的 ARP 缓冲区中建立一个 ARP 列表,以表示 IP 地址和 MAC 地址的对应关系。当源主机需要将一个数据包要发送到目的主机时,会首先检查自己 ARP 列表中是否存在该 IP 地址对应的 MAC 地址:如果有,就直接将数据包发送到这个 MAC 地址;如果没有,就向本地网段发起一个 ARP 请求的广播包,查询此目的主机对应的 MAC 地址。
此 ARP 请求数据包里包括源主机的 IP 地址、硬件地址、以及目的主机的 IP 地址。网络中所有的主机收到这个 ARP 请求后,会检查数据包中的目的 IP 是否和自己的 IP 地址一致。如果不相同就忽略此数据包;如果相同,该主机首先将发送端的 MAC 地址和 IP 地址添加到自己的 ARP 列表中,如果 ARP 表中已经存在该 IP 的信息,则将其覆盖,然后给源主机发送一个 ARP 响应数据包,告诉对方自己是它需要查找的 MAC 地址;源主机收到这个 ARP 响应数据包后,将得到的目的主机的 IP 地址和 MAC 地址添加到自己的 ARP 列表中,并利用此信息开始数据的传输。如果源主机一直没有收到 ARP 响应数据包,表示 ARP 查询失败。
三、IP 数据报的格式
- 一个 IP 数据报由首部和数据两部分组成。
- 首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。
- 在首部的固定部分的后面是一些可选字段,其长度是可变的。
- 版本:占 4 位。指 IP 协议的版本,目前的 IP 协议版本号为 4 (即 IPv4)。
- 首部长度:占 4 位。该字段一个单位表示 4个字节。因此 IP 的首部长度的最大值是 60 字节。
- 区分服务:占 8 位,用于提供服务质量,一般不使用。
- 总长度:占 16 位,指首部和数据之和的长度,单位为字节,总长度必须不超过最大传送单元 MTU。若数据报长度超过MTU,则必须分片后才能传送。
- 标识:占 16 位。发送端每产生一个数据报,标识字段就加1。如果数据报被分片,它是用来标识同一个数据报。
- 标志:占 3 位,目前只有两位有意义。标志字段的最低位是 MF (More Fragment)。MF = 1 表示后面“还有分片”。MF = 0 表示最后一个分片。标志字段中间的一位是 DF (Don’t Fragment) 。只有当 DF = 0 时才允许分片。
- 片偏移:占13 位,指出分片后某片在原分组中的相对位置。片偏移以 8 个字节为偏移单位,即分片的长度必须是8个字节的倍数。
- 生存时间TTL (Time To Live) :占8位。表示数据报在网络中可通过的路由器数的最大值。每经过一个路由器,路由器将TTL值减1,当TTL减小到0,则将该数据报被丢弃
- 协议:占8 位。指出此数据报携带的数据使用何种协议。
- 首部检验和:占16 位。该字段只检验数据报的首部,不检验数据部分。
- 源地址和目的地址都各占 4 字节。
四、网际控制报文协议 ICMP
- Internet Control Message Protocol
- ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。
- ICMP 是 IP 层的协议。
- ICMP 报文作为 IP 层数据报的数据,加上数据报的首部,组成 IP 数据报发送出去。
1. ICMP 数据包格式
- ICMP 报文的种类
ICMP 差错报告报文
- 终点不可达 (type=3)
- 源点抑制(type=4)
- 时间超过 (type=11)
- 参数问题 (type=12)
- 改变路由(重定向)(type=5)
ICMP 询问报文
- 回送请求(type=8),回送回答(type=0)
- 时间戳请求(type=13),时间戳回答(type=14)
2. ICMP 应用举例
- PING (Packet InterNet Groper) 分组网间探测
- PING 用来测试两个主机之间的连通性。
- PING 使用了 ICMP 回送请求与回送回答报文
五、网络地址转换 NAT
- 本地地址(专用地址)——仅在机构内部使用的 IP 地址,可以由本机构自行分配,而不需要向因特网的管理机构申请。
- 全球地址(公用地址)——全球唯一的IP地址,必须向因特网的管理机构申请。
专用地址的范围
- 10.0.0.0 到 10.255.255.255
- 172.16.0.0 到 172.31.255.255
- 192.168.0.0 到 192.168.255.255
- 专用地址只能用于一个机构的内部通信,而不能用于和因特网上的主机通信。
- 在因特网中的所有路由器对目的地址是专用地址的数据报一律不进行转发。
- 机构内部使用专用地址的主机如果需要和因特网通信,应采取什么措施呢?可以使用网络地址转换NAT(Network Address Translation)
- 所有使用本地地址的主机在和外界通信时都要在 NAT路由器上将其专用地址转换成全球地址才能和因特网连接。
1、NAT地址转换分类
- 静态地址转换
将一个本地地址与一个全球地址进行一对一的明确转换。这种映射关系是静态的。
- 动态地址转换
将内部本地地址与全球地址池中的一个地址进行一对一的转换。这种映射关系是动态的。
- 复用地址转换
- 端口地址转换PAT(Port Address Translation)
- 网络地址与端口号转换NAPT(Network Address and Port Translation)
- PAT可以实现多个本地地址同时与同一个全球地址进行转换,通过端口号区别不同的本地地址。
- 对于只申请到少量IP地址甚至只有一个合法IP地址,却经常有很多用户同时要求上网的情况,这种转换方式非常有用。
- 优缺点的分析
- 静态地址转换需要独占宝贵的合法IP地址。
- 静态地址转换主要用于内部网络中有对外提供服务的服务器,如Web、Email服务器时。这些服务器的IP地址必须采用静态地址转换,以便外部用户可以使用这些服务。
六、网络层的总结
在计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网。网络层的任务就是选择合适的网间路由和交换结点, 确保数据及时传送。在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组和包进行传送。在 TCP / IP 体系结构中,由于网络层使用 IP 协议,因此分组也叫 IP 数据报,简称数据报。
- 负责为分组交换网上的不同主机提供通信服务
- 路由选择
- 网络层使用IP协议(网际协议),因此也称为IP层或网际层
- 网络层上的分组也称为IP数据报
到此,网络层的知识已经了解完了,当然其中还有一些没有讲到的知识或者是讲的不详细的知识,读者可以去收集资料了解。博客的所有内容来之【谢希仁著. 计算机网络(第7版)】