我正在尝试弄清楚数据包在网络上的工作原理,以便更好地理解网络。到目前为止,我已经阅读了一些介绍。
我想了解数据包通过路由器时会发生什么。在转发到下一跳之前,源主机是否会更改为路由器 IP?数据包中还有其他变化吗?
答案1
默认情况下,IP 源从源到目标保持不变。否则,目标现在知道如何(在哪里)回复。
“一个数据包”信息由几层协议组成。
路由器的典型工作如下(按以下顺序):
- 剥离“数据包”的外部物理层和链路层
- 检查网络层信息
- 确定哪个 NIF 与“数据包”的 IP 地址相关联
- 修改(或重新应用)链路和物理层信息,使其适合下一跳
- 将数据包转发。
答案2
路由器向前子网之间的数据包。
转发意味着从一个接口接受数据包,并从另一个接口发送相同的数据包。两个接口必须位于不同的子网内。推论:路由器按定义有两个网络接口。
在普通情况下,数据包中没有任何变化,只是 TTL(ipv4)或跳数限制(ipv6)减少,如果为 0,路由器会丢弃该数据包。
显然,路由器非常适合用作数据包过滤器、防火墙等来修改传出或传入的流量,但这些功能本身并不是转发/路由。
源 IP 不会改变,除非网络地址解读正在使用,大多数消费者和许多商业网络路由器都是这种情况。使用 NAT,源 IP 将成为路由器的 IP,路由器需要记住从该数据包的目标地址返回的任何内容实际上都是针对发送该数据包的原始系统的。
答案3
一般情况下,源 IP 地址不会改变,只有数据链路层地址会改变(例如源 MAC 地址)。但是,在某些情况下,源 IP 地址会“改变”,这些情况包括:
- NAT
- IPsec VPN
- 隧道协议喜欢研究生入学考试 (GRE)
- IPv4到IPv6桥接
在上述所有情况下,IP 地址(源、目标或两者)都会发生物理改变,但路由器会跟踪连接,并在流量返回流量源时将更改前的 IP 地址改回。