**

第四章:网络层

**

1. 概述:

本章主要讲的是计算机在局域网or互联网内究竟如何互联, 详细地描述了每一个步骤, 每一个协议,重点内容比较多, 反正我看了一个下午,真的是"qnmlgb", 这么多知识点.

2. 历史

读过网络的人都知道, 现在的互联网的形式是由以前电信网一步一步演变而来的. 电信网采用的是面向连接的通信方式, 使得数据在信道里面传输无差错, 不用分先后等等. 然而计算机拥有强大的处理差错能力, 加上计算机以面向连接的方式进行数据通信, 会造成各种延迟, 所以, 计算机之间的通信采用"无连接的, 不可靠传输的"连接方式. 并且采用数据分组的形式发出,  通过物理连接各个主机大致构成一个网, 然而, 要想在这张网上传输, 就必须采取统一的方法去接收和发出数据.  如果这样做, 大家都可以很方便地处理数据了. . 所以定义了以下3种协议. 地址解释协议(ARP), 网际控制报文协议(ICMP), 网际组管理协议(IGMP).可以这么理解(网络层最底层是ARP协议, 第二层是IP协议, 第三层是ICMP,IGMP协议).

3. 分类的IP地址

(1)IP地址概念: IP地址就是给网络上的每一个主机(or路由器) 的每一个接口提供一个在全世界范围内是唯一的32位的标识符.(IPv4是32位, IPv6是128位)(8位为一个字节 ).

(2)IP地址的划分: 第一个字段是"网络号", 标志着主机(or路由器)所连接到的网络. 第二个字段是"主机号", 它标志着该主机.     {<网络号>,<主机号>}. IP地址例如:125.23.0.4 表明你处于125.23.0.0网络中的125.23.0.4的主机.

(3) 从第二点可以看出, IP地址不仅指明了主机所在的网络,还指明了具体某一台计算机. 所以产生出各种各样的IP地址, 简单分为以下几类: A类地址{<8位网络号>,<24位主机号>}, B类地址{<16位网络号>,<16位主机号>}, C类地址{<24位网络号>,<8位主机号>}. 

(4)3类IP地址的范围及解析:
网络号全0, 称为"this" (这个), 指的是本网络. 
网络号为127(即01111111)作为本地软件的环回测试, 即自己向自己发送数据.  
主机号全0, 为当前主机所连接的网络(例如IP地址5.6.7.8, 连接的网络为5.0.0.0).
主机号全1 表示该网络上的所有主机. 
(所以, 当处于同一个局域网, 或者用网桥各种物理手段连接的接口的网络号一定要一致)

3. 故事背景

电信运营商的现行网络架构 电信网络架构原理_计算机网络原理

4. 地址解析协议(ARP)

(1)概念: 用来表达同一个局域网内部IP地址与MAC地址的映射关系.

(2)要点: 网络层使用的是IP地址, 但是实际上网络链路传输数据帧的时候, 最终还是依靠MAC地址来传输. 所以ARP协议就是在主机ARP告诉缓存中存放一个IP地址到MAC地址的映射表, 并且动态更新. 

(3)工作流程(局域网内):当A主机给B主机发送数据报时,在映射表找不到B的MAC地址,A主机的ARP进程在局域网上广播发送ARP请求分组: 内容为"我的IP地址为1.1.2.3, 我的MAC地址为 00-00-213-213, 我需要知道IP地址为1.1.2.7 主机的MAC地址".  局域网内所有主机 就会查看自己的IP地址是否相符, 是就返回一个报文: 关于自己的MAC地址. 主机A收到主机B的回应报文后就会在A主机的ARP高速缓存中添加B主机的映射关系. 

(4)ARP处理互联网上的四种情况:

1)发送方是主机(如H1),要把IP数据报发送到同一个网络上的另一个主机(如H2)。这是H1送ARP请求分组(在网1上广播),找到目的主机H2的硬件地址。



