谈谈网络传输过程

本文详细解释了网络传输过程,从数据在应用层的处理开始,通过OSI模型或TCP/IP模型的四个层次,包括数据封装、端口添加、IP封装、路由选择和链路层帧封装。重点阐述了TCP三次握手和四次挥手在连接管理中的作用,以及DNS查找和IP寻址的过程。
摘要由CSDN通过智能技术生成

网络传输过程是将数据从源设备传输到目标设备的一系列步骤,这一过程遵循OSI模型(开放系统互连模型)或TCP/IP模型的层次结构。尽管OSI模型有七层,但TCP/IP模型更为常用,它包括四层:应用层、传输层、网络层和链路层)。(有时也合并物理层考虑)

1. 应用层

  • 数据封装开始:在应用层,用户产生的数据(如文件、图片、文本等)首先被应用程序(如浏览器、邮件客户端)处理,并转换成适合网络传输的格式。例如,HTTP请求或FTP数据包。

2. 传输层

  • 添加端口信息:传输层负责将应用层数据分割成数据段,并为其添加端口号。TCP(传输控制协议)提供可靠的数据传输服务,会建立连接、进行错误检测和重传;而UDP(用户数据报协议)提供无连接服务,不保证数据的顺序和可靠性,但速度快。

3. 网络层

  • IP封装:网络层将传输层的数据段封装成数据包,添加源IP地址和目标IP地址。IP协议负责在互联网上寻址和路由,确保数据包能够从源设备转发到目标设备。这一步可能涉及路由决策,确定数据包在网络中的下一跳。

4. 数据链路层

  • MAC寻址和帧封装:在数据链路层,数据包被进一步封装成帧,添加源MAC地址和目标MAC地址。这层主要处理局域网内的通信,使用如以太网协议。ARP协议(地址解析协议)在此层用于将IP地址映射到MAC地址,确保数据帧能正确到达下一跳设备。

5. 物理层

  • 信号编码和传输:物理层处理数据的实际传输,将数据帧转换成电信号、光信号等形式,通过物理介质(如双绞线、光纤)进行传输。它定义了网络设备间的接口标准、传输速率和信号类型。

对上面的文字描述很陌生  我们可以举例来描述

当我们在百度网页搜素" 什么是国画"时   网络是怎么运输及最后页面展示的

1. 应用层

当我们搜素"什么是国画时",并按下enter键时 

1.用户产生的数据就会被浏览器处理 并转换成适合网络传输的格式   HTTP请求或FTP数据包  这里是HTTP请求  这个请求中包含了目标URL(百度的搜索页面地址)、查询关键词以及一些其他信息,如浏览器信息、cookies等

2.DNS解析:浏览器需要知道百度服务器的IP地址才能发送请求,因此它会向本地DNS缓存、路由器的DNS缓存或ISP的DNS服务器查询“www.baidu.com”的IP地址。如果这些地方没有,请求会逐级向上直至根DNS服务器,最终获得百度服务器的IP地址。

解释1:

HTTP请求数据包

HTTP(Hypertext Transfer Protocol)是应用层协议,用于从Web服务器传输超文本信息到本地浏览器的传输协议。一个典型的HTTP请求数据包包括以下部分:

  1. 起始行(Request Line):包含请求方法(如GET、POST)、请求URI(Uniform Resource Identifier)和HTTP版本号。

  2. 请求头(Headers):一系列键值对,提供关于请求的额外信息,如User-Agent(客户端类型)、Accept(可接受的内容类型)、Cookie等。

  3. 空行:请求头与请求主体间的分隔符,是一个简单的换行符(CRLF)。

  4. 请求主体(Body):可选部分,对于GET请求通常不存在,而对于POST请求则可能包含提交的表单数据、JSON数据或其他类型的数据。

FTP数据包

FTP(File Transfer Protocol)是用于在网络上进行文件传输的协议,它也工作在应用层。FTP数据包包括控制连接和数据连接两种类型:

  1. 控制连接:用于发送FTP命令(如USER、PASS、LIST、RETR等)和服务器响应。每个命令或响应都遵循特定的格式,通常包括命令码、参数(如果有的话)和结束符。

    • 命令:由客户端发送,例如USER anonymous用于匿名登录。

    • 响应:由服务器发送,以三位数字代码开始,如220表示服务就绪。

  2. 数据连接:当需要传输文件或目录列表时,FTP会建立一个独立的数据连接。数据传输可以采用ASCII模式或二进制模式,并且数据传输完成后,数据连接会被关闭。

