Marnner Back-end Dev Engineer

互联网是如何工作的?

2017-09-21
Marnner

互联网是如何工作的?

介绍

本文是我看了国外博客翻译的一篇文章。英文好的同学建议去看原文。How Does the Internet Work?

互联网是如何工作的?这是一个好问题,互联网的增长已经变得爆炸式,似乎不可能逃避在电视上不断看到的,在广播上听到并在杂志上看到的www.com的轰炸。因为互联网已经成为我们生活的很大一部分,所以需要很好的理解来最有效地使用这个新工具

本白皮书解释了使互联网工作的基础架构和技术。它不深入,但覆盖了每个领域足够的基础了解所涉及的概念。

从哪里开始?Internet Addresses

因为互联网是全球计算机网络,每台连接到互联网的计算机必须具有唯一的地址。互联网地址的格式为nnn.nnn.nnn.nnn,其中nnn必须是0 - 255之间的数字。该地址称为IP地址。 (IP代表互联网协议;下文中会讲)

下图显示了连接到互联网的两台计算机;您的计算机IP地址为1.2.3.4,另一台计算机的IP地址为5.6.7.8。互联网被表示为中间的抽象对象。 (随着互联网的细节暴露,本文将进行图1的互联网部分的说明和重绘)。

enter description here 图1

Check It Out - The Ping Program (Ping 程序)

如果您通过Internet服务提供商(ISP)连接到Internet,则通常会在您的拨入会话期间分配一个临时IP地址。如果从局域网(LAN)连接到Internet,您的计算机可能具有永久IP地址,或者可能从DHCP(动态主机配置协议)服务器获取临时IP地址。无论如何,如果您连接到Internet,您的计算机将具有唯一的IP地址。

如果您使用的是Microsoft Windows或Unix的风格,并且连接到Internet,那么有一个方便的程序来查看互联网上的计算机是否还活着。它被称为ping,可能是由较旧的潜艇声纳系统发出的声音。1如果您使用Windows,请启动命令提示符窗口。

如果您使用Unix的风格,请访问命令提示符。键入ping www.yahoo.com。 ping程序将发送一个“ping”(实际上是ICMP(Internet控制消息协议)回应请求消息)到命名的计算机。平板电脑将回复回复。 ping程序将计算时间到期,直到回复(如果有)。此外,如果您输入域名(即www.yahoo.com)而不是IP地址,则ping将解析域名并显示计算机的IP地址。稍后再详细介绍域名和地址解析。

协议栈和数据包

因此,您的计算机已连接到Internet,并具有唯一的地址。如何与连接到互联网的其他计算机进行通话?一个例子应该在这里提供:假设你的IP地址是1.2.3.4,你想发送一个消息到计算机5.6.7.8。您要发送的消息是“Hello computer 5.6.7.8!”。显然,消息必须通过将计算机连接到互联网的任何种类的电线传输。

假设你已经从家里拨出了ISP,并且必须通过电话线传送信息。因此,消息必须从字母文本转换为电子信号,通过互联网传输,然后翻译成字母文本。这是如何实现的?通过使用协议栈。每台电脑都需要在互联网上进行通信,通常内置在计算机的操作系统(即Windows,Unix等)中。由于使用了两种主要的通信协议,Internet上使用的协议栈被称为TCP / IP协议栈。 TCP / IP堆栈如下所示:

协议层 注释
应用协议层 特定于WWW,电子邮件,FTP等应用程序的协议
传输控制协议层 TCP使用端口号将数据包指向计算机上的特定应用程序。
互联网协议层 IP使用IP地址将数据包引导到特定的计算机
硬件层 将二进制数据包转换为网络信号并返回。 (例如以太网网卡,电话线路调制解调器等)

