网络基础知识
{Back to Index}
1 物理层
1.1 带冲突检测的载波侦听多路复用
Figure 1: CSMA/CD
主机在发送数据前先检查网络是不是空闲,如果空闲则发送数据,如果数据发送时产生冲突,则等一会儿(backoff)再发,所以在网络中不允许多路信号同时发送。
1.2 集线器
集线器 (Hub) 本质上是多端口的中继器。它不记忆数据是从哪个 MAC 地址发出,哪个 MAC 地址在哪个端口(以广播的方式发送数据)。
Hub 既不能隔断冲突域,也不能隔断广播域。
1.2.1 冲突域
一个主机发送报文,另一个主机也发送报文,产生冲突,则两个主机在一个冲突域。
1.2.2 广播域
一个主机发送广播,另一个主机收到,则两个主机在一个广播域。
2 链路层
2.1 以太网桥
网桥的目的是为了分割网络冲突域,使网络冲突限制在最小的范围内,本质上属于低配版的交换机(通常只有 2 个接口)。
网桥可以隔断冲突域,但不能隔断广播域。
- 以太网桥监听数据帧中源 MAC 地址,学习 MAC ,建立 MAC 与端口的映射关系
- 对于未知 MAC 地址,网桥将转发到除接收该帧的端口之外的所有端口
- 当网桥接到一个数据帧时,如果该帧的目的位于接收端口所在网段上,它就过滤掉该数据帧; 如果目的 MAC 地址在位于另外一个端口,网桥就将该帧转发到该端口
- 当网桥接到广播帧时候,它立即转发到除接收端口之外的所有其他端口
Figure 2: 网桥原理
2.2 交换机
交换机 每个接口对应一个冲突域。
Figure 3: Hub 和 Switch 的冲突域
交换机同样无法隔断广播域, 隔断广播域需要使用路由器。
网卡可以与连接的媒介进行 协商 ,来决定是否按照全双工(交换机)或半双工(集线器)通信:
root@ip-172-31-7-183:~# ethtool ens3 Settings for ens3: Supported ports: [ ] Supported link modes: -> 支持的通信方式 10000baseT/Full -> 10000M,双绞线(Tx),全双工(Full) Supported pause frame use: No Supports auto-negotiation: No Advertised link modes: Not reported Advertised pause frame use: No Advertised auto-negotiation: No -> 是否启用自动协商 Speed: 10000Mb/s -> 当前速度状态 Duplex: Full -> 当前双工状态 Port: Other PHYAD: 0 Transceiver: Unknown! Auto-negotiation: off Current message level: 0x00000007 (7) drv probe link Link detected: yes
2.2.1 VLAN
VLAN 的目的地就是为了在交换机上实现广播域的隔断。
不同 VLAN 进行通信 需要经过路由器 :
Figure 4: VLAN 之间通信需要通过路由器
3 网络层
3.1 IP 地址
3.1.1 特殊地址
3.1.1.1 0.0.0.0
3.1.1.2 255.255.255.255
同一网段内(同一广播域)的所有主机。
3.1.1.3 127.0.0.1 ~ 127.255.255.254
本地回环地址。
只要和本地回环地址在同一网段内的地址均能 ping 通:
root@ip-172-31-6-29:~# ip a show dev lo 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever root@ip-172-31-6-29:~# ip a add 1.2.3.4/16 dev lo -> 给 lo 添加地址 root@ip-172-31-6-29:~# ip a show dev lo 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet 1.2.3.4/16 scope global lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever root@ip-172-31-6-29:~# ping -c 1 1.2.5.6 PING 1.2.5.6 (1.2.5.6) 56(84) bytes of data. 64 bytes from 1.2.5.6: icmp_seq=1 ttl=64 time=0.045 ms -> 只要是在 1.2.0.0/16 网段内的都能 ping 通 --- 1.2.5.6 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.045/0.045/0.045/0.000 ms root@ip-172-31-6-29:~# ping -c 1 1.3.5.6 PING 1.3.5.6 (1.3.5.6) 56(84) bytes of data. --- 1.3.5.6 ping statistics --- 1 packets transmitted, 0 received, 100% packet loss, time 0ms -> 非 1.2.0.0/16 网段的地址不能 ping 通
3.1.1.4 224.0.0.0 ~ 239.255.255.255
组播地址, 224.0.0.1
特指所有主机, 224.0.0.2
特指所有路由器, 224.0.0.2
特指 OSPF 路由器。
这类地址多用于一些特定的设备和程序。
3.1.1.5 169.254.x.x
4
如果 Windows 主机使用 DHCP 自动分配 IP ,而又无法获得 IP ,系统会为主机设置这样的地址。
3.2 路由器
只要是涉及跨网段的通信,就需要用到路由器。 网关是路由器的一种, 主机和网关必须在一个网段内 。
路由器主要作用如下:
- 分隔广播域
- 选择路由表中到达目标最好的路径
- 维护和检查路由信息
- 连接广域网
3.2.1 路由分类
主机路由
例如:
ip route add 192.168.1.2/32 dev eth0
网络路由
例如:
ip route add 192.168.1.0/24 dev eth0
默认路由
例如:
ip route add default via 172.31.0.1 dev eth1
3.2.2 动态路由协议
RIP
通过计算路径上经过的路由器个数来决定使用哪条路由,是最简单的路由协议,用的不多。
OSPF
通过计算路径上经过的时间来决定使用哪条路由,多用于城际网络。
BGP
主要用于互联网。