网络基础知识
{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
主要用于互联网。