如果我们按照路径从我们的计算机发送消息“Hello computer 5.6.7.8!”,到IP地址为5.6.7.8的计算机,会发生这样的事情:

  1. 消息将从计算机上的协议栈顶部开始,并向下运行。
  2. 如果要发送的消息很长,消息通过的每个堆叠层可能会将消息分解成更小的数据块。这是因为通过互联网发送的数据(和大多数计算机网络)都是以可管理的块发送的。在互联网上,这些数据块被称为数据包。
  3. 数据包将通过应用层并继续到TCP层。每个数据包都被分配一个端口号。稍后将解释端口,但足以说许多程序可能正在使用TCP / IP协议栈和发送消息。我们需要知道目标计算机上哪个程序需要接收消息,因为它将在特定端口上侦听。
  4. 经过TCP层后,数据包进入IP层。这是每个数据包接收目标地址为5.6.7.8的地方。
  5. 现在我们的消息包有一个端口号和一个IP地址,可以通过Internet发送。硬件层负责将包含我们消息的字母文本的数据包转换为电子信号,并通过电话线传输。
  6. 在电话线的另一端,您的Internet服务提供商(ISP)可以直接连接到互联网。 ISP路由器检查每个数据包中的目标地址,并确定发送到哪里。通常,数据包的下一个停止是另一个路由器。稍后更多路由器和互联网基础设施的介绍。 最终,数据包到达计算机5.6.7.8。这里,数据包从目标计算机的TCP / IP堆栈的底部开始,并向上工作。
  7. 最终,数据包到达计算机5.6.7.8。这里,数据包从目标计算机的TCP / IP堆栈的底部开始,并向上工作。
  8. 当数据包向上通过堆栈时,发送计算机的堆栈添加的所有路由数据(如IP地址和端口号)都从数据包中删除。
  9. 当数据到达堆栈的顶部时,数据包已经重新组装成其原始形式,“Hello computer 5.6.7.8!”

网络基础设施

那么现在你知道数据包从互联网上的一台电脑到另一台电脑。但是在这中间发生了?是什么实际上构成了互联网?我们来看另一个图:


Diagram 2

在这里我们看到图1重绘了并且有了更多的细节。通过电话网络到互联网服务提供商的物理连接可能很容易猜到,但超出这一点可能会需要解释

ISP为其拨入客户端维护一个调制解调器池。这通过某种形式的计算机(通常是专用的)来控制,该计算机控制从调制解调器池到骨干网或专用线路路由器的数据流。该设置可能被称为端口服务器,因为它“服务”访问网络。账单和使用信息通常也在这里收集。

在您的数据包穿过电话网络和ISP的本地设备后,它们将路由到ISP的主干网或ISP从其购买带宽的主干网。从这里,数据包通常将通过几个路由器,多个主干线,专线和其他网络,直到找到目的地,计算机的地址为5.6.7.8。但是如果我们知道我们的数据包在互联网上的确切路由,那不是很好吗?事实证明,有一种方法…

Check It Out - The Traceroute Program(路由跟踪程序)

如果您使用的是Microsoft Windows或Unix的风格,并且连接到互联网,这里有另一个方便的互联网程序称为traceroute,它显示了您的数据包到达给定Internet目的地的路径。像ping一样,您必须在命令提示符下使用traceroute。在Windows中,使用tracert www.yahoo.com。从Unix提示符下键入traceroute www.yahoo.com。像ping一样,您也可以输入IP地址而不是域名。 Traceroute将列出所有路由器,计算机和任何其他Internet实体,您的数据包必须通过它们到达目的地。下面是我在本机测试的三张图片。 enter description here

我们可以看到,本机的网关是10.154.0.1,路由跟踪www.baidu.com的时候 开始网关是10.154.0.1,访问www.yahoo.com,开始网关也是10.154.0.1,这是我们访问网路的入口 ,之后就不断路由不同的节点,最终到达目标IP,结果也一目了然。

如果您使用traceroute,您会注意到您的数据包必须经过许多事情才能到达目的地。大多数都有很长的名字,如sjc2-core1-h2-0-0.atlas.digex.net和fddi0-0.br4.SJC.globalcenter.net。这些是决定在哪里发送数据包的Internet路由器。图3中显示了几个路由器,但只有少数路由器。图3旨在显示一个简单的网络结构。互联网复杂得多。

互联网基础设施

互联网主干由许多彼此互连的大型网络组成。这些大型网络称为 Network Service Providers(网络服务提供商)或NSP。 一些大型NSP是UUNet,CerfNet,IBM,BBN Planet,SprintNet,PSINet以及其他。这些网络相互对等交换数据包流量。每个NSP都需要连接到三个Network Access Points(网络接入点)或NAP。在NAP中,数据包流量可能会从一个NSP的主干跳转到另一个NSP的主干网。 NSP还在Metropolitan Area Exchanges(大都会区交易所)或称为MAEs互连。民营企业与国家行动方案具有同等的目的,但属于私人所有。国家行动方案是原来的互联网互联点。 NAP和MAE都被称为互联网交换点或IX。 NSP还向较小的网络(如ISP和较小带宽提供商)销售带宽。以下是显示此层次结构的图片。