FTP数据传输通常涉及两个通道:控制通道(用于命令和响应)和数据通道(用于实际的数据传输)。而HTTP请求则通过单一连接完成命令发送和响应接收。

总的来说,HTTP请求主要用于网页浏览和API交互,强调的是内容的快速获取和显示;而FTP则专注于文件的上传下载,支持更复杂的文件操作和权限管理。

解释2:

DNS缓存存在于多个层级,以加速域名解析过程并提高网络效率,主要涉及以下三个层面:

  1. 本机DNS缓存: 位于你的个人电脑或移动设备上。当你访问一个网站时,操作系统会首先检查本地的DNS缓存是否有该域名对应的IP地址记录。如果之前访问过且记录尚未过期(根据TTL值判断),系统可以直接从本地缓存中获取IP,无需向外发送DNS查询请求,从而节省时间和资源。

  2. 路由器DNS缓存: 如果本机缓存中没有所需记录,查询请求会传递给家庭或办公室网络中的路由器。许多现代路由器也具备DNS缓存功能,它们会暂时存储近期查询过的域名及其IP地址。如果路由器缓存中有匹配项,它会直接提供给客户端,同样加速了访问过程。

  3. ISP的DNS服务器缓存: 如果前两级缓存都没有命中,请求会继续前往你的互联网服务提供商(ISP)的DNS服务器。ISP通常维护着更为庞大和高效的DNS缓存,用于服务其众多客户。这些服务器缓存了大量域名记录,能够迅速响应大多数常见域名的查询。一旦ISP的DNS服务器解析了一个域名,它也会暂存该记录以供后续类似查询使用。

每个级别的DNS缓存都遵循DNS记录的TTL(Time to Live)值,即记录的有效期。一旦记录过期,相应的缓存条目会被标记为无效,并在下一次查询时从上游DNS服务器获取最新信息更新缓存。

这样的多层次缓存机制减少了对根DNS服务器和顶级域名服务器的访问压力,缩短了用户访问网站的延迟时间,提升了整体的网络效率。

2. 传输层

  1. 分割数据:将HTTP请求报文分割成适合传输的数据段。
  2. 添加TCP头部:为每个数据段添加TCP头部,包含源端口号、目的端口号(HTTP默认为80或HTTPS为443)、序列号、ACK标志位及确认号等
  3. 三次握手:执行TCP连接的三次握手过程,包括SYN报文的发送、接收SYN+ACK报文,以及发送最终的ACK报文

解释1:TCP三次握手

TCP三次握手是确保浏览器(客户端)和百度服务器(服务器端)之间建立可靠连接的一种协议机制。这一过程确保了双方都有发送和接收数据的能力,并且能够同步序列号,为接下来的数据传输奠定基础

  1. 第一次握手

    • 浏览器发送一个TCP报文到百度服务器,这个报文中包含一个随机初始化的序列号(Seq=X),并且设置SYN(Synchronize)标志位为1,表示请求建立连接。这标志着客户端想要开始一次新的连接。报文可以表示为:SYN, Seq=X
  2. 第二次握手

    • 服务器接收到浏览器的SYN报文后,如果同意建立连接,就会发送一个TCP报文作为应答。这个报文中也包含一个初始化的序列号(Seq=Y),因为这是服务器端发出的第一个数据包,同时会确认客户端的序列号X+1(Ack=X+1),表示已经收到了客户端的SYN报文,并且也设置SYN标志位为1,表明自己也在请求建立连接。此外,由于这是对客户端SYN的应答,还会设置ACK(Acknowledgment)标志位为1。因此,服务器发送的报文可以表示为:SYN, Seq=Y, Ack=X+1
  3. 第三次握手

    • 浏览器收到服务器的SYN+ACK报文后,会发送最后一个ACK报文给服务器,确认收到了服务器的SYN报文。这个报文包含的确认序列号为Y+1(Ack=Y+1),表示确认了服务器的序列号。至此,客户端和服务器都知道对方已准备好进行数据传输。这个报文可以表示为:ACK, Ack=Y+1

通过这三次握手,双方不仅确认了对方的接收能力,还同步了序列号,为接下来双向的数据传输提供了必要的同步信息。三次握手完成后,TCP连接正式建立,双方就可以开始互相发送数据了

解释2:四次挥手

