《网络是怎样连接的》(二.2)

这篇具有很好参考价值的文章主要介绍了《网络是怎样连接的》(二.2)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

(6条消息) 《网络是怎样连接的》(二.1)_qq_38480311的博客-CSDN博客

本文主要取材于  《网络是怎样连接的》 第二章 2.5 2.6章节。

目录

简述: 本文的主要内容是 以太网的收发操作 和 UDP协议的收发操作。

IP与以太网的包收发操作

包是什么构成的?

 包是如何转发 的?

路由器和集线器的分工?区别?

IP包的传输过程

IP和MAC 头部如何生成?

如何查询MAC 地址?使用ARP协议

包如何转化为光电信号?网卡机制

UDP协议 

UDP协议和TCP协议最大的不同是什么?

UDP适合的场景?

简述: 本文的主要内容是 以太网的收发操作 和 UDP协议的收发操作。

TCP模块给包加入TCP头部,并委托IP模块给包加上IP 和MAC 头部,IP包就生成了。IP包生成之后由网卡 MAC模块会将包从缓冲区中取出,并在开头加上报头和起始帧分界符,在末尾加上用于检测错误的帧校验序列,然后转化为通用光电信号,再。由PHY(MAU)模块转换成可在网线中传输的格式,并通过网线发送出去。

包在转发过程中会经过集线器和路由器,路由器使用IP协议,集线器使用以太网即MAC协议。在转发的途中,包头的IP不会改变,但是包头的MAC地址会发生改变。简单理解IP为端到端,目的IP是不会变的,但是中间的中转节点设备即MAC地址会改变。(集线器和路由第三章会详解)

到达目的地之后,MAC模块再从头开始将信号转换为数字信息,检查FCS(即校验包的对错), 再检查MAC地址是否相符,不符丢弃,相符网卡通知计算机收到包了,然后IP模块再检查IP地址是否相符以及是否分片(若分片等包到齐组装),将数据缓存下来等应用调取。

UDP是用于发短包,没有TCP的接收确认、窗口等机制,因此在收发数据之前也不需要交换控制信息,也就是说不需要建立和断开连接的步骤,只是负责发送包而已,遇到错误或者丢包也一概不管。

IP与以太网的包收发操作

IP包的结构

包是什么构成的?

包是由头部数据两部分构成的(图2.14(a))。头部包含目的地址等控制信息,大家可以把它理解为快递包裹的面单;头部后面就是委托方要发送给对方的数据,也就相当于快递包裹里的货物。

《网络是怎样连接的》(二.2),# 网络是怎样连接的,网络

 包是如何转发 的?

转发设备会根据头部中的信息判断接下来应该发往哪里。这个过程需要用到一张表,查表的结果是“目标地址为××××的包应该发到××××号线路”,那么转发设备就会把这个包发到××××号线路去。接下来,包在向目的地移动的过程中,又会到达下一个转发设备,然后又会按照同样的方式被发往下一个转发设备

《网络是怎样连接的》(二.2),# 网络是怎样连接的,网络

路由器和集线器的分工?区别?

 网络中有路由器集线器两种不同的转发设备,它们在传输网络包时有着各自的分工。

(1)路由器需要使用IP头部, 按照IP 协议传输包,根据目标地址判断下一个路由器的位置,在包的传输过程中,目标IP地址是不会改变的。

(2)集线器需要使用MAC头部,按照 以太网协议传输包,负责在子网中将网络包传输到下一个路由,在包传输中目标MAC 地址会改变。

IP包的传输过程

《网络是怎样连接的》(二.2),# 网络是怎样连接的,网络

1. 发送方将包的目的P地址写入IP头部中,IP协议就可以根据这一地址查找包的传输方向,从而找到下一个路由器的位置,也就是图2.16中的路由器R1。接下来,IP协议会委托以太网协议将包传输过去。这时,IP协议会查找下一个路由器的以太网地址(MAC地址),并将这个地址写入MAC头部中。这样一来,以太网协议就知道要将这个包发到哪一个路由器上了。

网络包在传输过程中(图2.16①)会经过集线器,集线器是根据以太网协议工作的设备。为了判断包接下来应该向什么地方传输,集线器里有一张表(用于以太网协议的表),可根据以太网头部中记录的目的地信息查出相应的传输方向。这张图中只有一个集线器,当存在多个集线器时,网络包会按顺序逐一通过这些集线器进行传输。

