【计算机网络】内容整理

概述

分组交换

分组交换则采用存储转发(整个包必须到达路由器,然后才能在下一个链路上传输)技术。

在发送端,先把较长的报文划分成较短的、固定长度的数据段。

电路交换

在端系统间通信会话期间,预留了端系统间沿路径通信所需要的资源(缓存、链路传输速率)

  1. 建立连接:建立一条专用的物理通路,以保证双方通话时所需的通信资源在通信时不会被其他用户占用;
  2. 通信:主叫和被叫双方就能互相通电话;
  3. 释放连接:释放刚才使用的这条专用的物理通路(释放刚才占用的所有通信资源)。

时延计算


吞吐量

应用层

体系结构

C/S

客户(client)和服务器(server)都是指通信中所涉及的两个应用进程。

客户-服务器方式所描述的是进程之间服务和被服务的关系。

客户是服务的请求方,服务器是服务的提供方。

服务请求方和服务提供方都要使用网络核心部分所提供的服务。

P2P

没有永远在线的服务器

任意终端系统直接通信

对等方向其他对等方请求服务,向其他对等方提供服务

对等体间歇连接并更改IP地址

Socket

进程间通信利用套接字(Socket)发送和接受消息来实现

URL

统一资源定位器

<协议>://<主机>:<端口>/<路径>

HTTP

超文本传输协议

基于web的应用层协议

C/S结构

  • client-----browser:请求接受和展示web对象
  • server-----Web server:响应客户的请求,发送对象

连接

  • 非持续连接

    • 每个TCP连接最多发送一个对象然后关闭连接
    • 多个对象需要多个TCP连接
    • HTTP1.0版本使用非持续连接
      缺点:
      每个对象需要两个RTT
      每个TCP连接有开销
      浏览器经常打开多个并行TCP连接来获取网页所需的对象
  • 持续连接

    • 客户端和服务器之间的单个TCP连接可以传输多个对象
    • HTTP1.1版本使用持续连接
  1. 非流水线
  • 客户在收到前一个响应后才能发出
    下一个请求。
  • 这比非持续连接的两倍RTT的开销节省了建立TCP连接所需的一个RTT时间。
  • 服务器在发送完一个对象后,其TCP连接就处于空闲状态,浪费了服务器资源。
  1. 流水线
  • 服务器在发送响应后保持连
    接打开
  • 同一客户机/服务器之间的后续HTTP请求和响应报文通过已打开的TCP连接发送
  • 客户机在遇到被引用对象时立即发送请求
  • 对于所有被引用的对象,只有一个RTT

响应时间

RTT(往返时延):从客户机发送一个很

小的包到服务器并返回所经历的时间

HTTP响应时间:

  • 发起、建立TCP链接需要一个RTT
  • 发送HTTP请求消息到HTTP相应消息的前几个字节到达需要一个RTT
  • 文件发送时延
    非持续HTTP响应时间=2RTT+文件发送时延

请求报文


请求方法:

响应报文


首部

通用首部

Cache-Control:通过指定指令来实现缓存机制。

  • max-age=<\seconds>设置缓存存储的最大周期,超过这个时间缓存被认为过期
  • 指定no-cache或max-age=0表示客户端可以缓存资源,每次使用缓存资源前都必须重新验证其有效性。
    Connection :决定当前的事务完成后,是否会关闭网络连接 "keep-alive""closed"
    Keep-Alive :允许消息发送者暗示连接的状态,还可以用来设置超时时长和最大请求数
    Date:表明创建HTTP报文的日期和时间。其中时间GMT代表格林威治标准时间
请求头

Host :指明了请求将要发送到的服务器主机名和端口号(可选)
User-Agent :指明用户代理,即浏览器的类型
Accept :列举用户代理希望接收的媒体资源的MIME类型
Accept-Language :用来提示用户期望获得的文档自然语言的优先顺序
Accept-Encoding :明确说明了(接收端)可以接受的内容编码形式(所支持的压缩算法)
Accept-Charset:用于告知服务器该客户代理可以理解何种形式的字符编码(如今UTF-8编码已经得到了广泛的支持,成为首选的字符编码类型。为了通过减少基于配置信息的信息熵来更好地保护隐私信息,大多数浏览器会将Accept-Charset首部移除:Internet Explorer8、Safari5、0pera11以及Firefox10都已经不再发送该首部。)

