跳转至内容

互联网与社会/技术基础设施/网络基础设施

来自Wikibooks,开放世界中的开放书籍

互联网架构

[编辑 | 编辑源代码]

互联网是一个全球性的计算机网络,其特性是每台计算机都可以向互联网上的任何其他计算机发送数据并接收数据。

互联网简史

[编辑 | 编辑源代码]

通过电话线或其他长途网络连接计算机的想法最早在1965年得到验证,当时两位大学研究人员Larry Roberts和Thomas Merrill使用电话线将马萨诸塞州的一台计算机与加利福尼亚州的一台计算机连接起来,并证明他们可以在远程机器上运行程序并接收数据。这项研究背后的一个关键思想是,计算机将通过将其数据分解成许多小的数据包并单独发送这些数据包来进行通信。如果任何数据包丢失(由于线路上的背景噪声),则可以轻松地重新发送。此实验直接导致了DARPA(国防高级研究计划局)在1967年提出的构建ARPANET的提案,ARPANET是互联网的军事前身。1968年,由波士顿BBN的Frank Heart领导的一个小组赢得了政府合同,负责构建最初的ARPANET硬件。1969年,最初的ARPANET建成,由四台计算机组成:三台在加利福尼亚州,一台在犹他州。1972年,Roberts编写了第一个电子邮件程序,电子邮件迅速成为最常用的网络应用。1973年,Vint Cerf和Robert Kahn为计算机网络提出了一套新的通信规则,称为TCP/IP(传输控制协议/互联网协议),它允许用户实现各种网络应用,包括网络电话、电子邮件和网络磁盘共享。ARPANET于1983年转换为TCP/IP网络,此时它被拆分为两个网络:用于军事应用的MILNET和用于民用应用的ARPANET。在整个70年代,开发了几个其他网络。其中包括CSNET(连接计算机科学系)、USENET(连接UNIX计算机)和BITNET(连接学术大型机)。80年代见证了个人电脑和工作站的快速激增,并将其组合成小型局域网(LAN),这些LAN越来越多地添加到ARPANET中,导致互联网快速增长。此外,1985年,国家科学基金会成立了NSFNET,并规定只有在向机构所有学者(而不仅仅是科学部门)提供访问权限的情况下,大学才能连接到该网络。1980年代的另一个重要发展是将网络连接到一个使用TCP/IP协议进行通信的单一互联网中。90年代见证了万维网的诞生以及互联网在规模和普通大众使用方面迅速扩张。参考文献:Barry M. Leiner、Vinton G. Cerf、David D. Clark、Robert E. Kahn、Leonard Kleinrock、Daniel C. Lynch、Jon Postel、Larry G. Roberts和Stephen Wolff撰写的互联网简史

互联网寻址:域名和IP地址

[编辑 | 编辑源代码]

互联网目前大约有4000万台服务器,尽管这个数字每个月都在增长(实际上,由于稍后会阐明的原因,它每分钟都在波动)。互联网上的每台计算机都有一个唯一的识别号,称为其IP地址(互联网协议)。IP地址由一系列0-255范围内的四个数字组成。例如,2003年布兰迪斯大学的一个典型IP地址是129.64.2.10,其中IP地址中的数字按照惯例用句点分隔。这是IP地址的点分十进制形式。IP地址实际上存储在计算机上并作为32位长的二进制数传输。请阅读关于二进制数的附录,以了解二进制数以及如何使用它们来表示十进制数。互联网上的大多数计算机也都有一个识别名称,称为域名。例如,布兰迪斯大学主Web服务器的域名是www.brandeis.edu,其IP地址是129.64.99.138。域名和IP地址之间的关系可以通过称为域名服务器的计算机在网络上获得。互联网实际上由大量无缝互连的网络组成。例如,布兰迪斯大学的局域网(LAN)由几千台计算机组成。这些计算机都直接连接到互联网并具有129.64.xxx.yyy形式的IP地址,其中xxx和yyy是0-255范围内的数字。反之,此形式的任何IP地址都指的是布兰迪斯LAN。因此,布兰迪斯LAN可以扩展到包含多达256 x 256 = 65536台计算机,这些计算机都可以同时直接连接到互联网。这种分块分配IP地址的方法在今天被广泛使用。