接下来,包会到达下一个路由器(图2.16②)。路由器中有一张IP协议的表,可根据这张表以及IP头部中记录的目的地信息查出接下来应该发往哪个路由器。为了将包发到下一个路由器,我们还需要查出下一个路由器的MAC地址,并记录到MAC头部中,大家可以理解为改写了MAC头部[插图]。这样,网络包就又被发往下一个节点了。

自我理解:可以把IP看作 一个端到端的快递,即 快递的起点和终点。把每一个路由器看作快递的中转点。在运输过程中,寄件人和收件人即IP包的发送地址和收件地址是固定的,不会改变的,但是经过的中转点是会发生改变的。而中转点地址是以MAC地址识别的,每中转一次,下一个目的中转点 都会改变,因此 MAC地址是会改变的。

IP和MAC 头部如何生成?

包的发送一开始是TCP 模块委托IP模块,TCP 模块会在包的开头加入TCP头部,TCP模块还需要指定通信对象的IP地址,也就是需要写清楚“将什么内容发给谁”,然后传递给IP模块。IP模块会添加IP头部和MAC头部这两种头部。接下来,封装好的包会被交给网络硬件(网络硬件可以理解为网卡,有各种类型)(图2.17中的“②发送”),例如以太网、无线局域网等。包送达对方之后,对方会作出响应。返回的包也会通过转发设备发送回来,然后我们需要接收这个包。TCP会有不同的包, 但是无论要收发的包是控制包还是数据包,IP对各种类型的包的收发操作都是相同的。

《网络是怎样连接的》(二.2),# 网络是怎样连接的,网络

 

IP地址实际上并不是分配给计算机的,而是分配给网卡的,因此当计算机上存在多块网卡时,每一块网卡都会有自己的IP地址。很多服务器上都会安装多块网卡,这时一台计算机就有多个IP地址,在填写发送方IP地址时就需要判断到底应该填写哪个地址。

MAC头部的开头是接收方和发送方的MAC地址,它们和IP头部中的接收方和发送方IP地址的功能差不多,只不过IP地址的长度为32比特,而MAC地址为48比特。

如何查询MAC 地址?使用ARP协议

ARP就是利用广播对所有设备提问:“××这个IP地址是谁的?请把你的MAC地址告诉我。”然后就会有人回答:“这个IP地址是我的,我的MAC地址是××××。”

将查询结果放到一块叫作ARP缓存的内存空间中留着以后用。在发送包时,先查询一下ARP缓存,如果其中已经保存了对方的MAC地址,就不需要发送ARP查询,直接使用ARP缓存中的地址,而当ARP缓存中不存在对方MAC地址时,则发送ARP查询。

包如何转化为光电信号?网卡机制

IP生成的网络包只是存放在内存中的一串数字信息,需要将数字信息转换为电或光信号,才能在网线上传输,也就是说,这才是真正的数据发送过程。

负责执行这一操作的是网卡,但网卡也无法单独工作,要控制网卡还需要网卡驱动程序。网卡的ROM中保存着全世界唯一的MAC地址,这是在生产网卡时写入的,将这个值读出之后就可以对MAC模块进行设置。

《网络是怎样连接的》(二.2),# 网络是怎样连接的,网络

 网卡结构

网卡驱动从IP模块获取包之后,会将其复制到网卡内的缓冲区中,然后向MAC模块发送发送包的命令。MAC模块会将包从缓冲区中取出,并在开头加上报头和起始帧分界符,在末尾加上用于检测错误的帧校验序列(图2.24)。

《网络是怎样连接的》(二.2),# 网络是怎样连接的,网络

 报头是一串像10101010…这样1和0交替出现的比特序列,长度为56比特,它的作用是确定包的读取时机。当这些1010的比特序列被转换成电信号后,会形成如图2.25这样的波形。

《网络是怎样连接的》(二.2),# 网络是怎样连接的,网络

 用电信号来表达数字信息时,我们需要让0和1两种比特分别对应特定的电压和电流;接收通过测量信号中的电压和电流变化,还原出0和1两种比特的值。当信号连续为1或连续为0时,比特之间的界限就会消失,可将时钟信号叠加进去帮助判断出比特之间的界限。