响应头

Server :包含了处理请求的源头服务器所用到的软件相关信息
Last-Modified :包含源头服务器认定的资源做出修改的日期及时间
ETag :资源的特定版本的标识符。这可以让缓存更高效,并节省带宽,因为如果内

容没有改变,Wb服务器不需要发送完整的响应。如果给定URL中的资源更改,则一

定要生成新的Etag值
Accept--Ranges :标识自身支持范围请求,字段的具体值用于定义范围请求的单位
Expires :响应头包含日期/时间,即在此时候之后,响应过期。如果在Cache

Controll响应头设置了"max-age"或者"s-max-age"指令,那么Expires头会被

忽略。

实体头

Content-Type :用于指示资源的MIME类型(媒体类型)
Content-Length :用来指明发送给接收方的消息主体的大小,十进制数字表示的八位字节的数目
Content-Language :用来说明访问者希望采用的语言或语言组合,这个首部还可以用来描述不同媒体类型的文件,而不单单局限于文本型文档。
Content-Encoding :用于对特定媒体类型的数据进行压缩。当这个首部出现的时候,它的值表示消息主体进行了何种方式的内容编码转换。这个消息首部用来告知客户端应该怎样解码才能获取在Content-Type中标示

的媒体类型内容。

响应状态码

1xx表示通知信息的,如请求收到了或正在进行处理。

2xx表示成功,如接受或知道了。

3xx表示重定向,表示要完成请求还必须采取进一步的行动。

301永久移动,域名重定向

302临时性重定向,资源被分配到新的URI,希望用户本次可以使用新的URI访问

303请求对应的资源存在另一个URI,应使用GET方法重定向获取资源。

304找到资源了,但是不符合条件,一般用于缓存,代表缓存资源不符合需求

307临时性重定向,与302有着相同的含义,不会从P0ST方法换成GET方法

客户端响应:

4xx表示客户的差错,如请求中有错误的语法或不能完成

400 Bad Request

404 Not Found

服务器端响应:

5xx表示服务器的差错,如服务器失效无法完成请求

505 HTTP Version Not Supported

  • Cookie实际上是一小段的文本信息。
  • 客户端请求服务器,如果服务器需要记录该用户状态,就使用responsel向客户端浏览器颁发一个Cookie
  • 客户端浏览器会把Cookie保存起来。
  • 当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。
  • 服务器检查该Cookie,以此来辨认用户状态。
  • 服务器还可以根据需要修改Cookie的内容

Session

  • Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式(内存中、redis、Memcached)记录在服务器上。这就是Session.客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。
  • Session基于cookie的,服务器会把一个sessionid以cookie形式种植给浏览器。以后客户端在访问服务端时候,http请求会带着sessionid,服务器会先检查这个客户端的请求里是否已包含了一个session标识(sessionid)。如果已包含这个 sessionId,则说明以前已经为此客户端创建过session,服务器就按照sessionId把这个session检索出来使用。

Web缓存


条件GET

HTTP2

HTTP1.1发送一个Web页面的所有对象存在队首阻塞。HTTP2把每个报文分成小帧交错传输,解决阻塞。

邮件服务

SMTP

基于TCP在客户和服务器之间传递email,端口号为:25

直接传输:发送服务器到接收服务器

传输的三个阶段

  • 握手(greeting)
  • 传输消息
  • 关闭
    命令/响应交互式(HTTP)
  • 命令:ASCII文本
  • 响应:状态码和语句
    email消息只包含7位的ASCII

邮件访问协议

DNS

基于UDP

迭代查询

被查询服务器返回域名解析服务器的名字

递归查询

将域名解析的任务交给所联系的服务器

