Kor*_*tak 85 router tcp forwarding local packet
如果多台具有本地地址(192.168.0.#)的计算机连接到一个路由器,每台计算机打开一个网络浏览器并通过HTTP请求一个页面,当这些TCP:80数据包发出时,路由器将本地地址与路由器的静态 IP(即提供商给定的 IP),以便服务器可以回复适当的地址。
但是路由器如何知道将 HTTP 回复转发到哪台计算机,因为 TCP 标头不包含本地 IP 地址(是吗?),并且所有计算机都使用端口 80?
这与MAC地址有什么关系吗?
这是如何工作的?
Pau*_*aul 98
大多数家用路由器使用称为 PAT 的 NAT 特例。
您还将看到它被称为 NAPT,或 IP 伪装。后三个术语在一般使用中的含义相同。(首字母缩写词——网络地址转换/端口地址转换/网络地址端口转换)
当数据包从您的内部机器发出时,源地址会如您所知被重写。源端口也被改变,通常是一个较大的数字,并且路由器保留一个地址转换表。
例如,假设您有一台访问 www.google.com 的客户端计算机。您的计算机(例如 192.168.1.100)查找该地址并使用随机源端口从您的内部 IP 地址在端口 80 上建立到 72.14.204.147 的 TCP 连接。
对于您的计算机,连接如下所示:
192.168.1.100:37641 <--> 72.14.204.147:80
Run Code Online (Sandbox Code Playgroud)
您的计算机将数据包发送到路由器,路由器会选择一个新的随机高端口并重写数据包。每个出站连接在路由器上都有自己的端口。然后,路由器将数据包添加到其连接表后,将数据包转发到您的 ISP:
PrivateIP PrivatePort PublicIP PublicPort Remote RemotePort
------------- ---------- ----------- ----------- ---------- -----------
192.168.1.100 37641 *10.6.23.5 59273 72.14.204.147 80
Run Code Online (Sandbox Code Playgroud)
*出于示例目的,我使用了以 10 开头的地址,但这些地址不可公开路由。该表也有些过于简化。
对于谷歌,连接如下所示:
10.6.23.5:59273 <--> 72.14.204.147:80
Run Code Online (Sandbox Code Playgroud)
Google 会将其响应发送到端口 59273 上的 10.6.23.5。然后您的路由器在表中查找该信息并将数据包转发到 192.168.1.100:37641。
| 归档时间: |
|
| 查看次数: |
46662 次 |
| 最近记录: |