【计算机网络】内容整理

news2024/12/24 20:25:52

概述

分组交换

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

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

电路交换

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

  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.coloradmin.cn/o/1382034.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

开源云原生安全的现状

近年来&#xff0c;人们非常重视软件供应链的安全。尤其令人担忧的是开源软件发行版中固有的风险越来越多。这引发了围绕云原生开源安全的大量开发&#xff0c;其形式包括软件物料清单 (SBOM)、旨在验证 OSS 包来源的项目等。 许多组织循环使用大型开源包&#xff0c;但只使用…

第 3 场 小白入门赛(1~6) + 第 3 场 强者挑战赛 (1 ~ 5)

第 3 场 小白入门赛 1、厉不厉害你坤哥&#xff08;暴力&#xff09; 2、思维 3、暴力&#xff0c;前缀和&#xff0c;贪心 4、二分 5、DP 6、容斥&#xff0c;双指针 第 3 场 强者挑战赛 2、BFS 5、树上倍增求第k祖先 1. 召唤神坤 题意&#xff1a; 可以发现,如果我…

2023 IoTDB Summit:天谋科技高级开发工程师苏宇荣《汇其流:如何用 IoTDB 流处理框架玩转端边云融合》...

12 月 3 日&#xff0c;2023 IoTDB 用户大会在北京成功举行&#xff0c;收获强烈反响。本次峰会汇集了超 20 位大咖嘉宾带来工业互联网行业、技术、应用方向的精彩议题&#xff0c;多位学术泰斗、企业代表、开发者&#xff0c;深度分享了工业物联网时序数据库 IoTDB 的技术创新…

Git相关3 —— 命令及添加Gitee的公钥

1.Git相关命令1 -- 工作目录、暂存区、本地仓库、 使用平台有&#xff1a;cmd、Git bash、VSCode window系统修改VSCode默认终端为git bash git init 初始化 --- 新增.git 文件夹 git status 查看 文件/文件夹 状态 git add 需要追踪的文件名/文件夹名 提交到暂存区 git add…

【JavaSE语法】图书管理系统实现详解

图片出处&#xff1a;The worlds biggest drone photo and video sharing platform | SkyPixel.com 导言 在学完JavaSE语法后&#xff0c;我们就可以去尝试写一个简单的图书管理系统来进一步提升我们面对对象编程的思想。在该系统中会涉及到数组&#xff0c;接口&#xff0c;封…

OceanBase架构概览

了解一个系统或软件&#xff0c;比较好的一种方式是了解其架构&#xff0c;下图是官网上的架构图&#xff0c;基于V 4.2.1版本 OceanBase 使用通用服务器硬件&#xff0c;依赖本地存储&#xff0c;分布式部署在多个服务器上&#xff0c;每个服务器都是对等的&#xff0c;数据库…

YOLOv8改进 | 注意力篇 | 实现级联群体注意力机制CGAttention (全网首发)

一、本文介绍 本文给大家带来的改进机制是实现级联群体注意力机制CascadedGroupAttention,其主要思想为增强输入到注意力头的特征的多样性。与以前的自注意力不同,它为每个头提供不同的输入分割,并跨头级联输出特征。这种方法不仅减少了多头注意力中的计算冗余,而且通过增…

【国内访问github不稳定】可以尝试fastgithub解决这个问题

1、下载 https://github.com/dotnetcore/FastGithub https://github.com/dotnetcore/FastGithub/releases 官网下载即可&#xff0c;比如&#xff0c;我用的是这个&#xff1a;fastgithub_osx-x64.zip&#xff08;点这里下载&#xff09; 2、安装 如下图双击启动即可 3、…

【SSM框架】SpringMVC

SpringMVC简介 SpringMVC概述 SpringMvC是一种基于Java实现MVC模型的轻量级web框架 SpringMVC技术与Servlet技术功能等同&#xff0c;用于表现层功能开发 SpringMVC入门 1、导入坐标 <dependency><groupId>javax.servlet</groupId><artifactId>ja…

Docker安装Odoo17

Docker安装Odoo 前言所需环境安装步骤登录Odoo 配置数据库 前言 Odoo是一个开源的ERP框架&#xff0c;它提供了一套完整的、可定制的、模块化的企业管理软件解决方案。以下是Odoo的主要特点&#xff1a; 模块化设计&#xff1a;Odoo的各个功能都以模块的形式提供&#xff0c;包…