P2P

  • 没有服务器
  • 任意终端系统直接通信
  • 对等点间断续连接并更改IP地址
  • 在P2P工作方式下,所有的音频/视频文件都是在普通的互联网用户之间传输

Napster

有一个集中式目录服务器,用户X询问Napster谁有资源m,服务器回应a,b,c。X再随机选一个请求。

全分布式

洪泛法在用户之间查询

CDN

CDN的基本原理是依靠放置在各地的缓存服务器,通过全局调度,内容分发等功能模块,将用户需要的那部分内容部署到贴近用户的地点,将原本低效、不可靠的IP网络转变成高效、可靠的智能网络,满足用户对内容访问质量的更高要求,改善互联网网络拥塞问题,提高用户访问网站的响应速度。

传输层

提供应用进程之间的通信机制

  • 位于网络层之上
  • 依赖于网络层服务
  • 对网络层服务进行增强
    多路复用 :在源主机从不同套接字中收集数据块,并为每个数据块封装上首部信息,从而生成报文段,然后将报文段传到网络层。(发送过程)
    多路分用 :检查传输层报文段,根据目的端口号标识出接收套接字,交付给正确的套接字。(接收过程)

UDP

  • 无需建立连接(减少延迟)
  • 实现简单:无需维护连接状态
  • 头部开销小
  • 没有拥塞控制:应用可以更好地控制发送时间和速率

报文段结构

报文头8字节

检验和

发送方UDP对报文段所有16比特字的和求反,放在检验和字段。求和时如果最高位有进位就进到末位。

可靠数据传输

参考https://blog.csdn.net/qq_53144843/article/details/120896557

rdt_send():被上层应用调用,将数据交给rdt以发送给接收方

udt_send():被rdt调用,在不可靠的信道上发送数据给接收方

deliver_data():被rdt调用,向上层应用交付数据

rdt_rcv():数据包到达接收方时被调用

rdt1.0

假设以下理想条件:

  1. 不会发生错误
  2. 不会丢弃分组
    有限状态机FSM描述:

    发送方:一个状态,等待上层调用,若上层调用,则产生rdt_send,创建packet活动,调用信道上的udt_send(),发送分组,可确定百分百发送,然后回到之前状态,继续等待调用

接收方:一个状态,等待下层调用,当传入一个分组,rdt_rcv接收,extract提取,交付给上层deliver_data

rdt2.0

底层信道可能传输错误比特
自动重传请求协议ARQ:使用ACK和NAK通知发送方接收状态。

  • 差错检测
  • 接收方反馈ACK/NAK
  • 重传
    发送方在等待ACK/NAK时无法处理上层新的数据,所以这样的协议也叫停等协议


    发送方:若上层调用,则产生rdt_send,创建packet活动并加入校验和,调用信道上的udt_send(),发送分组。同时进入等待ACK/NAK状态,若为NAK,则重传分组,继续等待ACK/NAK,一直处于该状态,直到传回ACK才进入等待调用状态

接收方:当传入一个分组,rdt_rcv接收并且进行判断,如果没有错误extract提取,交付给上层deliver_data并返回ACK,如果发生错误,则直接返回NAK,并处于等待接收状态

时序图:

rdt2.1

如果ACK/NAK损坏,发送方重新传输当前pkt

发送方给每个pkt增加序列号

接收者丢弃重复的pkt
发送方:

接收方:

发送方:等待上层调用,序列号为0,若上层调用,则产生rdt_send,创建packet活动(此处加入序列号)并加入校验盒,调用信道上的udt_send(),发送分组,同时进入等待ACK/NAK状态,若为NAK,则重传分组,继续等待ACK/NAK,一直处于该状态,若传回ACK,则进入等待调用状态,并改变序列号为1

接收方:当传入一个分组,rdt_rcv接收并且进行判断,如果分组没有错误,并且期望收到分组序列号与当前序列号相同,则extract提取,交付给上层deliver_data并返回ACK;如果发生错误,则直接返回NAK,并处于等待接收状态;若接收分组没错,序列号不匹配,则必须发一个ACK,表示正确接收

