计算机网络——网络层
预备知识
-
协议:为网络中进行数据交换而建立的规则
-
体系结构:计算机网络的各层及其协议的集合就是网络的体系结构
-
ADSL技术:非对称数字用户线ADSL技术是用数字技术对现有的模拟电话用户线进行改造,使其能够承载宽带数字业务
-
路由器在进行分组转发的时候只使用协议栈的下面三层
-
数据链路层解决的三个问题:封装成帧 透明传输 差错检测 (循环冗余校验码CRC)
-
适配器(网卡):适配器上有处理器和存储器,而计算机的硬件地址就在适配器的ROM中;IP地址在计算机的存储器中;适配器解决两个问题:a、串行传输和并行传输的转换 b、对数据进行缓存,以解决数据传输速率的不匹配问题
-
以太网交换机:网桥的替代品,在数据链路层对以太网进行扩展,内有一个通过自学习算法建立的帧交换表(地址表)
网络层
网络层只向上提供简单灵活的、无连接的、尽最大努力交付的数据报服务,而不提供服务质量的承诺。
网际协议 IP
-
与IP协议配套的还有三个协议 地址解析协议ARP、网际控制报文协议ICMP、网际组管理协议IGMP
-
路由器也称其为网关:网关地址其实就是计算机连接到的路由器中的IP地址
-
路由器仅根据目的主机所连接的网络号来转发分组
-
路由器因为至少连接到两个网络,所以至少有两个不同的IP地址
-
IP 地址是一种逻辑地址,是用软件实现的
IP地址和硬件地址
*注意其中IP数据报和MAC帧在传输过程中内容的变化
地址解析协议ARP
-
ARP协议解决的问题:知道了一台机器的IP地址,能够同时找到他的硬件地址
-
ARP协议通过在主机中建立一个ARP高速缓存,里面有本局域网中IP地址和硬件地址的映射关系(映射表)
映射表的建立流程:
- ARP进程向本局域网中广播发送一个ARP请求分组
- 本局域网中的所有主机都能收到此请求分组
- 与请求分组中的IP地址一致的主机收下分组,并对源主机单播发送ARP响应分组
- 双方都把IP地址和硬件地址的映射关系写入ARP高速缓存中
-
ARP协议解决的是在同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题
-
为什么既然在网络链路上最后是依靠硬件地址来找到目的主机的,那为什么不直接用硬件地址 进行通信?
因为存在各式各样的网络,他们使用不同的硬件地址,那就要进行复杂的硬件地址转换工作,网络层屏蔽了下层这些很复杂的实现细节,使我们能够使用统一的、抽象的的IP地址研究主机之间的通信
IP数据报格式
字段解释:
- 版本:占4位;即分为 IPv4 和 IPv6,通信双方IP版本必须一致
- 首部长度:占4位;首部长度的单位是4字节,比如首部最小是20字节,则首部长度应为5(0101),首部最大是60字节,如果IP数据报首部长度不是4字节的整数倍,则必须用填充字段进行填充。
- 总长度:占16位,单位是字节;是首部和数据之和的长度,数据报最大长度是 65535 字节,但是实际上用不到这么长,因为在数据链路层协议中规定了数据帧中数据字段的最大长度MTU,若数据报总长度超过MTU值时,就必须要进行分片。注意:若需要对数据报进行分片时,总长度指的是 每个分片的首部长度与该分片的数据长度之和。
- 标识:占16位;IP软件在存储器中维持一个计数器,每产生一个数据报计数器就加 1,并将这个值赋值给标识字段;当需要IP数据报需要分片时,就将这个值复制到每一个分片中,以保证最后能重新组装成为原来的数据报。
- 标志:占3位;目前只有两位有意义。最低位 MF 和 中间为 DF,当 MF=1 表示后面还有分片,为 0 表示这是最后一个分片;只有当DF为 0 时才允许分片。
- 片偏移:占13位;表示某片在原分组中的相对位置。注意:片偏移的单位是 8字节,所以每个分片大小也是8字节的整数倍。
- 生存时间(TTL):占8位;字段的功能为跳数限制,显然最大跳数是255;若把TTL值改为 1 ,则表示此数据报只能在本局域网内传输。
- 协议:占8位;表明此数据报携带的数据是使用何种协议的,以便使目的主机的IP层知道应将数据部分上交给哪个协议进行处理。
- 首部检验和:占16位;只检验数据报的首部。
- 可变部分:IPv6把数据报首部做成了固定的。
网络层转发分组的流程
路由表中最重要的两个信息:(目的网络地址,下一条地址)
其中R2的路由表:
目的主机所在网络 | 下一条地址 |
---|---|
20.0.0.0 | 直接交付,接口0 |
30.0.0.0 | 直接交付,接口1 |
10.0.0.0 | 20.0.0.7 |
40.0.0.0 | 30.0.0.1 |
分组转发算法:
- 从数据报的首部提取目的主机的IP地址 D,得出目的网络号为N。
- 若N就是与此路由器直接相连的某个网络地址,则进行直接交付,不需要再经过其他的路由器,直接把数据报交付目的主机(这里包括把目的主机地址 D 转换为具体的硬件地址,把数据报封装为MAC帧,再发送此帧;否则就是间接交付,执行 3。
- 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器,否则,执行 4
- 若路由表中有到达网络 N 的路由,则把数据报传送给路由表中所指明的下一跳路由器,否则,执行 5。
- 若路由表中有一个默认路由, 则把数据报传送给路由表中所指明的默认路由器,否则,执行 6。
- 报告转发分组出错。
划分子网和构成超网
划分子网:
划分子网就是从网络的主机号借几位作为子网号;而使用了划分子网的IP地址就变为 了:
规定:路由器在和相邻路由器交换路由信息时,必须把自己所在网络(或子网)的子网掩码告知相邻路由器
使用子网时分组的转发
在划分子网的情况下,分组转发的算法必须做相应的改动。
我们应当注意到,使用子网划分后,路由表必须包含以下三项内容,目的网络地址、子网掩码和下一跳地址
在划分子网的情况下,路由器转发分组的算法如下:
- 从收到的数据报的首部提取目的 IP 地址 D.
- 判断是否为直接交付。对路由器直接相连的网络逐个进行检查,用各网络的子网掩码和D逐位相“与”(AND操作可以看成乘法),看结果是否和相应的网络地址匹配。若匹配,则把分组进行直接交付(当然还需要把D转换成物理地址,把数据报封装成帧发送出去),转发任务结束。否则就是间接交付,执行3。
- 若路由表中有目的地址为D的特定主机路由则把数据报传送给路由表中所指明的下一跳路由器:否则,执行 4
- 对路由表中的每行(目的网络地址,子网掩码, 下跳地址),用其中的子网掩码和 D 逐位相“与”(AND操作),其结果为N,若N与该行的目的网络地址匹配,则把数据报传送给改行指明的下一跳路由器;否则,执行 5
- 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器。否则,执行 6
- 报告转发分组出错。
构成超网(无分类编址CIDR)
-
消除了A、B、C、D类地址及子网的概念,而变为了前面是网络前缀,后面表示主机号。即:
斜线记法:128.14.35.7/20CIDR使用32位地址掩码,斜线后面表示 1 的个数。
-
地址块概念,有效的减少了路由表中项目的个数
-
最长前缀匹配原则:使用网络前缀情况下,在查找路由表时,可能不止有一个匹配结果,这时我们要挑选前缀最长的那个,可以减少分组转发次数,提高分组转发效率。
网际控制报文协议 ICMP
-
为了更有效的转发IP数据报和提高交付成功机会,在网络层使用ICMP协议
-
ICMP 报文有两种,即ICMP差错报告报文和ICMP询问报文
-
ICMP差错报告报文共有四种:
1、终点不可达:当路由器或主机不能交付数据报时就向源点发送终点不可达报文。
2、时间超过:当路由器收到生存时间为零的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送时问超过报文。
3、参数问题:当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。
4、改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。
-
下面是不应发送ICMP差错报告报文的几种情况:
- 对ICMP差错报告报文,不再发送ICMP差错报告报文。
- 对第一个分片的数据报片的所有后续数据报片,都不发送ICMP差惜报告报文。
- 对具有多播地址的数据报,都不发送ICMP差错报告报文。
- 对具有特殊地址(如127.0.0.0或.0.0.0.0)的数据报,不发送ICMP差错报告报文。
-
常用的ICMP询问报文有两种,即:
1、回送请求和回答:ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问。收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。这种询问报文用来测试目的站是否可达以及了解其有关状态。
2、时间戳请求和回答:ICMP时间戳请求报文是请某台主机或路由器回答当前的日期和时间。在ICMP时间戳回答报文中有一个32位的字段,其中写入的整数代表从1900年1月1日起到当前时刻一一共有多少秒。时间戳请求与回答可用于时钟同步和时间测量。
-
ICMP的应用举例
- 分组网间探测 PING,PING没有通过运输层的 TCP 和 UDP
- 跟踪路由:traceroute(UNIX)/tracert(Windows)
网络地址转换 NAT
-
RFC 1918 指明了一些专有地址,这些地址只能在机构的内部进行通信,规定互联网中的所有路由器对目的地址是专用地址的数据报一律不转发。
专有地址块 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 软件的路由器叫做 NAT 路由器,它至少有一个有效的全球 IP 地址,这样专用网内部主机和外界通信时。都要在 NAT 路由器上通过 NAT 地址转换表将其本地地址转换成全球 IP 地址,当外界想要和专用网内主机通信时,也需要 NAT 路由器将IP地址转换为专用网内部的地址。
方向 字段 旧的IP地址 新的IP地址 出 源IP地址 192.168.0.3 172.38.1.5(NAT路由器地址) 入 目的IP地址 172.38.1.5 192.168.0.3 -
当 NAT 路由器有 n 个全球 IP 地址时,专用网内部就可以最多同时 n 台主机接入互联网。
-
专用网内部的主机不能充当服务器,因为 NAT 路由器不知道把来自外界的 IP 数据报转发到内部的哪个主机。