交换机原理
版本追踪
2024.12.5:更新部分路由表内容
2024.12.9:更新 2 网络基本参数,3.3 工作原理
1 网络分层模型
OSI 七层网络模型
OSI 七层模型是一个标准,规定了机器(主要是电脑)之间如何通信。OSI 模型是一个分层的模型,每一个部分称为一层,每一层扮演固定的角色,互不干扰。OSI 模型的概念适用于所有通信协议,不止局限于以太网
OSI有7层,从下到上分别是:
1、物理层 ( Physical layer :硬件,有线及无线。例如网线,中间的物理链接可以是光缆、电缆、双绞线、无线电波。中间传的是电信号,即010101…这些二进制位。
2、数据链路层( Data Link layer :数据链路层就是来对电信号来做分组的
3、网络层(Network layer ):网络层定义了一个IP协议
4、传输层(Transport layer): 建立端口到端口的通信
5、会话层(Session layer)
6、表示层(Presentation layer)
7、应用层(Application layer ):应用层功能:规定应用程序的数据格式。例:TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等等
在通信主机上完成的功能:应用层,表示层,会话层,传输层
在网络设备上实现的功能:网络层,数据链路层,物理层
OSI 七层模型是一个理论模型,今天的互联网使用的实际模型是 TCP/IP 模型,而后者不使用 OSI 的第5层和第6层,因此我们本文不做介绍。
大体来说,位于OSI第7层的应用程序(这里是浏览器),与第1-4层(合称“网络层”)对话,以便这4层把机器上的应用程序所要的信息从远端的机器上(此处是百度服务器)传输过来。
1.1 物理层(Physical layer)
规定了数据的物理传输方式。如有线、无线、光纤、双绞线、WIFI、4G 等。规定了对信号的定义,如 1,0 分别表示高低电平
在杭州的你与温州的朋友聊天,你的电脑要上网,物理层体现是什么?是不是一个网线、有个路由器,温州那边的朋友是不是也要网线和路由器。也就是说计算机与计算机之间的通信,必须要有底层物理层方面的连通,就类似于你打电话,中间是不是必须得连电话线。
中间的物理链接可以是光缆、电缆、双绞线、无线电波。中间传的是电信号,即010101…这些二进制位。
底层传输的010010101001…这些二级制位怎么才能让它有意义呢?人为的分组再适合不过了,8位一组,发送及接收都按照8位一组来划分。接收到8位为一组的话,那么就可以按照这8位数来做运算。如果没有分组,对方接收的计算机根本就不知道从哪一位开始来做计算,也解析不了收到的数据。
就像Socket发送和接收消息一样,要规定一个传输协议,比如规定前面8位数表示要发送数据的长度,后面代表要发送的实际数据,这样接收方就可以先解析收到的前面的8位、在根据长度解析实际的数据。因此要想让底层的电信号有意义,必须要把底层的电信号做分组。而这分组的工作,就是接下来我们要讲的数据链路层的工作。
1.2 数据链路层(Data Link layer )
规定了数据收发的基本格式,如数据帧结构,帧内容
我们可以简单的理解为:数据链路层就是来对电信号来做分组的。
一组电信号称之为一个数据包,或者叫做一个“帧”。
- 每一数据帧分成:报头head和数据data两部分
head 包含:(固定18个字节)
- 发送者(源地址,6个字节)
- 接收者(目标地址,6个字节)
- 数据类型(6个字节)
data包含:(最短46字节,最长1500字节)
- 数据包的具体内容
这就像写信,发送者的地址(源地址)就是你家的地址,接收者地址(目标地址)就是对方的收信地址,你家的路由器就相当于邮局。其实在计算机通信中的源地址和目标地址指的是mac地址。
Mac地址的由来:
head中包含的源和目标地址由来:Ethernet规定接入Internet的设备都必须具备网卡,发送端的和接收端的地址便是指网卡的地址,即Mac地址。
每块网卡出厂时都被烧录上一个实际上唯一的 Mac 地址,长度为48位2进制,通常由12位16进制数表示,(前六位是厂商编码,后六位是流水线号)
有了 mac 地址以后,计算机就可以通信了。
计算机底层,只要在一个教室里(一个局域网),都是靠广播的方式,吼。
局域网的理解:什么是互联网,互联网就是由一个个局域网组成,局域网内的计算机不管是对内还是对外都是靠吼,这就是数据链路层的工作方式-广播。
广播出去以后,所有人都听得见,所有人都会拆开这个包,读发送者是谁,接收者是谁,只要接收者不是自己就丢弃掉。对计算机来说,它会看自己的Mac地址,飞哥收到以后,他就会把片发给我,发送回来同样采用广播的方式了,靠吼。
同一个教室(同一个局域网)的计算机靠吼来通信,那不同教室的计算机又如何?
比如说局域网1的pc1与局域网2的pc10如何通信?你在教室1(局域网1)吼,教室2(局域网2)的人肯定是听不见的。这就是跨网络进行通信,数据链路层就解决不了这个问题了,这就得靠网络层出面了。
在讲网络层之前,其实基于广播的这种通信就可以实现全世界通信了,你吼一声,如果全世界是一个局域网,全世界的计算机肯定可以听得见,从理论上似乎行得通,如果全世界的计算机都在吼,你想一想,这是不是一个灾难。因此,全世界不能是一个局域网。于是就有了网络层。
1.3 网络层(Network layer)
通过给报文头尾添加数据段实现比数据链路层更上一层的封装
以太网网络层定义了一个 IP 协议,你想,我是这个教室的一个学生,我想找隔壁教室一个叫老王的学生,我也不认识老王,那怎么办,我吼?老王在另外一个教室肯定是听不到的。找教室的负责人,这个教室的负责人就负责和隔壁教室的负责人说话,说我们教室的有个学生要找你们教室的老王。往外传的东西交给负责人就可以了,内部的话上面已经提到,通过广播的方式,对外的东西广播失效。教室的负责人就是网关,网关即网络关口的意思。
Mac地址是用来标识你这个教室的某个位置,IP地址是用来标识你在哪个教室(哪个局域网)。你要跨网络发包你是不是要知道对方的IP地址,比如你要访问百度,你肯定得知道百度服务器的IP地址。计算机在发包前,会判断你在哪个教室,对方在哪个教室,如果在一个教室,基于mac地址的广播发包就OK了;如果不在一个教室,即跨网络发包,那么就会把你的包交给教室负责人(网关)来转发。Mac地址及IP地址唯一标识了你在互联网中的位置。
数据链路层中会把网络层的数据包封装到数数据链路层的数据位置,然后再添加上自己的包头,再发给物理层,物理层发给网关,网关再发给对方教室的网关,对方教室的网关收到后在那个教室做广播。
现在来看另一个问题,在吼之前怎么知道对方的Mac地址?这就得靠ARP协议。
ARP: Adress Resolution Protocol 地址解析协议,根据IP地址获取物理地址的一个TCP/IP协议。
ARP 协议的由来:A 在找到 B 之前,A 需要先知道的 Mac 地址。即 A的机器必须先发一个 ARP 包出去,ARP 也是靠广播的方式发,ARP 发送广播包的方式如下:
局域网中怎么获取对方的 Mac 地址:
Mac为12个F代表的是一种功能,这个功能就是获取对方的MAC地址,计算机的Mac永远不可能是12个F。假设是在本教室广播,一嗓子吼出去了,所有人开始解包,只有IP地址是172.16.10.11的这个人才会返回他的Mac地址,其他人全部丢弃。发回来源Mac改成飞哥自己的Mac地址,同时把飞哥的Mac地址放在数据部分。
跨网络怎么获取对方的Mac地址:
通过 IP 地址区分,计算机运算判断出飞哥不在同一个教室,目标 IP 就变成了网关的 IP 了。网关的 IP 在计算机上配死了,可以轻松获取。
这样网关就会把它的Mac地址返回给你,然后正常发包
网关帮你去找飞哥,但对用户来说,我们根本就感觉不到网关的存在。
1.4 传输层(Transport layer )
传输层的由来:网络层的ip帮我们区分子网,以太网层的mac帮我们找到主机,然后大家使用的都是应用程序,你的电脑上可能同时开启qq,暴风影音,等多个应用程序,
那么我们通过ip和mac找到了一台特定的主机,如何标识这台主机上的应用程序,答案就是端口,端口即应用程序与网卡关联的编号。
传输层功能:建立端口到端口的通信
补充:端口范围0-65535,0-1023为系统占用端口
网络中的计算机通信无外乎有以下两种情况:
- 要发送的内容多,需要将发送的内容分成多个数据包发送。(TCP协议 丢包后会重传,考虑可靠传输 )
- 要发送的内容少,一个数据包就能发送全部内容。(UDP协议 丢包后不重传,不考虑可靠传输的)
TCP :要传输的内容需要分成多个数据包来传输,分段,编号,流量控制,拥塞避免,可靠传输,客户端和服务端需要建立TCP连接(协商参数:选择性确认,最大报文),通信结束需要释放连接。(例如下载一部1GB电影,访问网页、发邮件,访问FTP上传或下载文件)
UDP 要传输的内容一个数据就能全部发送,不需要分段,不需要流量控制,传输成功与否由应用层判断,客户端与服务器之间不用建立连接,节省服务器资源。(例如实时的语音和视频使用UDP协议,因为它们不允许传输的数据颠倒顺序,还有多播也是使用UDP协议)
1.5 应用层(Application layer)
应用层由来:用户使用的都是应用程序,均工作于应用层,互联网是开发的,大家都可以开发自己的应用程序,数据多种多样,必须规定好数据的组织形式 。
应用层功能:规定应用程序的数据格式。
例:TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了”应用层”。
1.6 数据封装和解析
以下图为例,发送数据时,源设备将应用数据层层封装,最终形成包含 TCP 首部,IP 首部等数据的完整以太网帧,发送到目的设备。接收数据按此规则将完整以太网帧层层解析,最终拆解得到用户所需的应用数据
2 网络基本参数
2.1 MAC 地址
MAC 地址(英语:Media Access Control Address),直译为媒体存取控制位址,也称为局域网地址(LAN Address),MAC 位址,以太网地址(Ethernet Address),硬件地址(Hardware Address)或物理地址(Physical Address)。属于 OSI 模型中第二层数据链路层。MAC 地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的 MAC 地址
MAC 地址相关具体内容参考 [[组播原理#^f55002|组播 IP 地址]]
2.2 IP 地址
IP 地址可以分为 A, B, C, D, E 五类地址
2.3 子网掩码
子网掩码用于和 IP 地址进行二进制按位与操作,用以计算出网段
交换机在接收到数据包时会判断源 IP 和目标 IP 是否在同一网段:
若在同一网段,则数据包由交换机转发。交换机工作在数据链路层,通过源设备和目标设备的 MAC 地址进行转发
若不在同一网段,则交换机将数据包转发到上一级路由器,由路由器进行跨网段传输。路由器工作在网络层,根据路由表和 IP 来转发不同网络的数据
3 交换机
3.1 二层交换机
二层交换机工作在网络第二层,即数据链路层,通过 MAC 地址进行转发。默认不支持子网划分
网管型二层交换机可以实现交换机端口划分 VLAN
划分 VLAN 和通过 IP 隔绝不同网段的区别:
经测试,IP 隔绝网段不彻底,不同子网有互相访问的可能,可能由于二层交换机性能原因。
3.2 三层交换机
三层交换机工作在 网络第三层,即网络层,相较二层交换机多了 IP 地址,可以通过 IP 进行转发。同时多了路由的功能,可以连接不同的子网
路由器和三层交换机的区别
三层交换机本质上还是交换机,只是相较二层交换机多了基本的路由功能,可以适用于简单的不同网段互联情况
路由器除了交换机功能,还有路由,防火墙等多种功能,适用于更复杂的网络情况
3.3 工作原理
3.3.1 MAC 地址学习(数据链路层)
交换机中存有一个 MAC 地址表,其中将 MAC 地址和网络设备一一对应
- 当交换机首次启动时,它的 MAC 地址表是空的
- 一旦交换机接收到一个数据帧,它会读取源 MAC 地址,并将其与接收该帧的物理端口号相关联,然后更新其内部的 MAC 地址表
- 当交换机要发送数据帧到某个特定 MAC 地址时,它会在 MAC 地址表中查找该地址。如果找到了,就只将帧发送到对应的物理端口;否则,交换机会将帧发送到所有物理端口(除了接收该帧的端口),这就是所谓的泛洪(flooding)
- 接收端设备会处理该帧,如果有回应,那么回应帧会被标记为目标 MAC 地址,并再次更新 MAC 地址表
3.3.2 ARP 协议(网络层)
地址解析协议(Address Resolution Protocol,缩写 ARP)是一个通过解析网络层地址来找寻数据链路层地址的网络传输协议,它在 IPv4中极其重要。即通过 ARP 协议,设备可以通过设备的 IP 地址找到其对应的 MAC 地址
原理
网络设备中有一个 ARP 缓存表(如图),存储了其它网络设备 IP 地址与 MAC 地址的一一对应关系。当发送设备向目标设备发送信息时,首先会检索 APR 缓存表来查找目标设备的 MAC 地址。若缓存表中没有存储,发送设备会在本地网络上广播发送一个 ARP 请求,目标设备接受后以单播方式进行 ARP 应答。这样发送设备便获得了目标设备的 MAC 地址,同时更新自己的 ARP 缓存表
报文格式
- 硬件类型:该字段有16bit。指定运行 ARP 协议的物理网络类型,ARP 协议可以运行在任何物理网络上。以太网是类型1。
- 协议类型:该字段有16bit。指定高层协议的类型。ARP 可用于任何高层协议。IPv4协议的值为0x0800。
- 硬件长度:该字段有8bit。定义物理地址的长度,以字节为单位。对于以太网,该值为6字节。
- 协议长度:该字段有8bit。定义逻辑地址的长度,以字节为单位。对于 IPv4,该值为4字节。
- 操作:该字段有16bit。用于定义分组类型,目前常用2种。ARP 请求分组和 ARP 响应分组。
- 发送方硬件地址:记录发送方的物理 MAC 地址。
- 发送方协议地址:记录发送方的逻辑 IP 地址。
- 接收方硬件地址:如果是 ARP 请求报文,由于不知道接收方的物理地址(请求报文就是通过广播询问接收方物理地址,当然事先不知道),该字段全部填充为0。
- 接收方协议地址:记录接收方的逻辑地址。
3.3.3 单播通信
在此只讨论最为常用的单播通信,组播原理可参考[[组播原理]]
4 路由
4.1 工作原理
4.1.1 路由表
路由表
路由表是网络设备(如路由器和交换机)中用于存储网络路径信息的数据结构。它的主要功能是指导数据包在网络中的转发,可以将一个网段的数据包转发到另外的一个网段
路由表内容
路由转发主要是依靠目的网络地址/掩码 、下一跳地址、本地出接口来进行转发
不同厂家的设备,路由表会有所差别,以 Windows 路由表为例
网络目标 网络掩码 网关 接口 跃点数
- 网络目标:数据包要到达的最终 IP 地址
- 网络掩码:结合网络目标,确定目的网络地址
- 网关:下一跳的地址
- 接口:数据包从当前网络设备流出的接口
- 跃点数:优先级
假设当前 windows 设备有两个网卡,一个了连接内网(10.29.123.173),一个连接外网(192.168.0.35)
- 添加路由表:
route -p add 10.29.123.0 mask 255.255.255.0 10.29.123.173,意为将目的为 10.29.123.0/24 的数据包通过 10.29.123.173 作为下一条转发出去 - 添加路由表:
route add 0.0.0.0 mask 0.0.0.0 192.168.0.35,意为将所有未配置的目标 IP,都通过 192.168.0.35 转发出
CIDR 表示法
192.168.1.0/24:/24 表示子网掩码有 24 位是 1,剩下的 8 位是 0。即 /24 对应的子网掩码是 255.255.255.0
4.1.2 路由器
#交换机
#网络通信
#以太网
#通信协议
#计算机网络
#Route
#todo


