时序图:

rdt2.2

不需要NAK
接收方发送最后一次正确接收到的分组的ACK来代替NAK

  • 接收方发出的ACK消息中,必须明确包含被确认的分组序列号
  • 发送方的收到重复ACK会采取与NAK相同的操作:重新传输当前分组

rdt3.0

信道也可能丢失分组,增加了超时处理

发送方等待ACK合理时间,如果到时未收到ACK,则重新传输;

如果分组或ACK仅仅延迟而没有丢失:

  • 重传则会产生重复,利用序列号可以解决
  • 接收方需在ACK中显式告知所确认的分组
    发送方:

    接收方没变。

流水线协议

发送方在收到ACK之前可以连续发送多个分组,从而提高利用率。

  • 需要更大序号空间
  • 发送方和/或接收方需要更大的存储空间以缓存分组

GBN

  • 发送方在管道中最多可以有N个未确认的数据包
  • 接收方只发送累积确认
  • 如果有间隔就不会确认数据包
  • 发送方有未确认数据报的计时器
  • 当计时器超时,重传所有未确认的数据包
发送方


接收方



SR

接收方单独确认所有正确收到的分组

  • 设置缓存机制,缓存乱序到达的分组,最终交给上层
    发送方只重传那些没收到ACK的分组
  • 为每个分组设置定时器
    发送方窗口
  • N个连续的序号
  • 限制已发送且未被确认的分组

TCP

报文结构

序列号:

  • TCP报文段中第一个字节的编号
  • 建立TCP连接时,双方随机选择序号
    ACKs:
  • 期望收到的下一个字节的序列号
  • 累计确认,该序号之前的所有字节都已正确接收

重传

累积确认
快速重传:如果sendert收到对同一数据的3个ACK,则假定该数据之后的段已经丢失,在定时器超时之前即进行重传

流量控制

接收方通过在接收方到发送方的TCP报头中包含rwnd值来"通告"空闲缓冲区空间

发送方限制自己已经发送的但还未收到ACK的数据不超过接收方的空闲RcvWindow尺寸

连接管理

三次握手

四次挥手

拥塞控制

太多的主机发送太多数据或者速度太快,网络无法处理

表现形式:

  • 数据包丢失(路由器缓冲区溢出)
  • 延迟过长(在路由器缓冲区中排队)
    TCP从观察到的丢失、延误推断出拥堵
AIMD

原理:发送方增加传输速率(窗口大小),探查可用带宽,直到发生丢失

事件:Timeout或3个重复的ACK

丢失事件细节:

  • 通过三重重复ACK(TCP Reno)检测到丢失时将其减半(TCP Reno)
  • 当超时(TCP Tahoe)检测到丢失时,切至1MSS(最大段大小)(TCP Tahoe)
慢启动

连接开始时,以指数2^n方式增加速率(窗口大小cwnd),直到发生第一次丢失事件

LOSS处理

超时导致loss:

  • 窗口大小cwnd设为1MSS
  • 窗口然后按指数增长(如慢启动)到阈值,然后线性增长
    由3个重复确认导致的loss(TCP RENO):
  • 3个重复ACKs表示网络还能够传输一些segments
  • cwnd切到一半;然后线性增长 此时会加上三个ack的时间段,实际上是从一半+3开始,但阈值是一半。
    TCP Tahoe不管是超时还是3个ACK,都把cwnd设为1MSS

阈值变量sthresh

loss事件发生时,sthresh被设置为loss事件前的cwnd值的1/2
cwnd上升到sthresh后开始线性增长
线性增长也叫拥塞避免

TCP CUBIC

Wmax:检测到拥塞丢失的发送速率

瓶颈链路的拥塞状态可能变化不大

在切割速率/窗口减半后,最初更快地斜坡到Wmax,但随后更缓慢地接近Wmax

网络层

功能:
转发 :将分组从一个输入链路接口转移到适当的输出链路接口的路由器本地动作
路由选择:确定分组从源到目的地所选用的网络路径

