网络传输的大致过程
互联网世界,人们可以通过网络传输
解除地域限制,实现消息
的通信。那么网络传输的整体流程到底是怎么实现的呢?
比如小王在他的电脑浏览器上输入了一个网址,经过网络传输,目标服务器收到了来自小王的请求,并响应了内容给小王。整个过程就涉及了两次网络传输,一次请求,一次响应。
请求的网络传输:
小王在浏览器中输入网址(URL),并点击回车或点击搜索按钮。
浏览器解析URL,识别出协议(如HTTP或HTTPS)、域名(可能包括子域)、端口(如果未指定,则使用默认端口,如HTTP的80端口或HTTPS的4043端口)、以及可能的路径和查询字符串。
浏览器通过DNS(域名系统)将域名解析为服务器的IP地址。
浏览器与服务器建立TCP/IP连接(对于HTTPS,则是在此基础上建立SSL/TLS加密连接)。
浏览器向服务器发送HTTP(或HTTPS)请求,请求中包含请求的方法(如GET、POST)、请求的资源路径、HTTP版本、请求头(包含如User-Agent、Accept等信息),以及可能的请求体(对于GET请求,通常没有请求体)。
服务器处理:
服务器接收到来自小王的请求后,根据其请求的资源和方法进行相应的处理。
服务器可能访问数据库、执行程序或调用其他服务来获取或生成请求的资源。
服务器构建响应,包括HTTP状态码(如200 OK表示成功)、响应头(如Content-Type指示内容类型)、以及响应体(包含实际的数据,如HTML、JSON、图片等)。
响应的网络传输:
服务器将构建好的HTTP响应发送给浏览器。
浏览器接收到响应后,根据响应的状态码和内容类型进行相应的处理。
如果状态码表示成功,浏览器将解析响应体中的内容,并展示给用户。例如,如果响应体是HTML文档,浏览器会渲染这个HTML文档,并展示给用户看。
那么计算机是如何识别网络传输指令,并发起网络传输的呢?
1. 数据封装
程序与指令的转换:首先,程序被编译或解释成计算机可以直接执行的二进制代码。这些二进制代码包含了程序执行所需的所有指令和数据。
网络层封装:当需要通过网络传输数据时,数据会被封装成网络数据包(如IP数据包)。这个过程包括添加源IP地址、目标IP地址、端口号等网络层信息,以便数据包能在网络中正确路由和传输。
2. CPU处理
指令执行:CPU从内存中取出指令,放入指令寄存器,并对指令进行译码和执行。在涉及网络传输的指令中,CPU会识别出需要进行网络操作的数据包。
控制信号生成:CPU通过控制单元发出控制信号,这些信号用于控制计算机内部各部件(如内存、I/O设备等)的协同工作。在网络传输的上下文中,CPU会生成相应的控制信号,以启动网络接口卡(NIC)等硬件设备进行数据包的发送。
从应用程序,到执行程序指令的CPU,内存数据被转换成二进制数据包,然后通过网卡(NIC)将二进制数据包转换成电信号,至此数据在网线中以电信号传播。
电信号通常无法实现长距离的传播,因此网线的另一端路由器
(网络边界)会接入光纤
。经过光电转换,电信号转换成光信号,在光纤中传播!而光纤的另一端则依次是路由器、网线、网卡、服务器。
由此可见,网络传输的大部分路径是在光纤中,网络传输的大部分时间也都是依赖于物理介质——光/波来完成的。
1. 数据生成与初步传输
应用程序到内存:应用程序生成数据,并通过操作系统和网络协议栈,将数据封装成二进制数据包。CPU将这些数据包存储在内存中。
内存到网卡(NIC):网卡(NIC)从内存中读取这些数据包,并将其转换为电信号,准备通过网线传输。
2. 局域网传输(网线与电信号)
网线传输:在局域网(LAN)中,电信号通过网线传播。这段传输路径通常较短,例如从计算机到路由器,距离通常在几米到几十米之间。
路由器处理:路由器作为局域网与外部网络(通常是广域网,WAN)的连接点,它会接收电信号,并处理这些信号以决定下一步的传输路径。
3. 长距离传输(光纤与光信号)
光电转换:路由器通过光电转换模块,将电信号转换为光信号。光信号能够在光纤中进行长距离、高速的传播。
光纤传输:光纤是长距离网络传输的主要物理介质。在光纤中,光信号通过光的全内反射特性传播,覆盖的距离可以从几公里到几千公里不等。
传输路径与时间:由于光纤传播速度接近光速,且损耗较低,网络传输的大部分路径是在光纤中完成的,光纤也是数据传输大部分时间所依赖的物理介质。
4. 目的地处理
光电转换与路由器:光纤另一端的路由器接收到光信号后,再次通过光电转换模块将光信号转换为电信号。
电信号到服务器:转换后的电信号通过网线传输到目的服务器的网卡(NIC)。服务器的网卡将电信号转换回二进制数据包,并传递给服务器的操作系统和应用程序。