四次挥手(Four-Way Handshake)是TCP(传输控制协议)连接断开过程中的一个关键步骤,用来确保数据的可靠传输直到双方都同意关闭连接。这一过程保证了数据的完整性,防止数据丢失或重复。以下是四次挥手的具体步骤:

  1. 第一次挥手(FIN):主动关闭方(Client或任何一端)决定要关闭连接时,会发送一个FIN(Finish)标志的报文给对方(Server)。这个报文告诉对方,“我这边的数据已经发送完毕,不再发送数据了。”此时,主动关闭方进入FIN_WAIT_1状态,等待对方确认。

  2. 第二次挥手(ACK):接收到FIN报文的一方(Server)会回复一个ACK(Acknowledgment)报文给主动关闭方,确认收到了关闭请求。这个ACK报文会将确认序号设置为收到的FIN报文的序号加1。此时,被动关闭方(Server)进入CLOSE_WAIT状态,而主动关闭方收到ACK后,会进入FIN_WAIT_2状态,等待对方关闭连接。

  3. 第三次挥手(FIN):被动关闭方(Server)在处理完所有数据后,也会准备关闭连接,这时它会向主动关闭方发送一个带有FIN标志的报文,告诉对方,“我也准备好关闭连接了。”此时,被动关闭方进入LAST_ACK状态,等待最后一个ACK的到来。

  4. 第四次挥手(ACK):主动关闭方收到被动关闭方的FIN报文后,会发送最后一个ACK报文作为确认。这个ACK报文的确认序号设置为收到的FIN报文的序号加1。当被动关闭方收到这个ACK报文后,会关闭连接,而主动关闭方在一段时间的等待(确保ACK成功到达)后也会关闭连接。主动关闭方进入TIME_WAIT状态,等待足够的时间以确保最后的ACK报文能够到达对方,之后关闭连接,状态转为CLOSED;被动关闭方在收到ACK后直接进入CLOSED状态。

整个四次挥手过程确保了双方都明确知道连接已经被彻底关闭,且所有的数据都已被正确传输。TIME_WAIT状态的存在是为了处理网络中延迟到达的数据包,避免新连接与旧连接的数据混淆。

3.网络层

1.IP封装:网络层将传输层的数据段封装成数据包,添加源IP地址和目标IP地址。IP协议负责在互联网上寻址和路由,确保数据包能够从源设备转发到目标设备。

2.路由选择:根据目的IP地址,路由器决定数据包在网络中的传输路径。

(IP协议会为每个数据包加上源IP地址和目的IP地址,路由器正是基于这些地址信息,结合其内部维护的路由表来进行路由决策,决定数据包的下一跳转发路径。这个过程确保了数据能够跨越不同的网络,从源到达目标)

4. 数据链路层

  • 数据包到达源设备的网络接口卡(NIC),在这里,以太网、Wi-Fi或其他链路层协议将其封装成帧,添加物理地址(MAC地址)等信息。
  • 帧通过物理媒介(如双绞线、无线电波)传输到下一个网络节点。

解释1:帧

帧是网络通信中一个携带了控制信息和有效数据负载的数据单元,它确保了数据能够在链路层可靠地传输,主要作用是封装上层数据,并添加必要的控制和管理信息,使得数据能够通过物理链路正确无误地从发送方传输到接收方。它还负责界定数据的开始和结束,以便接收方能够准确地识别出一个完整的数据单元

结构组成:一帧数据通常包括几个关键部分:

  • 帧头(Header):包含了控制信息,如同步信息、源地址和目标地址等,帮助接收方识别并处理数据。
  • 数据部分(Payload):这是实际要传输的数据内容,可以是任何上层协议的数据包,如IP包。
  • 帧尾(Trailer):可能包括校验和或循环冗余校验(CRC)等错误检测代码,用于确保数据在传输过程中的完整性

解释2:理解帧的构建和传输过程:

  1. 应用层数据准备:首先,用户在计算机上通过应用程序(如浏览器)生成数据(如网页请求)。这些数据经过层层封装,从应用层逐步向下,直到达到数据链路层。

  2. 数据链路层封装:在数据链路层,原始数据(可能已经是封装好的网络层数据包,如IP包)被进一步封装成帧。这个过程涉及添加帧头和帧尾。帧头包含源MAC地址和目标MAC地址,以及其他控制信息,如类型字段指示上层协议类型。帧尾可能包括错误检测码,如CRC校验,以确保数据完整性。

  3. NIC(网络接口卡)处理:封装好的帧被传递给发送方的网络接口卡(NIC)。NIC是一种硬件设备,它负责将数字信号转换为能够在物理介质上传输的电信号(或光信号,如果使用光纤的话)。NIC读取帧中的物理地址(MAC地址),并根据此信息准备物理层的传输。

  4. 物理介质传输:NIC通过物理连接(如双绞线、光纤或无线电磁波)将电信号(或光信号)发送到网络中。这些信号携带着帧的全部内容,沿着网络媒介传播至下一个节点或直接到目的地。在有线网络中,信号通过铜线或光纤内部的光脉冲传输;在无线网络中,则通过空气中的无线电波传输。

  5. 接收方接收与解封装:信号到达接收方的NIC后,NIC将其转换回数字信号,并根据帧头中的信息判断是否应该接收该帧。如果是,NIC去除帧头和帧尾,提取出原始数据包,然后根据帧头中的类型字段将数据包上交给相应的上层协议处理,如网络层的IP协议。