(添加到此部分?)-IPv4与IPv6 -MAC地址

参考文献:Netcraft调查 维基百科上的互联网协议

互联网路由

[编辑 | 编辑源代码]

互联网是由大量互连网络组成的集合。目前互联网上大约有4000万台服务器处于活动状态。当一条消息从一台计算机发送到另一台计算机时。该消息被划分为较小的数据包(以免占用网络),每个数据包都被单独发送到目的地。每个数据包在通过互联网传输时都会从一台计算机传递到另一台计算机。它通常从用户的计算机传递到大学或ISP办公室的集中式路由器。从那里,它被发送到一系列网络,然后到达目的地计算机的ISP,最后转发到目的地计算机。在UNIX系统上,您可以使用traceroute程序打印中间计算机列表(以及消息到达那里所需的时间)。例如,我们下面显示了从布兰迪斯大学(位于美国马萨诸塞州沃尔瑟姆)的一台计算机到东京大学主Web服务器的消息的traceroute。

% traceroute www.u-tokyo.ac.jp 
traceroute to www.u-tokyo.ac.jp (133.11.128.254), 30 hops max, 40 byte packets 
1 igs.cs-i.brandeis.edu (129.64.46.1) 75.332 ms 2.887 ms 3.342 ms 
2 129.64.253.1 (129.64.253.1) 2.558 ms 2.94 ms 3.561 ms 
3 192.5.89.121 (192.5.89.121) 4.227 ms 4.087 ms 4.583 ms 
4 192.5.89.10 (192.5.89.10) 16.261 ms 9.059 ms 11.282 ms 
5 chinng-nycmng.abilene.ucaid.edu (198.32.8.82) 42.434 ms 29.005 ms 33.558 ms 
6 iplsng-chinng.abilene.ucaid.edu (198.32.8.77) 48.242 ms 39.73 ms 42.387 ms 
7 kscyng-iplsng.abilene.ucaid.edu (198.32.8.81) 42.807 ms 43.039 ms 42.4 ms 
8 dnvrng-kscyng.abilene.ucaid.edu (198.32.8.13) 64.458 ms 53.008 ms 103.271 ms 
9 sttlng-dnvrng.abilene.ucaid.edu (198.32.8.49) 78.625 ms 78.774 ms 78.308 ms 
10 transpac-pwave.pnw-gigapop.net (198.32.170.46) 78.716 ms 79.304 ms 78.448 ms 
11 192.203.116.34 (192.203.116.34) 207.539 ms 207.635 ms 207.323 ms 
12 wide-ge-tpr3.jp.apan.net (203.181.249.41) 206.627 ms 207.231 ms 207.323 ms 
13 foundry3.nezu.wide.ad.jp (203.178.138.244) 208.736 ms 207.737 ms 207.612 ms 
14 ra37-vlan560.nc.u-tokyo.ac.jp (133.11.125.201) 216.799 ms 216.645 ms 229.441 ms 
15 ra36-vlan3.nc.u-tokyo.ac.jp (133.11.127.66) 216.845 ms 216.945 ms 238.735 ms 
17 foundry1.nc.u-tokyo.ac.jp (133.11.125.82) 226.653 ms 216.101 ms 216.02 ms ms 
18 133.11.128.254 (133.11.128.254) 215.942 ms 216.082 ms 216.13 ms

请注意,消息需要一段时间才能离开布兰迪斯,然后到达纽约市、芝加哥、堪萨斯城、丹佛,并在第10跳和第11跳之间穿过太平洋。它还需要几跳才能到达东京大学,然后在到达主Web服务器之前通过一些本地路由器。这是互联网数据包的典型路径。

参考文献:来自世界各地的Traceroute

端口、套接字和服务

[编辑 | 编辑源代码]

