计算机网络 - 上
计算机网络 - 上
- 集线器
- 交换机
IP
地址- 路由器
网络组成
- 小型网络
- 中型网络
- 大型网络
假设在大型网络中的计算机A
和计算机B
通信
两台设备通信最简单的机制:
设备各开一个网口,用一台线连接起来 -> 这个方式虽然高效,但是随着设备数量变多,会导致网络拓扑变得复杂
集线器的诞生
为了解决设备与设备之间直接连接形成的复杂的网络拓扑问题
工作原理:
设备通过网线与集线器连接,数据先发送给集线器,再由集线器转发给接收方,实现相互连接和通信
工作方式:
将收到的数据广播到所有连接设备,不做任何处理.
为了确定数据接收方,每台计算机需要全局唯一标识:
Mac
地址(硬件层面)
传输方式:
A
发送数据包给B
,会在数据包头部携带B
的Mac
地址,数据包经过集线器会被广播到所有端口上,各个端口上的设备在接收到数据以后根据数据包头部的Mac
地址判断是否是发送给自己的消息
随着更多的设备加入,开始出现集线器桥接(其中一个端口的线连接到另一个集线器上)
集线器的缺点:
- 工作在半双工模式 -> 网络中同时只能有一个设备发送数据包,多台设备同时发送数据会冲突
- 通过广播的形式发送到端口,不安全
智能交换机
智能交换机是集线器的升级换代产品
工作方式:
与集线器类似,唯一的区别在于:智能交换机维护一张Mac
地址和端口的映射表,具备自动寻址能力
传输方式:
第一次传输:
A
发送数据包给B
,数据包格式依旧是Mac
地址(本机和目标机地址)+数据,交换机会记录发过来数据包的Mac
地址对应的端口,然后依次转发到各个端口,这个时候如果有目标Mac
回应了以后会记录目标Mac
地址和端口号,这样就实现了Mac
表的地址映射(不是持久化的,而是一段时间没有交换则清空Mac
表)
往后的传输:
往后的传输在一段时间内交换机内部有Mac
地址和端口的映射则会直接转发到对应的端口上
交换机特点:
支持全双工通信,同一时间可以多台设备发送消息
随着更多的设备加入,开始出现交换机桥接(其中一个端口的线连接到另一个交换机上)
注意:
在桥接模式中,交换机记录的是pc
的Mac
地址,所以如果设备在另一台交换机上,那么在交换机A
的Mac
端口映射表上记录的是PCB
的Mac
地址和连接另一台交换机的端口(不会是另一台交换机上该PC
的端口)
交换机存在的问题:
- 单台交换机可存储的
Mac
表大小有限 - 存在
Mac
表溢出情况
交换机找不到Mac
地址的映射端口,就会将数据广播到其他所有交换机,进一步广播到整个网络,导致丢包
IP地址
为了通过交换机使更多的网络设备互联,将大规模网络切分成小规模网络,交换机记录小规模网络设备的Mac
地址,需要跨网络访问的时候在使用路由器进行转发到目标网络
带来的问题:
PCA
与PCB
进行连接,如何知道A
与B
处于不同的网络,需要路由器转发? -> 使用标识区分不同的网络和设备
新的标识:IP
地址
IPV4
IPV6
IPV4
:
32
位二进制数字组成 -> 通常分为四个部分(每一部分都是十进制数),中间用·
相连
IPV4
当中每个IP
地址的组成:
- 网络地址(如:
192.168.1
) -> 表示该设备所在的网络 - 主机地址(如:
1
) -> 表示该设备在该网络中的位置
那么整个部分就是:192.168.1.1
如果两台设备的IP
地址网络地址相同,那么属于同一个网络
IP
地址如何确定网络地址和主机地址?
通过子网掩码
子网掩码:
一个32
位的二进制数字
子网掩码与IP
地址进行逐位的与
运算可以得出IP
地址的网络地址和主机地址
子网掩码的表达方式:
- 十进制表示法:如
255.255.255.0
CIDR
表示法:如192.168.1.0/24
-> 这里面的24
表示子网掩码中前24
位是网络地址,后8
位是主机地址
IP
地址是软件层面的,Mac
地址是硬件层面的
IP
地址可以随时修改,路由器在不同的网络中有不同的IP
地址,如192.168.0
是一个子网络,192.168.1
是另一个子网络.每个端口有独立的Mac
地址
如何通过IP
地址查询Mac
地址?
通过ARP
协议
过程:
通过ARP
协议向同一子网中广播一个ARP
请求,目标设备收到ARP
请求后检查请求中的IP
地址是否与自己的IP
地址匹配,如果匹配,则将自己的Mac
地址打包成一个ARP
响应发送回请求设备
路由器
工作原理:
收到数据包以后根据目标IP
来确定数据包的下一跳的目标网络(根据路由表实现)
路由表:
记录路由器所连接的不同网络之间路径和关系的一张表,包含目标网络地址,子网掩码,下一跳地址
值得注意的是:
如果下一跳地址是0.0.0.0
的话那么就不需要转发到其他路由器,直接转发回请求网络地址即可
路由表数据来源:
- 静态路由 -> 网络管理员手动配置
- 动态路由 -> 路由算法自动计算的动态路由
一次完整的数据包发送过程:
A
和B
在不同的网段,A
向B
发送数据包(一个数据包包括:源IP
,目标IP
,源Mac
,目标Mac
):
-
A
首先通过ARP
协议在同一个子网内查询B
的Mac
地址,无法查询到 -
A
查找默认网关(路由器)IP
地址,使用ARP
协议查询到默认网关的Mac
地址,将数据包发送到网关,该数据的目标Mac
为网关的Mac
-
网关根据数据包当中的目标
IP
和子网掩码信息找到目标IP
所处的网络,然后依次经过路由转发 -> 这个过程当中数据包的源Mac
地址和目标Mac
地址都会被修改(每跳转一次修改一次) -
数据包到达目标网络的网关时,该网关通过
ARP
协议查询可以得到对应设备的Mac
地址,讲源Mac
地址修改为网关地址,目标Mac
地址修改为目标Mac
地址 -
数据包通过网关发送到设备
B
每转发一次,Mac
地址修改一次,IP
地址全程无变化
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
2021-05-10 5.10Java实操IO流,面向接口编程,面向父类编程
2021-05-10 5.10JavaIo流四大抽象类
2021-05-10 Java字符集乱码