5 集线器, 交换机, 路由器
集线器收到来自网线的信号
当信号到达集线器后,会被广播到连接集线器的所有设备,这些设备收到信号之后会通过 MAC 地址判断是不是发给自己的【是则接收,否则忽略】 ![[Excalidraw/计算机/四大件/计算机网络 Draw.md#^group=fWnWn5MN|570]]
交换机收到来自集线器的信号
信号到达交换机之后的处理与网卡基本相同【==可以认为交换机的每个网线接口和后面的电路部分都是一块网卡==】:
- 信号到达网线接口,由 PHY(MAU) 模块进行接收,并将信号转换为通用格式传递给 MAC 模块
- MAC 模块将信号转换为数字信息,之后校验 FCS【没问题则放入缓冲区,否则丢弃】
- 包放入缓冲区后,则根据 MAC 表查询接收方的 MAC 地址应该通过哪个端口发送出去【有记录则发送,无记录则广播】 ![[Excalidraw/计算机/四大件/计算机网络 Draw.md#^group=Po3EOEWg|570]]
路由器收到来自交换机的信号
- 首先,根据对应的通信技术【以太网/无线局域网】将从端口发送过来的包接收进来
- 接下来,转发模块会根据包的 IP 头部 在路由表中查询
查询时只匹配网络号,忽略主机号,根据子网掩码来决定发送的优先级,无选项时选择默认网关:
例如,要发送一个包到
192.168.1.10服务器:
- 首先根据子网掩码判断符合对象,第三行的子网掩码表示只判断前 24 个 bit 位,所以第三行符合要求;第四行也符合要求;第五行的子网掩码表示需要符合的 bit 位是 0,所以也符合。
- 接着是确定优先级:子网掩码位数越多,优先级越高,因为范围越小。第四行的目标地址根据子网掩码可以判断是一个服务器的地址;第三行是一个子网地址;
- 把包发送给第四行的地址,如果符合则结束,否则发送给下一优先级的地址
- 如果前面的地址都不匹配,则发送给 默认网关【第五行】 ![[Excalidraw/计算机/四大件/计算机网络 Draw.md#^group=fP0Bxd5i|500]]
- 更新 IP 头部的 TTL 有效期
发送方在发送包时会将 TTL 设为 64/128,包每经过一个路由器的转发,TTL 就会减 1,当 TTL 的值变成 0 时,这个包就会被丢弃【在互联网上发送包最多也就经过几十个路由器】
- 转发模块将包转移到对应端口,端口按照硬件的规则【以太网等】将包发送出去
如果输出端口为以太网,则发送出去的网络包会通过交换机到达下一个路由器。如果网络包的目标服务器位于家庭,公司网络中,那就不需要通过接入网路由器,也就不用进入互联网,而是直接转发给目标服务器;否则网络包会到达接入网路由器