Diagram 5

这不是一个实际的互联网代表。图4只是为了演示NSP如何互相互连和较小的ISP互连。没有一个物理网络组件如图4所示,如图3所示。这是因为单个NSP的骨干基础架构本身就是一个复杂的绘图。大多数NSP在其网站上发布其网络基础设施的地图,可以轻松找到。绘制实际的互联网地图几乎是不可能的,因为它的大小,复杂性和不断变化的结构。

路由器是分组交换机。路由器通常连接在网络之间以在它们之间路由数据包。每个路由器都知道它的子网络和他们使用的IP地址。路由器通常不知道什么IP地址在它上面。检查下面的图5。连接主干的黑盒子是路由器。顶部较大的NSP骨干网是网络接入点。他们下面有几个子网,下面有更多的子网。底部是两个连接计算机的局域网。

当分组到达路由器时,路由器检查始发计算机上的IP协议层放置的IP地址。路由器检查它的路由表。如果找到包含IP地址的网络,则将该数据包发送到该网络。如果没有找到包含IP地址的网络,则路由器将路由器发送到默认路由,通常是骨干层次结构到下一个路由器。希望下一个路由器将知道在哪里发送数据包。如果没有,则再次将数据包向上路由到达NSP主干。连接到NSP主干的路由器拥有最大的路由表,并且这里的数据包将被路由到正确的主干,在那里它将通过较小的网络向下“开始”路由,直到找到目的地。

域名和地址解析

但是,如果您不知道要连接到的计算机的IP地址,该怎么办?如果您需要访问称为www.anothercomputer.com的Web服务器,该怎么办?您的网络浏览器如何知道这台电脑的互联网在哪里?所有这些问题的答案是域名服务或DNS。 DNS是一个分布式数据库,可以跟踪计算机的名称及其在Internet上的相应IP地址。

许多计算机连接到Internet主机部分的DNS数据库,以及允许其他人访问它的软件,这些电脑被称为DNS服务器。不是DNS服务器包含整个数据库;它们只包含它的一个子集。如果DNS服务器不包含其他计算机请求的域名,则DNS服务器将请求的计算机重新定向到另一个DNS服务器。


Diagram 6

域名服务被构造为类似于IP路由层次结构的层次结构。请求名称解析的计算机将重新定向到层次结构,直到找到可以在请求中解析域名的DNS服务器。图6示出了层次结构的一部分。在树的顶部是域根。一些较老的,更常见的领域在顶部附近被看到。没有显示的是世界各地的多个DNS服务器,构成层次结构的其余部分。

设置Internet连接(例如,Windows中的LAN或拨号网络)时,通常将一个主要DNS服务器和一个或多个辅助DNS服务器指定为安装的一部分。这样,任何需要域名解析的Internet应用程序都能正常运行。例如,当您在Web浏览器中输入Web地址时,浏览器首先连接到您的主DNS服务器。获取您输入的域名的IP地址后,浏览器将连接到目标计算机,并请求您想要的网页。

Check It Out - Disable DNS in Windows

如果您使用Windows 95 / NT并访问Internet,则可以查看DNS服务器,甚至禁用它们。

如果您使用拨号网络: 打开拨号网络窗口(可以在Windows资源管理器中的CD-ROM驱动器和网络邻居之上找到)。右键单击Internet连接,然后单击属性。在连接属性窗口的底部附近按TCP / IP设置…按钮。

如果您有永久连接到互联网: 右键单击网上邻居,然后单击属性。单击TCP / IP属性。选择顶部的DNS配置选项卡。

你现在应该看看你的DNS服务器的IP地址。在这里,您可以禁用DNS或将DNS服务器设置为0.0.0.0。 (首先记下你的DNS服务器的IP地址,你可能也需要重新启动Windows)。现在在你的网页浏览器中输入一个地址。浏览器将无法解析域名,您可能会收到一个令人讨厌的对话框,解释说找不到DNS服务器。但是,如果输入相应的IP地址而不是域名,则浏览器将能够检索所需的网页。 (使用ping获取禁用DNS之前的IP地址。)其他Microsoft操作系统类似。

重新审视互联网协议

正如在关于协议栈的一节中提到的,可以推测在互联网上使用许多协议。这是真的;互联网需要许多通信协议才能运行。这些包括TCP和IP协议,路由协议,媒体访问控制协议,应用级协议等。以下部分描述了Internet上更重要和常用的一些协议。首先讨论高级协议,然后讨论较低级别的协议。