互联网上的计算机以多种方式交互,但它们的交互仍然受到限制。允许互联网上的任何计算机完全访问网络上的任何其他计算机是不明智的,因为不道德的用户可能会决定删除您的所有磁盘文件或未经许可使用您的计算机。为了解决这个问题,互联网是在网络的抽象视图上建模的,其中每台计算机都精确指定了它将允许的交互类型。这些类型的交互称为服务,网络上的每台计算机最多可以提供65536个服务。这些服务由一个0到65535之间的数字指定,称为端口。通常,端口号小于1024的端口保留用于系统服务(如电子邮件和网页服务),但任何人都可以自由地在端口号大于1024的端口上提供任何他们想要的服务。向另一台计算机提供服务的计算机称为服务器,请求服务的计算机称为客户端。互联网上的计算机通常同时充当客户端和服务器。客户端通过指定服务器计算机的IP地址和要提供的服务的端口号来启动客户端和服务器之间的通信。如果指定的计算机正在提供该服务,则会创建一个称为套接字的特殊连接。套接字允许两台计算机相互发送数据。参考文献:维基百科,尤其是路由器条目注意:维基百科完全不可信,因为任何人都可以在任何时间破坏任何页面。然而,许多网页目前没有被破坏,因此包含有用的信息。您唯一可以信任在维基百科上阅读的内容是真实的方法是从权威来源核实您阅读的所有内容。维基百科文章鼓励以权威来源链接的形式为所有声明提供证据。

网络上的常见服务

[编辑 | 编辑源代码]

下面列出了一些更常见的系统服务。每个服务都有一组规则来管理客户端和服务器如何交互。这些规则称为协议,它们仅仅代表两台计算机在该端口上通信时将使用的约定。

   * Echo (port 7) an echo service, simply echos back what it receives
   * Daytime (port 13) this returns the date and local time and ignores client input
   * FTP (ports 20,21) allows the client to transfer files of data to and from the server.
   * Telnet (port 23) allows the client to interact with the servers operating system remotely
   * SMTP (port 25) offers an email service for delivering email to a user on the server
   * DNS (port 53) domain name serving, returns IP addresses for domain names
   * WWW (port 80) uses the HTTP protocol and sends specified web pages to the client.
   * POP3 (port 110) offers another email service

一些常见的互联网服务 您可以使用telnet命令从Linux访问其中一些端口。下面我们分别给出访问日期和回显服务的例子:日期服务返回正在查询的服务器上的本地时间。回显服务用于测试连接是否处于活动状态,并只回显它接收到的每一行文本。USER % telnet www.cs.brandeis.edu 13

     Trying 129.64.2.3...
     Connected to diamond.cs.brandeis.edu.
     Escape character is '^]'.
     Thu Aug 31 15:55:41 2000
     Connection closed by foreign host.

访问日期服务 USER % telnet www.cs.brandeis.edu 7

     Trying 129.64.2.3...
     Connected to diamond.cs.brandeis.edu.
     Escape character is '^]'.

USER 这是回显端口

     This is the echo port

USER 再见

     bye bye

USER ^]

     telnet> 

USER 退出

     Connection closed.

访问端口7上的回显服务 参考:IANA端口分配

Web浏览器和服务器

[编辑 | 编辑源代码]

