【计算机网络】内容整理

概述

分组交换

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

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

电路交换

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

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

时延计算

350350
image.png

吞吐量

image.png

应用层

体系结构

C/S

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

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

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

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

P2P

没有永远在线的服务器
任意终端系统直接通信
对等方向其他对等方请求服务,向其他对等方提供服务
对等体间歇连接并更改IP地址

Socket

image.png
进程间通信利用套接字(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+文件发送时延
    image.png

请求报文

image.png
image.png
请求方法:
image.png

响应报文

image.png
image.png

首部

通用首部

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

  • 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缓存

image.png
条件GET
image.png

HTTP2

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

邮件服务

image.png

SMTP

基于TCP在客户和服务器之间传递email,端口号为:25
直接传输:发送服务器到接收服务器
传输的三个阶段

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

邮件访问协议

image.png

DNS

基于UDP
image.png

迭代查询

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

递归查询

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

P2P

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

Napster

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

全分布式

洪泛法在用户之间查询

CDN

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

传输层

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

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

UDP

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

报文段结构

报文头8字节
image.png

检验和

发送方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描述:
    image.png
    发送方:一个状态,等待上层调用,若上层调用,则产生rdt_send,创建packet活动,调用信道上的udt_send(),发送分组,可确定百分百发送,然后回到之前状态,继续等待调用

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

rdt2.0

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

  • 差错检测
  • 接收方反馈ACK/NAK
  • 重传
    发送方在等待ACK/NAK时无法处理上层新的数据,所以这样的协议也叫停等协议
    400
    image.png
    发送方:若上层调用,则产生rdt_send,创建packet活动并加入校验和,调用信道上的udt_send(),发送分组。同时进入等待ACK/NAK状态,若为NAK,则重传分组,继续等待ACK/NAK,一直处于该状态,直到传回ACK才进入等待调用状态

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

时序图:
image.png

rdt2.1

如果ACK/NAK损坏,发送方重新传输当前pkt
发送方给每个pkt增加序列号
接收者丢弃重复的pkt
发送方:
image.png
接收方:
image.png
发送方:等待上层调用,序列号为0,若上层调用,则产生rdt_send,创建packet活动(此处加入序列号)并加入校验盒,调用信道上的udt_send(),发送分组,同时进入等待ACK/NAK状态,若为NAK,则重传分组,继续等待ACK/NAK,一直处于该状态,若传回ACK,则进入等待调用状态,并改变序列号为1
接收方:当传入一个分组,rdt_rcv接收并且进行判断,如果分组没有错误,并且期望收到分组序列号与当前序列号相同,则extract提取,交付给上层deliver_data并返回ACK;如果发生错误,则直接返回NAK,并处于等待接收状态;若接收分组没错,序列号不匹配,则必须发一个ACK,表示正确接收

时序图:
image.png

rdt2.2

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

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

rdt3.0

信道也可能丢失分组,增加了超时处理
发送方等待ACK合理时间,如果到时未收到ACK,则重新传输;
如果分组或ACK仅仅延迟而没有丢失:

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

流水线协议

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

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

GBN

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

image.png
image.png

接收方

image.png
image.png
image.png

SR

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

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

TCP

报文结构

image.png
序列号:

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

重传

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

流量控制

接收方通过在接收方到发送方的TCP报头中包含rwnd值来“通告”空闲缓冲区空间
发送方限制自己已经发送的但还未收到ACK的数据不超过接收方的空闲RcvWindow尺寸

连接管理

三次握手
image.png
四次挥手
image.png

拥塞控制

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

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

原理:发送方增加传输速率(窗口大小),探查可用带宽,直到发生丢失
事件:Timeout或3个重复的ACK
image.png
丢失事件细节:

  • 通过三重重复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
image.png

网络层

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

数据平面

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

转发方式

基于目的地转发

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

通用转发

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

交换结构

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

缓存管理

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

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

加权公平排队WFQ

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

IPv4

image.png

分片/重组

一个大的报文会被拆成多个报文,在目的地进行重组。IP首部字节用于识别排序分片。
最大传送单元MTU:一个链路层帧能承载的最大数据量

编址

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

子网

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

DHCP 动态主机配置协议

允许主机加入网络时从网络服务器中动态获取其IP地址。
DHCP可以提供:

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

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

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

IPv6

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

image.png

OpenFlow

流表:
image.png

控制平面

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

路由选择算法

链路状态LS

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

距离向量DV

image.png
image.png
image.png
image.png

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

域内路由选择:

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

为了使OSPF能够用于规模很大的网络,OSP将一个自治系统再划分为若干个更小的范围,叫做区域。
image.png
区域边界路由器:“汇总”到达区域内内部网络的距离信息,并广播到其他区域边界路由器
主干路由器:仅在主干路由器中运行OSPF
边界路由器:连接到其他的自治域。
image.png
在一个区域内部的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑的情况。
主干区域(Area 0)是所有其他OSPF区域(非零区域)的中心枢纽,起到了路由信息分发和汇聚的作用。
区域边界路由器负责在OSPF的主干区域和其他区域之间传递路由信息。
主干路由器
image.png
区域边界路由器
image.png

域间路由选择 BGP

eBGP:从邻居自治域获取子网可达信息
iBGP:传播可达信息到所有自治域内部的路由器
image.png

路径通告

image.png

热土豆算法

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

软件定义网络SDN

image.png

  • 维护网络状态信息
  • 通过北向API与“上面的”网络控制应用交互。
  • 通过南向API与“下面的”网络交换机交互。
    image.png
    网络控制应用
    eg:ryu
    image.png

ICMP

主机及路由器使用ICMP以交互网络层面的信息。
IP数据报承载ICMP消息

数据链路层

结点(nodes):主机和路由器
链路(links):一条无源的点到点的物理线路段,中间没有任何其他的交换结点。
数据链路(data-link layer):除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
帧(frame):数据链路层数据单位,封装网络层数据报

封装成帧

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

差错检测

奇偶校验

CRC校验

校验和

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

多路访问链路协议MAC

时隙ALOHA

假定

  • 所有帧大小相同
  • 时间被划分为等长的时隙(每个时隙可以传输1个帧)
  • 结点只能在时隙开始时发送帧
  • 结点间时钟同步
  • 如果2个或2个以上结点在同一时隙发送帧,结点即检测到冲突
    运行
    当结点有新的帧时,在下一个时隙发送
  • 如果无冲突:该结点可以在下一个时隙继续发送新的帧
  • 如果冲突:该结点在下一个时隙以概率p重传该帧,直至成功
    image.png
    效率
    长期运行时成功发送帧的时隙所占比例
    假设:N个结点有很多帧待传输,每个结点在每个时隙均以概率p发送数据
    对于给定的一个结点,在一个时隙将帧发送成功的概率=p(1-p)^(N-1)
    对于任意结点成功发送帧的概率Np(1-p)^(N-1)
    最大效率:N->无穷时,最大效率 = 1/e = 0.37

纯ALOHA

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

CSMA

发送帧之前,监听信道

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

CSMA/CD

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

  • 短时间内可以检测到冲突
  • 冲突后传输中止,减少信道浪费
    image.png
    image.png
    最先发送数据帧的站,在发送数据帧后至多经过时间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地址对,直至超时,超时后,再次刷新
    image.png

寻址过程

image.png
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
    image.png

链路层交换机

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

无线网络

IEEE 802.11

CSMA/CA

带碰撞避免的CSMA(CSMA/CD是碰撞检测)
交换RTS和CTS帧来实现碰撞避免
image.png
会对正确接收到的数据帧ack确认
帧结构:
image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/239454.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安卓手机变iOS!

Launcher iOS 16 - 安卓手机秒变iOS Launcher iOS 16 是一款iOS启动器&#xff0c;可以将安卓手机桌面变成iOS样子&#xff0c;还有iOS的开机动画和景深效果&#xff01; 下载链接&#xff1a;【Launcher iOS 16】 ​

R语言【paleobioDB】——pbdb_subtaxa():统计指定类群下的子类群数量

Package paleobioDB version 0.7.0 paleobioDB 包在2020年已经停止更新&#xff0c;该包依赖PBDB v1 API。 可以选择在Index of /src/contrib/Archive/paleobioDB (r-project.org)下载安装包后&#xff0c;执行本地安装。 Usage pbdb_subtaxa (data, do.plot, col) Arguments…

Linux网络通信

网络模型 七层模型 四层模型 TCP : 面向连接&#xff0c;可靠的&#xff0c;面向字节流&#xff0c;支持点对点通信。 UDP : 无连接&#xff0c;不可靠&#xff0c;面向数据报文&#xff0c;支持一对一&#xff0c;一对多&#xff0c;多对多。通信原理 常用函数 #include <…

蓝莓产量预测(R语言版)

数据描述 字段名 描述 字段名 描述 id 蓝莓唯一标识 MinOfUpperTRange 花期内最高温带日平均气温的最低记录, Clonesize 蓝莓克隆平均大小 AverageOfUpperTRange 花期内最高温带日平均气温, Honeybee 蜜蜂密度 MaxOfLowerTRange 花期内最低温带日平均气温的最…

CMake tasks.json launch.json

hehedalinux:~/Linux/cmake/cmakeClass$ tree . ├── CMakeLists.txt ├── include │ ├── Gun.h │ └── Soldier.h ├── main.cpp └── src├── Gun.cpp└── Soldier.cpp2 directories, 6 files hehedalinux:~/Linux/cmake/cmakeClass$ launch.json&am…

江科大STM32 下

目录 ADC数模转换器DMA直接存储器存取USART串口9-2 串口发送接受9-3 串口收发HEX数据包 I2C(mpu6050陀螺仪和加速度计)SPI协议10.1 SPI简介W25Q64简介10.3 SPI软件读写W25Q6410.4 SPI硬件读写W25Q64 BKP、RTC11.0 Unix时间戳11.1 读写备份寄存器BKP11.2 RTC实时时钟 十二、PWR1…

CSS 之 跑马灯边框

一、简介 ​ 之前有做过渐变色边框的样式&#xff0c;然后某天刷抖&#x1f3b5;&#xff0c;看到某个老师在讲跑马灯的样式效果&#xff0c;于是就自己尝试实现一下跑马灯样式的边框&#xff0c;虽然这种样式并不常见&#xff08;基本没卵用&#xff09;&#xff0c;其使用场…

牛客-寻找第K大、LeetCode215. 数组中的第K个最大元素【中等】

文章目录 前言牛客-寻找第K大、LeetCode215. 数组中的第K个最大元素【中等】题目及类型思路思路1&#xff1a;大顶堆思路2&#xff1a;快排二分随机基准点 前言 博主所有博客文件目录索引&#xff1a;博客目录索引(持续更新) 牛客-寻找第K大、LeetCode215. 数组中的第K个最大元…

云计算概述(发展过程、定义、发展阶段、云计算榜单)(一)

云计算概述&#xff08;一&#xff09; &#xff08;发展过程、定义、发展阶段、云计算榜单&#xff09; 本文目录&#xff1a; 零、00时光宝盒 一、前言 二、云计算的发展过程 三、云计算的定义 四、云计算发展阶段 五、云计算公司榜单看云计算兴衰 六、参考资料 零、0…

小程序中滚动字幕

需求&#xff1a;在录像时需要在屏幕上提示字幕&#xff0c;整体匀速向上滚动 html部分&#xff1a; <view class"subtitles_main"><view style"font-size:34rpx;color: #fff;line-height: 60rpx;" animation"{{animation}}">人生的…

Linux工具-搭建文件服务器

当我们使用linux系统作为开发环境时&#xff0c;经常需要在Linux系统之间、Linux和Windows之间传输文件。 对少量文件进行传输时&#xff0c;可以使用scp工具在两台主机之间实现文件传输&#xff1a; rootubuntu:~$ ssh --help unknown option -- - usage: ssh [-46AaCfGgKkMN…

五种嵌入式经典通信总线协议

一.先前知识 1.并行与串行 并行通信和串行通信是两种不同的数据传输方式&#xff1a; 并行通信&#xff1a;并行通信是指在同一时间使用多条并行传输的线路传输多个比特的数据。每个比特使用独立的线路进行传输&#xff0c;同时进行。这样可以在一个时钟周期内传输多个比特&…

nova组件讲解和glance对接swift

1、openstack架构 &#xff08;1&#xff09;openstack是一种SOA架构&#xff08;微服务就是从这种架构中剥离出来的&#xff09; &#xff08;2&#xff09;这种SOA架构&#xff0c;就是把每个服务独立成一个组件&#xff0c;每个组件通过定义好的api接口进行互通 &#xff…

复合机器人作为一种新型的智能制造装备高效、精准和灵活的生产方式

随着汽车制造业的快速发展&#xff0c;对于高效、精准和灵活的生产方式需求日益增强。复合机器人作为一种新型的智能制造装备&#xff0c;以其独特的优势在汽车制造中发挥着越来越重要的作用。因此&#xff0c;富唯智能顺应时代的发展趋势&#xff0c;研发出了ICR系列的复合机器…

京东年度数据报告-2023全年度笔记本十大热门品牌销量(销额)榜单

2023年度&#xff0c;在电脑办公市场整体销售下滑的环境下&#xff0c;笔记本市场的整体销售也不景气。 根据鲸参谋平台的数据显示&#xff0c;京东平台上笔记本的年度销量为650万&#xff0c;同比下滑约16%&#xff1b;销售额约为330亿&#xff0c;同比下滑约19%。同时&#…

CF1178F2 Long Colorful Strip 题解 搜索

Long Colorful Strip 传送门 题面翻译 题目描述 这是 F 题的第二个子任务。F1 和 F2 的区别仅在对于 m m m 和时间的限制上 有 n 1 n1 n1 种颜色标号从 0 0 0 到 n n n&#xff0c;我们有一条全部染成颜色 0 0 0 的长为 m m m 的纸带。 Alice 拿着刷子通过以下的过…

uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -投票帖子明细实现

锋哥原创的uniapp微信小程序投票系统实战&#xff1a; uniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )_哔哩哔哩_bilibiliuniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )共计21条视频…

经典目标检测YOLO系列(一)复现YOLOV1(5)模型的训练及验证

经典目标检测YOLO系列(一)复现YOLOV1(5)模型的训练及验证 之前&#xff0c;我们依据《YOLO目标检测》(ISBN:9787115627094)一书&#xff0c;提出了新的YOLOV1架构&#xff0c;继续按照此书进行YOLOV1的复现。 经典目标检测YOLO系列(一)YOLOV1的复现(1)总体架构 经典目标检测Y…

Python Flask教程

Flask Doc: https://rest-apis-flask.teclado.com/docs/course_intro/what_is_rest_api/Github: https://github.com/tecladocode/rest-apis-flask-python 1. 最简单的应用 最小应用 from flask import Flaskapp Flask(__name__)app.route("/") def hello_world()…

18 串口通讯

文章目录 18.0 前言18.1 串口通讯协议简介18.1.1 物理层 18.2 RT1052 的 LPUART 简介18.3 UART 功能框图18.3.1 中断控制 18.4 UART 初始化结构体详解18.4.1 baudRate_Bps18.4.2 parityMode18.4.3 dataBitsCount18.4.4 isMsb18.4.5 stopBitCount18.4.6 txFifoWatermark与rxFifo…