应用协议:HTTP和(World Wide Web)万维网

互联网上最常用的服务之一是万维网(WWW)。使Web工作的应用协议是超文本传输​​协议或HTTP。不要将其与超文本标记语言(HTML)混淆。 HTML是用来编写网页的语言。 HTTP是Web浏览器和Web服务器用于通过Internet进行通信的协议。它是一种应用级协议,因为它位于协议栈中的TCP层之上,被特定应用程序用于彼此通信。在这种情况下,应用程序是Web浏览器和Web服务器。

HTTP是一种无连接文本协议。客户端(网络浏览器)向Web服务器发送网页,网页和图像等网页的请求。请求由服务器服务后,Internet上的客户端和服务器之间的连接断开连接。必须为每个请求新建一个连接。大多数协议是面向连接的。这意味着彼此通信的两台计算机可以通过互联网打开连接。但是HTTP不是。在可以由客户端进行HTTP请求之前,必须对服务器进行新的连接。

当您在网页浏览器中输入网址时,会发生什么:

1.如果URL包含域名,浏览器首先连接到域名服务器并检索Web服务器的相应IP地址。 2.Web浏览器连接到Web服务器,并为所需的网页发送HTTP请求(通过协议栈)。 3.Web服务器接收请求并检查所需的页面。如果页面存在,则Web服务器将发送该页面。如果服务器找不到请求的页面,它将发送HTTP 404错误 4.Web浏览器接收页面并关闭连接。 5.浏览器然后解析页面,并查找完成网页所需的其他页面元素。这些通常包括图像,小程序等 6.对于所需的每个元素,浏览器为每个元素向服务器添加连接和HTTP请求。 7.当浏览器完成加载所有图像时,小程序等页面将被完全加载到浏览器窗口中。

Check It Out - Use Your Telnet Client to Retrieve a Web Page Using HTTP(使用Telnet客户端使用HTTP检索网页)

Telnet是Internet上使用的远程终端服务。最近的用法已经有所下降,但这是一个非常有用的学习互联网的工具。在Windows中找到默认telnet程序。它可能位于名为telnet.exe的Windows目录中。打开后,拉下终端菜单并选择首选项。在首选项窗口中,选中本地回显。 (这是您可以在键入时看到您的HTTP请求。)现在下拉连接菜单并选择远程系统。输入www.google.com为主机名,80为端口。 (默认情况下,Web服务器通常会侦听端口80)按连接。现在输入

GET / HTTP/1.0

并按Enter键两次。这是一个简单的HTTP请求到Web服务器的根页面。您应该看到一个网页闪烁,然后弹出一个对话框来告诉您连接丢失。如果要保存检索到的页面,请打开Telnet程序的日志记录。然后,您可以浏览网页并查看用于写入的HTML。

大多数互联网协议由被称为“请求注释”或“RFC”的Internet文档指定。可以在因特网上的几个位置找到RFC。请参阅下面的参考资料部分适当的URL。 HTTP版本1.0由RFC 1945指定。

应用协议:SMTP和电子邮件

另一个常用的互联网服务是电子邮件。电子邮件使用称为简单邮件传输协议或SMTP的应用程序级协议。 SMTP也是基于文本的协议,但与HTTP不同,SMTP是面向连接的。 SMTP也比HTTP复杂得多。在SMTP中有比HTTP中更多的命令和注意事项。

当您打开邮件客户端阅读您的电子邮件时,通常会发生这种情况:

1.邮件客户端(Netscape Mail,Lotus Notes,Microsoft Outlook等)打开与其默认邮件服务器的连接。通常在安装邮件客户端时设置邮件服务器的IP地址或域名。 2.邮件服务器将始终发送第一条消息以识别自身。 3.客户端将发送SMTP HELO命令,服务器将通过250 OK消息进行响应。 4.根据客户端是否正在检查邮件,发送邮件等,相应的SMTP命令将被发送到服务器,这将相应地进行响应。 5.此请求/响应事务将继续,直到客户端发送SMTP QUIT命令。然后服务器会说再见,连接将关闭。

SMTP客户端和SMTP服务器之间的简单“对话”如下所示。 R:表示由服务器(接收者)发送的消息,S:表示客户端(发送方)发送的消息。