2)发送方是主机(如H1),要把IP数据报发送到同一个网络上的另一个主机(如H3或H4)。这是H1发送ARP请求分组(在网1上 广播),找到网1上的一个路由器R1的硬件地址。剩下的工作由路由器R1来完成。



3)发送方是路由器(如R1),要把IP数据报转发到与R1连接在同一个网络(网2)上的主机(如H3)。这时R1发送ARP请求分组(在网2上广播),找到目的主机H3的硬件地址。



4)发送方是路由器,要把IP数据报转发到网3上的一个主机(如H4)。H4与R1不是连接在同一个网络上。这时R1发送ARP请求分组(在网2上广播),找到连接在网2上的一个路由器R2的硬件地址。剩下的工作就由个路由器R2来完成。

5)为什么不直接用MAC地址进行通信: 因为世界各地的有各式各样的网络, 他们使用不同的硬件地址而IP地址就是为了消除这种差异而存在的.

5. IP数据报的格式

电信运营商的现行网络架构 电信网络架构原理_电信运营商的现行网络架构_02


(1)长度IP数据包的首部的前一部分是固定20字节, 后一部分是长度可变的部分,最大60字节.

(2)解释各个字段的意思:

1.版本(4位, IPv4 OR IPv6 版本)

2. 首部长度(1)说得很清楚了

3. 区分服务(一般不使用这个字段)

4. 总长度(指的是首部和数据部分之和的长度, 尽管可以很长, 但是受链路层最大传输单元MTU长度的限定(1500字节), 超过就要被CUT)

5. 标识(如果真的受限与MTU而被CUT, 则属于同一个数据包的就标上同一个标识,以便CUT了之后可以重组)

6. 标志(MF=1代表后面还有分片, MF=0代表此片是最后一个)

7. 片位移(此片离原点的相对位置)

8. 生存时间(防止此数据报无限制地在互联网中兜圈子 (TTL 跳数限制))

9. 协议(让IP层知道应该上交给那个协议)

10. 首部检验和() +++源地址和目的地址

(3)IP分组转发流程: 其实最重要的就是了解路由表如何使用.

在路由表中, 最重要的两个信息{<目的主机所在网络>,<吓一跳地址>},

电信运营商的现行网络架构 电信网络架构原理_电信运营商的现行网络架构_03

现在来说一下整一个流程: 
    在互联网上, A主机要发信息给B主机,中间隔了2个路由器, 首先A先搜寻目的地址, 看看是不是在同一个局域网内, 是就直接交付, 简介交付就将数据报传给第一个路由器R1,
    (此时我称为状态一)此时的IP数据报 [首地址是A的IP地址, 目的地址是B的IP地址],然后打包好传给链路层并使用ARP协议获取当前接口的MAC地址, 此时MAC帧[源地址是A的接口的MAC地址, 目的地址是R1的MAC地址], 传传传!!!现在传输到R1路由器了! 然后路由器开始拆开MAC帧 并查看目的IP地址所在的网络区域, 根据路由表所有的信息, 找找!OK!!!找到要从S0接口出去, 
    (此时我称为状态二) 路由器将IP数据包不做任何改变, 也使用ARP协议,将MAC帧改为[源地址是R1的接口的MAC地址, 目的地址是R2的MAC地址], 开始传给R2. 传传传!!! 现在传输到R2路由器了!! ! 路由器接收到MAC帧后开始拆封, 查看IP数据报里面的目的地址, 然后查看R2路由表 , 寻找是否可以直接交付, 当当当!!! 发现可以直接交付, 主机B的IP地址所在网络区域就是R2管辖的 , 
    (此时我成为状态三) 然后R2路由器将IP数据报原封不动打包给链路层, 也使用ARP协议, 将MAC帧修改为[源地址是R2的接口的MAC地址, 目的地址是B的MAC地址]. 开始传!传传传!!!传到了主机B。。。

