序
前端的发展脱离不了互联网的繁荣发展,互联网和前端领域的发展是相辅相成的。互联网空前繁荣的今天,我们可以在家里点开各种网站来购物、看视频、浏览资讯等等。互联网的发展给我们带来了许多便捷,那到底互联网是如何运作的呢?你是如何用你的计算机设备发送数据和接收到数据的呢?
我们先从互联网的发展讲起
互联网的发展
远程终端联机阶段
20世纪60年代中期之前的第一代计算机网络是以单个计算机为中心的远程连接系统,典型应用是由一台计算机和全美国范围内2000多个终端组成的飞机订票系统。这样的通信系统,已具备网络的雏形。这个阶段可以认为是计算机网络的诞生阶段。
计算机网络的形成阶段
20世纪60年代中期到70年代的第二代计算机网络是以多个主机通过通信线路互连起来,典型代表是美国国防部高级研究计划局开发的APRANET网络,这是多台计算机通过通信线路互连起来的系统,这种系统中的每台计算机都具有自主处理的功能,各计算机之间是没有主从关系的。
开放标准化的阶段
20世纪70年代末至90年代的第三代计算机网络,它具有统一的网络体系结构,并遵守国际标准。APRANET兴起之后,计算机网络发展比较迅猛,各大计算机公司相继推出自己的网络体系结构,以及实现这些结构的软硬件产品。
但是因为没有统一的标准,不同厂商的产品之间互联很困难,人们这个时候就迫切需要一种开放性的标准化使用网络环境,这样就应运而生了两种国际通用的体系结构,分别是OSI和TCP/IP。
高速网络技术阶段
20世纪90年代到现在是第四代计算机网络,以因特网为代表的互联网,让全世界的人们都住在一个地球村里面,沟通交流、资源共享都变得非常的方便。
几个名词
因特网(Internet)
因特网是全球最大的开放性计算机网络,前身是APRANET。1994年4月,我国正式接入互联网。
我们常用的万维网,E-mail,FTP,都是基于因特网之上的服务。
万维网(World Wide Web)
万维网之父
1989年,蒂姆伯纳斯-李发明了一种通过超链接把所有有用的资源组织在一起的系统,形成了一个信息的网,被称为万维网,通过因特网访问。之后,他又发明了三项关键技术:URL、html、HTTP 以及第一个网页服务器和第一个网页浏览器,人称万维网之父。
互联网是如何工作的
进入正题,互联网是如何工作的,这个问题我们也许都有自己的答案。
我们都知道的流程
举个例子,我们是怎么访问到58.com的站点数据的?
当你的电脑联入互联网之后,电脑将会获得一个地址,我们称为Internet Protocol Address,就是IP地址。现在有58的服务器也接入了互联网,它也将被分配一个IP地址。我们常说的访问某某网站,其实就是在访问这个网站的服务器。你的电脑上通过访问58.com获取58首页内容,那此时我们称你的电脑为客户端,58服务器为服务端,这种形式即为客户端/服务端(C/S)模型。
顾名思义,客户端更贴近用户,是面向用户的应用程序,例如浏览器、电子邮件客户端、手机APP。服务端是在远程计算机上运行的应用程序。客户端可以在需要时通过互联网与服务端进行通信。
你的电脑发送消息给58服务器,说要获取首页的内容,请把它传给我。消息将会转化成电子信号,通过电缆发送给58服务器,在服务器端再将电子信号转化为计算机可以使用的数据。
那这一切又是如何实现的呢?
TCP/IP协议
通过TCP/IP协议族
- 协议是一组规则,用于指定计算机应如何通过网络来相互通信
TCP/IP协议共分为4层。应用层,传输控制层,网络层,链路层。
- 分层设计的优势
就像很多复杂的系统一样,网络协议通过分层来明确每一层的工作职责,通过定义明确的接口来协同工作,每个层都可以使用下面各层的功能,而不必担心各层是如何实现的。
在当前的例子中,我们使用应用层的HTTP协议,请求获取HTML文本,这时需要发送一个请求消息,消息在发送前会被分解为许多片段,我们称之为数据包。通过应用层进入TCP层后,每个数据包都会被分配一个端口号。端口号用来确定目标计算机的哪一个应用程序要接受并使用该数据包。
TCP
TCP是一种面向连接的可靠字节流服务协议。这里有两个重点词,面向连接、可靠。为什么这么说呢?这个是因为TCP必须先经过三次握手建立连接之后才能交换数据。每个收到的数据包都会向发送方发送ack确认,以保证发送成功。
数据包发送
进入IP层后,每个数据包将被赋予目标计算机的IP地址。IP是不可靠的无连接协议。它并不关心数据包是否到达目的地,也不关心连接和端口号。它的工作是发送数据包,并将其路由到目标计算机。其中每个数据包都是独立的,互不依赖的,所以有可能会乱序到达目标地址,或者在传输途中丢失。那如何保证数据包到达顺序正确呢?
这都交给了TCP,这也就体现了分层的作用。当数据包过大时,在IP层会进行分包,由于每个数据包在物理链路层的物理链路可能不一样,传输速度也不一样,会导致数据包没有按顺序到达目的地,但TCP会根据数据包上携带的序列号来进行排序重组,并且发送方在一个特定时间内没有接受到接受方的ACK确认时,发送方会重新传送该数据包。
有了IP地址和端口号之后,链路层将数据包的文本信息转成电子信号,然后通过电缆传输。
数据包到达
在电缆的另一端的路由器检查每个数据包中的目标地址,并确定将其发送到何处。最终数据包到达服务器后,从TCP/IP协议族的底部开始向上运行。当数据包向上通过协议族时,客户端添加的所有路由数据,例如IP地址和端口号都将从数据包中剥离出来。当数据到达站点时,数据包已经重新恢复成最初始的形式。通过端口号可以将数据传递给当前服务器监听该端口的应用程序。应用程序根据当前请求数据做出反应。
数据返回
服务端接到我们的请求,将数据通过刚才的方式返回到客户端,这样我们就收到了返回的数据。
到这里,我们完成了客户端与服务器在互联网中的一次数据交互。现在我们从更广的角度来看,你的电脑和服务器之间的互联网到底是怎么构成的。
互联网精简架构
你的电脑通过调制解调器modem,也就是我们常说的"猫","猫"将计算机的数字信号翻译成可沿普通电话线传送的模拟信号后,在公共电话网络进行传输。公用电话网络通过连接 Internet Service Provider 互联网服务提供商(ISP)来接入互联网。我们生活中常见的电信、移动、联通等都是ISP。
互联网骨干网由许多相互连接的大型网络组成,这些大型网络被称为网络服务提供商 Network Service Provider,简称NSP。NSP是为ISP提供网络主干服务的公司,ISP可以从NSP那里批量购入带宽,为客户提供网络接入服务。
NSP网络通过网络访问点NAP(network access point)相连 来交换数据包流量。每个NSP都必须连接到至少三个NAP。数据包流量可能会通过NAP 从一个NSP的主干跳到另一个NSP的主干。
当然,互联网的网络架构不会这么简单,我这里做了简化。既然互联网组成如此复杂,互联网是如何帮数据包找到一个正确的路线,把数据包送到目的地呢?
数据路由
在互联网中有个特殊的计算器: 路由器,路由器上有个路由表,记录了其子网络的所有IP地址,然而它并不知道上层网络所包含的IP地址。当数据包到达路由器,路由器检查路由表上是否有目的的IP地址,如果有就直接发送给那个网络,否则就向上层发送数据,在更高的层级去寻找拥有该IP的路由器。如果依然没有找到,那再次将数据包向上路由,直到到达NSP骨干网为止。
连接到NSP骨干网的路由器拥有最大的路由表,通过这张表可以将数据包路由到正确的骨干网,然后它将开始向下传播,进入越来越小的网络,直到找到目的地为止。你的电脑就是这样访问到服务器的。
域名系统(Domain Name System)
上述过程我们默认通过IP地址访问服务器,但大多数情况下,我们都是通过域名访问。那浏览器是如何通过域名知道访问哪个IP地址呢?
这里就需要使用到域名系统DNS。DNS是一个分布式数据库系统,上面记录了域名和其IP地址的对应关系。在浏览器中输入网址时,浏览器首先连接DNS服务器, 获取到该域名的IP地址后,浏览器再连接访问该IP对应的服务器。
END
现在你应该了解你是如何接入互联网访问服务器并接收到数据的。
接到数据后,这些数据又是如何展示在我们的屏幕上,这里就是我们熟悉的范围了,不再赘述。
作为前端,我们往往将互联网的关注的重心放在浏览器一侧,但是计算机网络作为互联网的核心也值得我们去深入的了解学习,从而让我们可以站在更高维度去理解互联网技术。