数据平面

  • 每台路由器的本地功能
  • 确定如何将到达路由器输入端口的数据报转发到输出端口
  • 转发功能

转发方式

基于目的地转发

仅根据目的地IP地址的转发
最长前缀匹配: 根据目的地址查找转发表 条目时,选择与目标地址匹配的最长地址前缀。

通用转发

根据任意首部字段值的集合的转发

交换结构

内存交换
  • 采用传统的计算机,交换是在CPU的直接控制下完成
  • 分组被复制到系统内存中
  • 速度受限于内存带宽
总线交换
  • 报文通过一条共享总线从输入端口内存发送到输出端口
  • 总线争用:交换速度受限于总线带宽。
互联网状交换
  • 克服了总线带宽的限制
  • 高级设计:将报文分片为固定长度单元以通过交换结构。

缓存管理

先来先服务FIFO/FCFS
  • 加权公平排队
  • 弃尾:丢弃到达的分组
  • 低优先权丢弃:基于优先级的丢弃/移除
  • 随机丢弃:随机丢弃/移除
优先级调度
  • 到达流量分类,按类别排队
    • 任何标题字段都可以用于分类,如:IP源/目的,端口号等
  • 多种类别,具有不同的优先级
  • 发送最高优先级的队列分组
循环排队RR

循环扫描类别队列,依次从每一个类别发送一个完整分组(如果有的话)

加权公平排队WFQ

在每一轮循环中,每一类i获得加权数量wi的服务

IPv4

分片/重组

一个大的报文会被拆成多个报文,在目的地进行重组。IP首部字节用于识别排序分片。

最大传送单元MTU:一个链路层帧能承载的最大数据量

编址

IP地址:32bit主机ID/路由器接口

每一类地址都由两个固定长度的字段组成,其中一个字段是网络号net-id,它标志主机(或路由器)所连接到的网络,而另一个字段则是主机号host-id,它标志该主机(或路由器)。

特殊IP地址:

子网

设备接口,无需通过中间路由器即可物理连接到彼此

DHCP 动态主机配置协议

允许主机加入网络时从网络服务器中动态获取其IP地址。

DHCP可以提供:

  • 在子网中分配的IP地址
  • 客户端的第一跳路由器地址
  • DNS服务器的名字和IP地址
  • 网络掩码
NAT 网络地址转换

本地网络中的所有设备在"专用"IP地址空间(10/8、172.16/12、192.168/16前缀)中都有32位地址,但只能在本地网络中使用

  • 外出数据报 :替换每一个外出数据报的(源IP地址,端口号)为(NAT IP地址,新的端口号)
    远程客户端/服务器的回复数据报采用(NAT IP地址,新的端口号)作为目的地址
  • 记住(在NAT转换表中) 每一个(源IP地址,端口号)到(NAT IP地址,新的端口号)的对应关系
  • 到达报文 :根据存储的NAT表,替换每一个到达报文目的字段(NAT IP地址,新的端口号)为相应的(源IP地址,端口号)

IPv6

  • 固定长度40字节首部
  • 不允许分片
  • 去掉了校验和
IPv4 to IPv6

OpenFlow

流表:

控制平面

  • 网络范围的逻辑
  • 决定数据报从源主机到目的主机的端到端路径中路由器之间的路由方式
  • 实现控制平面的两种途径:
    • 传统路由算法:运行在路由器中
    • 软件定义网络SDN:运行在(远程)控制器中

路由选择算法

链路状态LS

使用迪杰斯特拉算法,每一次迭代都选最短的一条的节点。所有路由器掌握网络拓扑和链路费用

距离向量DV




自治系统内部的路由选择 OSPF

域内路由选择:

  • 在同一自治域("网络")内的主机,路由器之间的路由选择
  • 在一个自治域内的所有路由器必须运行相同的域内路由选择。
  • 在不同自治域内的路由器可以运行不同的域内路由协议。
  • 网关路由:位于其所在自治域的"边界",通过链路与其位于其他自治域的路由器相连
    域间路由选择:
  • 自治域间的路由选择
  • 网关执行域间路由选择(与域内路由选择类似)。
    OSPF
  • 链路状态发生变化 时,路由器洪泛 OSPF链路状态消息到整个AS中的所有其他路由器中,使用网络层IP协议。
  • 发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。
  • 使用迪杰斯特拉算法
