读书笔记 ---- 《网络是怎样连接的》笔记二
Posted whc__
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了读书笔记 ---- 《网络是怎样连接的》笔记二相关的知识,希望对你有一定的参考价值。
《网络是怎样连接的》笔记二
1、集线器
1.1 集线器内部结构
-
双绞线的作用
以两根信号线为一组缠绕在一起,这样设计的目的是为了抑制噪声的影响
1.2 集线器工作方式
-
信号传送过程
信号从网卡流入网线时,网卡中的PHY(MAU)模块负责将包转换成电信号,信号通过RJ-45接口进入双绞线,以太网的信号本质是正负变化的电压,如图所示,信号从这个接口的1号和2号针脚流入网线,然后信号会通过网线到达集线器的接口后,会被广播到整个网络中,集线器按照以太网的基本架构将信号广播出去。
以太网的基本架构: 将包发送到所有的设备,然后由设备根据接收方MAC地址来判断应该接收哪些包。
-
集线器的作用
集线器将信号发送给所有连接在它上面的线路
2、交换机(基于以太网设计)
交换机的设计是将网络包原样转发到目的地。交换机工作在MAC层,也称二层网络设备
2.1 交换机内部结构
-
端口
网线接口与后面的电路部分加在一起称为一个端口,也就是说交换机的一个端口相当于计算机上的一块网卡。
注意
: 交换机端口不核对接收方MAC地址网卡本身有MAC地址,通过核对收到的包的接收方MAC地址判断是不是发给自己的,不是则丢弃;而交换机的端口不核对接收方MAC地址,而是直接接收所有包并存放到缓冲区中,所以交换机端口不具有MAC地址。
-
MAC地址表
包含了两个信息
- 设备的MAC地址
- 设备连接在交换机的哪个端口(接收端口)
2.2 交换机工作方式
交换电路结构
交换电路的输入端和输出端分别连接各个接收端口和发送端口,网络包通过这个网格状的电路在端口之间流动。当网络包通过交换电路到达发送端口时,端口中的MAC模块和PHY(MAU)模块会执行发送操作,将信号发送到网线中。
2.3 交换机MAC地址表
维护操作分为两种:
- 第一种: 收到包时,将发送方MAC地址以及其输入端口号码写入MAC地址表中
- 第二种: 删除地址表中某条记录的操作,防止设备移动时产生问题。
3、路由器(基于IP设计)
网络包经过集线器和交换机之后,就到达了路由器,并在此被转发到下一个路由器。
3.1 路由器内部结构
路由器主要包括转发模块 和 端口模块
-
转发模块
负责判断包的转发目的地
-
端口模块
负责包的收发操作
3.2 路由器工作方式
- 首先,路由器会通过端口将发送过来的包接收进来(取决于端口对应的通信技术)
- 然后,转发模块会根据接收到的包的IP头部记录的接收方IP地址,在路由表中进行查询,以此判断转发目标。
- 最后,转发模块会将包转移到转发目标对应的端口,端口再按照硬件的规则将包发送出去。
补充: 路由器的各个端口都具有MAC地址和IP地址
端口模块根据响应通信技术的规范来执行包收发操作,意味着端口模块是以实际的发送方或者接收方的身份来执行包收发网络包。
- 以以太网端口为例,路由器的端口具有MAC地址,因此能够成为以太网的方法送和接收方;另外,端口还具有IP地址。所以当转发包时,首先路由器端口会接收发给自己的以太网包(当端口MAC地址和包的接收方MAC地址一致时才会接收,否则就丢弃包)
- 所以根据这一点,是与交换机不同的,交换机只是将进来的包转发出去而已,并不会自己成为发送方或者接收方。
3.3 路由器表信息
路由器是根据IP头部中的IP地址判断转发目标。
-
目的地址
路由器会忽略主机号,只匹配网络号
表示接收方信息,只包含表示子网的网络号部分比特值,主机号部分比特质全为0。
路由器会将接收到的网络包的接收方IP地址与路由表中的目标地址进行比较,并找到相应的记录。
-
子网掩码
表示在匹配网络包的目标地址时需要对比的比特数量
-
网关和接口
表示网络包的转发目标。
根据目标地址和子网匹配到某条记录后,路由器就会将网络包交给接口列中指定的网络接口,并转发到网关列中指定的IP地址。
-
跃点数
表示距离目标IP地址的距离是远还是近。值越小,表示越近。
路由表的维护
与交换机的MAC地址表不同的是,路由器在转发包的过程中不需要对路由表内容进行维护
维护的方法大体有以下两种:
-
由人手动维护路由记录
-
根据路由协议机制,通过路由器之间的信息交换由路由器自行维护路由表的记录
例如RIP、OSPF、BGP等都属于路由协议
3.4 包转发详细流程
先看整体的流程:
-
路由器的接收操作
信号到达路由器后,也就是到达网线接口后,路由器的PHY(MAU)模块和MAC模块将信号转换为数字信号;然后通过包末尾的FCS进行错误校验,如果没有问题就检查MAC头部中的接收方MAC地址,若是发给自己的就将包放到接收缓冲区中,否则就丢弃这个包。
-
查询路由表确定输出端口
完成包的接收操作之后,路由器会丢弃这个包的MAC头部。接下来,路由器会根据IP头部中的内容进行包的转发操作,通过查询路由表判断转发目标。
-
更新IP头部的TTL和可能进行分片功能拆分大网络包(看3.5.2)
-
路由器的发送操作(以太网的包发送)
-
如果路由表的网关列内容为IP地址,则该地址就是下一个转发目标
-
如果路由表的网关列内容为空,则IP头部中的接收方IP地址就是下一个转发目标
-
接着,知道了对方IP地址后,会通过ARP根据IP地址查询MAC地址,将查询结果作为接收方MAC地址。
路由器会有ARP缓存,所以首先会在ARP缓存中查询,如果找不到则发送ARP查询请求
-
填写输出端口的MAC地址以及以太网类型
-
最后,将其转换成电信号并通过端口发送出去
输出端口为以太网的话,则发送出去的网络包会通过交换机到达下一个路由器
-
确定输出端口例子:
如图所示,假设地址为10.10.1.101
向192.168.1.10
发送包
-
转发的第一步,根据包的接收方IP地址查询路由表中的目标地址栏,以找到相匹配的记录。
-
根据匹配规则,第3、4、5行都可以匹配
匹配规则: 根据子网掩码列中值判断网络号的比特数,并匹配相应数量的比特。 如图第3行,子网掩码为255.255.255.0,表示需要匹配从左起24个比特。 网络包的接收方IP地址和路由表中的目标地址左起24个比特内容都是192.168.1,两者是匹配的,该行记录就是候选转发目标之一。
其中,路由器会选择网络号比特数最长的一条记录(第4行)。
网络号比特数越长,说明主机号比特数越短,意味着该子网内可分配的主机数量越少,这一规则目的是尽量缩小范围,转发目标更加准确。 如果存在网络号长度相同的多条记录,那路由器会选择跃点计数值小的记录。越小说明路由器越近。
-
如果路由表中无法找到匹配的记录,则会丢弃这个包,并通过
ICMP
消息告知对方。这里与交换机不同,原因是网络规模的不同。 交换机连接的网络最多也就几千台设备的规模,规模并不算太大,所以交换机可以转发到所有端口上。 但是路由器工作网络环境是互联网,规模远远大于以太网,如果转发到整个网络上,会产生大量的网络包,造成网络拥塞,所以路由器会选择直接丢弃掉。
-
找不到匹配路由时会选择默认路由
因为如果将所有的转发目标配置在路由表不太现实。 所以需要默认路由,当匹配不到其它路由时,网络包会被转发到互联网接入路由器。子网掩码为0.0.0.0记录表示“默认路由”
3.5 路由器其它工作
3.5.1 更新TTL
IP头部的TTL: Time To Live,生存时间,表示包的有效期,包每经过一个路由器的转发,该值就会减1,当为0时,表示超过有效期,这个包就会被丢弃。
3.5.2 分片功能拆分大网络包
路由器的端口不只有以太网,也可以支持其它局域网或专线通信技术。
不同线路和局域网类型各自能传输的最大包长度不同,所以输出端口的最大包长度可能会小于输入端口。
使用IP协议
定义的分片功能对包进行拆分,缩短每个包的长度。
注意与TCP对数据拆分的不同。
- TCP拆分数据的操作是在将数据装到包里之前进行的,也就说拆分好的一个数据块正好装进一个包里。
- IP分片是将一个完整的包再进行拆分的过程
对包进行拆分的分片功能如图
两种情况不能分片:
- 发送方应用程序等设置了不允许分片
- 这个包已经是经过分片后的包
3.6 路由器和交换机的区别
-
路由器是基于IP协议设计的,俗称三层网络设备,路由器各个端口都具有MAC地址和IP地址;
而交换机是基于以太网协议设计的,俗称二层网络设备,交换机的端口不具有MAC地址;
-
IP协议本身没有传输包的功能,因此包的实际传输要 委托 以太网进行。
所以换句话说,路由器包的传输工作委托给交换机来进行。
这里指纯粹的路由器和交换机。 实际的路由器内置了交换机功能,比如连接互联网的家用路由器。
所以,IP(路由器)负责将包送达通信对象这一整体过程,而其中将包传输到下一个路由器的过程则是由以太网(交换机)来负责的。
3.7 路由器附加功能
- 地址转换
- 包过滤
地址转换
主要解决地址不足的问题,设置一定的规则,规则某些地址是用于内网的,这些地址叫做私有地址。而原来的固定地址则叫做公有地址。
私有地址范围:
- 10.0.0.0~10.255.255.255
- 172.16.0.0~172.31.255.255
- 192.168.0.0~192.168.255.255
地址转换原理:
在转发网络包时对IP头部中的IP地址和端口号进行改写。
包过滤
在对包进行过滤时,根据MAC头部、IP头部、TCP头部的内容,按照事先设置好的规则决定是转发这个包,还是丢弃这个包。防火墙设备或软件大多数都是利用这一机制来防止非法入侵的。
以上是关于读书笔记 ---- 《网络是怎样连接的》笔记二的主要内容,如果未能解决你的问题,请参考以下文章
《Kubernetes网络权威指南》读书笔记 | 连接你我他:Linux bridge