这是我参与8月更文挑战的第27天,活动详情查看:8月更文挑战
书接上回,通过前面几篇,我们已经对这几个通信网元有了全面地了解,是时候给这个系列做一个总结了。
横向对比
1. 工作层级
-
Router识别IP包,工作在第三层网络层;
-
Modem改变信号物理格式,工作在第一层物理层;
-
Hub对信号进行放大和复制转发,工作在第一层物理层;
-
Bridge可以根据MAC地址判决转发,工作在第二层数据链路层;
-
Switch可以识别MAC地址,工作在第二层数据链路层;
-
层三交换机可以通过添加路由模块实现识别IP并进行路由,工作在第三层网络层;
-
层四交换机可以根据TCP/UDP数据包来进行负载均衡等高级调度,工作在第四层传输层;
2. 工作场景
- Router工作在网络边缘,通过路由和转发功能,实现连个不同网段的互联互通;
- Modem工作在网络边缘,通过转化信号格式来实现在不同介质上传输;
- Hub工作在局域网的核心,通过信号放大和广播实现一个网段内的互联互通;
- Bridge工作在两个局域网的中心,桥接同一网段的两个局域网;
- Switch工作在局域网核心,实现局域网内端到端高速通信
3. 广播域与冲突域
- Router可以分割广播域,路由器的一个端口就是一个广播域;
- Hub将所有连接到其的host共同组成一个广播域和一个冲突域;
- Bridege可以分割冲突域,网桥的一个端口就是一个冲突域,但网桥不能分割广播域,连接到网桥的局域网都处于同一个广播域;
- Switch和网桥一样,可以进一步分割冲突域,但不能分割广播域;
- Switch可以通过划分VLAN的方式分割广播域,一个VLAN就是一个广播域;
4. 双工模式
- Router是全双工模式,可以同时进行收发数据;同时也支持半双工模式;
- Modem是全双工模式,可以同时进行调制和解调;
- Hub是半双工模式,不能同时发送和接收,会造成冲突;
- Bridge同样也是半双工模式,不能同时发送和接收;
- Switch是全双工模式,端口间可以同时收发数据;同时也支持半双工模式;
实际端到端通信流程
我在HTTP的秘密系列中讲解了浏览器上网的过程,从HTTP讲到DNS, 讲到TCP,又深入到了TLS安全协议,在更深入地了解物理层到网络层的通信设备和机制,那么我们再整体看一下一次真实的互联网通信端到端流程:
一次完整的互联网通信过程
-
接入网络:当我们的手机或电脑接入网络,接入方式可以是咖啡厅wifi,手机热点,公司的网线,还是运营商的4G网络,这时我们和网络建立的只是物理连接,也就是层一;
-
获取IP:
- 接入网络后,网卡会通过端口发送广播消息,请求DHCP服务器(Dynamic Host Configuration Protocol动态主机配置协议)分配IP地址,请求消息中包含主机的MAC地址信息;
- 一般来说,DHCP服务会集成在路由器中,或是在运营商的机房里;
- 当DHCP服务器收到请求后,会自动从IP地址池中选择可用的IP地址分配给主机,并告知路由器地址,子网掩码,DNS地址,租约时长等信息,下面是DHCP消息截图:
-
获取网关(路由器)MAC地址及局域网内邻居的MAC地址:
- 光知道路由器IP地址是不够的,我们还需要知道MAC地址才能建立数据链路层的连接;
- 这是通过ARP协议实现的,主机会发送ARP广播消息,询问路由器IP所对应的MAC地址,路由器收到广播消息后,会将自己的MAC地址发送给主机,这样双方的层二连接就可以建立了;
- 主机不光需要知道路由器的MAC地址,还会在局域网内发送ARP广播,询问同网段的邻居的MAC地址,用于局域网内的通信;
-
主机此时就可以通过路由器访问互联网内容了,当在浏览器中填写网址后,主机会先向DNS服务器发送请求获取目标IP地址;
-
首先建立到目标IP的TCP连接,将目标IP地址放入到IP包中,此时有一个重要的判断,判断目标IP是否在局域网中:
- 如果在一个网段,则可以直接通过MAC地址进行通信;
- 如果不在一个网段,则必须通过路由器才能通信,这是协议规定;
- 路由器会负责将IP包转发给目标IP,所以此时主机会将路由器的MAC地址放入数据帧中,由路由器再决定下一跳的MAC地址:
-
路由器会将数据包发送给Modem进行调制,调制到光纤或电话铜线上进行传输,传输到下一跳,直到到达目的地路由器;
-
目标IP响应主机请求,响应消息同样是经过路由器转发给主机:
- IP层的源IP为目标IP,但数据链路层的帧头,却是路由器的MAC地址,因为在局域网内是由路由器负责转发:
- 这里要注意的是,虽然我们在IP包中看到的是本机的IP地址,但通过网段10.0.0.N可以得知,这只是一个私网地址,是不能用来做公网通信的,所以路由器在不知不觉中做了一个NAT地址转换:
- 路由器收到我们发往公网的IP包解析后,将其中的源IP改为公网IP,再发向下一个路由;
- 并将收到目标IP响应的IP包中的IP地址,改为我们的客户端IP地址,再发给客户端;
- 所以这也是为什么我们在公网查询本机IP时和我们本地看到的不一致的原因;
- 在路由器管理软件中,我们可以看到自己的公网地址,这个公网地址是所有局域网主机共用的;
感谢阅读,如有不准确和错误之处请留言指正,我会立即修正,感谢!
总结不易,请勿私自转载,否则别怪老大爷不客气
欢迎喜欢技术的小伙伴和我交流,微信1296386616