交换机:
交换机只关心mac地址,不关心ip地址,属于数据链路层(二层设备)
- 源mac与接受端口绑定 ->记录到 mac地址表
- 找到发出端口 (1)找到关联端口直接发送 (2)找不到关联端口,则在发送给所有端口(除了发送者)泛洪,如果接受电脑mac是目标mac,则他就能接受到。
- 已经一段时间的收集,mac地址表就会收集所有关联的mac与端口信息。
ARP协议
- 计算机A 广播 ARP报文,问一下当前网络下 192.168.1.10 的mac地址是多少,在子网内的所有电脑都会受到,并且只有对应的电脑会把自己的mac返回给 计算机A
- 计算机A 缓存计算机B的 mac地址到本地,发送内容 (mac+ip+消息内容)给交换机。
- 交换机 根据mac去找对应的 (mac&端口)的mac地址表。 找到对应端口
- 直接给端口的服务器发送消息
- 这时计算机B接受到消息
路由器:
- lan口 和 wan口 (用于通过运营商连接互联网),如何忽略wan口,路由器等价于 交互机。
- wan口 网关概念,子网划分
- 路由器通过 DHCP ,可以动态给电脑分配IP。
子网
- 子网掩码 255.255.255.0 求与,如 192.168.1.10 求与 == 192.168.1.1
- 只有两台电脑的 ip & 子网掩码 结果相同 才算在同一个子网
- 在TCP/IP中 只有子网相同才能通讯.
网关
网关是可以把 不同子网映,通过网关代理实现。 子网(1)192.168.1.1 子网(2)192.168.2.1 通过 路由网关 把子网(1)电脑的信息,通过网关代理转发给子网(2)的电脑
路由例子:
子网1的计算机A 发送消息 给 子网2的计算机B
- 计算机A 跟 计算机B 是否在同一个子网,是的话直接发送.
- 如果目标不是在同一个子网,则把目标mac改成 网关的mac地址,也就是路由的网关,发送给网关。
- 路由网关通过路由表查询到计算机B在子网2,把目标mac地址修改为计算机B,修改源mac为自己路由的mac
- 然后路由网关就在子网2把消息发送计算机B
SNAT
用于内部共享IP访问外部
-
原理:修改数据包中的源IP地址
-
作用:可以实现局域网共享上网
-
以上传输带来一个问题,服务端返回无法确认是那个台电脑发出,所以需要在传输层加入一些标识
-
如:在tcp中加入 端口来区分。
类似的 UDP 也是使用ip+端口,ICMP 使用 IP + type + code
DNAT
内部服务对外发布
- 原理:修改数据包中的目标IP地址
- 作用:将位于企业局域网中的服务器进行发布
- 公网返回的数据不能直接到达内网计算机,需要路由向内网转发请求
如: 本地有一台服务器192.168.1.10:80 的web服务。 在路由器配置 DNAT 8080 -> 192.168.1.10:80 那么互联网服务器返回给 路由 8080时候,会转发到 192.168.1.10:80 这台服务器上。
关键词
- 网关:实现不同子网通讯,是一种概念。
- 数据包 :包含 源mac| 目标mac
- 路由器: 路由器集成了网关的功能
- SNAT : SOURCE Network Address Translation
- DNAT : Destination Network Address Translation目的地址转换
计算机 mac 和 ip 为标识 (mac是全球唯一)