当前位置: 首页 > article >正文

链路层和交换网_计算机网络

文章目录

  • 链路层和交换网
    • 链路层
      • 多路访问链路和协议
    • ARP
    • Web 页面请求的历程

链路层和交换网

target

  • 分组是如何通过构成端到端通信路径的各段链路的?
  • 网络层的数据报是怎样被封装进链路层帧的呢?
  • 不同的通信链路能够采用不同的链路层协议吗?
  • 在广播链路中传输碰撞是如何解决的?
  • 在链路层存在编址吗?
  • 链路层编址是如何与网络层编址一起运行呢?
  • 交换机和路由器之间到底有哪些差异?
  • 链路层如何实现?
  • 如何协调多个发送和接收节点对一个共享广播信道的访问?

链路层

节点node):运行链路层协议的任何设备。

链路link):沿着通信路径连接相邻节点的通信信道。

链路层的基本服务:将数据报通过单一通信链路从一个节点移动到相邻节点。提供的可能服务

  • 成帧
  • 链路接入介质访问控制Medium Access Control,MAC)协议规定了帧在链路上传输的规则,用于协调多个节点的帧传输。
  • 可靠交付:链路层的可靠交付服务通常是通过确认和重传取得的。在本地纠正一个差错,而不是通过运输层或应用层协议迫使进行端到端的数据重传。
  • 差错检测和纠正
    • 差错检验:发送节点在帧中包括差错检测比特,让接收节点进行差错检查。
    • 差错纠正:接收方不仅能检测帧中出现的比特错误,而且能够准确地确定帧中的差错出现的位置,硬件实现。

链路层是硬件和软件的结合体,是协议栈中软件和硬件交界的地方。

  • 硬件:通常链路层是在网络适配器网络接口控制器,NIC)的芯片上实现的,成帧、链路访问、错误检测……
  • 软件:组装链路层寻址信息、激活控制器硬件、相应控制器中断、处理差错条件、将数据报上传递给网络层……

在这里插入图片描述

差错检测和纠正

  • 奇偶检验
    • 一维奇偶检验:发送 d 比特信息附加一个比特使 d+1 比特中 1 的总数是偶数(偶校验)或奇数(奇校验)。只能检测不能纠错,出错至少会出现奇数个比特错误。
    • 二维奇偶校验:能检测并纠正 1bit 差错。
  • 检验和方法
  • 循环冗余检测

多路访问链路和协议

网络链路分类

  • 点对点链路:由链路一端的单个发送方和链路另一端的单个接收方组成。P2P、HDLC。
  • 广播链路:让多个发送方和接收方都连接到相同的、单一的、共享的广播信道上。当任何一个节点传输帧时,信道广播该帧,每个其它节点都收到一个副本。以太网、无线局域网。

碰撞:接收方同时收到多个帧,接收到的帧全部失效,浪费信道。

