我不太明白互联网是如何利用 IP 地址工作的。
例如,我家里有一个路由器。通过这个路由器,我得到了一个局域网。此外,我还可以连接互联网。我的问题是:这里的互联网到底是什么。
在我看来,还有另一个更高级别的路由器,它来自某个提供互联网服务的公司,为我的路由器分配 IP 地址。从更高级别的路由器的角度来看,所有路由器(例如我的路由器)形成了一个更大的“局域网”。
如果是这样,我不知道服务器是如何工作的。例如,每个人都可以登录谷歌的服务器,因为我们知道它的 IP 地址。但是谁把这个 IP 地址给谷歌的?路由器?如果有路由器这样做,我们怎么能识别它呢?
例如,公司 A 的路由器将 IP 地址提供给谷歌,而我正在使用公司 B 的路由器上网。在这种情况下,似乎有两个局域网:我的局域网和谷歌的局域网。两个不同局域网中的两台机器如何通信?
答案1
让我们通过一个现实生活中的例子来简单解释一下:
(Everything in this example is based on IPv4)
任何人都可以在家里、办公室、公司等处创建 LAN。该 LAN 必须使用私有 IP 地址,定义在RFC1918.这样就避免了世界各地使用相同 IP 地址可能产生的冲突。
您的专用局域网可以连接到民众通过路由器上网。路由器通常有一个私人的连接到 LAN 的 IP 和民众连接到本地 ISP.路由器使用翻译服务调用NAT让你的私人的IP 连接到民众互联网。
本地 ISP 使用一系列民众由称为区域互联网注册机构。艾林美国、加拿大、加勒比地区的几个部分和南极洲。成熟欧洲、俄罗斯、中东、中亚等地区。
这本地 ISP使用其公共 IP 地址范围将其分配给其客户的路由器,并用于与其他 ISP 进行互连,这些 ISP 通常是与国际 ISP 相连的大型 ISP。互连由以下机构管理:路由协议计算最快的路由器与其他路由器之间的路径。
每个 ISP 必须拥有两个或更多 DNS 服务器,用于存储关系
IP address - domain name
,供任何人查阅。这些 DNS 服务器会更新其信息从 和 到其他高层次 DNS 服务器,因此更改可以复制到世界上的每个 DNS 服务器。什么时候你从你的局域网想要连接到http://www.google.com,您的 PC/平板电脑/手机/向 DNS 服务器请求与该名称对应的 IP 地址(在本例中216.58.210.164)然后您的 Web 浏览器向该 IP 地址发送请求,您的本地路由器执行NAT翻译,将请求包发送到 ISP 路由器,它将其发送到更高级别的 ISP 路由器,依此类推,直到包到达谷歌通过最快或最短路径(路由协议)。
Google 回答将页面(HTML+CSS+图片+cookies)发送到您的路由器(再次,数据包将通过最快/最短的路径),您的路由器则进行相反的操作NAT翻译并将其放在局域网上,然后发送到您的电脑/平板电脑/手机。
显然,发生了很多技术性和更复杂的事情,但这只是一个基本的解释。
由于 IP 是无连接协议,因此从你的路由器到谷歌可能不同于谷歌到你的路由器,这取决于路由协议这就是 IP/互联网的魅力所在。如果在文件传输过程中某个中间路由器发生故障,流量将使用另一个路由器重新路由,而最终用户不会注意到这一点。
如果你在 Windows 上打开命令然后写入ipconfig /all
,你就会看到你的 IP,私人的路由器的 IP、DNS 服务器您正在使用和其他信息。
另外,从那里写入tracert www.google.com
,您可以看到来自您的 PC 的请求包如何从一个路由器传输到另一个路由器,从一个 ISP 跳到另一个 ISP,直到到达谷歌。
由于全球互联网上服务器和服务的大规模扩张,IPv4 地址已耗尽。ISP 必须实施 IPv6,因为它解决了该问题并消除了对NAT翻译,使得局域网使用公共地址。
答案2
两个不同局域网中的两台机器如何通信?
恕我直言,如果您首先忘记例外情况,那么理解一般规则会更容易。
首先,想象一下数百个封闭的局域网,比如你家里的路由器创建的局域网,就像一个事后想法,由于 IPv4 地址短缺,其才得以普及。
在更高层次上,除了家用路由器之外,“LAN”和“WAN”之间没有如此严格的区分。相反,将互联网视为一个单一的全球网络,可能有点像电话或邮政网络。ISP 有几层“层级”,但如果你沿着层次结构走得足够高,你就不会发现单一中央枢纽以 ISP 为辐条;相反,你会发现网互连网络,如下图所示。
如果你的 ISP 规模足够大,那么它可能会有多条链路连接到更高级别的网络,以及直接路由到同一区域内的其他 ISP;它们都使用BGP 协议交换有关可通过哪个 ISP 访问的信息。因此,如果较短的路径因某种原因中断,则所有内容都将通过较长的路径进行。(这似乎现在就发生在我的 ISP 和维基百科之间。Grmh。)
事实上,谷歌或 Netflix 等一些企业本身规模足够大,甚至可以与一级网络建立多个链接,这几乎抛弃了任何剩余的层次结构。
但是谁把这个IP地址给Google呢?
IP 地址本身是按层次结构分配,首先是互联网号码分配机构分配较大的地址范围区域注册中心而这些注册机构又向互联网服务提供商和其他企业提供较小的范围。
但这些任务只是允许使用地址;他们有不与实际路由器的配置方式无关。相反,每个网络的运营商将直接配置自己的路由器以使用他们自己的地址范围。
(通常是服务器他们自己将在每台服务器上手动设置地址,以确保可靠性。但这不是必需的——我见过一些地方的服务器使用 DHCP 从路由器获取地址,就像个人电脑一样。)
简而言之,IANA 授权 Google 使用该地址,而全球其他 ISP 则确保该地址路由至 Google 的网络。其余则由 Google 的网络运营商决定。
因此,考虑到上述情况,你的家用路由器和 Google 的网络服务器几乎互联网的平等成员. 每个都有一个全局 IP 地址,可以通过路由表从网络上的任何其他地方访问该地址。
您的计算机有一个非常简单的路由表,它只是表明同一子网之外的所有内容都可以通过“默认网关”(您的路由器)到达。
类似地,您的家用路由器只是表示“LAN”IP 地址可直接通过 LAN 端口访问,其他所有内容都必须发送到您的 ISP 的路由器。
我们公司有 5 个这样的路由器,每栋楼各一个。因此,除了基本的“同一子网”和“其他所有”路由器外,它们的路由表还具有通往其他每栋楼路由器的直接路径。
ISP 会有几个路由器,其中一些路由器有通往客户的路由,一些路由器知道通往其他 ISP 的链接。例如,“外部”路由器可能有这样的信息:
- 36.56.xx 可以通过 ISP 自己的“客户”路由器访问;
- 212.xxx可以通过NORDUnet的109.105.98.126路由器访问;
- 212.162.xx 可以还可以通过 GÉANT 的 62.40.98.13 路由器访问;
- (等等)
- 最后一切都可以通过Level3实现。
而“客户”路由器可以说:
- 36.56.1.1可以通过端口#3到达;
- 可以通过端口#4 访问 36.56.1.2;
- (等等)
每当您的计算机向 Google 发送数据包,或反之,每个路由器都会检查其可以到达的位置,并将数据包转发给下一个路由器。您甚至可以通过在终端上使用TRACERT
或命令来查看完整路径。traceroute
这些就是基础知识。
是的,你的家用路由器还需要额外的技巧——网络地址转换(NAT),以确保你的整个家庭网络可以隐藏在一个 IP 地址后面。这是相当普及:只有像麻省理工学院这样的老牌机构才有足够的 IPv4 地址给每个人。几乎所有其他网络都必须使用 NAT。(我的工作场所拥有 64 个地址块,但有几百个工作站和学生在手机上使用 WiFi,因此他们中的大多数人也位于 NAT 之后。
但是,无论 NAT 有多普及,它仍然是一个例外,是一种让旧事物继续运转的手段(直到 IPv6 在 2100 年代变得更加普及)。大多数服务器都有自己的全球 IP 地址,您可以直接访问它们;您不需要任何魔法就可以访问 Google 的网络。
事实上,如果你必须联系某人是如果您的计算机处于 NAT 后面,情况就会变得非常烦人 —— 很多游戏会因此要求您配置“端口转发”,而点对点程序则必须采用各种“打洞”技巧才能穿过 NAT 进入 LAN 内部。
随着 ISP 开始使用“运营商级 NAT”,情况将变得更糟,
此外,大型 ISP 有时会有更复杂的内部结构,例如策略路由或 MPLS,此时基于路由的转发变得也速度很慢,但这些只是在基本 IP 之上添加的,应该单独研究——我实际上还没有工作在 ISP 处。