1、互联网是怎样运作的?

介绍

互联网如何运作?好问题!互联网的发展已成为爆炸性的增长,似乎无法摆脱对www.com的轰炸,这种轰炸在电视,广播和杂志中屡见不鲜。由于互联网已成为我们生活中的很大一部分,因此需要充分了解才能最有效地使用此新工具。
本白皮书介绍了使Internet正常运行的基础结构和技术。它并没有深入,但涵盖了每个领域的足够部分,可以使您对所涉及的概念有基本的了解。对于任何未解决的问题,本文末尾提供了资源列表。鼓励提出任何意见,建议,问题等,并直接通过rshuler@gobcg.com与作者联系。

从哪里开始?互联网地址

因为Internet是计算机的全球网络,所以连接到Internet的每台计算机都 必须具有唯一的地址。Internet地址的格式为 nnn.nnn.nnn.nnn,其中nnn必须是0到255之间的数字。此地址称为IP地址。(IP代表Internet协议;稍后将详细介绍。)
下图说明了连接到Internet的两台计算机;您的IP地址为1.2.3.4的计算机和另一台IP地址为5.6.7.8的计算机。互联网被表示为它们之间的抽象对象。(随着本文的进展,将对图1的Internet部分进行解释,并随着Internet细节的公开多次重绘。)

如果您通过Internet服务提供商(ISP)连接到Internet,通常会在拨入会话期间为您分配一个临时IP地址。如果您从局域网(LAN)连接到Internet,则您的计算机可能具有一个永久IP地址,或者可能从DHCP(动态主机配置协议)服务器获得一个临时IP地址。无论如何,如果您已连接到Internet,则您的计算机将具有唯一的IP地址。
签出-Ping程序
如果您使用的是Microsoft Windows或Unix之类的设备,并且可以连接到Internet,则可以使用一个便捷的程序来查看Internet上的计算机是否仍在运行。叫做ping,可能是在较旧的海底声纳系统发出声音之后发出的。1如果您使用的是Windows,请启动命令提示符窗口。如果您使用的是Unix,请转到命令提示符。键入ping www.yahoo.com。ping程序将向指定的计算机发送“ ping”(实际上是ICMP(Internet控制消息协议)回显请求消息)。被查验的计算机将回复并回复。ping程序将计算过期时间,直到回复返回为止(如果确实如此)。另外,如果输入域名(即www.yahoo.com)而不是IP地址,则ping将解析该域名并显示计算机的IP地址。稍后将提供有关域名和地址解析的更多信息。

协议栈和数据包

因此,您的计算机已连接到Internet,并且具有唯一的地址。它如何与连接到Internet的其他计算机“对话”?这里应提供一个示例:假设您的IP地址为1.2.3.4,并且您想向计算机5.6.7.8发送消息。您要发送的消息是“ Hello computer 5.6.7.8!”。显然,该消息必须通过将计算机连接到Internet的任何类型的导线进行传输。假设您已经从家里拨入ISP,并且该消息必须通过电话线传输。因此,必须将消息从字母文本转换为电子信号,再通过Internet传输,然后再转换回字母文本。 这是如何完成的?通过使用协议栈。每台计算机都需要一台计算机才能在Internet上进行通信,并且通常内置于计算机的操作系统(即Windows,Unix等)中。由于使用了两种主要的通信协议,因此Internet上使用的协议栈称为TCP / IP协议栈。TCP / IP堆栈如下所示:

协议层 注释

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

如果我们遵循的路径是消息“ Hello computer 5.6.7.8!”。从我们的计算机转到IP地址为5.6.7.8的计算机,则会发生以下情况:

该消息将从您计算机上协议栈的顶部开始,然后一直向下运行。
如果要发送的消息很长,则消息经过的每个堆栈层都可能会将消息分解为较小的数据块。这是因为通过Internet(和大多数计算机网络)发送的数据是以可管理的块形式发送的。在Internet上,这些数据块称为包。
数据包将通过应用程序层并继续到TCP层。每个数据包都分配有一个端口号。端口将在后面解释,但足以说明许多程序可能正在使用TCP / IP堆栈并发送消息。我们需要知道目标计算机上的哪个程序需要接收消息,因为它将在特定端口上进行侦听。
数据包经过TCP层后,将进入IP层。这是每个数据包接收其目的地地址5.6.7.8的地方。
现在,我们的消息包具有端口号和IP地址,可以随时通过Internet发送。硬件层负责将包含消息的字母文本的数据包转换为电子信号,并通过电话线进行传输。
在电话线的另一端,您的ISP可以直接连接到Internet。ISP路由器检查每个数据包中的目标地址,并确定将其发送到何处。通常,数据包的下一站是另一个路由器。稍后将详细介绍路由器和Internet基础结构。
最终,数据包到达计算机5.6.7.8。在这里,数据包从目标计算机的TCP / IP堆栈的底部开始,然后向上工作。
当数据包向上通过堆栈时,发送计算机的堆栈添加的所有路由数据(例如IP地址和端口号)都将从数据包中剥离。
当数据到达堆栈的顶部时,数据包已重新组合成其原始形式“ Hello computer 5.6.7.8!”。

网络基础架构

因此,现在您知道了数据包如何通过Internet从一台计算机传输到另一台计算机。但是两者之间是什么?互联网实际上由什么组成?让我们看另一张图:

在这里,我们看到了图1重绘的更多细节。通过电话网络到Internet服务提供商的物理连接可能很容易猜到,但是除此之外,还可能需要一些解释。
ISP为他们的拨入客户维护一个调制解调器池。这由某种形式的计算机(通常是专用计算机)管理,该计算机控制从调制解调器池到骨干网或专用线路路由器的数据流。此设置可以称为端口服务器,因为它“提供”对网络的访问。通常也会在这里收集帐单和使用情况信息。

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

签出-Traceroute程序
如果您使用的是Microsoft Windows或Unix,并且可以连接到Internet,则这是另一个方便的Internet程序。这称为 traceroute,它显示您的数据包采用的路径到给定的Internet目的地。像ping一样,您必须在命令提示符下使用traceroute。在Windows中,使用tracert www.yahoo.com。在Unix提示符下,键入traceroute www.yahoo.com。像ping一样,您也可以输入IP地址而不是域名。Traceroute将打印出您的数据包必须经过的所有路由器,计算机和任何其他Internet实体的列表。

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

互联网基础设施

Internet骨干网由许多相互连接的大型网络组成。这些大型网络被称为网络服务提供商或NSP。一些大型NSP是UUNet,CerfNet,IBM,BBN Planet,SprintNet,PSINet等。这些网络同行互相交换的数据包流量。每个NSP都必须连接到三个 网络访问点或NAP。在NAP处,数据包流量可能会从一个NSP的主干跳到另一个NSP的主干。NSP也可以在大都会交易所或MAE互连s。MAE具有与NAP相同的目的,但它们是私人拥有的。NAP是最初的Internet互连点。NAP和MAE都称为Internet交换点或IX。NSP还将带宽出售给较小的网络,例如ISP和较小的带宽提供商。下图显示了此分层基础结构。

这不是Internet实际部分的真实表示。图4仅用于演示NSP如何与彼此和较小的ISP互连。图4中没有像图3中那样显示任何物理网络组件。这是因为单个NSP的主干基础结构本身就是一个复杂的图。大多数NSP在其网站上发布其网络基础结构的地图,并且很容易找到。由于互联网的规模,复杂性和不断变化的结构,几乎不可能绘制互联网的实际地图。

Internet路由层次结构

那么数据包如何在Internet上找到自己的方式呢?是否每台连接到Internet的计算机都知道其他计算机在哪里?数据包是否会简单地“广播”到Internet上的每台计算机?前面两个问题的答案都是“否”。没有计算机知道其他任何计算机在哪里,并且不会将数据包发送到每台计算机。用于将数据包发送到目的地的信息包含在每个连接到Internet的路由器保存的路由表中。
路由器是分组交换机。路由器通常连接在网络之间,以在它们之间路由数据包。每个路由器都知道其子网以及它们使用的IP地址。路由器通常不知道“在”其上方的IP地址。检查下面的图5。连接骨干网的黑匣子是路由器。顶部的较大NSP骨干网在NAP处连接。在它们下面是几个子网,在它们下面是更多的子网。底部是两个装有计算机的局域网。

图5
图5