三端负电源电压调节器79LXX,具有一系列固定电压输出,适用于小于100mA电源供给的场合

79LXX系列三端负电源电压调节器是单片双极型线性集成电路&#xff0c;采用TO92、SOT89-3的封装形式封装&#xff0c;有一系列固定的电压输出&#xff0c;适用于小于100mA电源供给的场合。 主要特点&#xff1a; 最大输出电流为100mA 固定输出电压分别为-5V、-6V、-8V、-9V、-10…

Windows无法登录管理路由器故障排查

问题描述 家里的路由器使用拨号上网&#xff0c;路由器DHCP分发IP的范围是192.168.1.0/24。默认使用192.168.1.1管理路由器。然后拨号上网成功后&#xff0c;修改了私网IP的分发范围&#xff1a;192.168.5.1-192.168.5.10。为了防止有人蹭网&#xff0c;只分配的10个IP地址。修…

html5基础入门

html5基础语法与标签 前言前端开发零基础入门介绍前端开发行业介绍&#xff1a;大前端时代&#xff1a;前端开发主要技术介绍学习方法IDE简介vscode快捷键&#xff1a; 总结 HTML语法与基础标签互联网基本原理HTTP协议&#xff08;请求、响应&#xff09;什么是前端、后端&…

MongoDB认证考试小题库

Free MongoDB C100DBA Exam Actual Questions 关于MongoDB C100 DBA 考试真题知识点零散整理 分片架构 应用程序 --> mongos --> 多个mongod对于应用来说&#xff0c;连接分片集群跟连接一台单机mongod服务器一样分片好处&#xff0c; 增加可用RAM、增加可用磁盘空间、…

C++ 实现游戏(例如MC)键位显示

效果&#xff1a; 是不是有那味儿了&#xff1f; 显示AWSD&#xff0c;空格&#xff0c;Shift和左右键的按键情况以及左右键的CPS。 彩虹色轮廓&#xff0c;黑白填充。具有任务栏图标&#xff0c;可以随时关闭字体是Minecraft AE Pixel&#xff0c;如果你没有装&#xff08;大…

网络安全技术新手入门:利用永恒之蓝获取靶机控制权限

目录 前言 一、搜索永恒之蓝可用模块 二、使用攻击模块 三、配置攻击模块 四、攻击 五、总结 前言 相关法律声明&#xff1a;《中华人民共和国网络安全法》第二十七条 任何个人和组织不得从事非法侵入他人网络、干扰他人网络正常功能、窃取网络数据等危害网络安全的活动&…

网络安全技术新手入门:在docker上安装dvwa靶场

前言 准备工作&#xff1a;1.已经安装好kali linux 步骤总览&#xff1a;1.安装好docker 2.拖取镜像&#xff0c;安装dvwa 一、安装docker 输入命令&#xff1a;sudo su 输入命令&#xff1a;curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key …

MATLAB - 机器人关节空间运动模型

系列文章目录 前言 关节空间运动模型描述了在闭环关节空间位置控制下机械手的运动&#xff0c;在关节空间运动模型&#xff08;jointSpaceMotionModel&#xff09;对象和关节空间运动模型块中使用。 机器人机械手是典型的位置控制设备。要进行关节空间控制&#xff0c;需要指…

C# 图解教程 第5版 —— 第24章 预处理指令

文章目录 24.1 什么是预处理指令24.2 基本规则24.3 符号指令&#xff08;#define、#undef &#xff09;24.4 条件编译&#xff08;#if、#else、#elif、#endif&#xff09;24.5 条件编译结构24.6 诊断指令&#xff08;#warning、#error&#xff09;24.7 行号指令&#xff08;#li…

order by之后的injection(sqllabs第四十六关)

order by相关注入知识 这一关的sql语句是利用的order by 根据输入的id不同数据排序不一样可以确定就是order by order by后面无法使用ubion注入&#xff08;靠找不到&#xff09; 可以利用后面的参数进行攻击 1&#xff09;数字 没作用考虑布尔类型 rand和select ***都可以 …