通过这一系列步骤,帧作为数据链路层的数据传输单元,成功地携带数据穿越物理介质,从发送方传递到了接收方。

解释3:当一个数据帧通过物理介质到达接收端的网络接口卡(NIC)时,NIC会读取该帧的各个部分。其中,帧头中的一个重要字段是“类型”或“上层协议类型”字段。这个字段的值指示了封装在帧中的数据部分应当由哪一层的哪个协议来处理。简而言之,它是一个指示标签,告诉系统接下来应该把数据交给哪个上层协议栈进行进一步处理。

例如,如果帧头中的类型字段是0x0800,这通常代表该数据帧承载的是IPv4数据包。因此,NIC或者更准确地说,是数据链路层的驱动程序,会将从帧中提取出来的数据部分传递给网络层的IP协议处理模块。IP协议模块会进一步解封装数据包,检查头部信息(如源IP地址、目的IP地址),并根据需要将数据向上递交到传输层(如TCP或UDP),最终到达目标应用程序。

同样,如果类型字段是0x0806,这表示帧中封装的是ARP(地址解析协议)报文,那么这个数据就会被送到ARP处理逻辑中,用于解析IP地址到MAC地址的映射。

因此,“根据帧头中的类型字段将数据包上交给相应的上层协议处理”意味着数据链路层依据该字段的指示,执行正确的上交操作,确保数据能够沿着协议栈正确地向上传递,直至达到最终的目的应用程序。这是网络通信中一种重要的协议分用机制,确保数据在每一层都能被正确解读和处理。

解释4:封装成帧的目的:

  1. 帧定界:封装成帧是为了解决数据区分的问题。在网络中传输的数据是一连串的比特流,如果没有明确的边界标识,接收方无法知道数据从哪里开始、到哪里结束。通过在数据前后添加特定的帧头和帧尾,可以明确区分出一个个独立的帧,便于接收方识别和处理。

  2. 包含控制信息:帧头和帧尾中包含了控制信息,比如源地址、目标地址以及可能的错误检测码(如CRC校验)。这些信息对于帧的传输、路由选择、错误检测和纠正至关重要。

  3. 透明传输:数据链路层还需要处理数据的透明传输问题,即确保数据中可能出现的任何特殊字符(如帧定界符)不会被误解为帧的边界。通过特定的编码技术(如字节填充或比特填充),可以在封装时避免这种混淆。

添加源MAC地址和目标MAC地址的原因:

  1. 硬件寻址:MAC(Media Access Control)地址是网络设备的物理地址,全球唯一。在局域网中,数据帧是依据MAC地址进行传输的。源MAC地址表明了帧的发送者,而目标MAC地址则指明了帧的预期接收者。

  2. 帧的定向转发:当一个帧到达一个网络设备(如交换机或网桥)时,该设备会检查帧中的目标MAC地址,并基于这个地址决定如何转发该帧。只有当目标MAC地址匹配设备的某个接口或是在其转发表中有对应的转发项时,帧才会被转发到正确的端口。

  3. 错误检测与处理:在某些情况下,源MAC地址还可以用于错误报告和回传,帮助网络设备识别和处理错误帧。

综上,封装成帧并添加MAC地址是为了确保数据的准确无误传输,提供基本的寻址和路由功能,同时也支持网络设备高效地处理和转发数据。

5. 物理层:

在此层,数据帧被转换成电信号、光信号等物理信号,通过物理介质传输。

目标设备接收过程

  • 物理层接收信号,转换回数字信号。
  • 链路层去除帧头,检查错误,将数据包传递给网络层。
  • 网络层根据IP头部信息,将数据包路由到正确的接收应用程序。
  • 传输层检查端口号,确保数据正确交付到目标应用程序。
  • 应用层接收数据,处理后呈现给用户或执行相应操作。

仅个人认识和整理  仅供理解和参考  也欢迎大家指点和补充

  • 15
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值