当数据包到达路由器时,路由器将检查原始计算机上IP协议层所放置的IP地址。路由器检查其路由表。如果找到包含IP地址的网络,则将数据包发送到该网络。如果找不到包含IP地址的网络,则路由器会通过默认路由(通常沿主干层次向上到下一个路由器)发送数据包。希望下一台路由器知道将数据包发送到哪里。如果没有,则再次将数据包向上路由,直到到达NSP骨干网为止。连接到NSP骨干网的路由器拥有最大的路由表,此处数据包将被路由到正确的骨干网,从那里​​开始其“下行”旅程

域名和地址解析

但是,如果您不知道要连接的计算机的IP地址怎么办?如果您需要访问称为www.anothercomputer.com的Web服务器怎么办?您的Web浏览器如何知道这台计算机在Internet上的位置?所有这些问题的答案是域名服务或 DNS。DNS是一个分布式数据库,可跟踪Internet上计算机的名称及其对应的IP地址。
连接到Internet的许多计算机托管DNS数据库的一部分,该软件允许他人访问它。这些计算机称为DNS服务器。没有DNS服务器包含整个数据库。它们仅包含其中的一个子集。如果DNS服务器不包含另一台计算机请求的域名,则DNS服务器会将发出请求的计算机重定向到另一台DNS服务器。

域名服务的结构类似于IP路由层次结构。请求名称解析的计算机将在层次结构中“向上”重定向,直到找到可以解析请求中域名的DNS服务器。图6说明了层次结构的一部分。树的顶部是域根。在顶部附近可以看到一些较旧的,更常见的域。未显示的是构成其余层次结构的世界各地的众多DNS服务器。
设置Internet连接时(例如,用于LAN或Windows中的拨号网络),通常将一台主DNS服务器和一台或多台辅助DNS服务器指定为安装的一部分。这样,任何需要域名解析的Internet应用程序都将能够正常运行。例如,当您在网络浏览器中输入网址时,浏览器首先连接到您的主DNS服务器。获取您输入的域名的IP地址后,浏览器将连接到目标计算机并请求您想要的网页。

签出-在Windows中禁用DNS

如果您使用Windows 95 / NT并访问Internet,则可以查看DNS服务器,甚至禁用它们。
如果您使用拨号网络:
打开“拨号网络”窗口(可以在Windows资源管理器中的CD-ROM驱动器下和“网上邻居”上方找到)。右键单击您的Internet连接,然后单击“属性”。在“连接属性”窗口底部附近,按“ TCP / IP设置…”按钮。

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

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

再谈互联网协议

如本节前面有关协议栈的暗示,人们可能会推测Internet上使用了许多协议。这是真的; Internet运作需要许多通信协议。这些协议包括TCP和IP协议,路由协议,媒体访问控制协议,应用程序级别协议等。以下各节描述了Internet上一些更重要且常用的协议。首先讨论较高级别的协议,然后讨论较低级别的协议。

应用协议:HTTP和万维网

互联网(WWW)是Internet上最常用的服务之一。使网络工作的应用程序协议是超文本传输​​协议或HTTP。不要将此与超文本标记语言(HTML)混淆。HTML是用于编写网页的语言。HTTP是Web浏览器和Web服务器用于通过Internet相互通信的协议。它是一种应用程序级别的协议,因为它位于协议栈中TCP层的顶部,并且被特定的应用程序用来相互通信。在这种情况下,应用程序是Web浏览器和Web服务器。
HTTP是一种无连接的基于文本的协议。客户端(Web浏览器)将Web元素(例如网页和图像)的请求发送到Web服务器。服务器为请求提供服务后,Internet上客户端与服务器之间的连接将断开。必须为每个请求建立一个新的连接。大多数协议都是面向连接的。这意味着两台相互通信的计算机将保持Internet上的连接打开状态。但是,HTTP没有。在客户端可以发出HTTP请求之前,必须与服务器建立新连接。

当您在Web浏览器中键入URL时,将发生以下情况:

如果URL包含域名,则浏览器首先连接到域名服务器,然后检索Web服务器的相应IP地址。
Web浏览器连接到Web服务器,并通过所需的网页发送HTTP请求(通过协议栈)。
Web服务器接收请求并检查所需的页面。如果该页面存在,则Web服务器将其发送。如果服务器找不到请求的页面,它将发送HTTP 404错误消息。(404表示浏览网页的人可能都知道“找不到页面”。)
Web浏览器会收到返回的页面,并且连接已关闭。
然后,浏览器分析页面并查找完成网页所需的其他页面元素。这些通常包括图像,小程序等。
对于所需的每个元素,浏览器针对每个元素向服务器进行其他连接和HTTP请求。
浏览器完成所有图像,小程序等的加载后,页面将完全加载到浏览器窗口中。
签出-使用Telnet客户端通过HTTP检索网页
Telnet是Internet上使用的远程终端服务。它的使用最近有所下降,但是它是研究Internet的非常有用的工具。在Windows中,找到默认的telnet程序。它可能位于Windows目录telnet.exe中。打开后,下拉“终端”菜单,然后选择“首选项”。在首选项窗口中,选中“本地回显”。(这样您可以在键入HTTP请求时看到它。)现在,下拉Connection(连接)菜单并选择Remote System(远程系统)。输入www.google.com作为主机名,并输入80作为端口。(默认情况下,Web服务器通常在端口80上侦听。)按“连接”。现在输入
GET / HTTP / 1.0

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

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

应用协议:SMTP和电子邮件

另一种常用的Internet服务是电子邮件。电子邮件使用称为简单邮件传输协议或 SMTP的应用程序级别协议。SMTP也是基于文本的协议,但是与HTTP不同,SMTP是面向连接的。SMTP比HTTP还复杂。SMTP中的命令和注意事项比HTTP中的更多。
当您打开邮件客户端以阅读您的电子邮件时,通常会发生以下情况:

邮件客户端(Netscape Mail,Lotus Notes,Microsoft Outlook等)将打开与其默认邮件服务器的连接。安装邮件客户端时,通常会设置邮件服务器的IP地址或域名。
邮件服务器将始终发送第一条消息以标识自己。
客户端将发送SMTP HELO命令,服务器将以250 OK消息响应该命令。
根据客户端是否正在检查邮件,发送邮件等,适当的SMTP命令将发送到服务器,服务器将相应地做出响应。
该请求/响应事务将继续进行,直到客户端发送SMTP QUIT命令为止。然后,服务器将说再见,并且连接将关闭。
SMTP客户端和SMTP服务器之间的简单“对话”如下所示。R:表示服务器(接收方)发送的消息,S:表示客户端(发送方)发送的消息。
此SMTP示例显示了Smith在主机USC-ISIF上发送到的邮件
主持人BBN-UNIX的Jones,Green和Brown。在这里我们假设
托管USC-ISIF联系人直接托管BBN-UNIX。邮件是
被琼斯和布朗接受。绿色在没有邮箱
托管BBN-UNIX。

  -------------------------------------------------- -----------

     R:准备好BBN-UNIX.ARPA 220简单邮件传输服务
     S:HELO USC-ISIF.ARPA
     R:250 BBN-UNIX.ARPA

     S:邮件发件人:<Smith@USC-ISIF.ARPA>
     R:250 OK

     S:RCPT收件人:<Jones@BBN-UNIX.ARPA>
     R:250 OK

     S:RCPT收件人:<Green@BBN-UNIX.ARPA>
     R:550这里没有这样的用户

     S:RCPT收件人:<Brown@BBN-UNIX.ARPA>
     R:250 OK

     S:数据
     R:354开始邮件输入;以<CRLF>结尾。<CRLF>
     S:等等等等...
     S:...等等 等等等
     S:
     R:250 OK

     S:退出
     R:221 BBN-UNIX.ARPA服务关闭传输通道

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

传输控制协议

TCP层位于协议堆栈中的应用程序层之下。当应用程序打开与Internet上另一台计算机的连接时,它们发送的消息(使用特定的应用程序层协议)将沿着堆栈向下传递到TCP层。TCP负责将应用程序协议路由到目标计算机上的正确应用程序。为此,使用端口号。可以将端口视为每台计算机上的单独通道。例如,您可以在阅读电子邮件时浏览网络。这是因为这两个应用程序(Web浏览器和邮件客户端)使用了不同的端口号。当数据包到达计算机并到达协议栈时,TCP层将根据端口号确定哪个应用程序接收该数据包。
TCP的工作方式如下:

