韩立刚计算机网络——第四章:网络层
Posted 想文艺一点的程序员
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了韩立刚计算机网络——第四章:网络层相关的知识,希望对你有一定的参考价值。
目录
提示:这一章内容非常多。
在思科网络工程认证当中,这一章被分为四部分:
- IP地址
- 子网划分
- 静态路由、动态路由
- 网络地址转换(NAT)、VPN
指引:
网络层提供的两种服务
网际协议IP
网际控制报文协议ICMP
因特网的路由选择协议
IP多播
虚拟专用网VPN和网络地址转换NAT
1、网络层提供的两种服务
思考:可靠交付交给谁来负责? 网络还是端系统?
举例:网上购物的可靠交付由谁来负责?
1、商家下单之后,交给快递之后,商家就不管了。过几天我们没有拿到,或者拿到的东西坏了。然后我们找厂家。
2、这个过程中,快递公司是不管东西好坏的,直接运输的。
3、可靠交付交给 端系统,就是用户和商家。
4、如果交给 快递公司 的话,每一站快递都得拆开看看到底有没有错误。(这样效率会很低)
同理:我们在互联网上面,我们将可靠交付 交给端系统,网络不管这个事情,网络只管发送。
虚电路服务:
- 网络管理员,需要提前配置一条线路。
- 如果当中有一个路由器坏了,那么传输就会被打断。因为网络管理员,不能提前设置另外的线路。
- 虚电路服务,理论上来说可以不写地址,因为已经固定好了2个通信端。
数据报服务:目前网络当中就是采用这种模式。
- 数据包当中要包含IP地址、MAC地址。
- 我们并不能知道数据包走哪一条路,而是交给路由器自己选择。
- 每个数据包的路线可能都不相同。
- 数据包的接收顺序,并不一定是按照发送的数据过来的。(每个数据包有编号)
虚电路与数据包服务比较:
2、国际协议 IP
网络互联的设备:
分层 | 设备 | 作用 |
---|---|---|
物理层 | 转发器 | 以太网的范围不应该大于 100米,但是增加一个 Hub,距离就可以扩大为 200米。 |
数据链路层 | 网桥或交换机 | |
网络层 | 路由器 | |
网络层以上 | 网关 | 一般用本网段的第一个地址,位于路由器的某个端口 |
数据的发送过程:
电脑网卡 ——> 路由器网关 ——> 路由器转发 ——> 互联网
- 计算机想要访问其他网段地址,先将数据交给网关,再有网关进行转发。
- 如果我们没有设置网关,我们的数据就发送不出去,只能访问本网段的计算机。
网络层要解决的问题:
主机怎么找到第一个路由器、
第一个路由器怎么找到第二个路由器、
互联网与虚拟互联网:
- 互联网:当中其实非常复杂。
- 虚拟互联网:将互联网当中的细节进行屏蔽,只要有 IP 地址就够了。
(1)网络层协议
网络层有四个协议
- IP协议
- ARP、RARP协议 :解析 MAC 地址
- ICMP协议:报告网络故障的协议。(超时?不可到达?)
- IGMP协议:
注意:可以看出 ARP 协议的地位相对低一点, IPv4 协议也要依靠 ARP 来进行实现。
(2)IP 地址
在设置 IPv4 的协议,并没有想到互联网可以发展这么快,所以将 IPv4 设置为 32位,怎么也想不到可以将这 32 位用完。
分析
- 路由器根本不用关心数据到哪个具体的地址,只需要关心到哪个网段的路由器。
IP地址的分类
由上图可以看出IP地址由两部分组成,即网络地址和主机地址,二者是主从关系。
- 网络地址表示其属于互联网的哪一个网络。
- 主机地址表示其属于该网络中的哪一台主机。
A类地址、B类地址、C类地址,都有自己固定的开头。
分析:
- A类地址:当中能用的是 1-126, 127.0.0.1 :作为本地回环测试。
(ping 127.0.0.1 的时候,其实就是在 ping 本主机的IP)
子网掩码的作用:
- 子网掩码(subnet mask) 又叫网络掩码、地址掩码,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网。
- 子网掩码不能单独存在,它必须结合IP地址一起使用。
(3)子网划分
比如一个地区只有 5 台计算机,我不可能给它分一个可以包含 254 个主机的 C 类地址,太浪费了。
如何实现:将原来的主机号,分出一部分用作子网号。
例题1:某主机IP地址为 210.33. 5.68 ,子网掩码为255. 255. 255.128。求其网段地址?
解析:将IP地址与子网掩码直接相与即可:
- 要清楚255是八个一,所以与其相与一定是它本身,也就是 210.33.5 是不变的。
- 只需要看68的二进制与128的二进制即可:
例题2:某A类网络 20. 0. 0. 0 的子网掩码为 255.224. 0. 0 ,请确定可以划分的子网个数,写出每个子网的子网号。
解析:因为是A类网络,子网掩码默认为255.0.0.0
- 所以多出来的224就是子网号,也就是11100000。
- 子网号就是占了前三个号,2的3次方,也就是八个子网个数。
- 至于每个的子网号,
000 00000
001 00000
010 00000
- 可使用的主机号:本子网当中,除去主机号全0 (子网地址),主机号全 1 (广播地址),之外都可以作为主机号。
000 00000 :子网地址
000 11111 :本子网的广播地址。
在这两个之间的 IP 地址都可以用。
例题3:将某C网 200. 161. 30. 0 划分成4个子网,请计算出每个子网的有效的主机IP地址范围 和对应的子网掩码。
解析:4个子网,需要2个bit 位来进行区分。
- C网的默认子网掩码为 255.255.255.0,加上四个子网之后就是:255,255,255,192(11 000000)
- 有效主机 IP 范围:排除 0 和 1 的主机地址。
例题4:某公司申请到的网络地址为 192. 3.2.0 ,现要划分5个子公司,最大的一个子公司有28台计算机,每个子公司在一个子网中,则
(1)子网掩码应为多少?
(2) 5个子公司的网络地址分别是什么?
分析:
- 子网号:要划分 5 个子公司,所以最少需要 3 位bit,用作子网号。(3bit 最多可以分 8 个子网)
- 主机号:最大的一个子公司有28台计算机, 最少需要 5个bit 用作主机号。(5bit最多放 32 个主机)
(4)IP 地址和 MAC 地址
提问:既然每个网卡的 MAC 地址是唯一的,那么我们直接使用 MAC 用来标识就好了,为什么还需要 IP 地址呢?
计算机 A 和计算机B 通信过程当中:
- IP地址是不发生变化的,MAC 地址在转发当中就会发生变化。
- 计算机 A 给计算机 B 发送数据的时候,进行与操作,发现不是自己网段的数据,所以要将数据发给路由器。
- 第一个阶段,数据帧添加的MAC 地址是下一个路由器的MAC地址,不是计算机B的MAC 地址。
(5)ARP 和 RARP 协议
ARP协议 :负责将 IP 地址 解析成MAC地址。
解析原理:依靠广播 ,所以对于网络传输来说,广播是不可避免的。
ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。
- 在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址。
- 在以太网中,一个主机和另一个主机进行直接通信,必须要知道目标主机的MAC地址。
- 但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。
- 所谓“地址解析”就是主机在发送帧前,将目标IP地址转换成目标MAC地址的过程。
ARP 欺骗的应用:
所以主机1 就可以实现网速分配的效果。
总结:
1、当访问外网段IP地址的时候,我们主机这时候需要添加本网关的MAC 地址。
2、本网关的MAC 地址:就是本网段路由器,当中的一个端口的MAC地址。
3、网关的MAC地址,即可以有路由器自动返回,也可以由用户自己设定,也可以被本网段的其他计算机发送。
(6) IP 数据报格式
数据在传输过程中的一步一分封装
我们现在分析网络层前面加的东西(叫做 IP数据报)。
一个IP数据报由 首部 和 数据两部分组成。
- 首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。
- 在首部的固定部分的后面是一些可选字段,其长度是可变的。
位置 | 名称 | 作用 |
---|---|---|
0-3bit | 版本 | 区别当前IP协议是 IPv4 还是IPv6 |
4-7bit | 首部长度 | 因为首部有一部分是可以变化的,所以在这里要明确标注长度 |
8-15bit | 区分服务 | 标记数据包的优先级,哪一个先传输。(下面会补充) |
16-31bit | 总长度 | 总长度指首部和数据之和的长度,单位为字节。(最大长度为2^16-1=65535字节) |
32-47bit | 标识 | IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。 |
48-50bit | 标志 | 占3位,但只有2位有意义,告诉数据包是否需要分片? |
50-63bit | 片偏移 | 表示分片之后,各个数据包的偏移值(下面会有补充) |
64-71bit | 生存时间 | 不同操作系统的默认 TTL值 不同 (下面会有补充) |
72-79bit | 协议 | 标明数据内容当中的上层协议是什么 (下面会有补充) |
80-95bit | 首部校验和 | 验证数据报首部是否完整 ,担心传输过程当中消失 |
源地址 | 发送端的IP地址 | |
目的地址 | 接收端的IP地址 | |
可变部分 | 用来支持排错、测量以及安全等措施 |
(1)怎么理解数据包的优先级?
我们在 QQ 视频的同时,对方同时给我们传递文件,此时视频的数据包就比传文件的数据包重要。
(2)数据包分片:
以太网的数据一般来说都是 1500字节以下,有的计算机发包的时候,发送了 3800 个字节。此时路由器看到这些大包就没有办法处理了,这时候这些路由器将这些大包进行分片,
- 每片小包重新添加首部
- 片偏移只有在数据包进行分片之后才会不为0。
(3)生存时间:
我们的计算机发送一个数据包之后,都会给他一个 TTL 值,数据包经过一个路由器,TTL 就会减一。如果 TTL 减到0,这个数据包就停止传输,直接丢弃。
为什么要设置生存时间呢?
如果没有生存时间,如果我们网络一直不断电,这个数据包就一直不会消失,就会一直消耗我们的带宽。
(4)协议号:(可以搜索协议号大全)
使用抓包工具来分析,抓到的数据:
- 数据链路层:目标MAC地址, 源MAC地址, 网络层协议类型
- 网络层:(上面表格当中我们有进行分析过)
版本:IPv4
首部长度:20字节
区分服务:优先级为0
数据包总长度:1054
标识计数器 22555, 下一个数据包就会是 22556.
分片标记:没有分片
TTL :128
协议:传输层使用TCP 协议
校验和:correct ,正确
源地址:
目的地址:
(4)IP转发分组流程(最重要)
需要了解的几个问题:
1、什么叫做 IP 转发? (什么叫做数据路由)
答:路由器在不同网段转发数据包。 跨越网段通讯的都是路由。
2、网络畅通的条件是什么?数据包能去能回的条件是什么?
答:沿途的路由器传输的时候,必须知道到,数据包到接收端需要给哪个接口,返回发送端又需要给哪一个接口。
分析下面的案例:
1、这个图里面有几个网段?
答:有五个:192.168.0,172.16.0,172.16.1,172.16.2, 192.168.1。
2、各个路由器知道什么?
答:路由器 A ,知道 192.168.0,172.16.0 在哪两个端口,但是他不知道 192.168.0,192.168.1 在哪两个端口。
a、静态路由
解决办法:添加静态路由,即给路由器指定不同IP地址需要发送的端口。
3、那么对于 0 号路由器来说,如果遇到 192.168.1 ,到底该走哪一个接口呢?
答:人为的添加路由表,对于 A 路由器来说,我们要告诉它 172.16.1,172.16.2, 192.168.1 遇到这三个网段的 IP ,都要送给 B 这个接口。
4、同理对于 1 号路由器来说,需要分配什么样的路由表呢?
答:192.168.0 给 C 端口, 172.16.2, 192.168.1 给 E 接口。
b、动态路由协议
RIP 协议:互联网上最早的动态路由协议。它的工作特点
- 周期性将自己知道的网段信息,广播给各个路由器,告诉相邻的路由器自己连着哪些网段。
- 每隔 30 s 广播一次。
- 最多是16 跳
分析:路由器为什么要周期性的要进行广播?
假设在工作当中,当中有一个路由器坏了,如果只广播一次,那就完了,就不能通信了。
周期性的广播,如果有路由器坏掉的话,我们就可以选择其他路线来进行传输。
OSPF :内部网关协议 0SPF (Open Shortest Path First)
1、向本自治系统中所有路由器发送信息,这里使用的方法是洪泛法。
2、发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。
3、只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息。
外部网关协议BGP:
1、BGP是不同自治系统的路由器之间交换路由信息的协议,BGP 较新版本是BGP -4。
2、边界网关协议BGP只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由。
3、每一个自治系统的管理员要选择至少-个路由器作为该自治系统的“BGP发言人”。
3、网际控制报文协议 ICMP
为了提高IP数据报交付成功的机会,在网际层使用了网际控制报文协议为了提高IP数据报交付成功的机会,在网际层使用了网际控制报文协议ICMP (Internet Control Message Protocol)。
- ICMP作用:探测网络有没有故障。
- ICMP不是高层协议,而是IP层的协议。
- ICMP报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去。
ICMP 协议的报文格式:
类型:标识生成的错误报文,它是ICMP报文中的第一个字段;
代码:进一步地限定生成ICMP报文。该字段用来查找产生错误的原因;
校验和:存储了ICMP所使用的校验和值。
名称 | 作用 |
---|---|
类型 | 有询问报文、和差错报文 |
代码 | 该字段用来查找产生错误的原因; |
校验和 | 存储了ICMP所使用的校验和值。 |
上面这个三个字段,每种类型的 ICMP 报文都有,下面的有的类型有,有的类型没有(与第一个字段的类型有关)
(1)ICMP 报文类型:
询问报文:回送请求(ping命令)和回答报文、时间戳请求和回答报文。
差错报文:(报告错误的报文)终点不可到达、源点抑制、时间超过、参数问题、改变路由。
ping 命令的过程:
(1)A 给 B 发送的时候是,询问报文
(2)B 给 A 返回的时候是,差错报文
pathping 命令,可以检测到数据包到哪里断了。
不仅可以显示在哪里断了,还可以显示每个网段的丢包率。
看视频一卡一卡的,其实就是有数据包丢失了。 通过 pathping 可以分析出哪里丢包比较多。
4、IP 多播、组播(IGMP)
IP 多播又叫做IP 组播。
目的:为了更好的支持一对多的通信,一个地方发送数据,可以有肯多地方接收数据。
回顾数据链路层学过的:
模式 | 作用 |
---|---|
单播 | 一对一 |
多播 | 一对多 |
广播 | 一对全体 |
多播采用的背景是什么呢?
有 90 个用户,有一个视频服务器,这个视频服务器给这 90 个用户发送数据。
- 如果采用单播:这个视频服务器就得将这个视频,发送90次,带宽会很高。
- 采用多播,会有一个多播路由器 ,服务器将数据发给多播路由器,路由器再进行转发。这样带宽就降成了1分。
(1)多播IP地址
首先它是一个 D 类地址。他只能用作目的地址,不能用作源地址。
(2)多播数据报
(3)硬件组播
我们软件组播,最后都要转化为硬件组播。
(4)IGMP 协议
5、VPN 技术
VPN :虚拟专用网络(virtual private network)
为了弥补IPV4地址日益枯竭的矛盾,在A、B、C类地址中专门划出一小块地址,作为全世界各地建设局域网使用,这些划出来专门作为局域网内网使用的IP地址称为私有网络地址(或称为私网地址,内网地址)。
一般为学校、政府单位 使用私网 IP 。
私网地址不能在公网上出现,只能用在内部网路中,所有路由器都不能发送目标地址为私网地址的数据报。
标准规定的私网地址有:
A类私网地址:10.0.0.0~10.255.255.255
B类私网地址:172.16.0.0~172.31.255.255
C类私网地址:192.168.0.0~192.168.255.255
举例情况:学校的服务器是一个私网 IP ,我们不使用校园网不可以进行访问。如果我们回家了,不能使用校园网,但是这时候想要访问学校的服务器,该怎么办?
用户想要直接访问内网服务器,这是不可能通的。 但是中间添加了一个服务器。
步骤:
(1)将目标IP地址,和伪造的源IP地址,作为数据包的一部分。
(2)在帧头当中,目的地址换为一个公网的IP地址。
(3)在经过 RAS 服务器的时候,将前一步的源IP 和 目标IP 去掉。
(4)这时候外网 IP 被伪造成一个内网IP。
vpn 的另外一种用途:
1、在中国我们有一些网址是不能访问的,(我们暂且将这些网址看作是内网),但是这些网址在美国可以进行访问。
2、我们在美国搭建一个中国可以访问的服务器, 然后我们先去访问这个服务器,然后这个服务器做 vpn 操作。
3、就相当于是美国的服务器在访问这个网址。
比如:如家酒店的账户信息需要进行交互,但是如家酒店遍布全球各地,这时候通过 VPN 技术,就可以将各个城市的局域网连起来。
6、NAT 技术
网络地址转换NAT (Network Address Translation)
C类私网地址:192.168.0.0~192.168.255.255, 我们宿舍的ip网段为 192.168.1.0 ,也是一个私网地址。
所以一开始,互联网上面是找不到我们宿舍的 私网地址的。找不到就不能上网。
有一个服务器,会将我们私网地址,替换为公网地址。
举例:比如我们在互联网上面发了一个帖子,公安局可以找到 100.81.64.1 这个公网地址,然后就可以找到是在我们学校,但是要想找到是哪个学生发的,那就不太好找了。
有个问题:我们所有在学校的电脑都被替换成了100.81.64.1,服务器给我们进行返回数据的时候,也是返回给这个 100.81.64.1 这个地址。那么这个地址如何区分到底转发给哪台计算机呢?
100.81.64.1 这个服务器,通过端口号,来进行区分是哪一台计算机发送的信息。
(1)NAT和PAT 的区别
NAT
192.168.0.2:4444 ----〉202.116.100.5:4444
192.168.0.3:5555 ----〉202.116.100.6:5555
192.168.0.10:1233 —〉202.116.100.5:1233
PAT
192.168.0.2:4444 ----〉202.116.100.5:50003
192.168.0.3:5555----〉202.116.100.5:50004
192.168.0.10:1233 —〉202.116.100.5:50005
简单来说,PAT:多对1,nat:多对多
(2)NAT 端口映射
NAT 端口映射和NAT 穿透的区别:
1、NAT:网络地址转换方法。
2、端口映射:NAT的一种,外网主机的IP地址的端口映射到内部网络中的机器上,以提供相应的服务。
以上是关于韩立刚计算机网络——第四章:网络层的主要内容,如果未能解决你的问题,请参考以下文章