This SMTP example shows mail sent by Smith at host USC-ISIF, to Jones, Green, and Brown at host BBN-UNIX. Here we assume that host USC-ISIF contacts host BBN-UNIX directly. The mail is accepted for Jones and Brown. Green does not have a mailbox at host BBN-UNIX.


         R: 220 BBN-UNIX.ARPA Simple Mail Transfer Service Ready
         S: HELO USC-ISIF.ARPA
         R: 250 BBN-UNIX.ARPA

         S: MAIL FROM:<Smith@USC-ISIF.ARPA>
         R: 250 OK

         S: RCPT TO:<Jones@BBN-UNIX.ARPA>
         R: 250 OK

         S: RCPT TO:<Green@BBN-UNIX.ARPA>
         R: 550 No such user here

         S: RCPT TO:<Brown@BBN-UNIX.ARPA>
         R: 250 OK

         S: DATA
         R: 354 Start mail input; end with <CRLF>.<CRLF>
         S: Blah blah blah...
         S: ...etc. etc. etc.
         S: .
         R: 250 OK

         S: QUIT
         R: 221 BBN-UNIX.ARPA Service closing transmission channel

此SMTP事务取自指定SMTP的RFC 821。

传输控制协议 Transmission Control Protocol

在应用层下的协议栈是TCP层。当应用程序打开与Internet上的另一台计算机的连接时,他们发送的消息(使用特定的应用层协议)将堆栈传递到TCP层。 TCP负责将应用程序协议路由到目标计算机上的正确应用程序。为此,使用端口号。端口可以​​被认为是每台计算机上的独立通道。例如,您可以在阅读电子邮件时上网。这是因为这两个应用程序(Web浏览器和邮件客户端)使用不同的端口号。当一个数据包到达计算机并使协议栈出现时,TCP层根据一个端口号决定哪个应用接收数据包。

TCP工作原理如下:

  • 当TCP层从上面接收到应用层协议数据时,将其分段为可管理的“块”,然后向每个“块”添加具有特定TCP信息的TCP报头。包含在TCP报头中的信息包括需要发送数据的应用程序的端口号。

  • 当TCP层从其下面的IP层接收到一个数据包时,TCP层从数据包中剥离TCP头数据,如有必要,进行一些数据重建,然后使用从TCP获取的端口号将数据发送到正确的应用程序头。

这是TCP如何将通过协议栈移动的数据路由到正确的应用程序。

TCP不是文本协议。 TCP是面向连接,可靠的字节流服务。面向连接意味着使用TCP的两个应用程序必须首先在交换数据之前建立连接。 TCP是可靠的,因为对于接收的每个分组,向发送方发送确认以确认传送。 TCP还包括一个校验和,用于对接收到的数据进行错误检查。 TCP头文件如下所示:

[]()

Diagram 7

请注意,TCP头中没有IP地址。这是因为TCP不知道有关IP地址的任何内容。 TCP的工作是将应用程序级数据从应用程序到应用程序可靠地获取。从计算机到计算机获取数据的任务是IP的工作。

Check It Out - Well Known Internet Port Numbers

下面列出了一些更常用的互联网服务的端口号。


FTP	20/21
Telnet	23
SMTP	25
HTTP	80
Quake III Arena	27960

互联网协议(Internet Protocol)

与TCP不同,IP是不可靠的无连接协议。 IP不关心数据包是否到达目的地。 IP也不知道连接和端口号。 IP的工作也是发送和路由数据包到其他计算机。 IP数据包是独立的实体,可能无法到达或完全不正确。 TCP的工作是确保数据包到达并且顺序正确。关于IP与TCP共有的唯一的事情是它接收数据的方式,并将自己的IP头信息添加到TCP数据。 IP头像如下所示:

[](!)

Diagram 8

以上我们看到IP头中发送和接收计算机的IP地址。下面是通过应用层,TCP层和IP层之后的数据包的外观。应用层数据在TCP层中分段,添加TCP报头,数据包继续到IP层,添加IP报头,然后通过Internet传输报文。

Diagram 9

总结

现在你知道互联网的运作方式。但是这样做会持续多久?互联网上当前使用的IP版本(版本4)仅允许232个地址。最终不会有任何免费的IP地址。惊讶吗?别担心IP版本6正在由研究机构和公司联盟在研究骨干上进行测试。在那之后?谁知道。互联网自成立以来,作为国防部的研究项目已经走了很长的路。没有人真的知道互联网会变成什么。有一件事是肯定的。互联网将不会像其他机制一样团结世界。信息时代正在大步迈进,我很高兴成为其中的一部分。 Rus Shuler,1998 2002年更新


上一篇 hello jekyll!

Comments

Content