《网络是怎样连接的》(二.2),# 网络是怎样连接的,网络

 发送信号的操作分为两种,一种是使用集线器的半双工模式,另一种是使用交换机的全双工[插图]模式。在半双工模式中,为了避免信号碰撞,首先要判断网线中是否存在其他设备发送的信号。如果有,则需要等待该信号传输完毕,因为如果在有信号时再发送一组信号,两组信号就会发生碰撞。首先,MAC模块从报头开始将数字信息按每个比特转换成电信号,然后由PHY,或者叫MAU的信号收发模块发送出去[插图]。在这里,将数字信息转换为电信号的速率就是网络的传输速率,例如每秒将10Mbit的数字信息转换为电信号发送出去,则速率就是10 Mbit/s。

网卡的MAC模块生成通用信号,然后由PHY(MAU)模块转换成可在网线中传输的格式,并通过网线发送出去。以太网不会确认发送的信号对方有没有收到。根据以太网的规格,两台设备之间的网线不能超过100米。

在发送信号的过程中,有很小的可能性出现多台设备同时进行发送操作的情况。如果有其他设备同时发送信号,这些信号就会通过接收线路传进来。在使用集线器的半双工模式中,一旦发生这种情况,两组信号就会相互叠加,无法区分,这就是所谓的信号碰撞。这种情况下,继续发送信号是没有意义的,因此发送操作会终止。为了通知其他设备当前线路已发生碰撞,还会发送一段时间的阻塞信号,然后所有的发送操作会全部停止。

接收返回包

在使用集线器的半双工模式以太网中,一台设备发送的信号会到达连接在集线器上的所有设备。PHY (MAU)模块会将信号转换成通用格式并发送给MAC模块,MAC模块再从头开始将信号转换为数字信息,并存放到缓冲区中。当到达信号的末尾时,还需要检查FCS。如果FCS校验没有问题,接下来就要看一下MAC头部中接收方MAC地址与网卡在初始化时分配给自己的MAC地址是否一致,一致则放在缓存区,否则丢弃。MAC模块工作完成,网卡会通知计算机收到了一个包。

  • 当网卡发起中断时,就会自动调用网卡驱动了。网卡驱动被中断处理程序调用后,会从网卡的缓冲区中取出收到的包,并通过MAC头部中的以太类型字段判断协议的类型。
  • 接下来就轮到IP模块先开始工作了,第一步是检查IP头部,确认格式是否正确。如果格式没有问题,下一步就是查看接收方IP地址,若错误,客户端计算机不负责对包进行转发,IP模块会通过ICMP消息将错误告知发送方。如果接收方IP地址正确,则这个包会被接收下来,这时还需要完成另一项工作。
  • IP协议有一个叫作分片的功能(分片简单理解大包被切分为了小包)当收到分片的包时,IP模块会将其暂存在内部的内存空间中,然后等待IP头部中具有相同ID的包全部到达,这是因为同一个包的所有分片都具有相同的ID。IP头部还有一个分片偏移量(fragment offset)字段,它表示当前分片在整个包中所处的位置。根据这些信息,在所有分片全部收到之后,就可以将它们还原成原始的包,这个操作叫作分片重组
  • IP模块工作结束 ,TCP模块会根据IP头部中的接收方和发送方IP地址,以及TCP头部中的接收方和发送方端口号来查找对应的套接字。找到套接字,确认返回包,缓存数据等待应用过来取数据,结束。

UDP协议 

UDP协议和TCP协议最大的不同是什么?

TCP需要将数据高效且可靠地发送给对方,需要建立和断开连接,需要确认对方是否收到了我们发送的数据,若没有收到需要重发一遍。

UDP 不需要建立和断开连接,UDP的数据比较小,一般一个包就能装下,即使发送失败再重发这一个包就好了 。发送了数据,对方一般都会给出回复,只要将回复的数据当作接收确认就行了,也不需要专门的接收确认包。

UDP适合的场景?

像DNS查询等交换控制信息的操作基本上都可以在一个包的大小范围内解决,这种场景中就可以用UDP来代替TCP。

发送音频和视频数据的时候。音频和视频数据必须在规定的时间内送达,一旦送达晚了,就会错过播放时机,导致声音和图像卡顿。在这些无需重发数据,或者是重发了也没什么意义的情况下,使用UDP发送数据的效率会更高。文章来源地址https://www.toymoban.com/news/detail-627804.html

