关于数据是如何在网络中传输

历届足球世界杯 2025-07-23 13:46:03

网络中有两个非常重要的模型,一个是OSI七层参考模型(开放系统互连参考模型 Open System Interconnect ),还有一个就是TCP/IP五层模型(见下图)

OSI七层模型是提供一个标准框架来理解各种网络协议的功能和交互的,而TCP/IP五层模型,基于实际应用中的互联网协议栈构建的,更为实用且广泛应用于现代互联网通信中,而由于现在的网络数据传输基本上是依靠TCP/IP模型传输的,所以下面我们展开细说

一、物理层:

它是整个通信模型的最底层,负责数据在网络中的实际传输。物理层主要关注的是数据在传输介质上的传输方式,以及设备之间的物理连接和接口特性,将二进制数字信号转换为光、电信号

二、数据链路层:

在模型中的第二层,

把网络层交付的数据构成帧发送到链路上,以及把接收到的帧中的数据取出来交付给网络层,把网络层的ip数据报封装成帧将帧发送给目的节点的数据链路层,其主要职责之一就是提供逻辑地址(即MAC地址)的寻址功能。

三、网络层

在模型中的第三层,

主要任务是实现在在不同网络中数据的传输通信,确保数据可以从不同的主机和复杂的网络情况下传输到目标主机,里面有有ICMP,ARP协议等等..最核心的协议是,IP协议,通过对数据包的ip逻辑寻址,封装发送给目标主机

四、传输层

在模型中的第四层

它是负责两台主机之间端口对端口的传输,确保上一层的数据能准确的传输,其中包含两种重要的协议TCP & UDP

1.TCP协议

其有几个重要的特点

(1)面向连接

在数据传输之前,TCP需要先建立一条连接,也就是“三次握手”,客户端向服务器发起连接请求,发送一个syn标志的数据包,并有一个随机生成的初始序列号seq=x,等待服务器返回

服务器收到之后,如果同意建立连接,会返回一个syn和ack的数据包。数据包也包含一个随机生成的序列号seq=y,并确认客户端的序列号ack=x+1,意思是服务器收到了,下次请从序列号ack=x+1开始发送。

客户端接收到服务器的a数据后,向服务器发送一个ack标志的数据包,确认序列号ack=y+1,这个时候,客户端和服务器都确认了彼此的序列号,正式建立连接,传输真实的数据。

当服客户端很久没有传输数据,或者决定关闭连接是,会发送一个FIN=1(finish)的报文给服务器说我已经没有数据要发送了,请关闭连接,服务器收到之后同样会发送一段ack报文给对方,序列号+1,同时也会发送一段fin报文告知我已经准备关闭服务器,不再发送数据,客户端收到之后再回复一段序列号+1的报文告知我已收到,同时会有一个等待时间(time-wait)确保服务器能准确收到这段报文,至此,连接关闭。

(2)可靠传输

如上所述,客户端和服务器的连接通过序列号、以及超时重传,差错校验等一系列手短保证对方能够准确无误有效的收到数据,超时重传是指当客户端或者服务器发送的报文对方迟迟没有回应如丢失数据,数据错误等,则会重新发送数据。

(3)流量控制

TCP通过滑动窗口的方式来控制流量,确保服务器有足够的缓冲空间来接受数据

假设一下,服务器的接收数据的能力只有200MB/S,客户端发送数据是2000MB/S,这样就会导致服务器堵塞

(4)拥塞控制

和流量控制类似,但是流量控制强调的是点对点,而拥塞控制是全局性的

2.udp协议

udp协议同样也有几个特点刚好与TCP协议相反

譬如无连接,不需要和TCP一样要先建立一套完整的连接才能传输数据

不可靠传输,由于没有通过序列号,超时重传等一些系列机制,数据很容易就发生丢失,并且不会二次发送。

传输速度快,同样因为没有TCP协议一些系列繁琐的程序,所以传输速度要比TCP协议快

总结:TCP协议传输有序稳定可靠,速度可能慢一些,UDP协议则相反,两者在传输协议中都是非常重要的,TCP主要用于浏览网站,文件传输等等,而UDP则是在游戏,在线视频中应用的比较多。

五、应用层

模型中的最高层

其他层我们普通人可能接触不到,但是应用层确实实实在在能接触到,主要给用户提供应用程序的端口,并处理具体的应用程序服务需求,比如浏览网站,下载文件,它定义了协议和标准,应用层包含了众多协议,如HTTP用于网页浏览,SMTP用于电子邮件传输,FTP用于文件传输,DNS用于域名解析等等,还有应用层负责两个或多个应用进程之间的数据交换,这些进程运行在不同主机上的应用软件中。

总结:

基于TCP/IP五层模型的数据传输具体过程就是一系列的封装与拆包层层递进。

封装数据

在应用层应用程序,如浏览器,电子邮件等生成数据,这些数据会被封装为合适的应用层协议数据,例如HTTP请求或SMTP邮件传输到传输层。

然后当应用层数据传到传输层时,TCP协议或UDP协议为其添加传输层头部信息,如源端口和目的端口,以及TCP特有的序号、确认号、窗口大小等字段,形成TCP段或UDP数据报

到网络层之后网络层的IP协议会继续封装TCP段或UDP数据报,为数据添加IP头部,包括源IP地址、目的IP地址、协议类型表明上层是TCP还是UDP、TTL等等形成IP数据报。

到数据链路层之后进一步封装IP数据报,为其添加源MAC地址和目的MAC地址,以及帧校验序列(FCS)等,形成数据帧。

最后,物理层将数据帧转化为具体的电信号或光信号,通过物理连接方式,如电缆、光纤之类的传输到目标主机。

拆包数据

接收方主机的物理层接收信号,将其还原为数字信号,即数据帧。

数据链路层通过MAC地址解析数据帧,验证帧校验序列,然后去掉帧头和帧尾,提取出IP数据报。

网络层处理IP数据报,根据IP头部信息决定下一步操作,如转发或交付给上层,同时去除IP头部。

如果IP数据报中的协议字段指示为TCP或UDP,传输层将会根据头部信息(端口号、序号等)处理数据报,对于TCP,还会执行确认、流量控制等操作。去除相应头部后,数据被递交到上层。

应用层最终接收到来自传输层的数据,根据不同应用协议解析数据,如HTTP响应、SMTP邮件内容等,然后供应用程序进一步处理。