当TCP层从上方接收到应用程序层协议数据时,它将其划分为可管理的“块”,然后将带有特定TCP信息的TCP头添加到每个“块”中。TCP标头中包含的信息包括需要将数据发送到的应用程序的端口号。
当TCP层从其下面的IP层接收到数据包时,TCP层会从该数据包中剥离TCP头数据,并在必要时进行一些数据重构,然后使用从TCP中获取的端口号将数据发送到正确的应用程序标头。
这就是TCP如何将通过协议栈移动的数据路由到正确的应用程序的方式。
TCP不是文本协议。TCP是一种面向连接的,可靠的字节流服务。面向连接的意思是两个使用TCP的应用程序必须先建立连接,然后再交换数据。TCP是可靠的,因为对于每个接收到的数据包,将确认发送到发送方以确认传递。TCP的标头中还包含一个校验和,用于对接收到的数据进行错误检查。TCP标头如下所示:

请注意,TCP头中没有IP地址的位置。这是因为TCP对IP地址一无所知。TCP的工作是可靠地获取应用程序之间的应用程序级别数据。从计算机到计算机的数据获取任务是IP的工作。
签出-众所周知的Internet端口号
下面列出的是一些更常用的Internet服务的端口号。
的FTP 20/21
远程登录 23
SMTP协议 25
HTTP 80
雷神之锤III竞技场 27960

互联网协议

与TCP不同,IP是一种不可靠的无连接协议。IP不在乎数据包是否到达目的地。IP也不知道连接和端口号。 IP的工作也是发送数据包并将其路由到其他计算机。IP数据包是独立的实体,可能乱序到达或根本不到达。确保包到达并以正确的顺序进行是TCP的工作。IP与TCP唯一的共同点是它接收数据并将其自己的IP标头信息添加到TCP数据的方式。IP标头如下所示:

图8
图8

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

包起来

现在您知道了Internet的工作原理。但是这种方式会持续多久?当前Internet(版本4)上使用的IP版本仅允许2 32个地址。最终将没有任何可用的IP地址。感到惊讶吗?不用担心 研究机构和公司组成的财团目前正在研究骨干上对IP版本6进行测试。在那之后?谁知道。自从作为国防部研究项目成立以来,互联网已经走了很长一段路。没有人真正知道互联网将成为什么样。但是,有一件事是肯定的。互联网将以前所未有的方式团结世界。信息时代正在全面发展,我很高兴能参与其中。
拉斯·舒勒(Rus Shuler),1998
年2002年更新

资源
以下是与讨论的某些主题相关的一些有趣链接。(我希望它们都可以正常工作。全部在新窗口中打开。)
http://www.ietf.org/ 是Internet工程任务组的主页。该机构对互联网协议之类的开发负有很大责任。

http://www.internic.org/是负责管理域名的组织。

http://www.nexor.com/public/rfc/index/rfc.html是出色的RFC搜索引擎,可用于查找任何RFC。

http://www.internetweather.com/显示了Internet延迟的动画地图。

http://routes.clubnet.net/iw/是来自ClubNET的Internet Weather。此页面显示各种运营商的数据包丢失。

http://navigators.com/isp.html是Russ Haynal的ISP页面。这是一个很棒的站点,具有指向大多数NSP及其骨干基础结构图的链接。

参考书目
以下书籍是极好的资源,对本文的写作也有很大的帮助。我相信史蒂文斯的书是有史以来最好的TCP / IP参考书,可以被认为是互联网的圣经。Sheldon的书涵盖了更广泛的范围,并且包含大量的网络信息。
TCP / IP图解,第1卷,协议。
理查德·史蒂文斯(W. Richard Stevens)。
马萨诸塞州雷丁市Addison-Wesley。1994年。
网络百科全书。
汤姆·谢尔顿(Tom Sheldon)。
纽约奥斯本·麦格劳·希尔(Osbourne McGraw-Hill)。1998年。
尽管不用于撰写本文,但以下是有关Internet和网络主题的其他一些不错的书:
防火墙和互联网安全;击退Wiley Hacker。
威廉·R·切斯威克,史蒂芬·贝洛文(Steven M.
马萨诸塞州雷丁市Addison-Wesley。1994年。
数据通信,计算机网络和开放系统。第四版。
弗雷德·哈索尔(Fred Halsall)。
Addison-Wesley,英国哈洛。1996年。
电信:协议和设计。
John D. Spragins和Joseph L. Hammond和Krzysztof Pawlikowski。
马萨诸塞州雷丁市Addison-Wesley。1992年。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值