到了这里,关于《网络是怎样连接的》(二.2)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【好书精读】网络是怎样连接的 向 DNS 服务器查询 Web 服务器的 IP 地址

    (该图由AI制作 学习AI绘图 联系我) 目录 IP 地址的基本知识 实际的 IP 地址 域名和 IP 地址并用的理由  Socket 库提供查询 IP 地址的功能 通过解析器向 DNS 服务器发出查询 解析器的内部原理 生成 HTTP 消息 根据域名查询 IP 地址 委托操作系统 消息发送给 Web 服务器 在委托操作

    2024年02月11日
    浏览(35)
  • 电脑怎样安装宽带连接的图文步骤

    有许多电脑新手朋友刚买了电脑,却不知道怎么装宽带连接,这个安装宽带的程序里除了叫电信营业厅的工作人员上门来帮你安装机器设备外,还需要通过自己动手来设置连接,下面将为你详细讲解了电脑怎么装宽带连接的全步骤: 怎样安装宽带连接图文详解: \\\"网上邻居

    2024年02月05日
    浏览(33)
  • SpringBoot 是怎样连接数据库的

    Spring Boot 是一款流行的 Java 开发框架,它可以轻松地连接各种类型的数据库,包括关系型数据库和非关系型数据库。本文将介绍 Spring Boot 是如何连接数据库的,包括其原理和代码示例。 Spring Boot 通过使用 Spring Data JPA 来连接数据库。Spring Data JPA 是 Spring Data 的一部分,是一个

    2024年02月09日
    浏览(29)
  • 怎样看数据库连接等待的进程

    要查看数据库连接等待的进程,您需要登录到数据库管理系统,并执行相应的查询或命令来查看当前的数据库连接和连接状态。具体的方法取决于您使用的数据库类型。以下是几种常见数据库的示例: MySQL: 使用以下命令查看当前连接的状态和等待的进程: SHOW PROCESSLIST; 这将

    2024年02月07日
    浏览(33)
  • 电脑怎样连接打印机?分享4个简单操作!

    为了更方便学习,我买了一个打印机来打印需要用的资料,但是操作了半天还是没连接上,想请问一下有经验的朋友是怎么将打印机与电脑进行连接的呢? 在现代人的工作和生活中,打印机是一个重要的设备。我们可以利用打印机进行资料、文件等的打印。但是也会有很多朋

    2024年02月17日
    浏览(29)
  • SpringBoot 是怎样连接 MySql 数据库的

    Spring Boot 是一款流行的 Java 开发框架,它可以轻松地连接各种类型的数据库,包括关系型数据库和非关系型数据库。本文将介绍 Spring Boot 是如何连接数据库的,包括其原理和代码示例。 Spring Boot 通过使用 Spring Data JPA 来连接数据库。Spring Data JPA 是 Spring Data 的一部分,是一个

    2024年02月08日
    浏览(32)
  • USB服务器是怎样解决加密狗连接和管理问题的?效果如何?

    在数字化时代,加密狗作为保护软件知识产权和企业数据安全的重要工具,已经被广泛应用于各个行业。然而,加密狗的使用存在诸多问题,如无法在虚拟机环境中远程连接、分散管理、易丢失等,给企业的运营带来了不小的困扰。 在这样的背景下,USB服务器应运而生,为加

    2024年02月22日
    浏览(28)
  • 13回归网络:HTTP/2是怎样的网络协议?

    本篇文章我们先放下实践,回归网络,深入gRPC底层的HTTP/2协议,去探究一下框架底层网络协议的原理,提升对高性能网络协议的认知,相信读完这篇文章以后,我们就可以了解HTTP/2有哪些优势,为什么gRPC要使用HTTP/2作为底层的传输协议。 在众多研究HTTP/2的博客和资料中,最

    2023年04月11日
    浏览(23)
  • 【深度学习】教你怎样远程连接云服务器跑自己本地电脑上的代码

    自己要跑的代码包 本地电脑上打开、调试代码的工具----------本文使用PyCharm 远程连接用的深度学习云服务器环境------------本文使用AuToDL这款AI服务器(推荐使用,实惠好用) 自己用到的代码包如下: 用PyCharm打开代码包,如下: 点击‘文件’---- ‘设置’----------- ‘工具’

    2024年02月05日
    浏览(42)
  • 确定性网络技术怎样实现网络的可靠性?

    确定性网络技术通过采用特定的协议、机制和策略,有助于提高网络的可靠性。本文通过一些关键的方面,来说明确定性网络技术如何实现这一目标。 时钟同步机制是确定性网络中的核心角色。为了实现高度可靠的通信,需要采用先进的时钟同步技术,例如像IEEE 1588 和 802

    2024年01月21日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包