链路状态数据库
  • 由于各路由器之间频繁地交换链路状态信息,因此所有的路由器最终都能建立一个链路状态数据库。
  • 这个数据库实际上就是全网的拓扑结构图,它在全网范围内是一致的(这称为链路状态数据库的同步)
  • OSPF的链路状态数据库能较快地进行更新,使各个路由器能及时更新其路由表
  • OSPF的更新过程收敛得快是其重要优点。
区域划分

为了使OSPF能够用于规模很大的网络,OSP将一个自治系统再划分为若干个更小的范围,叫做区域。

区域边界路由器:"汇总"到达区域内内部网络的距离信息,并广播到其他区域边界路由器

主干路由器:仅在主干路由器中运行OSPF

边界路由器:连接到其他的自治域。

在一个区域内部的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑的情况。

主干区域(Area 0)是所有其他OSPF区域(非零区域)的中心枢纽,起到了路由信息分发和汇聚的作用。

区域边界路由器负责在OSPF的主干区域 和其他区域之间传递路由信息。
主干路由器

区域边界路由器

域间路由选择 BGP

eBGP:从邻居 自治域获取子网可达信息

iBGP:传播可达信息到所有自治域内部 的路由器

路径通告
热土豆算法

选择具有最小域内开销的本地网关(烫手山芋)

软件定义网络SDN

  • 维护网络状态信息
  • 通过北向API与"上面的"网络控制应用交互。
  • 通过南向API与"下面的"网络交换机交互。

    网络控制应用
    eg:ryu

ICMP

主机及路由器使用ICMP以交互网络层面的信息。

IP数据报承载ICMP消息

数据链路层

结点(nodes):主机和路由器

链路(links):一条无源的点到点的物理线路段,中间没有任何其他的交换结点。

数据链路(data-link layer):除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。

帧(frame):数据链路层数据单位,封装网络层数据报

封装成帧

头尾添加开始符,结束符。中间冲突字符转义。

差错检测

奇偶校验

CRC校验

校验和

  • 将"数据"(校验内容)划分为16位的二进制"整数"序列
  • 求和:补码求和(最高位进位的"1",返回最低位继续加)
  • 校验和为sum的反码
  • 发送方将校验和放入分组(UDP、TCP、IP)的校验和字段

多路访问链路协议MAC

时隙ALOHA

假定

  • 所有帧大小相同
  • 时间被划分为等长的时隙(每个时隙可以传输1个帧)
  • 结点只能在时隙开始时发送帧
  • 结点间时钟同步
  • 如果2个或2个以上结点在同一时隙发送帧,结点即检测到冲突
    运行
    当结点有新的帧时,在下一个时隙发送
  • 如果无冲突:该结点可以在下一个时隙继续发送新的帧
  • 如果冲突:该结点在下一个时隙以概率p重传该帧,直至成功

    效率
    长期运行时成功发送帧的时隙所占比例
    假设:N个结点有很多帧待传输,每个结点在每个时隙均以概率p发送数据
    对于给定的一个结点,在一个时隙将帧发送成功的概率=p(1-p)^(N-1)
    对于任意结点成功发送帧的概率Np(1-p)^(N-1)
    最大效率:N->无穷时,最大效率 = 1/e = 0.37

纯ALOHA

  • 非时隙Aloha:更加简单,无需同步
  • 当有新的帧生成时,立即发送

    效率:

CSMA

发送帧之前,监听信道

  • 信道空闲:发送完整帧
  • 信道忙:推迟发送

CSMA/CD

载波监听多点接入/碰撞检测

  • 短时间内可以检测到冲突
  • 冲突后传输中止,减少信道浪费


    最先发送数据帧的站,在发送数据帧后至多经过时间2τ(两倍的端到端往返时延)就可知道发送的数据帧是否遭受了碰撞。
    如果两端想要成功碰撞检测,那么传播时延要小于传输时延。
    争用期:端到端往返时延2τ