6. 划分子网

(1)因为IPv4地址越分越少, 所以需要更新一下 原本IP地址格式{<网络号>,<主机号>}---变为---{<网络号>,<子网号>,<主机号>}  例子: 一个路由器管辖的网络区域为10.0.0.0 第一个子网: 10.1.0.0 第二个: 10.2.0.0 ....... 第一个子网里面的第一个主机IP地址: 10.1.0.1,第一个子网的第二个主机IP地址: 10.1.0.2............懂什么叫做子网了把?

(2)既然存在子网了, 那我如何识别那部分才是子网呢 例如: 10.12.2.3 可能10.12.0.0是子网, 也可能 10.12.2.0 才是子网. 所以我们需要一个方法去说明子网的范围. 所以那个"子网掩码"就这样腾空出世了

(3)子网掩码长什么样子:
A类地址默认子网掩码: 255.0.0.0 
B类地址默认子网掩码: 255.255.0.0 
C类地址默认子网掩码: 255.255.255.0 
当然 还有其他 255.255.192.0 or 255.255.255.192 等等. 

(4)子网掩码怎么用: 首先, 将一个已经划分子网的IP地址和子网掩码放到一起, 然后他们不是有32位嘛, 每一位都项目做"与运算", 得出来的结果就是 真正的网络地址了.

(5)不忍心告诉你, 进化了的路由表都不上面那幅图那样的, 是这样子的: 

![这里写图片描述]()

7. 构造超网

(1)构造了子网虽然缓解了不够用的问题, 但该来的还是要来的, 所以就要新的技术出来了. 提出了无分类编制CDIR. 消除了 传统的ABC类地址以及划分子网的概念, 提出新的IP地址格式{<网络前缀>,<主机号>}/X , 其中X为网络前缀占的位数 , 相当于一个地址掩码 例如:123.213.34.1/20 那么32位中前20位就是网络前缀(指明所在网络区域, 就好像子网的地址一样), 后12位为主机号(指明了是哪一个主机).

8. 网际控制报文协议ICMP

(1)概念: 为了提高交付的成功率, ICMP协议允许主机或者路由器报告差错的情况. 所以就用ICMP报文来提供载体. 

(2)种类: 差错报文和询问报文. 其中差错报文分: 终点不可达, 时间超过, 参数问题, 改变路由(重定向). 而询问报文有 回送请求和回答, 时间cuo请求和回答.

9. IPv6版本.

首先: 协议数据单元由IPv4的数据报改变为IPv6的PDU(分组).
 ![这里写图片描述]()

介绍IPv6的基本首部.

1.版本(IPv6填6) 
2.通信量类(数据报(PDU)的类别和优先级)  
3.流标号(同一个数据报有相同的流标号(就是IPv4版本的标识)) 
4.有效载荷长度(除基本首部以外的字节数) 
5.下一个首部(相当于IPv4的协议字段或可选字段) 
6.跳数限制(防止PDU无限期存在于互联网) 
+++源地址和目的地址.
并且IPv6的地址采用冒号十六进制记法.

(3)过渡1: 尽管IPv6已经出现了, 但还是有很多IPv4的仍在使用, 所以为了实现双向通信, 所以使用"双协议栈"使得计算机即可以识别4又可以识别6.

(4)过渡2: 在计算机接收处使用双协议栈可以双识别, 但是传输的时候, 有一些通道也只能识别4的版本的数据报, 所以我们使用"隧道技术", 解释: 当IPv6分组传输到只能识别IPv4通道的时候, 在IPv6的分组(PDU)的首部加上IPv4版本的首部(必须把这个IPv4首部的协议字段置为11 !!!), 这样就可以通过IPv4通道了, 当离开通道时, 再交给IPv6协议栈去处理. 这就是所谓的隧道技术.

10. IP多播

这个以后再补充, 这一章再看我就受不了了~~~~所以以后再补充好了.