多路访问协议multiple access protocol):规范节点在它们共享的广播信道上的传输行为。

  • 信道划分协议

    • 时分多路复用(TMD
      • 消除了碰撞而且十分公平,每个节点在每个帧时间内得到了专用的传输速率 R/N bps。
      • 节点被限制于 R/N bps 的平均速率。
      • 节点必须总是等待它的传输序列中的轮次。
    • 频分多路复用(FDM
      • 消除了碰撞而且十分公平,每个节点在每个帧时间内得到了专用的传输速率 R/N bps。
      • 节点被限制于 R/N bps 的平均速率。
    • 码分多址(CDMA
      • 不同的节点能够同时传输,并且它们各自相应的接收方仍能正确接收发送方编码的数据比特(接收方需要知道发送方的编码),而不在乎其它节点的干扰传输。
  • 随机接入协议:一个传输节点总是以信道的全部速率进行发送,当有碰撞时,涉及碰撞的每个节点等待一个随机时延并且反复地重发,直到无碰撞。

    • 时隙 ALOHA

      时间被划分为时隙,节点只在时隙起点开始传输帧,节点是同步的,每个节点都知道时隙何时开始。如果在一个时隙中发生帧碰撞,所有节点在该时隙结束之前检测到碰撞事件。

      1. 当节点有一个新帧要发送时,它等到下一个时隙开始并在该时隙传输整个帧。
      2. 如果没有碰撞,成功传输。
      3. 如果碰撞,该节点在时隙结束之前检测到这次碰撞。该节点以概率 p 在后续的每个时隙中重传帧,直到无碰撞。

      成功时隙、碰撞浪费时隙、概率 p 造成未传输浪费时隙

    • ALOHA

      非时隙、完全分散的协议。

      ALOHA 和 时隙 ALOHA 中,每个节点传输都是独立的,不关心其它节点是否在传输。

      1. 当一帧首次到达(即从一个网络层数据报在发送节点从网络层传递下来),节点立刻将该帧完整地传输进广播信道。
      2. 如果碰撞,立即以概率 p 重传。
    • 载波侦听多路访问(CSMA):没有碰撞检测,出现了碰撞,传输节点也会继续完整地传输帧。

      • 载波侦听:说话之前先听。一个节点在传输前先听信道,如果另一个节点的帧正向信道上发送,节点则等待直到检测到一段时间没有传输,然后开始传输。
      • 碰撞检测:如果与他人同时开始说话,停止说话。当一个传输节点在传输时一直在侦听此信道,如果传输节点检测到另一个节点在正在传输干扰帧,传输节点就停止传输,在重复“侦听-当空闲时传输”循环之前等待一段随机时间。

      存在广播信道的端到端信道传传播时延(信号从一个节点传播到另一个节点所花费的时间),传播时延越长,载波侦听不能侦听到网络中另一个节点已经开始传输的机会就越大 ==> 所有节点都进行载波侦听,还是会发生碰撞。
      在这里插入图片描述

    • 具有碰撞检测的载波侦听多路访问(CSMA/CD

      从与广播信道相连的适配器(在节点中)分析运行过程:

      1. 适配器从网络层获得一条数据报,准备链路层帧,并将其放入帧适配器缓存中。
      2. 如果适配器侦听到信道空闲(无信号能量从信道进入适配器),它开始传输帧。在另一方面,如果适配器侦听到信道正在忙,它将等待,直到侦听到没有信号能量时才开始传输帧。
      3. 在传输过程中,适配器监视来自其它使用该广播信道的适配器的信号能量的存在。
      4. 如果适配器传输整个帧而未检测到来自其它适配器的信号能量,该适配器就完成了该帧。在另一方面,如果适配器在传输时检测到来自其它适配器的信号能量,它终止传输(即停止了传输帧)。
      5. 终止传输后,适配器等待一个随机时间量,然后返回步骤 2。

      等待的随机时间多大?二进制指数后退算法。当传输一个帧时,在该帧经历一个一连串的 n 此碰撞后,节点随机地从{0, 1, 2, ……, 2n-1}中选择一个 K 值,等待 K * 512 比特时间。

  • 轮流协议

    • 轮询协议(polling protocol
    • 令牌传递协议(token-passing protocol

ARP

3 种类型的地址:应用层的主机名、网络层的 IP 地址、链路层的 MAC 地址。

主机和路由器的适配器(网络接口)具有链路层地址(LAN 地址、物理地址、MAC 地址)。 链路层交换机的任务是在主机和路由器之间承载数据报,主机或路由器不必明确地将帧寻址到其间的交换机。

DNS 为在因特网中任何地方的主机解析主机名;ARP 只为在同一个子网上的主机和路由器接口解析 IP 地址。

地址解析协议Address Resolution Protocol,ARP)。

每台主机和路由器在其内存中具有一个 ARP 表,IP 地址,MAC 地址,TTL

  1. 广播 ARP 查询分组(IP:目的 IP 地址,MAC:FF-FF-FF-FF-FF-FF
  2. 所有适配器接受 ARP 查询分组,检查 IP 是否匹配
  3. 匹配的主机向源主机发送 ARP 响应分组(IP:源 IP 地址,MAC:自身 MAC 地址

Web 页面请求的历程

在这里插入图片描述

启动电脑,用以太网连接电脑和学校的以太网交换机,交换机与学校的路由器相连,学校的路由器与 ISP(comcast.net)相连。comcast.net 为学校提供 DNS 服务(DNS 服务器驻留在 Comcast 网络中)。假设 DNS 服务器运行在路由器中。

  1. 准备:DHCP、UDP、IP 和以太网

    运行 DHCP 协议,以从本地 DHCP 服务器获得一个 IP 地址以及其它信息。

    1. 电脑上的操作系统生成一个 DHCP 请求报文,并将这个报文放入具有目的端口 67(DHCP 服务器)和源端口 68(DHCP 客户)的 UDP报文段,该 UDP 报文段则被放置在一个具有广播 IP 目的地址(255.255.255.255)和源 IP 地址 0.0.0.0 的 IP 数据报中,因为电脑还没有一个 IP 地址。
    2. 包含 DHCP 请求报文的 IP 数据报则被放置在以太网帧中。该以太网帧具有目的 MAC 地址 FF:FF:FF:FF:FF:FF,使该帧将广播到与交换机连接的所有设备(如果顺利的话也包括 DHCP 服务器);该帧的源 MAC 地址是电脑的 MAC 地址 00:16:D3:23:68:8A。
    3. 包含 DHCP 请求的广播以太网帧是第一个由电脑发送到以太网交换机的帧。该交换机在所有的出端口广播入帧,包括连接到路由器的端口。
    4. 路由器在它的具有 MAC 地址 00:22:6B:45:1F:1B 的接口收到该广播以太网帧,该帧中包含 DHCP 请求,并且从该以太网帧中抽取出 IP 数据报。该数据报的广播 IP 目的地址指示了这个 IP 数据报应当由在该节点的高层协议处理,因此该数据报的载荷(一个 UDP 报文段被分解向上到达 UDP,DHCP 请求报文从此 UDP 报文段中抽取出来。此时 DHCP 服务器有了 DHCP 请求报文。
    5. 假设运行在路由器中的 DHCP 服务器能够以 CIDR 块 68.85.2.0/24 分配 IP 地址。学校内使用的所有 IP 地址都在 Comcast 的地址块中,假设 DHCP 服务器分配地址 68.85.2.101 给电脑。DHCP 服务器生成包含这个 IP 地址(68.85.2.101)以及 DNS 服务器的 IP 地址(68.87.71.226)、默认网关路由器的 IP 地址(68.85.2.1)和子网块(68.85.2.0/24)(等价为“网络掩码”)的一个 DHCP ACK 报文。该 DHCP 报文被放入一个 UDP 报文段中,UDP 报文段被放入一个 IP 数据报中,IP 数据报再被放入一个以太网帧中。这个以太网帧的源 MAC 地址是路由器连到归属网络接口的地址(00:22:6B:45:1F:1B),目的 MAC 地址是电脑的 MAC 地址(00:16:D3:23:68:8A)。
    6. 包含 DHCP ACK 的以太网帧由路由器发送给交换机。因为交换机是自学习的,并且先前电脑收到(包含 DHCP 请求的)以太网帧,所以该交换机知道寻址到 00:16:D3:23:68:8A 的帧仅从通向电脑的输出端口转发。
    7. 电脑接收到包含 DHCP ACK 的以太网帧,从该以太网帧中抽取 IP 数据报,从 IP 数据报中抽取 UDP 报文段,从 UDP 报文段抽取 DHCP ACK 报文。电脑的 DHCP 客户则记录它的 IP 地址和它的 DNS 服务器的 IP地址。它还在其 IP 转发表中安装默认网关的地址。电脑将从该默认网关发送目的地址为其子网 68.85.2.0/24 以外的所有数据报。此时,电脑已经初始化好它的网络组件,并准备开始处理 Web 网页获取。(注意:DHCP 四个步骤中仅有最后两个 DHCP 步骤是实际必要的
  2. 准备:DNS 和 ARP

    当电脑将 www.google.com 的 URL 输入到 Web 浏览器时,经过一长串事件,最终谷歌的主页将显示在 Web 浏览器上。电脑的 Web 浏览器通过生成一个 TCP 套节字开始该过程,套接字用于向 www.google.com 发送 HTTP 请求。电脑需要知道 www.google.com 的 IP 地址。

    运行 DNS 协议,获取 www.google.com 的 IP 地址。

    1. 电脑的操作系统生成一个 DNS 查询报文,将字符串 www.google.com 放入 DNS 报文的问题段中。 该 DNS 报文则被放置在一个具有 53 号(DNS 服务器)目的端口的 UDP 报文段中。该 UDP 报文段则被放入具有 IP 目的地址 68:87:71:226(DNS 服务器地址)和源 IP 地址 68:85:2:101 的 IP 数据报中。
    2. 电脑则将包含 DNS 请求报文的数据报放入一个以太网帧中。该帧将发送(在链路层寻址)到学校网络中的网关路由器。然而,电脑在第 5 步中 DHCP ACK 报文知道了学校网关路由器的 IP 地址(68:85:2:1),但仍不知道该网关路由器的 MAC 地址。为了获得该网关路由器的 MAC 地址,电脑将需要使用 ARP 协议
    3. 电脑生成一个具有目的 IP 地址 68:85:2:1(默认网关)的 ARP 查询报文,并将该 ARP 报文放置在一个具有广播目的地址(FF:FF:FF:FF:FF:FF)的以太网帧中,并向交换机发送该以太网帧,交换机将该帧交付给所有连接的设备,包括网关路由器。
    4. 网关路由器在通往学校网络的接口上接收到该 ARP 查询报文的帧,发现在 ARP 报文中目标 IP 地址 68:85:2:1 匹配其接口的 IP 地址。网关路由器因此准备一个 ARP 回答,指示它的 MAC 地址 00:22:6B:45:1F:1B 对应 IP 地址 68:85:2:1。它将 ARP 回答放入在一个以太网帧中,其目的地址为 00:16:D3:23:68:8A(电脑),并向交换机发送该帧,再由交换机将帧交付给电脑。
    5. 电脑接收包含 ARP 回答报文的帧,并从 ARP 回答报文中抽取网关路由器的 MAC 地址(00:22:6B:45:1F:1B)。
    6. 电脑现在能够使包含 DNS 查询的以太网帧寻址到网关路由器的 MAC 地址。注意到在该帧中的 IP 数据报具有 IP 目的地址 68:87:71:226(DNS 服务器),而该帧具有目的地址 00:22:6B:45:1F:1B(网关路由器)。电脑向交换机发送该帧,交换机将该帧交付给网关路由器。
  3. 准备:域内路由选择到 DNS 服务器

    1. 网关路由器接收该帧并抽取包含 DNS 查询的 IP 数据报。路由器查找该数据报的目的地址(68:87:71:226),并根据其转发表决定该数据报应该发送到上图的 Comcast 网络中最左边的路由器。IP 数据报放置在链路层帧中,该链路适合将学校路由器连接到最左边 Comcast 路由器,并且该帧经这条链路发送。
    2. 在 Comcast 网络中最左边的路由器接收到该帧,抽取 IP 数据报,检查该数据报的目的地址(68:87:71:226),并根据其转发表确定出接口,经过该接口朝着 DNS 服务器转发数据报,而转发表已根据 Comcast 的域内协议(如 RIP 、OSPF、IS-IS)以及因特网的域间协议 BGP 所填写。
    3. 最终包含 DNS 查询的 IP 数据报到达了 DNS 服务器。DNS 服务器抽取出 DNS 查询报文,在它的 DNS 数据库中查找名字 www.google.com,找到包含对应 www.google.com 的 IP 地址(64:233:169:105)的 DNS 源记录假设它当前缓存在 DNS 服务器中)。这种缓存数据源于google.com 的权威 DNS 服务器,该 DNS 服务器形成了一个包含这种主机名到 IP 地址映射的 DNS 回答报文,将该 DNS 回答报文放入 UDP 报文段中,该报文段放入寻址到电脑的 IP 数据报中。该数据报通过 Comcast 网络反向转发到学校的路由器,并从这里经过以太网交换机到电脑。
    4. 电脑从 DNS 报文抽取出服务器 www.google.com 的 IP 地址。最终,在大量工作后,电脑此时准备接触 www.google.com 服务器。
  4. Web 客户-服务器交互:TCP 和 HTTP

    1. 电脑已经有了 www.google.com 的 IP 地址,它能够生成 TCP 套节字,该套接字将用于向 www.google.com 发送 HTTP GET 报文。当电脑生成 TCP 套接字时,在电脑中的 TCP 必须首先与 www.google.com 中的 TCP 执行三次握手。电脑首先生成一个具有目的端口 80(针对 HTTP 的)的 TCP SYN 报文段,将该 TCP 报文段放置在具有目的 IP 地址 64.233.169.105(www.google.com)的 IP 数据报中,将该数据报放置在 MAC 地址为 00:22:6B:45:1F:1B(网关路由器)的帧中,并向交换机发送该帧。
    2. 在学校网络、Comcast 网络和谷歌网络中的路由器朝着 www.google.com 转发包含 TCP SYN 的数据报,使用每台路由器中的转发表,如前面步骤 14-16 那样。支配分组经 Comcast 和谷歌网络之间域间链路转发的路由器转发表项,是由 BGP 协议决定的。
    3. 最终,包含 TCP SYN 的数据报到达 www.google.com。从数据报取出 TCP SYN 报文并分解到与端口 80 相联系的欢迎套接字。对于谷歌 HTTP 服务器和电脑之间的 TCP 连接生成一个连接套接字。产生一个 TCP SYNACK 报文段,将其放入向电脑寻址的一个数据报中,最后放入链路层帧中,该链路适合将 www.google.com 连接到其第一跳路由器。
    4. 包含 TCP SYNACK 报文段的数据报通过谷歌、Comcast 和学校网络,最终到达电脑的以太网卡。数据报在操作系统中分解到步骤 18 生成的 TCP 套接字,从而进入连接状态。
    5. 借助于电脑上的套接字,现在准备向 www.google.com 发送字节了,电脑浏览器生成包含要获取的 URL 的 HTTP GET 报文。HTTP GET 报文则写入套接字,其中 GET 报文成为了一个 TCP 报文段的载荷。该 TCP 报文段放置进一个数据报中,并交付到 www.google.com,如前面步骤 18-20 所述。
    6. 在 www.google.com 的 HTTP 服务器从 TCP 套接字读取 HTTP GET 报文,生成一个 HTTP 响应报文,将请求的 Web 页面放入 HTTP 响应体中,并将报文发送进 TCP 套接字中。
    7. 包含 HTTP 回答报文的数据报通过谷歌、Comcast 和学校网络转发,到达电脑。电脑的 Web 浏览器程序从套接字读取 HTTP 响应,从 HTTP 响应中抽取 Web 页面的 html,并最终显示了 Web 页面。

参考:

  • 《计算机网络:自顶向下方法》

http://www.kler.cn/a/305340.html

相关文章:

  • 大模型时代,呼叫中心部门如何自建一套大模型在线客服?
  • 建筑施工特种作业人员安全生产知识试题
  • HBase理论_背景特点及数据单元及与Hive对比
  • Nuxt 版本 2 和 版本 3 的区别
  • Appium配置2024.11.12
  • 十三、注解配置SpringMVC
  • vue+el-table 可输入表格使用上下键进行input框切换
  • Qt常用控件——QSpinBox
  • STM32的寄存器深度解析
  • Mysql的高级查询:SQL关联查询(内连接/外连接/自连接)/子查询
  • uni-app和Node.js使用uni-push2.0实现通知栏消息推送功能
  • Centos挂载和删除nfs
  • python选择排序算法
  • 基于Java+Mysql实现(web)大型企业管理系统
  • API安全测试 | Postman + BurpSuite 配置证书代理
  • chapter14-集合——(List)——day17
  • 828华为云征文|部署在线文件管理器 Spacedrive
  • 大数据-132 - Flink SQL 基本介绍 与 HelloWorld案例
  • 【LLM多模态】CogVideoX文生视频模型结构和训练过程
  • 【openGauss】检查工具gs_check,gs_checkperf的应用
  • Redisson 异步释放锁
  • 什么是485无线通信
  • 磁盘写操作压力测试工具的设计与实现
  • ChatGLM3模型搭建教程
  • OpenCV结构分析与形状描述符(20)计算一个包围给定点集的最小外接圆函数minEnclosingCircle()的使用
  • 研1日记12