HTTP服务可能是为互联网开发的最具革命性的服务。它提供了一种机制,允许客户端通过提供Web服务器文件夹中文件的名称来访问服务器上的文件。然后,HTTP服务器通过返回有关文件的一些信息行(例如,它包含什么类型的数据,文本、图像、电影、声音等)来响应此类请求,上次修改时间、文件大小等。HTTP服务通常在端口80上提供。HTTP服务是万维网技术基础的两大部分之一。另一半是HTML语言。HTML是超文本标记语言的首字母缩写词。HTML指定网页的布局,并提供包含指向其他网页以及图像、声音、电影和其他内容的链接的机制。在下一章中,我们将介绍HTML和一些相关技术(CSS和XML)。下面我们给出一个使用此服务从服务器“www.cs.brandeis.edu”请求网页“/~cs2a/index.html”的示例。请注意,请求(蓝色)指定要访问的页面,响应提供了大量有关文件的信息,包括(黄色)其大小、上次修改日期、大小、文件中的信息类型、提供服务的服务器类型、提供页面的本地时间以及一些更深奥的信息,以及实际的网页内容本身(绿色)。

 % telnet www.cs.brandeis.edu 80

 Trying 129.64.2.3... 
 Connected to diamond.cs.brandeis.edu. Escape character is '^]'. 
 GET /~cs2a/ HTTP/1.0 
 HTTP/1.1 200 OK 
 Date: Tue, 02 Sep 2003 21:20:33 GMT 
 Server: Apache/1.3.26 (Unix) 
 Last-Modified: Tue, 02 Sep 2003 21:20:16 GMT 
 ETag: "44b052-221-3f550990" 
 Accept-Ranges: bytes 
 Content-Length: 545 Connection: close 
 Content-Type: text/html
 <HTML>
 <TITLE>Brandeis University, Intro to Computers, Cosi 2a, Aut 03</TITLE>
 <BODY style="background:blue"> 
 <META HTTP-EQUIV="Refresh" CONTENT="2;
 URL=http://frege.cs-i.brandeis.edu:9090/cs2a03/index.html">
 <center> 
 <h1 style="background:white; border:thick double blue; font:bold 40pt Helvetica">
 The Home page for CS2a<br> has moved to<br> 
 <A HREF="http://frege.cs-i.brandeis.edu:9090/cs2a03/index.html">
 http://frege.cs-i.brandeis.edu:9090/cs2a03/index.html </A>
 </h1> Sorry for the inconvenience. 
 <p> Tim Hickey </center> 
 </BODY>
 </HTML> 

Connection closed by foreign host. 
Accessing the HTTP service on port 80

目前有许多可用的Web浏览器。目前最常见的浏览器是Internet Explorer和Netscape,但一些鲜为人知的浏览器,如Opera和Amaya,提供了主流浏览器目前不支持的其他功能,例如数学和图形标记处理。URL和域名 您可能知道,万维网上的所有内容都可以通过向浏览器提供其地址来访问。Web地址的正式名称是URL,代表统一资源定位符。(有些人也使用URI表示统一资源标识符。)URL是我们第一个正式语言的例子。每个URL都有几个部分,其中一些是可选的。以下是URL的一些示例: http://www.brandeis.edu http://www.brandeis.edu:80 http://www.brandeis.edu:80/index.html http://www.brandeis.edu:80/go/index.php?go=cosi http://129.64.2.3/~tim http://jscheme.cs.brandeis.edu:8080 ftp://ftp.cc.gatech.edu/pub/linux/ URL最简单的形式是: http://DOMAINNAME 其中“http”和“ftp”指定了正在访问的服务类型,“DOMAINNAME”指定了提供服务的计算机。URL的一般形式为PROTOCOL://DOMAINNAME:PORT/PATH/FILE.EXT#P?N=V&N2=V2 ... 让我们将其分解。“PROTOCOL”指定Web浏览器必须用于与Web服务器通信的协议。除了http之外,还有许多其他协议。最常见的是“ftp”,即“文件传输协议”。“mailto:”协议也很常见,用于允许用户从浏览器发送电子邮件。DOMAINNAME是Web服务器的符号名称。所有Web服务器都具有唯一的IP地址(如上所述)。域名和IP地址之间的转换是使用网络上称为“域名服务器”的特殊服务器执行的。这些服务器接受域名并返回相应的IP地址。它们相当于电话网络上的“411”服务,并且每个浏览器都必须至少拥有一个域名服务器的地址,如果它要使用域名的话。您可以在URL中直接使用IP地址而不是域名,但这很少这样做,因为IP地址可能难以记住。“PORT”是在0到65535之间的数字,它指定服务器使用的端口,对于http协议,默认值为80。“PATH”指定服务器上文件的位置。“FILE.EXT”是要返回的文件的名称。“#POS”指定文件中的位置。POSITION是一个符号名称(不包含空格)。浏览器在第一次查看文件时会将窗口向下滚动到该位置。item “?N=V&...” 这是将值传递给服务器的一种机制,服务器可以使用该值来生成将发送回给您的网页。您经常在填写搜索引擎的搜索表单后看到这种地址。当您将此页面添加为书签并返回时,URL包含您在表单上输入的所有内容的精确描述。在后面的章节中讨论Servlet之后,这些更复杂的URL将更容易理解。参考:无...

华夏公益教科书