热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

学习笔记之internet系列2:互联网是如何工作的?

HowDoestheInternetWork?IntroductionInternet越发深入我们的生活,因此深入理解它是很必要的。本文解释了使Internet工作的基础设施和技术











How Does the Internet Work?


Introduction

Internet越发深入我们的生活,因此深入理解它是很必要的。

本文解释了使Internet工作的基础设施和技术。虽然不深入但足够宽泛。


Where to Begin? Internet Addresses

在Internet中,每台电脑都有一个独特的地址。格式为 nnn.nnn.nnn.nnn, nnn必须为0-255.

下面的示意图展示了通过Internet连接的两台电脑。

互联网是如何工作的?

可以通过 ping程序来获得某个域名的IP。


Protocol Stacks and Packets

计算机是如何在Internet上进行沟通的?

这需要用到 TCP/IP 协议栈。

互联网是如何工作的?

下面是一个从本机发送信息”Hello computer 5.6.7.8!”到IP地址为5.6.7.8的电脑的示意图:

互联网是如何工作的?

具体步骤如下:



  1. 信息将从上往下流动。


  2. 如果信息很长,则会被分隔为许多数据包。


  3. 这些数据包将从应用层到TCP层。每个包会给一个端口号。


  4. 从TCP到IP层。每个包给上终点的IP地址5.6.7.8。


  5. 当这些数据包有了端口号和IP地址后,就可以发送了。硬件层会将包中的文字转换为电信号然后通过线路传输。


  6. 然后通过若干ISP路由和其他设施,最终到达了电脑5.6.7.8。此时,信息从下往上流动。


  7. 在数据包往上流动的过程中,所有发送端添加的路由数据(如IP和端口号)都将被剥离。


  8. 当数据到达应用层后,数据包被重装为原始信息 “Hello computer 5.6.7.8!”



Networking Infrastructure

现在你知道了数据包是如何从一个电脑通过Internet到另一个电脑。但中间的细节是怎样的呢?看看下面的图:

互联网是如何工作的?

你的数据包先传到ISP的本地设备,再路由到ISP的骨干网,然后再经过若干路由和骨干网、专线和其他网络直到目的地:IP为5.6.7.8的电脑。可以用Traceroute来看这个过程(但实测发现,很多地址都是 * * * *)


Internet Infrastructure

Internet骨干网是由许多大网络(NSP)相互连接的。如下图:

互联网是如何工作的?



  • NAP:Network Access Point,也就是原来的 Internet interconnect point


  • MAE:Metropolitan Area Exchange,和NAP作用一样,但是私营的。


  • NAP和MAE都称作 Internet Exchange Points or IXs


  • NSP: Network Service Provider,NSP上连IEP,下连ISP,承上启下。


此图只是示意图,真实的图远比这复杂。


The Internet Routing Hierarchy

数据包是如何在Internet上找到流动路径的呢?答:路径信息都包含在每个路由的路由表中。

路由器是包转换器。

下图是路由的层级结构图:

互联网是如何工作的?

当一个数据包到路由时,会在路由表中查找目标IP地址,如果找到了,就发送到对应子网。如果没找到,就发送到默认路由(一般是上级的路由),如果还没找到,就继续向上查找,直到一个NSP骨干网,在这里有最大的路由表,然后就开始向下查找直到找到目标地址。


Domain Names and Address Resolution

如果不知道IP地址,只知道域名,就需要用到域名服务(DNS)了。DNS是一个分布式数据库,用来跟踪计算机名字和对应IP地址。

DNS服务器:包含了部分DNS数据库和相关软件的电脑。没有哪个DNS服务器包含了整个数据库,都只包含了一个子集。如果一个DNS服务器没有包含被请求的域名,则会将此请求重定向到另一个DNS服务器。如下图:

互联网是如何工作的?

DNS的层级结构与IP路由类似,找不到就往上层找。


Internet Protocols Revisited

Internet正常工作需要很多协议。包含了TCP/IP协议,路由协议,媒体访问控制协议,应用层协议等。下面将描述一些重要的协议。


Application Protocols: HTTP and the World Wide Web

Internet上最常用的服务是World Wide Web (WWW). 使web工作的应用协议是HTTP。

HTTP是无连接传输模式的文本协议。每个客户端发出的请求都需要开一个新的连接到服务器。

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



  1. 如果 URL 包含域名,则浏览器首先连接到域名服务器并检索 Web 服务器的相应 IP 地址。


  2. Web 浏览器连接到 Web 服务器并为所需网页发送 HTTP 请求(通过协议栈)。


  3. Web 服务器接收请求并检查所需的页面。如果该页面存在,则 Web 服务器将其发送。如果服务器找不到请求的页面,它将发送 HTTP 404 错误消息。(404 表示“未找到页面”,任何上网过的人都可能知道。)


  4. Web 浏览器收到返回的页面并关闭连接。


  5. 然后浏览器解析页面并寻找完成网页所需的其他页面元素。这些通常包括图像、小程序等。


  6. 对于需要的每个元素,浏览器都会为每个元素向服务器建立额外的连接和 HTTP 请求。


  7. 当浏览器完成加载所有图像、小程序等时,页面将完全加载到浏览器窗口中。



Application Protocols: SMTP and Electronic Mail

另一种常用的互联网服务是电子邮件。电子邮件使用应用层协议,称为简单邮件传输协议或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 命令。然后服务器将说再见并关闭连接。



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 标头如下所示:

互联网是如何工作的?

请注意,TCP 标头中没有 IP 地址的位置。这是因为 TCP 对 IP 地址一无所知。TCP 的工作是可靠地从应用程序到应用程序获取应用程序级数据。从计算机到计算机获取数据的任务是 IP 的工作。

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

FTP 20/21

Telnet 23

SMTP 25

HTTP 80


Internet Protocol

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

互联网是如何工作的?

上面我们在 IP 标头中看到了发送和接收计算机的 IP 地址。下面是一个数据包经过应用层、TCP层和IP层后的样子。应用层数据在 TCP 层进行分段,加上 TCP 标头,包继续到 IP 层,加上 IP 标头,然后包在 Internet 上传输。

互联网是如何工作的?


总结

现在你知道 Internet 是如何工作的了吧。




internet


推荐阅读
  • 本文详细介绍了cisco路由器IOS损坏时的恢复方法,包括进入ROMMON模式、设置IP地址、子网掩码、默认网关以及使用TFTP服务器传输IOS文件的步骤。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  •   1、确认自己的线路是否连接正确腾达a9设置。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • 如何使用台式电脑设置无线网络
    本文介绍了如何使用台式电脑设置无线网络的步骤,包括连接网线、更改IP、设置无线网络参数、重启路由器等,最后通过搜索无线信号来确认设置是否成功。 ... [详细]
author-avatar
濮阳土著_480
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有