二进制指数类退避算法

发生碰撞的站在停止发送数据后,要推迟一个随机时间才能再发送数据。

  1. 基本退避时间取为争用期2τ。
  2. 从整数集合[0,1,...,(2^k-1)]中随机地取出一个数,记为r。重传所需
    的时延就是r*512比特时间
  3. 参数k按下面的公式计算:
    k=Min[重传次数,10]
  4. 当k≤10时,参数k等于重传次数。
  5. 当重传达16次仍不能成功时即丢弃该帧,并向高层报告。

交换局域网

ARP

  • A想要给同一局域网内的B发送数据报而B的MAC地址不在A的ARP表中。
  • A广播ARP查询分组,其中包含B的IP地址目的MAC地址为:FF-FF-FF-FF-FF-FF;LAN中所有结点都会接收
  • B接收ARP查询分组,IP地址匹配成功,利用单播帧向A发送应答B的MAC地址
  • A在其ARP表中,缓存B的IP-MAC地址对,直至超时,超时后,再次刷新

寻址过程

A通过路由器R向B发送数据报:

  • 主机A构造IP数据报,其中源IP地址是A的IP地址,目的IP地址是主机B的IP地址
  • 主机A构造链路层帧,其中源MAC地址是A的MAC地址,目的MAC地址是R(左)接口的MAC地址,封装A到B的IP数据报。
  • 数据帧从主机A发送至路由器R
  • 路由器R接收数据帧,提取IP数据报,传递给上层IP协议
  • R转发IP数据报(源和目的IP地址不变)
  • R创建链路层帧,其中源MAC地址是R(右)接口的MAC地址,目的MAC地址是B的MAC地址,封装A到B的IP数据报。

以太网

有线LAN技术

  • 不可靠
  • 无连接
  • MAC协议采用CSMA/CD

链路层交换机

  • 存储-转发以太网帧
  • 检验到达帧的目的MAC地址,选择性向一个或多个输出链路转发帧,利用CSMA/CD访问链路,发送帧
  • 透明传输,主机感知不到交换机的存在
  • 即插即用,自学习

    目的MAC未知时泛洪,已知时选择性转发

无线网络

IEEE 802.11

CSMA/CA

带碰撞避免的CSMA(CSMA/CD是碰撞检测)

交换RTS和CTS帧来实现碰撞避免

会对正确接收到的数据帧ack确认
帧结构:

相关推荐
88号技师29 分钟前
2024年12月一区SCI-加权平均优化算法Weighted average algorithm-附Matlab免费代码
人工智能·算法·matlab·优化算法
IT猿手29 分钟前
多目标应用(一):多目标麋鹿优化算法(MOEHO)求解10个工程应用,提供完整MATLAB代码
开发语言·人工智能·算法·机器学习·matlab
88号技师30 分钟前
几款性能优秀的差分进化算法DE(SaDE、JADE,SHADE,LSHADE、LSHADE_SPACMA、LSHADE_EpSin)-附Matlab免费代码
开发语言·人工智能·算法·matlab·优化算法
2401_882727571 小时前
低代码配置式组态软件-BY组态
前端·后端·物联网·低代码·前端框架
我要学编程(ಥ_ಥ)1 小时前
一文详解“二叉树中的深搜“在算法中的应用
java·数据结构·算法·leetcode·深度优先
埃菲尔铁塔_CV算法1 小时前
FTT变换Matlab代码解释及应用场景
算法
小伍_Five2 小时前
透视网络世界:计算机网络习题的深度解析与总结【前3章】
服务器·网络·计算机网络
许野平2 小时前
Rust: enum 和 i32 的区别和互换
python·算法·rust·enum·i32
追逐时光者2 小时前
.NET 在 Visual Studio 中的高效编程技巧集
后端·.net·visual studio
chenziang12 小时前
leetcode hot100 合并区间
算法