计算机网络梳理笔记

计算机网络-梳理笔记

写在最前面:
这是我在学习计网这门课过程中自己梳理的笔记,除物理层整理的比较仓促外,其他部分的内容都是我知识的几乎全部的理解。第一次写博客,如有错误,见谅!

all

概述

网络的定义:节点和连线组成的网,网络中有实体用来传输

计算机网络通信技术计算机技术相结合,实现信息传输资源共享的一种信息系统

计算机网络的分类

  1. 地域距离: 广域网、城域网、局域网、个域网

  2. 传输技术:

    • 广播式:

      • 单播

        可靠性高-TCP[HTTP\HTTPS\FTP\SSH]

        压力大

      • 组播

        组地址:D类IP(224.0.0.0-239.255.255.255)

        靠路由器选择性复制到有需要的路径

        动态订阅机制

        1. 选取一个D类IP作为组地址
        2. 源主机发送数据时,目标IP地址填写的就是这个组地址
        3. 通过 IGMP报文 发送给主机所在局域网的路由器
        4. 多个网络中的路由器之间运行 PIM(协议无关组播) 等路由协议。
        5. 当源主机的数据到达网络时,路由器会根据这些“订阅记录”,像构建一棵倒挂的树一样,只把数据转发到那些有“组成员”存在的分支链路上
        6. 组播MAC地址:一个组播IP地址(如 239.1.2.3)会被映射到一个特定的组播MAC地址(以 01:00:5E 开头)。这工作在数据链路层。
        7. 加入组的主机会监听这个对应的组播MAC地址。
        8. 交换机则通过 IGMP Snooping 技术来“偷听”主机和路由器之间的IGMP报文,从而学习到“哪个端口下有主机加入了哪个组”。这样,当组播数据到来时,交换机会智能地只把数据转发到连接了组员的端口,而不是像广播那样泛洪到所有端口。
      • 广播[ARP\DHCP]

        靠交换机在第二层盲目复制给所有人

        网络风暴

        不可跨网段:路由器作为广播域边界,隔绝广播流量

    • 点到点:单播

  3. 传输介质:有线、无线

  4. 管理技术:CS架构[单点故障]、P2P架构

计算机网络的组成

  • 网络边缘:终端设备
  • 网络核心:路由、交换机
    • 电路交换:提前建立-可靠
    • 报文交换:存储-转发
    • 分组交换:效率最高-延迟-存储和带宽限制

网络拓扑结构

  • 总线型:简单、经济、可靠易于拓展-不易查错、拥塞
  • 星型:中心设备[单点故障]-局域网
  • 环型:令牌环、一个方向传输、只有一个节点传输
  • 网状:广域网、可靠-管理复杂、路由选择和流量控制难度大

网络性能指标

  • 速率:在数字信道上传输数据的速率[数据率/比特率]-额定/标称速率
  • 带宽:单位时间内网络中的某信道能通过的“最高数据率”
  • 吞吐率:单位时间内成功传输的数据量
  • 时延:从网络(或链路)的一端传送到另一端所需的时间
    • 发送时延:数据帧从结点进入到传输媒体所需的时间。
    • 传播时延:电磁波在信道中传播花费的时间
    • 处理时延:主机或路由器处理收到数据花费的时间
    • 排队时延:数据在路由器中队列中排队花费的时间
    • 接入时延:有数据发送到获得信道使用权发送出去的时间
  • 时延带宽积=传播时延*带宽 - 以比特为单位的莲路长度
  • 时延抖动:分组延迟的变化程度-缓存可以克服过量的抖动
  • 往返时间:发送一个信号所花费的时间加上确认接收该信号所花费的时间-ping时间,可以通过ping命令确定-用于计算重传时间
  • 利用率:信道利用率指发送方在一个发送周期的时间内,有效的发送数据所需要的时间占整个发送周期的比率-网络利用率是全网络的信道利用率的加权平均值-信道利用率并非越高越好
  • 丢包率=丢失分组数/总分组数-缓存队列满丢弃/出现错误被中间节点或接收方丢弃

分层传输

  • SAP[service access poiont]
    接口与服务

  • 服务原语Primitive:相邻两层之间服务的最小步骤

  • 协议-对等层

    • 语法:数据与控制信息的结构或格式
    • 语义:发出何种控制信息,完成何种动作以及做出何种响应。
    • 同步:事件实现顺序的详细说明。
  • 服务-上下层

参考模型

OSI
  • 资源子网:
    • 应用层:各类应用程序进程及服务
    • 表示层[概念]:数据表示、协议转化、数据加密、压缩和语法协商等
    • 会话层[概念]:会话连接和管理,同步控制
    • 传输层:建立端对端的连接,并决定向上层提供的服务
  • 通信子网:
    • 网络层:数据分组、寻址和路由选择、地址解析等
    • 数据链路层:成帧、差错和流量控制、数据链路管理
    • 物理层:物理网络的机械、电气和光特性以及接口的定义,以传输比特流
TCP/IP
  • 应用层:套接字编程
  • 运输层
    • TCP:单播-大文件
    • UDP:多播/广播-小文件-快速
  • 网际层
  • 网络接口层:数据链路层+物理层

应用层

常见架构

  • C/S架构[客户机+服务器群]
    • 客户机之间不能直接通信
    • 服务器地址周知、固定
    • 负载均衡和单点失效
      • 客户机-负载均衡器-服务器群:任务均匀分配
      • 单点失效是针对只有一台服务器
  • P2P架构
    • 客户机之间直接通信
    • 没有固定的服务
    • 有效的负载均衡和较高的鲁棒性

应用进程标识-Socket

  • 解决问题:
    • 如何发起通信
    • 如何表示进程
    • 如何调用通信子网服务
      • 为何不使用PID-Process Identifier标识通信进程
        1. PID只有局部意义没有全局意义:它是操作系统内核分配给每个正在运行的进程的一个唯一的数字标签(通常是一个整数)。当你在操作系统中启动一个程序时,内核就会为它分配一个PID。
        2. 同一个进程的PID也是会发生变化
        3. 一个应用程序的进程可能会有多个子进程,拥有多个PID,而在网络中对外的进程地址只能有一个

传输层为应用层提供的服务

  • TCP:
    • 面向连接的、可靠的字节流协议
  • UDP:
    • 无连接、不可靠的数据报协议
  • 如何区分:
    • 广播/组播
    • 大文件/小文件
    • 快速/可靠

DHCP-Dynamic Host Configuration Protocol

自动分配IP地址等相关TCP/IP参数

  • IP地址

    • 动态IP:不适用服务器

    • 流程:

      1. IP租用请求DISCOVER

        IP租用请求

      2. IP租用提供OFFER

        IP租用提供

      3. IP租用选择REQUEST

        IP租用提供

      4. IP租用确认ACK

        IP租用选择

    • IP租用更新

      • 自动更新:

        1. 50%:向服务器发送DHCPREQUEST
        2. 87.5%:向服务器发送DHCPREQUEST
        3. 87.5%:广播发送DHCPDISCOVER
      • 客户机重新启动:

        1. 更新上次退出网络时的IP地址

        2. 联系缺省网关

        3. 使用APIPA (169.254.0.0)

          • 自动私有IP地址:169.254.0.1~169.254.255.254

            当DHCP客户端与DHCP服务器建立联系时,如果客户机等待1秒服务器没有回应,它会分别以2、4、8、16秒的时间间隔重新广播四次。如果第四次请求仍然没有接到响应,则采用保留的自动私有IP地址暂时作为自已的IP地址,同时每隔五分钟还会继续尝试寻找DHCP服务器

          • 使用自动私有IP地址可以使得当DHCP服务器不可用时,DHCP客户端之间仍然可以利用自动私有IP地址进行通讯。

      • 手动更新:

        1. ipconfig/release
        2. ipconfig/renew
  • 子网掩码

  • 缺省网关

  • DNS服务器

DHCP工作机制

  • DHCP中继:

    通过配置支持DHCP中继的路由器来代理DHCP请求。DHCP中继代理收到主机发送的发现报文后,就以单播方式向DHCP服务器转发此报文,并等待其回答。收到 DHCP 服务器回答的提供报文后,DHCP 中继代理再将此提供报文发回给主机。

DHCP中继

DNS-Domain Name System

  • 数据库:域名-IP地址的映射

  • DNS服务器:执行域名解析的服务器

  • Port:53

  • 域名分级结构:以.分隔

    • www.goolge.com.

      从右往左:. 根域-.com顶级域-.google二级域-.www子域名-.mail子域名

域名空间结构

  • 根域名服务器:最高层次域名服务器,迭代查询的起点,最早共有13个,a~m.rootservers.net。
  • 顶级域名服务器:负责管理在该顶级域名服务器注册的所有二级域名。
  • 权限域名服务器:DNS以“区”为单位进行管理,每区设置权限域名服务器。
  • 本地域名服务器:直接为客户机提供域名解析服务的域名服务器。

域名空间结构

域名查找

  1. 查询本地缓存->host文件
    • 本地缓存:动态的、临时的内存数据(生存周期)
    • host文件:永久的、静态的的本地文件(可自己配置)如果hosts文件中有记录,其结果会覆盖缓存和网络查询结果
  2. 发送至DNS服务器查询
  3. 区分递归查询&迭代查询
    • 递归查询-任务代劳:客户-本地DNS服务器-地址交回客户
    • 迭代查询-线索指引:本地DNS服务器-根DNS-顶级DNS-一级DNS…

域名查询

DNS记录

  1. A-address记录:将特定的主机名映射到对应的IP地址。
  2. AAA-IPv6address记录:IPv6条件下的A记录。
  3. CNAME-Canonical name记录:记录用于将某别名指向某个A记录
  4. MX-mail exchange记录:指定负责处理发往收件人域名的邮件服务器。
  5. CAA记录:指定域名允许哪个CA为其颁发证书。
  6. NS-name server记录:指定该域名由哪个DNS服务器来进行解析。
  7. SRV记录:定义提供特定服务的服务器的位置。
  8. TXT-text记录:常用于对域名进行标识和说明。

WWW

通过互联网访问的,互相链接的超文本组成的巨大信息系统

工具:/HTTP/HTML

工作过程
  1. 浏览分析URL,获得Web服务器域名。
  2. 浏览器向DNS服务器查询Web服务器域名。
  3. DNS服务器回复Web服务器的IP地址。
  4. 浏览器与Web服务器的80端口建立TCP连接。
  5. 浏览器发出GET命令,请求获得首页网页文档。
  6. Web服务器发送首页网页文档。
  7. 释放TCP连接。
  8. 浏览器显示首页网页文档中的所有元素。

www工作流程

URL-Uniform Resource Locator

URL结构

HTML-Hyper Text Markup Language
  • HTML实现的网页页面中含有超级链接
  • 基于HTML实现的页面,不仅仅可以展示文本信息,还可以展示图片、视频、音频等"超"文本信息
HTTP-Hyper Text Transfer Protocol
  1. 基于TCP协议
  2. 服务器默认在80端口等待浏览器连接
  3. 浏览器发出GET消息,请求网页文档
  4. 服务器收到请求后,读取对应的网页HTML文档,并将数据以ASCII流返回浏览器。
  5. HTML文档传输结束后,断开TCP连接

无状态:服务器不维护以往的请求消息-----Cookie的引入

HTTP1.0 VS HTTP1.1
  1. 缓存处理:HTTP/1.1相比于HTTP/1.0引入了更多的缓存控制策略。
  2. 错误状态管理:HTTP/1.1新增了24个错误状态响应码。
  3. 范围请求:HTTP/1.1在请求头引入了range头域,它允许只请求资源的某个部分,支持断点续传
  4. Host:有了Host字段,就可以将请求发往同一台服务器上的不同网站,支持虚拟主机服务。
  5. 持久连接:HTTP/1.1 最大的变化就是引入了持久连接,即TCP连接可以被多个请求复用
  6. 流水线机制:HTTP/1.1中引I入了流水线机制,即在同一个TCP连接中,客户端可以同时发送多个请求。但会导致堆头阻塞,想象单条隧道装运货物的汽车

HTTP请求消息

  1. 请求行

    GET / HTTP/1.1 \r\n
    

    http请求行

    方法

    • OPTION-请求一些选项的信息
    • GET-请求读取由 URL所标志的信息
    • HEAD-请求读取由URL所标志信息的首部
    • POST-给服务器添加信息
    • PUT-在指明的URL下存储一个文档
    • DELETE-删除指明的 URL所标志的资源
    • TRACE-用来进行环回测试的请求报文
    • CONNECT-用于代理服务器
  2. 首部行

    Connection: keep-alive\r\n
    Upgrade-Insecure-Requests: 1\r\n
    User-Agent: Mozilla/5.0 (Windows NT 10.0; wOw64) ...
    Accept:text/html,application/xhtml+xml,application/xml ..
    Accept-Encoding: gzip, deflate\r\n
    Accept-Language: zh-CN,zh;q=0.9\r\n
    \r\n
    

    http首部行

HTTP响应消息

  1. 状态行

    HTTP/1.1 200 OK\r\n
    

    http相应行

    • 短语:助于理解状态码

    • 状态码:

      1XX 表示通知信息的,如收到请求或正在处理。
      2XX 表示成功,如接受或知道了。
      3XX 表示重定向,还必须采取进一步的行动。
      4XX 表示客户机差错,如请求有错误或不能完成。
      5XX 表示服务器差错,如服务器无法完成请求。

  2. 首部行

    Date: Sat, 24 Jul 2021 13:59:37 GMT\r\nServer: VlebServer\r\n
    X-Frame-Options: SAMEORIGIN\r\n
    Last-Modified: Sat, 24 Jul 2021 06:59:12 GMT\r\n
    Accept-Ranges: bytes\r\n
    Vary: User-Agent,Accept-Encoding\r\n
    Cache-Control: private, max-age=600\r\n
    Expires: Sat, 24 Jul 2021 14:09:37 GMT\r\n
    Content-Encoding: gzip\r\n
    ETag: "67ab-5c7d90ec04b39-gzip"\r\n
    Content-Length: 7142\r\n
    Content-Type: text/html\r\n
    Content-Language: zh-CN\r\n
    

    http响应报文首部行

    Server 服务器软件的名称
    Content-Type 响应正文的类型
    Content-Length 响应正文的长度
    Content-Language 响应正文使用的语言
    Content-Encoding 响应正文使用的编码方式
    ETag 资源的特定版本的标识符

HTTP Cookie

  • Cookie是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。Cookie使基丁无状态的HTTP协议记录稳定的状态信息成为了可能。主要用于以下三个方面:
    √会话状态管理(如登录状态、购物车等需要记录的信息。)
    √个性化设置(如用户白定义设置、主题等)
    √浏览器行为跟踪(如跟踪分析用户行为等)
  • Cookie包括五个部分构成:
    √域名:表示当前cookie所属于哪个域或子域下面。
    √路径:表示服务器可能会使用该Cookie的路径,通常是
    √内容:Cookie需要记录的内容,如用户名。
    √过期时间:指定该Cookic在什么时间过期。
    √安全:表示该cookie只能用https传输。

HTTP代理

  1. 浏览器首先与代理服务器建立TCP连接,向其高速缓存发出HTTP请求。如果缓存中有目的对象,则向浏览器返回网页对象。
  2. 高速缓存就代表发出请求的用户浏览器,与互联网上的源点服务器建立 TCP连接,并发送 HTTP 请求报文。
  3. 服务器返回网页对象,代理服务器接收到消息后,首先将其存储到高速缓存中,并将对象返回给浏览器
  4. 引入条件性GET,声明版本日期:If-modified-since:<da.ta>

http代理

Email

邮件

  • MUA
    • 撰写:为用户提供编写电子邮件的环境。
    • 显示:在计算机屏幕上显示邮件内容。
    • 处理:发送、接收、转换、删除等处理。
    • 通信:与发送和接收邮件服务器进行通信。
  • MTA
    • 从MUA或另一个MTA接收邮件。并将邮件(使用SMTP)传输到另一个MTA。
  • MDA
    • 运行POP3或IMAP协议,将电子邮件提交给MUA

SMTP

  • 连接建立:SMTP客户请求与服务器的25端口建立一个TCP连接。一旦连接建立,SMTP服务器和客户就开始相互通告自己的域名,同时确认对方的域名。
  • 邮件传送:利用命令,SMTP客户将邮件的源地址、目的地址和邮件的具体内容传递给SMTP服务器,SMTP服务器进行相应的响应并接收邮件。
  • 连接释放:SMTP客户发出退出命令,服务器在处理命令后进行响应,随后关闭TCP连接。

POP3

采用离线访问模式。允许用户从服务器上把邮件存储到本地主机上,同时删除保存在邮件服务器上的邮件。

IMAP

交互式邮件存取协议,客户端可以同步多个文件夹的邮件,客户端上的操作将会同步到服务器。可持续保持连接。它与POP3协议的主要区别是用户可以不用把所有的邮件全部下载,可以通过客户端直接对服务器上的邮件进行操作。

消息格式:RFC822

  • 头部(Header)

    • ASCII字符形式的消息内容

    • To:主收件人电子邮件地址

    • Cc:抄送收件人电子邮件地址

    • Bcc:密件抄送的电子 邮件地址

    • Subject:邮件主题

  • 主体(Body)

    • ASCII字符形式的消息内容

MIME

继续使用RFC822但定义传送非ASC码的编码规则

MIME

P2P协议

拥塞计算

K桶

假定A节点要加入加入Kad网络。首先找到一个引导节点B。生成一个随机的NodeID,并把节点B加入到自己的K桶(如左图)中。然后A节点向B节点发送一个"FINDNODE”请求。A节点在收到了“FIND NODE”请求的响应报文后,将响应报文中的节点加入到自己的K桶中,然后再向这些节点发送“FINDNODE”请求。

传输层

传输层协议

用于区分应用层不同进程,提供进程之间的逻辑通信

基于端口表示进程:

  • 服务器使用端口号

    • 熟知端口号0~1023(HTTP/HTTPS/DNS)
    • 登记端口号1024~49151(MYSQL)[客户端也可以用]
  • 客户端使用端口号

    • 短暂端口号49152~65535
  • 熟记端口

    协议端口
    TCPHTTP40
    HTTPS443
    FTP20/21
    DNS53
    SMTP25
    UDPDHCP67/68
    DNS53
UDP (User Datagram Protocol)

用户数据报协议

特点
  • 无连接协议
    • 首部开销小:8字节
  • 传输数据单位是UDP报文或用户数据报
    • 一次交付一个完整报文
  • 不需要回复
  • 不提供拥塞控制
  • 支持组播和广播和单播
功能
  • 复用和分用
  • 差错检测:只提示有错但不进行修正
UDP协议首部

UDP协议首部

UDP检验是将首部和数据一起检验

伪首部:双层校验(送到正确的主机和地址端口)

注意:

  • 传输层和数据链路层对整个数据报进行校验

  • 而网络层关注转发效率,只校验首部的传输路径

TCP(Transmission Control Protocol)

传输控制协议

特点
  • 可靠-面向连接-开销大
  • 传输的数据单位协议是TCP报文段(segment)
    • 字节流:不维护消息边界,只保证顺序
  • 点对点服务(一对一)
  • 把数据看做无序的字节流
TCP协议首部

在这里插入图片描述

  1. 源端口/目的端口:各占两字节,应用层不同服务的接口**[端口是复用分用功能的基础]**
  2. 序列号:4字节,本报文段传送数据的第一个字节。并非从1开始哦
  3. 确认号:4字节,预期收到的下一个数据包的第一位
    • 适当推迟确认,捎带确认提高效率[源源不断的数据流,停一会儿可以多确认一些数据]
  4. 数据偏移:4位,即首部长度,报文的数据段偏移,单位为4字节
    • 4*15=60,首部最长60字节,默认至少20字节[所以说开销大],至少装9个路由IP
  5. 特殊字段
    • URG: URG=1,紧急指针字段有效,紧急数据先传送
    • ACK: ACK=1,确认号字段有效
    • PSH: PSH=1,不等缓冲区满直接送至应用层
    • RST: TCP连接出错需要重新建立连接
    • SYN: 请求建立连接或接受连接请求报文
    • FIN: FIN=1,数据发送完毕,请求释放连接
  6. 窗口字段:2字节,设置发送窗口,单位为字节。窗口字段=0,不接受数据
  7. 校验和:2字节校验首部和数据,需要加上12字节的伪首部
  8. 紧急指针:16位,指向紧急数据的最后一个字节,和序列号说明紧急字段位置
  9. 选项字段
    • 窗口扩大选项:3字节,其中字节S表示窗口位数增加至(16+S)
    • 时间戳选项:10字节
    • 选项字段:
      • 对部分缺失数据重传
      • 最大报文长度选项
  10. 填充字段:首部长度为4字节的整数倍
TCP建立连接-2SYN+ACK

TCP建立连接

  1. 建立连接过程中不传输内容,不消耗序列号
  2. 服务器被动请求建立连接,释放是双方都有可能
  3. 第三部确认是对服务器端的保证
    • 如果是之前的延迟的SYN送达,服务器接受后导致资源被占用
TCP释放连接

TCP释放连接

  1. 设置定时器:
    • TIME_WAIT:防止有数据遗漏,避免遗漏的旧报文干扰新连接:接受重传的FIN
    • FIN-WAIT:确保FIN被对方收到,超时则重传
  2. 4次握手:确保双方发起的链接都能关闭
TCP可靠传输原理

超时重传机制:

  • 每一个分组设置超时计时器,收到确认就撤销计时器
  • 没有收到确认就重发

停等协议

  • 信道利用率低
  • 发一个确认一个,再发下一个

流水线协议

  • 发一组确认一个继续发下一组的下一个

  • 信道利用率高

滑动窗口协议

  • 发送窗口[WIN]+接收窗口[RWIN]
  • 发送窗口<发送缓存同时<接收窗口
  • 出错重传回退
  • 发送窗口:已发送未确认+等待发送
  • 累计确认:只确认最后收到的包,说明在此之前全部收到,不过会导致一两个成功的包还是要被重发[回退N帧]
  • 选择性重传:

滑动窗口协议

TCP重传定时器

重传定时器

每一个样本到达都会更新一次,基于前一次的旧RTT再更新

持续定时器/保活定时器/等待控制定时器

TCP拥塞控制

拥塞控制原理:对资源需求总和>可用资源

开环控制

漏桶算法

  • 分组到达速率<漏桶速率:不管
  • 分组到达速率>漏桶速率:按照不超过桶大小的分组队列分批次传输

令牌桶算法

  • 网络中的节点均维护一个令牌桶,并以一个恒定的速度向令牌桶里注入令牌。
  • 当有数据需要发送,就需要先从桶里获取一个令牌,当桶里没有令牌可取时,则无法发送数据。
  • 令牌桶在注满后,会丢弃令牌,而不是丢弃数据分组。

闭环控制:基于窗口的方法进行拥塞控制(CWND:拥塞窗口)

慢开始&拥塞避免算法:

慢开始和拥塞避免

  1. 发送数据,发生超时[若不发生拥塞丢包,cwnd线性增加]
  2. 慢开始门限 ssthresh = cwnd / 2
  3. 拥塞窗口 cwnd = 1
  4. 重新进入慢开始阶段
  5. 当 cwnd >= ssthresh 时进入拥塞避免
  • 当cwnd<ssthresh时,使用慢开始算法。
  • 当cwnd>ssthresh时,使用拥塞避免算法。
  • 当cwnd=ssthresh时,既可使用慢开始算法,也可使用拥塞避免算法。
  • 慢开始算法:CWND指数规律增加。
  • 拥塞避免算法:CWND线性增加。
  • 初始窗口(IW)大小的的取值方法
    • If SMSS> 2190 bytes:
      IW=2*SMSS且不大于2个报文段
    • **If (SMSS >1095 bytes)and (SMSS<= 2190bytes):
      IW=3*SMSS且不大于3个报文段
    • If SMSS<= 1095bytes:IW=4*SMSS且不大于4个报文段
      SMSS(Sender Maximum Segment Size,最大报文段大小)

快重传和快恢复

快重传和快恢复

发送方:发送 SEQ=1,2,3,4,5,6,7
接收方:收到 1,2,3,5,6,7(4丢失)
接收方:每收到5,6,7时都回复 ACK=4(重复确认)
发送方:收到第3个ACK=4时,立即重传SEQ=4

  1. 当发生快重传时(收到3个重复ACK):
    • 慢开始门限设置为当前拥塞窗口的一半:ssthresh = cwnd / 2
    • 拥塞窗口设置为新的慢开始门限:cwnd = ssthresh
    • 注意:不是将cwnd设为1,这是与超时重传的关键区别
  2. 然后执行拥塞避免算法,线性增加拥塞窗口[跳过慢开始]

问题

  1. 一个UDP用户数据报的数据字段长度为8192字节,在链路层通过以太网发送,则应该分成()个IP数据片。
    • 以太网帧MTU(最大传输单元):1500字节
    • 片偏移要求是8的整数倍
  2. 因特网上所有计算机都应能接受的TCP报文长度为536字节,20[TCP头部]+20[IP头部]+536=576[至少要接受的IP报文长度]-一个数据报只要不大于576字节,就一定能在不借助分片的情况下,穿过任何标准网络到达目的主机,并被目的主机接收
  3. TCP报文段中窗口字段的含义是要求接收方预留的缓冲区大小
  4. 如果主机1的进程以端口x和主机2的端口y建立了一条TCP连接,这时希望在此两个端口间再建立一个TCP连接,那么会建立失败,不影响先前建立连接的传输
    • 一个四元组对应一个TCP连接,相同端口四元组相同,TCP连接无法区分
  5. TCP释放连接由收发任何一方均可发起
  6. TCP连接建立可以由任何一端发起,但通常情况下我们称发起连接的一方为"客户端",等待连接的一方为"服务器"。
  7. TCP重传计时器设置的重传时间大于往返时延
  8. 拥塞控制分为开环控制和闭环控制
    • 开环控制:设计网络时预先考虑拥塞问题
    • 闭环控制:运行时检测网络状态,根据网络反馈信息及时调整[TCP]

网络层

网络层功能:寻址 和 路由 尽力交付 VS 传输层 确保交付

  • 当IPv4报文在传输过程中出错并被丢弃后,最终是由传输层(如果使用的是TCP协议)发现并触发重传的。

虚电路服务和数据报服务

  • 虚电路鲁棒性低,如果路径出错无法及时调整,无法实现动态调整
  • 虚电路提供稳定的传输路径,减少抖动和乱序,从而更好地支持实时流量,这是其优势。

协议

  • IP是TCP/IP协议族的主要协议
  • ARP(Address Resolution Protocol)负责IP和MAC地址映射
  • ICMP(Internet Control Message Protocol)发送控制消息,提供各种通信问题反馈
  • IGMP(Internet Group Management Protocol)组播成员管理协议

IPv4协议

IPv4首部

  1. 版本:4位,版本号为4

  2. 首部长度:4位,单位为双字-四字节,四字节对齐,且充分利用比特位,最大为60

  3. 区分服务

    在这里插入图片描述

  4. 总长度:首部和数据之和,单位为字节,精确到字节,最大长度位65535字节**[总长度不能超过最大传送单元MTU]**

  5. 标识-Identification:一条消息分为不同数据段,这些数据段标识相同

  6. 标志Flags:3位(0、DF、MF)

    • 0保留位
    • DF:0必须分段,1不允许分段
    • MF:0最后一段,1还有更多段
  7. 片偏移Segment Offset单位为8字节,覆盖总长度,被分段的数据在源信息中的相对位置

  8. 生存时间TTL:跳数,过一个路由-1

  9. 协议Protocol:该数据段上层处理协议以及相关服务协议

  10. 首部校验和Header Checksum:只对报头进行校验

  11. 源IP/目的IP:32位

  12. 选项:额外信息,严格的源路由选择(严格按照给定路由路径传输),松的源路由选择(只要包含选定路由器),时间戳和记录路由

  13. 填充Padding

IPv4分片问题

  1. 增加处理开销和延迟:路由器或目的主机进行额外的运算+每个分片都需要独立的链路层封装和发送增大了延迟
  2. 几句数据报丢失的风险:IP数据报所有分片必须全部到达才能充足,丢失一个分片,整个原始数据包被丢弃,需要全部重传

IPv6

优点

  • IPv4地址不足

  • 减小路由表简化协议,提高路由传输效率

    • 相信底层链路:设计者认为,数据在链路上传输时,数据链路层(如以太网)已经有很强健的帧校验序列(如CRC32),能够以极高的可靠性检测出错误。在IP层再做一次校验被认为是冗余的。
    • 相信上层协议:更重要的是,像TCP和UDP这样的传输层协议都有自己的校验和,它们可以捕获IP层可能漏掉的错误。
  • 主机不改变地址的情况下漫游[QUIC]

区别

  • 报头8字节对齐
  • 地址从32位拓展到128位
  • ipv6数据部分只能传输完整的报文,不能分片

在这里插入图片描述

  1. 版本:4位,ipv6
  2. 通信量类:4位,对数据包尽心类别和优先级区分
  3. 流标号:20位,源端目的端建立伪连接
  4. 有效载荷长度:ipv6数据包除基本首部(40字节)以外的字节数
  5. 下一个首部:8位,相当于选项和协议字段
  6. 跳数限制:占用8位,TTL
  7. 扩展首部
    • 逐跳选项:传输路径上每个路由器都要处理的内容
    • 目的选择
    • 路由选项:类似IPv4的宽松路由选项
    • 分段选项:分段仅发生在路由器的源端,即传输路径的源节点
      • 路径MTU发现:反复试探,被丢弃后得到ICMP“Packet Too Big”错误消息,调整MTU-避免在传输过程中分片
      • 发生分片,增加8字节的扩展首部
      • 分片头部[Fragment Header]:下一个头部+保留字段+分片偏移+M标志
    • 认证选项:验证源端的身份
    • 加密安全载荷选项

IPv4最小MTU为576,IPv6最小MTU1280

MTU-Maximum Transmission Unit

MTU:链路层最小传输单元

隧道:将整个IPv6报文作为数据部分封装在IPv4协议里转发

  • IPv4与IPv6的共存期漫长:IPv6并不是要立刻、完全取代IPv4。这两个协议在很长一段时间内是共存的。全球网络的核心和边缘仍然存在大量只支持IPv4的设备和路由器。
  • IPv6“孤岛”的出现:一些网络(如大学校园、企业数据中心、运营商网络)会率先升级支持IPv6,形成一个个IPv6的“孤岛”。
  • 通信需求:这些IPv6孤岛上的主机需要与其他IPv6孤岛上的主机进行通信,但它们之间的骨干网络可能仍然是纯IPv4的。

问题:一个纯IPv4的路由器无法理解IPv6数据包的报头,因此收到后会直接丢弃。

解决方案:隧道技术。既然IPv4网络不理解IPv6,那我们就把IPv6数据包伪装成一个IPv4数据包,让它看起来像是普通的IPv4数据,从而顺利通过IPv4网络。

  • 隧道入口路由器执行 “封装”

    • 它将整个原始的IPv6数据包当作 “数据载荷”

    • 然后,在这个载荷前面,加上一个全新的 IPv4报文头协议字段为41

    • 这个新IPv4头部的源地址是隧道入口路由器的IPv4地址。

    • 这个新IPv4头部的目的地址是隧道出口路由器(在目标IPv6孤岛2上)的IPv4地址。

    • 在IP头的“协议”字段中,会填入一个特殊值(如41),表明这个IPv4包里面封装的是一个IPv6数据包。

例如ipv6首部+ipv4的报文

IPv6分片
IPv4分片

IP地址

32位进制码=网络ID(Network ID)+主机ID(Host ID)

网络ID:由交换机或网桥连接起来的局域网使用相同的网络ID

网络地址:主机ID为全0

广播地址:主机ID为全1

路由器:路由器每一个接口都有一个不同网络ID的IP地址

IP地址分类

IP地址分类

  • 主机ID:去掉全0[网络本身]和全1[广播地址]
  • 网络ID-针对A类地址:
    • 0.0.0.0/8用于特殊用途【/8表示网络ID的位数】
    • 127.0.0.0/8保留于环路测试
  • A:1-126
  • B:128-191
  • C:192-223
  • D:224-239 组播地址
  • E:240-255 保留地址
子网掩码
  • 定义网络边界
  • 通过网络ID区分远程主机和本地主机
  • 区分主机号和网络号
特殊IP地址
  1. 私有IP地址(扩大IPV4的使用范围)

    私有IP地址绝对不应该出现在全球互联网(因特网)的公网路由中。利用NAT上网

    • 它们在全球范围内没有意义,即不属于任何特定的公司或个人。
    • 任何网络都可以在其内部自由、重复地使用它们
    • 携带这些地址的数据包,不得在公共互联网上被路由
    • Class A:10.0.0.0 到 10.255.255.255,子网掩码为255.0.0.0/8
    • Class B:172.16.0.0 到 172.31.255.255,子网掩码为255.255.0.0/12
    • Class C:192.168.0.0 到 192.168.255.255,子网掩码为255.255.255.0/16
  2. 特殊IP地址

    • 环回地址-只出现在操作系统中不出现在internet中:127.0.0.0 到 127.255.255.255整个地址段
    • 0.0.0.0:本网络上的主机/源地址/默认网关(没有明确的路由器可选直接丢给0.0.0.0/0)
    • 受限广播地址:255.255.255.255
子网编址
  • 划分子网一般在企业内部,对外仍为二级IP地址,外部路由器仍按原地址路由,在内部进行分子网路由

  • 每划分一个子网就会减少两个可用IP地址

划分子网:把大网络切分成为小网络

多占主机ID一位,子网个数*2-2

在传统的IP子网划分中,有一个规则是避免使用全0和全1的子网,因为全0子网(即子网号部分全0)可能与本网络混淆,全1子网(子网号部分全1)可能与广播地址混淆。然而,在现代网络中,这个规则通常不再严格遵循,尤其是在使用CIDR(无类别域间路由)之后。

可容纳更多区域网

子网编址

超网:无类别域间路由,多个连续的小网络合并为大网络

缩短子网掩码,实现路由聚合,提高路由效率

  • 例:航天学院7个子网,走一个出口
    • 可以把7个IP相同的前n位化为子网号,变为一个路由

子网掩码存储在路由表,不写在IP首部

CIDR(无类别域间路由):可变长子网掩码,对IP地址连续分配,地址数一定是2的整数次幂

私有IP地址:NAT网络地址转换

多个内网主机公用一个外网IP(用不同端口号区分)

IPv6地址

IPv6支持单播,多播,任意播(找附近的主机,选择最近的一个)

不支持广播

  • 效率低下
  • 广播风暴
  • 不精确
  1. 16位地址用十六进制表示:冒号隔开(128位)
  2. 允许0压缩,但只能一次压缩
  3. IPv4地址记为::128.10.2.1

地址分类

  1. 未指明地址:给未配置IP地址的主机使用
  2. 环回地址:同127.0.0.1
  3. 组播地址:同IPv4组播地址
  4. 本地链路单播地址:没连接到互联网,但可以在本地使用TCP/IP协议通信,不能和互联网其他主机通信
  5. 全球单播地址

IPv6地址分类

组播地址

在这里插入图片描述

加前缀变为物理地址

RP标志(即R标志)是IPv6组播地址格式中,紧接在 FF 前缀后的4位标志字段的最高位比特。它用于指示该组播地址是否嵌入了会合点的单播地址信息。

**组播能跨网段,核心不是靠“IP映射为MAC地址”,而是靠网络层的路由协议和组管理协议-利用路由器构建生成树。**MAC地址只在本地网络有效,在传输过程中,源、目的MAC会一直改变。

本地网络控制块范围240.0.0.0255.255.255.254

​ 在RFC 6890中定义的、用于特殊实验目的的保留地址块

IP=网络号+主机号

路由器

路由器的主要功能是在不同网络之间转发数据。它的每个接口都连接到一个独立的广播域(通常就是一个IP子网)。因此,只要接口另一端的设备与路由器接口处于不同的IP子网,连接就是合理的。

网络层传输分类
  • 同一子网内直接传输
    • 查询ARP缓存,找MAC地址
    • 没有缓存则发送ARP广播,收到回复MAC地址
  • 不同区域网内通过路由传输
    • 将数据包封装发给默认网关
    • 默认网关解封装到网络层,找IP地址
      • 默认网关用于隔离本地和外部网络
      • 内部网络连接到外部网络的桥梁**(主机->默认网关->下一个路由器)**
    • 路由器查询路由表找路由
      • 如果与目标子网直连,通过接口发送数据
      • 否则转发给下一跳路由器

跨子网通信,数据包的封装过程中,源和目标IP地址不变,MAC地址发生改变

路由表
组成
  1. 目的地址:路由表索引项
    • 路由表用目的IP搜索(网络层)
    • 交换机用MAC地址搜索(数据链路层)
  2. 子网掩码:与目的地址做&操作,选择结果合适的最长的一个
  3. 下一跳:数据包转发途径的下一个实体
  4. 接口:用于发送数据报的网络接口-Interface
  5. 开销:到目的网络的开销(跳数?)
流程
  1. 从数据报的首部提取目的主机的IP地址D,得出目的网络地址为 N

  2. 若网络N与此路由器直接相连,则把数据报直接交付目的主机D;否则是间接交付,执行(3)。

    • 最长前缀匹配
  3. 若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(4)。

  4. 若路由表中有到达网络V的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行(5)。

    路由转发

  5. 若路由表中有一个默认路由(Internet)0.0.0.0/0,则把数据报传送给路由表中所指明的默认路由器;否则,执行(6)。【西工大的统一出口找清华】

  6. 报告转发分组出错。

理想路由算法

路由器的改变但是路由表无法及时更新

适应网络变化

路由算法分类

  • 动态路由算法:
    • 中心式:中心路由接受所有路由的接口信息
    • 分布式:和相邻路由器进行信息交互
    • 独立式:每个节点根据本地信息做出路由决策(不进行路由信息交换)
      • 热土豆算法
  • 静态路由算法:
    • 泛洪:除了接收到该数据的接口外每条路都走,返回结果【可能占用大量带宽】
    • 随机游走:随机转发【可能循环】

自治系统

一个管理机构控制的路由器和网络群组

  • 路由器必须相互连接
  • 运行相同的路由协议
  • 分配同一个自治系统编号

路由协议

  • 内部网关路由协议IGP-Interior Gateway Protocol:在一个自治系统内部使用的路由选择协议
  • 外部网关路由协议EGP-External Gateway Protocol:在自治系统边界,将路由信息传到另一个自治系统
内部网关协议

[间接路由协议]传输过程中只有目标ip

距离矢量路由协议[分布式]

路径最短【Bellman-Ford算法】-只知道相邻路由间的信息,无法构建整个网络的拓扑

  • 每个路由器维护一个路由表,内容包括最短路径[跳数]-接口/下一跳路由器-目的网络

  • 定期向所有邻居发送路由表[目的网络和距离即可]

  • 按接受的路由表信息更新路由表

  • 建立路由表

    1. 初始化:只知道直接连接的网络,距离为0
    2. 接收邻居的路由表
    3. 更新路由表:将邻居报告的距离加1跳得到新距离与原路由表比较
    4. 定期发送
  • RIP协议

    • 路由表构成:Network-Interface-Cost
    • 封装在UDP中

    RIPv2

    • 仅在相邻路由器交互路由信息
    • 30s定时交换
    • 度量值为跳数,16跳表示不可达
    • 路由环路
      • 环路的产生:路由信息传递的延迟不一致,导致多个路由器在某个时刻对同一网络的路由选择形成循环依赖(网络中a失效,路由器C的连接a清0,但又从路由器B得到a的连接,B清0后又得到C的连接)
      • 避免环路机制:
        1. 定义最大度量值防止计数无穷大(跳数16截止)
        2. 路由失效后,启用抑制计时器,不接受该失效路由的更新
        3. 水平分割:从某个接口得到的更新消息不允许再发出去
        4. 毒化翻转:失效直接将跳数设为16,广播
        5. 触发更新:网络中发生变化,路由器理解发送新的路由表
      • RIP定时器:
        1. 更新计时器:30s
        2. 失效计时器:180s后没收到可刷新现有路由器的刚更新,路由的度量设为16
        3. 刷新计时器:时效即时起超时60s未收到路由更新包,则删除路由条目
        4. 抑制定时器:失效计时器到时,立马进入180a的抑制定时器,防止路由环路

链路状态路由协议[中心式]

通过泛洪的方式向网络所有路由器广播发送本路由器的链路状态,构建网络的拓扑图【Dijikstra算法】

  1. 发送HELLO消息,发现路由器的邻居节点,并获得其网络地址。
  2. 测量到邻居节点的延迟和开销。
  3. 构造链路状态分组,分组中含有刚获得的链路状态消息。
    • LSA 内容:一条LSA通常包含:
      • 路由器ID:发出此LSA的路由器的唯一标识。
      • 直连的网络和邻居列表:与哪些网络或路由器相连。
      • 链路的开销:到达每个邻居或网络的“代价”(通常基于带宽)。
      • LSA的序列号、年龄等:用于识别信息新旧,保证可靠性。每条LSA都有一个递增的序列号。路由器只接受并传播序列号更新的LSA。
    • 不同类型的LSA描述不同实体(路由器、网络等),共同构成完整的拓扑图。
  4. 将此链路状态分组广播到网络中所有路由器-先给邻居-邻居再给令居的令居。
  5. 每个路由器将这些LSA汇总,在本地形成一个 链路状态数据库
  6. 计算出到网路中其它路由器的最短路径。

链路状态路由算法

这种方式使得链路状态协议收敛速度快能避免路由环路,并且对网络变化的响应更精确,但代价是对路由器CPU和内存资源消耗更大,并且设计更复杂(需要划分区域来管理泛洪范围)。对比距离矢量的简单

反向学习法路由算法

  1. 初始状态:所有节点的路由表为空。

  2. 路径发现(常与洪泛结合):当一个节点需要发送数据但无路由时,它使用洪泛法将数据包广播出去。该数据包会通过网络中的所有可能路径传播。

  3. “学习”发生:当节点从它的某个端口 Port X 收到一个来自源地址 S 的数据包时,该节点就进行一个关键的逆向推理:

    “既然这个来自 S 的数据包能从 Port X 到达我这儿,那么如果我想发数据回 S,把数据从 Port X 发回去,应该就是正确的方向。”

  4. 更新路由表:节点立即在自己的路由表中创建或更新一条记录:

    • 目的地S
    • 下一跳/输出端口Port X
    • (通常还会记录一个超时时间,如果一段时间内没有再从该方向收到 S 的包,则删除此条路由,以适应拓扑变化)。

OSFP协议

  • 将一个自治系统划分为若干个更小的区域
  • 触发式更新
  • 可靠泛洪[可靠指的是有确认]
  • 汇集树:有向的以自身(目标节点)为根节点的生成树
  • OSPF跳过了标准的传输层(TCP/UDP),自己充当了一个运行在IP层之上的、具备可靠传输和路由功能的“子协议栈”。OSPF消息的直接载体是IP数据报。这种设计使其在保持轻量级连接管理的同时,能高效、可靠地进行组播通信和链路状态泛洪,完美契合了链路状态路由协议的需求。
  • 运行OSPF的路由器通过每10秒向其各个接口发送Hello分组,接收到Hello分组的邻居路由器就知道该路由器存活。默认如果在40秒内没有收到Hello分组,就认为该邻居路由器不存在了。

OSPF协议拓扑结构

  1. 问候:发现和维护路由器相邻关系
  2. 数据库描述:向相邻路由器发出自己链路状态数据库的摘要
  3. 链路状态请求:如果是新信息,向对方请求链路状态项目的详细信息
  4. 链路状态更新:5种链路状态
    • 区域内广播
    • 指定路由器
    • 边界路由器
  5. 链路状态确认[可靠]:对链路状态更新的确认

OSPF协议格式

外部网关路由协议

BGP协议-Border Gateway Protocol

  • 封装在TCP中
  • “BGP发言人”:边界路由器[负责不同自治系统AS的通信路由]
  • 打开-更新-保活-通知-路由更新 5种报文

BGP报文
BGP拓扑
BDP工作流程

组播及组播路由协议

广播路由

  • 广播易泛洪

    • 序列号控制

    多维洪泛法。节点记录已转发数据包的源和序列号,丢弃重复包。它能有效抑制重复分组,并能在静态网络中避免环路。

    • 跳数控制

    通过设置TTL(生存时间)限制广播传播的范围。只能限制范围,无法避免在TTL耗尽前产生的环路和重复分组

    • 反向路径控制

    工作原理:节点收到一个广播包后,检查该包到达的端口

    如果这个端口,正是该节点“返回”包源地址的“最短路径”上的端口(即查询单播路由表,去往源地址的下一跳端口),那么RPF检查成功。节点将向所有其他端口转发该包。否则,RPF检查失败,节点丢弃该包。

    ​ 自动形成无环的广播树。

    ​ 广播包沿从各节点返回源的最短路径反向传播,效率较高。

    ​ 无需单独维护广播树,依赖现有单播路由表。

    • 生成树无法避免环路

组播

爱奇艺会员

  • 组播需要硬件组播地址支持[见IPv4和IPv6]
  • 组播需要成员管理协议[谁的会员到期/谁管辖的区域有会员]
    • IGMP管理组播成员
      1. 加入组播组。当某个主机加入新的组播组时,该主机应向组播组的组播地址发送IGMP报文,声明自己要成为该组的成员。本地的组播路由器收到IGMP报文后,将组成员关系转发给互联网上的其他组播路由器。
      2. 本地组播路由器要周期性探询本地局域网上的主机,判断主机是否还继续是组的成员。只要对某个组有一个主机响应,那么组播路由器就认为这个组是活跃的。但一个组在经过几次的探询后仍然没有一个主机响应,则不再将该组的成员关系转发给其他的组播路由器。
        • 问题:很多主机相应询问导致组播路由器接收崩溃
          • 给每个主机设置一个随机延迟,若有主机发送广播回复,其他主机监听响应后放弃发送[最后一台主机失效发送离开报文,默认不再询问]
  • 组播需要组播路由协议-生成树
  • IGMPv2的离组报文是主机发给 224.0.0.2(本网段所有路由器)的“辞职信”,路由器收到后需要做个“民意调查”(特定组查询)来确认是否真的没人要接收了,然后才停止转发流量。
    • 反向路径广播
  1. 一开始,路由器转发组播数据报使用洪泛的方法。
  2. 路由器收到组播数据报时,先检查它是否是从源点经最短路径传送来的。若是,则转发。否则丢弃。
  3. 存在几条同样长度的最短路径,那么只能选择一条最短路径,选择的准则就是看这几条最短路径中的相邻路由器谁的 IP 地址最小。
  4. 最后就得出了用来转发组播数据报的组播转发树
路由表结构
  1. 路由器是具有多个输入端口和多个输出端口,转发分组以连接不同网络的专用计算机。
  2. 路由器通过查找路由表,将分组从合适的端口转发给下一跳路由器。
  3. 下一跳路由器也执行同样的操作,直到将分组转发到目的主机。
  4. 路由器是典型的网络层网络互联设备。
  5. 路由选择算法-路由表-转发表

路由结构

  • 路由选择:路由表+路由选择处理器+路由选择协议 更新和维护路由表

  • 分组转发

    • 交换结构:根据**转发表[从路由表得出]**对分组进行处理,选择合适端口转发

      • 通过内存交换:将分组从输入端口复制到内存,在复制到输出端口的缓存
      • 通过总线交换:分组直接通过总线实现从输入端口到输出端口的传送,但受总线速率限制
      • 通过纵横结构交换:发送到与输入端口平行的水平总线,再从空闲的竖直总线发出

      纵横结构

    • 输入端口:含物理层、数据链路层、网络层处理模块

    路由器输入结构

    • 输出端口:含物理层、数据链路层、网络层处理模块

路由器输出

访问控制列表ACL-Access Control List
  • ACL对入站和出站的流量分开进行过滤控制。
  • 过滤控制的动作分为允许(permit)和拒绝(deny)。
  • ACL的操作流程就是对入站或出站的分组依次检查规则,一旦分组与某条ACL规则匹配,就会停止匹配,路由器根据该条匹配规则的内容决定允许或者拒绝该数据包。
  • 如果数据包内容与ACL语句不匹配,那么将依次使用ACL列表中的下一条语句去匹配分组直到规则列表的末尾。如果分组与所有的规则都不匹配,则直接使用默认规则DENY。

分类

  1. 标准ACL[1-99] [1300-1999]:只对源IP地址进行过滤
  2. 扩展ACL[100-199] [2000-2999]:包括协议、端口号、源/目的IP

配置标准ACL

  1. 创建标准ACL
Router(config)# access-list access-list-number [permit|deny] source [mask]
  1. 通配符匹配规则:0一致,1可以变化
  2. 将ACL绑定到指定接口
Router(config-if)# ip access-group access-list-number { in I out }

ACL配置

此处采用标准ACL

配置扩展ACL

  1. 创建扩展ACL
Router(config)# Router (config)# access-list access-list-number { permit | deny }
protocol source source-wi ldcard [operator port]destination destination-wi ldcard [ operator port ]
[ established ] [log]
  1. 将ACL绑定到指定接口
Router(config-if)# ip access-group access-list-number { in I out }

ARP协议

将网络层IP地址解析出数据链路层MAC地址

解析结果存储在主机缓存中-采用广播询问-单播回复

ARP协议帧格式

ICMP协议-Internet Control Message Protocol

报错&网络诊断&状态查询

ICMP协议类型

协议帧格式

ICMP协议帧格式

应用实例-路由重定向

  • 主机200.100.100.100通过交换机与路由器200.100.100.1和路由器200.100.100.254相连,其中路由器200.100.100.1作为主机的默认网关。
  • 主机向目的主机150.150.0.10发送数据报时,首先根据默认网关的设置,将数据报发送给路由器200.100.100.1。
  • 路由器200.100.100.1接收到此数据报后,检查路由器表,发现更佳的路由,下一跳为路由器200.100.100.254。
  • 在向路由器200.100.100.254转发的同时,向主机200.100.100.100发送重定向报文。主机接收到重定向报文后,后续发往150.151.0.10的数据报将直接发送给路由器200.100.100.254。[方便]

Ping命令

Ping 自身ip/网关IP/网关外的IP

测试到远程网络的连接

Tracert命令

追踪数据包从你的计算机到互联网上另一个目标主机所经过的路径

linux上是traceroute

利用IP协议的生存时间TTL

tracert工作原理

ICMPv6
ICMPv6

ICMPv6 for ARP

ICMPv6 for ARP

软件定义网络-Software Defined Networking

  1. 数据平面与控制平面分离
    • 转发平面:由简单的SDN交换机(如openflow交换机)组成,只负责根据流表高速转发数据包,傻瓜式硬件。
    • 控制平面:集中在SDN控制器中,网络的大脑,负责计算所有路由路径,生成流表下发给交换机。
      • 控制器拥有网络的全貌,可以实现传统分布式协议难以做到的全局最优调度、快速故障恢复和精细流量工程。
      • 控制器功能:通信层网络范围状态管理层网络控制应用程序接口
  2. 网络控制功能位于数据平面交换机的外部
  3. 可编程的网络:通过控制器的北向API,网络管理员可以用高级语言(如Python)编写网络应用程序,实现灵活的策略(如安全策略、负载均衡、特定业务路径),而无需关心底层设备的具体命令。这被称为 “软件定义” 的精髓。
  4. 控制器南向API用于控制器与分组交换机之间的通信

软件定义网络

流表

流表

简单转发

软件定义网络简单转发

负载均衡

软件定义网络负载均衡

访问控制

软件定义网络访问控制

SDN控制器的结构

软件定义网络控制结构

数据链路层

基本功能

  • 封装成帧:给报文添加首部和尾部,标记帧的开始和结束
  • 差错控制:检错和纠错
  • 流量控制:滑动窗口,确保实体发送的数据不会覆盖接受实体已接收的数据
  • 链路管理:在两个网络实体之间提供数据链路连接的创建、维持和释放管理

封装成帧

  • 字符计数法
  • 特殊字符界定法
  • 特殊位串界定法
  • 物理层编码违例法
  1. 字符计数法

每帧的第一位为该帧的长度,进行划分

  • 在构建一个帧时,首先在帧的开头第一个字节(或第一个字段)写入一个数字。
  • 这个数字表示从当前这个字节开始,直到帧结束为止,整个帧包含的字符(或字节)数
  • 然后,紧接着填入数据载荷。
  • 最后将完整的帧发送出去。

字符计数法

局限:如果某一划分字节出错后续帧的划分全部失效

  1. 特殊字符界定法

特殊字符界定法

使用一些特殊的、保留的字符来明确标识一个帧的开始和结束。

  1. 帧开始符:一个特殊的字符,标记帧的开始。

    • 常用 SOH(Start of Header,ASCII码 0x01)或 STX(Start of Text,ASCII码 0x02)。
  2. 帧结束符:一个特殊的字符,标记帧的结束。

    • 常用 EOT(End of Transmission,ASCII码 0x04)或 ETX(End of Text,ASCII码 0x03)。
  3. 转义字符:一个特殊的字符,用于"转义"数据部分中出现的与控制字符相同的字节。

    • 常用 ESC(Escape,ASCII码 0x1B)或 DLE(Data Link Escape,ASCII码 0x10)。

    ESC转义字符的使用

    1. 特殊位串界定法

填充比特位7E[flag]

使用一个特殊的比特序列(标志序列)来标识帧的开始和结束,并通过"比特填充"技术确保数据部分不会出现与标志序列相同的比特模式。

  • 在要发送的数据块前后都加上标志序列 01111110
  • 关键步骤(比特填充/零比特插入)
    • 发送方会扫描数据部分的所有比特(不包括标志序列)。
    • 采用"逢5个1插1个0"的规则:每当连续出现5个"1"时,就自动插入一个"0"
    • 这样,数据部分最多只会出现5个连续的"1",永远不会出现6个连续的"1"(即标志序列的模式)。
  • 将处理后的完整帧发送出去。
  1. 物理层编码违例法

使用在正常数据编码中不会出现的、违反编码规则的信号序列来标识帧的开始和结束。

  1. 发送方:在帧的开始和结束位置,插入一个特殊的违例编码信号(即一个不符合正常编码规则的信号)。
  2. 接收方:通过检测这些违例编码信号来确定帧的边界。

差错控制 [确认/重传]

  • 检错码:冗余位
  • 纠错码:hamming
  1. 检错码

通过在原始数据中添加冗余信息(校验位),使得接收方能够检测数据传输过程中是否发生错误,但不能自动纠正错误的技术。

信息位+冗余位(校验位)

发送方利用数据计算冗余位,而接收方利用接收到的数据计算冗余位,与接收的冗余位作比较

循环冗余校验(CRC)原理:

  • 将数据位串视为一个多项式
  • 用数据多项式除以一个预定义的生成多项式
  • 将得到的**余数作为校验码(CRC码)**附加到数据后面

步骤:

  • 选择生成多项式 G(x)作为除数
  • 在数据位串后添加 n 个0(n为生成多项式的次数),位数-1
  • 用这个扩展后的数据除以生成多项式(模2除法,异或)
    • 异或:相同为0,不同为1
  • 将得到的余数替换掉添加的 n个0,组成发送帧

差错控制检错码

  1. 纠错码
  • Hamming Code

    • 校验位插入在数据位,位置是2的幂次方(1、2、4、8…)
    • 2^r >= m + r + 1
    • 确认好插入校验位的数列
    • 利用奇校验/偶校验求C1-r(1的个数为奇数或偶数)
    • 验证:异或求S,正常为全0,异常为错误的bit所在的位数

    hamming码

流量控制

见TCP滑动窗口协议及停等协议

链路管理

建立连接、维持连接、释放连接

  • 广播链路:共享信道协议来协调主机的发送
  • 点到点链路
PPP协议组成
  • [数据链路层协议框架]Point to Point Protocal
  • 连接管理 身份认证 协议多路复用

PPP协议构成

  • 成帧方法:数据包的封装格式,毫无歧义地确定串行链路,支持帧的错误检测
  • 链路控制协议(LCP-Link Control Protocol):负责建立、配置、维护和终止链路
  • 网络控制协议(NCP-Network Control Protocol):负责上层特定协议(如IP)的配置

PPP协议帧格式

PPP协议帧格式

  • Flag:帧首帧尾各站占字节,帧同步和帧分界作用

  • 地址:占1字节,0xFF

  • 控制:1字节,地址和控制字段实际没有有效信息,通过LCP协议压缩选项省略两个字段

  • 协议:占1字节或2字节,由通信双方通过LCP协议协商

    • IP:0x0021
    • 网络控制数据:0x8021
    • PPP链路控制数据:0xC021
    • 鉴别数据:0xC023
  • 信息部分:PPP有效载荷1500字节,长度可变

    • 代码-code:长度为1字节,给出了通信双方在协商过程中请求和响应的操作类型。

      • 配置请求(Ox01,Configure-Request)
      • 配置响应(Ox02,Configure-Ack)
      • 配置否定响应(Ox03,Configure-Nak)
      • 配置拒绝(Ox04,Configure-Reject)
      • 终止请求(Ox05,Terminate-Request)
      • 终止响应(Ox06,Terminate-Ack)
      • 代码拒绝(Ox07,Code-Reject)
      • 协议拒绝(Ox08,Protocol-Reject)
      • 回声请求(0x09,Echo-Request)
      • 回声应答_(OxOA,Echo-Reply)
      • 丢弃请求(OxOB,Discard-Request)
    • 标识-identifier:长度为1字节,是由LCP协商请求一方产生的序列号,用于区分和匹配不同的请求消息。它的取值会在随后的请求过程中递增。

    • 长度-length:长度为1字节,用于指明LCP协商数据的长度。

    • LCP数据-data

  • 填充:长度可变,信息部分和填充字段总长达到1500字节

  • 帧校验序列-FCS[Frame Check Sequence]:默认2字节,可以是4字节。校验范围包括地址、控制、协议、信息内容字段

PPP透明传输:解决数据中与控制字符相冲突的字符

  1. 面向字节的异步链路:使用字节/字符填充
  2. 面向比特的同步链路:使用比特填充
  • 将信息字段中出现的每一个0x7E字节转变成为2字节序列 (0x7D, 0x5E)
    • 这里的 0x5E0x7E 字符与 0x20(0010 0000)进行异或运算的结果。
  • 若信息字段中出现一个0x7D的字节,则将其转变成为 2 字节序列 (0x7D, 0x5D)
    • 这里的 0x5D0x7D0x20 进行异或运算的结果。
  • 若信息字段中出现ASCII码的控制字符(即数值小于0x20的字符),则在该字符前面要加入一个0x7D字节,同时将该字符的编码加以改变。
  • 例如 0x01(SOH),通常也会进行转义,将其转换为 (0x7D, 0x21)
    • 这里的 0x210x010x20 异或的结果。
    • 接收方接收到数据后,会反向操作。当它看到转义字符 0x7D 时,就知道它和紧随其后的那个字节是一个“转义序列”。它会将 0x7D 丢弃,并将其后面的字节与 0x20 再进行一次异或运算,还原出原始的数据字节。
  • 比特填充:5个连续1,立即填入0
    • 接收方:对接收到(去除标志字段后)的比特流进行扫描。
      • 当发现连续5个“1” 时,就检查其后的一位。
      • 如果第6位是“0”,则将这个“0”删除,继续处理后续数据。
      • 如果第6位是“1”,那么它结合前面的5个“1”就构成了 01111111,这通常表示一个帧的结束或异常状态。

PPP协议无差错控制-纠错重传

  • 在数据链路层出现差错的概率不大时,使用比较简单的 PPP 协议较为合理。
  • PPP协议主要承载的数据是IP数据报。数据链路层的可靠传输并不能够保证网络层的传输也是可靠的。传输层和物理层足够可靠。
  • 帧检验序列FCS字段可保证无差错接受。
  • 真正的“无差错控制”指的是它没有自动重传机制。它发现错误后只是简单地丢弃。

PPP协议工作过程

  1. 双方分别进行链路请求配置-确认
  2. 认证请求
  3. 网络配置请求
  4. 数据传输
  5. 终止请求

PPP协议工作过程

PPPoE:以太网上的PPP协议

​ 以太网是【局域网】的规则,就像城市交通规则

​ PPP是【广域网】点对点连接的规则,就像专用高速公路

  • 采用隧道方式传输数据,结合以太网高效传输和PPP的用户认证功能
  • PPPoE报文封装

PPPoE协议封装

  1. 版本(Ver):占4比特,PPPoE版本号,当前的值必须为0x1。

  2. 类型(Type):占4比特,PPPoE的类型,当前的值必须为0x1。

  3. 代码(Code):占1字节,PPPoE报文类型。

    0x00,表示会话数据。
    0x09,表示PADI报文;
    0x07,表示PADO或PADT报文;
    0x19,表示PADR报文;
    0x65,表示PADS报文。

  4. 会话ID(Session_ID):占2字节,与以太网Source_address和Destination_address一起标识了一个PPP会话。值Oxffff为将来的使用保留,不允许使用。

  5. 长度(Length):占2 字节,用于说明PPPoE的负载长度。统计范围不包括以太网头部和PPPoE头部的长度。

  • PPPoE工作流程

PPPoE工作流程

局域网数据链路层——共享信道

  • 采用广播式通信,节点可以访问网内其他节点
  • 总线型以太网,总线是共享信道,如果两台或多台设备同时发送数据,它们的电子信号就会在信道中叠加、混淆,导致所有数据都损坏无法识别。这就是 “冲突”
  • 需解决信道接入技术,**CSMA/CD[有线]和CSMA/CA[无线]**是目前的主要解决方案
局域网MAC协议

MAC地址

6字节,前24位为厂商标识,后24位为厂家自行指派的扩展表示,确保无重复地址

  • 地址字段的第一字节最低位为I/G:Individual/Group

    1. 单播帧:I/G = 0,单播地址
    2. 广播帧:48位地址全为1,广播地址
    3. 多播帧:I/G = 1,多播地址
  • 适配器从网络上收到MAC 帧时,首先用检查MAC帧中目的地址字段。如果是发往本站的帧则收下,否则丢弃。以混杂模式工作的网卡可收到所有帧。

多址接入协议
  • 固定多址接入协议
  • 随机多址接入协议:ALOHA \ CSMA \ CSMA/CD \ CSMA/CA
  • 受控多址接入协议

多路复用

CDMA-物理层多层复用

  1. 时分复用:将提供给整个信道传输信息的时间划分成若干时间片(简称时隙Slot),并将这些时隙分配给每一个信号源使用。
    • 同步时分复用:时间片是预先分配好的,而且是固定不变的,因此各种信号源的传输定时是同步的。
    • 异步时分复用:又称为智能时分复用或统计时分复用(STDM, Statistical Time Division Multiplexing),它对用户采用动态“按需分配”时隙策略。
    • TDMA-Link16:划分多个时隙,其他机器监听
  2. 频分复用:将用于传输信道的总带宽划分成若干个子频带(或称子信道),每一个子信道分配给每一个信号源使用。
  3. 码分复用:用一组包含互相正交的码字的码组携带多路信号
    • 每个用户码型不同,为了发送比特 1,用户A就完整地播出他的整个码片序列 (+1, -1, +1, +1, -1, -1, +1, -1)。为了发送比特 0,他就播出他码片序列的反码 (-1, +1, -1, -1, +1, +1, -1, +1)
    • 所有用户发送的信号线性叠加为混合的总信号,即为所有信号对应位相加
    • 接收方知道它想收听用户A,所以它手里有用户A的独一无二的码片序列 (+1, -1, +1, +1, -1, -1, +1, -1)。接收方对收到的总信号进行一个叫做 “相关” 的数学运算。它用自己的码片序列与总信号逐位相乘再求和。
      • 如果匹配(是用户A的信号):用户A的序列与它自己的序列完全一致,(+1 * +1) + (-1 * -1) + ... 这样算下来,结果(内积)会是一个很高的正值(比如+8)。接收方就知道:“啊,这是一个 1!” 如果结果是很高的负值(比如-8),就知道是 0。[如果是+6-6也算是较为理想的结果]
      • 如果不匹配(是其他用户的信号):其他用户的序列与用户A的序列是正交的(设计上相互“垂直”)。当进行相关运算时,他们的信号会相互抵消,最终结果接近于零,被视为背景噪音而忽略。

受控多址接入协议

  1. 基于预约的多址接入:节点在发送报文之前进行资源预约,预约成功则无冲突传输
  2. 基于轮询的多址接入:一个节点作为主站,其余节点在主站控制下使用信道,发送报文
  3. 基于令牌的多址接入:所有节点构成一个环形拓扑,令牌沿环进行流转,持有令牌的节点可以占用信道发送报文

随机多址接入协议

  1. 完全随机的多址接入协议 ALOHA(你好再见)

    纯ALOHA:用户在新数据产生时立即发送,不考虑信道占用状态。冲突的报文被丢弃。发生冲突后随机延迟。[2T]

    纯ALOHA

​ 时隙ALOHA:报文长度是固定的,必须在一个时隙内传输。减 小了冲突发生的概率。

时隙ALOHA

  1. 载波侦听多址协议(CSMA)

    • 非坚持CSMA:当节点监听到信道忙状态时,不再坚持监听,而是随机后延一段时间再来监听。

    非坚持CSMA

    • 1-坚持CSMA:当节点要送数据时,先监听信道若信道忙,就坚持监听,直到信道空闲为止,当空闲时立即发送一帧。
    • P-坚持CSMA:当某站准备发送信息时,它首先监听信道,若空闲,便以概率P传送信息,而以概率(1-P)推迟发送。

    随机多址协议吞吐率对比

    随机多址接入协议吞吐率

网卡

  1. 实现CSMA/CD和CSMA/CA协议的设备
  2. 数据的串/并行转换和缓存

网卡

有线局域网MAC协议

CSMA/CD

  • 特点:

    • 无连接、无确认通信方式:信道质量产生差错概率很小
    • 半双工:允许双向交替传输,但需监听冲突
    • 采用曼彻斯特编码方式发送数据
  • 要点:

    • 载波侦听:在发送数据前、发送数据中,均检测信道中有无其它节点发送数据。
    • 多点接入:多个节点以多点接入的方式连接在一根总线上
    • 冲突检测:节点边发送边监听,判断自己在发送数据时是否与其它节点发生冲突。
  • 协议流程图

CSMACD协议流程图

  • 冲突实例

CSMACD冲突实例

  • 争用期

    • 采用1-坚持CSMA,传输器+争用期+空闲期
    • 传播时延为t
    • 端到端往返时延 2t 称为争用期[极端情况下的冲突],或碰撞窗口。10Mbit/s 以太网取 51.2 μs 为争用期的长度,对应帧长64字节
    • 经过争用期这段时间还没有检测到碰撞,就能肯定这次发送不会发生碰撞。说明这次信道占用成功,所有其他设备都能监测到这个信号。
  • 退避算法BEB-Binary Exponential Backoff Algorithm

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

CSMACD阻塞信号

CSMA/CD协议帧格式

  • DIX v2
  • IEEE 802.3

CSMACD协议帧格式

  1. 前导码-7字节:1010101…,物理层同步,一串交替的1和0,让接收方网卡的时钟与发送方同步,做好接收准备。
  2. 帧起始定界符-1字节:10101011。标志着真正帧数据的开始。最后两个连续的 1 告诉接收方:“后面的就是MAC帧了”。
  3. 目的MAC地址-6字节:指明帧的接收者。可以是单播地址、组播地址或广播地址
  4. 源MAC地址-6字节:指明帧的发送者
  5. 类型/长度字段:
    • 当数值 ≤ 1500 时,表示后面 “数据”字段的字节长度。这就是 IEEE 802.3 长度帧,需要 LLC子层。
    • 当数值 ≥ 1536 (十六进制 0x0600) 时,表示 “上层协议的类型”。例如,0x0800 代表IPv4,0x86DD 代表IPv6。这就是 以太网 II 类型帧(DIX帧),也是最常见的格式,直接承载网络层数据包。
  6. 数据与填充字段-46~1500字节:
    • 数据:来自上层协议(如IP包)的有效载荷。
    • 填充:为了保证整个帧(从目的MAC地址帧校验序列不小于64字节(即 6+6+2+46+4 = 64)。如果数据部分不足46字节,就必须用0填充至46字节。
  7. 帧校验序列-4字节:基于CRC算法,对整个帧(从目的地址到数据部分)计算校验和。接收方重新计算,如果不匹配,则说明传输中出错,直接丢弃该帧。这是链路层的差错检测,但不负责重传(重传由上层如TCP负责)。
  • 例题
  1. 考虑建立一个CSMA/CD网络,电缆长度是1000m,无中继器。在上面建立一个1Gbit/s速率的CSMA/CD网络。若信号在电缆中的传播速度为2.0*10的8次方m/s。则其最小帧长度为()。

    CSMA/CD要求帧的传输时间至少是信号在往返传播延迟的两倍(实际上,在最坏情况下,帧的发送时间必须至少等于往返传播延迟,以确保在发送结束前检测到冲突

  2. 假定站点 A 和 B 在同一个 10 Mbit/s 以太网网段上。 这两个站点之间的传播时延为225 比特时间。现假定 A 开始发送一帧,并且在 A 发送结束之前 B 也发送一帧。如果 A 发送的是以太网所容许的最短的帧。那么 A 在检测到和 B 发生碰撞之前能否把自己的数据发送完毕?换言之,如果A在发送完毕之前并没有检测到碰撞,那么能否肯定A所发送的帧不会和B发送的帧发生碰撞?

    10 Mbit/s 以太网网段:发送时间为512比特时间+前导62bit=576bit

    最短的帧:64字节

    往返传播时延:450比特时间

    T>2τ

  3. 若站点A和B在t=0时同时发送了数据帧。当t=225比特时间,A和B同时检测到发生了碰撞,并且在t=225+48=273比特时间完成了干扰信号的传输。 A和B在CSMA/CD算法中选择不同的r值退避。假定A和B选择的随机数分别是rA=O和rB=1。试问A和B各在什么时间开始重传其数据顿?A重传的数据帧在什么时间到达B?A重传的数据会不会和B重传的数据再次发生碰撞?B会不会在预定的重传时间停止发送数据?

    • 帧间间隔:对于任何想要发送帧的站点(无论是首次发送还是重传),在信道空闲后,都必须等待96比特时间的帧间间隔。这是一个强制性规则。
    • 退避等待:从完成干扰信号发送的时刻开始,站点启动退避计时器。退避时长 = r * 512 比特时间

    A重传的数据帧到达B的时间包括:冲突发现+干扰信号传输+干扰信号传播+退避时间 + 帧最小间隔+ 数据传播时延=225 + 48 + 225 + 0 + 96 + 225=819比特时;B重新侦听数据链路时间包括:冲突发现+干扰信号传输+退避时间=225 + 48 + 512 = 785比特时间;此时开始监听信道,再经过一个顿间间隔96比特时间,在881比特时间开始发送。819<881,此时A还在传数据给B,B侦听到信道忙,不会发送数据,推迟发送。

  • 前导字节:SFD 字段 就是明确的“开始”信号。当接收方识别到 10101011 这个独特的模式时,它就确切地知道,接下来的一个字节就是目的MAC地址,一个新的帧正式开始了。
  • 帧最小间隔
    • 网络设备在发送完一个数据帧后,必须强制等待的一段“冷静期”或“休整期”,然后才能开始发送下一个帧。
    • 其标准长度为 96 比特时间
    • 给接收方处理时间
      • 当一个帧到达接收方(如网卡、交换机端口)时,硬件需要时间来执行一系列操作:进行FCS校验、更新计数器、将数据包从缓冲区转移到内存、中断CPU等。
      • IFG 确保了在下一个帧到来之前,接收方有最低限度的、有保障的时间来完成对上一个帧的“善后”工作。如果没有这个间隔,背靠背的帧可能会“淹死”接收方,导致丢包。
虚拟局域网-Virtual LAN
  • 传统LAN基于地埋位置划分网络,VLAN可实现基于组织划分网络,将流量限制在组织内部,提高网络安全性。
  • VLAN支持将位于不同位置的成员构成一个工作组,可调整VLAN的范围,提高组网便捷性。
  • VLAN可有效限制广播域的范围,提高网络性能。

划分VLAN

  • 基于端口划分VLAN:就是将交换机的某些端口划分为一个VLAN。优点是简单明了,管理方便,缺点是维护相对繁琐。
    • **Access Link(访问链路):**某个端口配置为访问链路时,表示该端口只属于一个VLAN,且仅向该VLAN转发数据帧。
    • TrunkLink(干道链路):某个端口配置为干道链路时,表示该端口用于实现多个VLAN之间的通信。

划分VLAN

  • 基于MAC地址划分VLAN:根据MAC地址将若干节点划分在一个VLAN内。优点是用户移动时不用重配置,缺点是管理复杂。
  • 根据网络层划分VLAN:每个主机的网络层地址或协议类型划分。适用于广域网,基于不用在局域网。
  • 基于组播划分VLAN:即认为一个组播组就是一个VLAN。这种划分方法将VLAN扩大到了广域网,不适合局域网。

VLAN工作形式

  1. 输入端口添加VLAN标签识别不同的VLAN流量
  2. 交换机通过干道链路传输带有VLAN标签的帧。
  3. 输出端口剥离VLAN标签。

802.1Q帧

802.1Q

无线网络MAC协议

WLAN-Wireless Local Area Network[802.11]

  1. 用于解决有线局域网在布线、改造、成本方面的不足。
  2. 优点是安装便捷、易于规划、易于扩展、灵活性和移动性高。
  3. 不足是安全性和传输速率不如有线局域网。

ESS

  • DS-Distribution System:分布式系统,用于连接多个BSS(基本服务集)的系统,从而扩展无线网络的覆盖范围。DS允许数据在多个AP之间传输,使得无线客户端可以在不同的AP之间漫游。

802.11面临的问题

802.11面临的问题

  • 隐藏终端问题
    • 有三个节点A、B和C,它们的无线信号覆盖范围如图所示:A可以到达B,C也可以到达B,但A和C彼此听不到(因为距离太远或有障碍物)。
      问题:当A向B发送数据时,C由于听不到A的发送,它可能也会向B发送数据,导致在B处发生碰撞。这种情况下,A和C互为“隐藏终端”。
    • 引起数据丢失,重传
    • 解决方案:使用RTS/CTS(请求发送/清除发送)握手信号。
      步骤:
      1. A在发送数据前,先向B发送一个RTS(Request To Send)帧,RTS帧中会包含预计占用信道的时间。
      2. B收到RTS后,向A回复一个CTS(Clear To Send)帧,CTS帧中也会包含相同的时间信息。
      3. A收到CTS后,开始发送数据。
      4. 由于C在B的覆盖范围内,它也能听到B发送的CTS帧。C知道接下来会有一段时间信道被占用,于是它在这段时间内不会发送数据,从而避免了碰撞。
  • 暴露终端问题-等就行了,时间问题
    • 同样有三个节点A、B、C和D,
      问题:当B向A发送数据时,C听到B的发送(因为C在B的覆盖范围内),于是C避免发送。但实际上,如果C想向D发送数据,这是可以的,因为C的发送不会干扰A接收(A在C的覆盖范围外),而D在C的覆盖范围内,但不在B的覆盖范围内。这种情况下,C是“暴露终端”,它不必要地被抑制了发送。
    • 效率低下
    • 解决方案:同样可以使用RTS/CTS,但方向相反。在暴露终端问题中,C听到B的RTS,但听不到A的CTS(因为A离C太远),那么C可以推断出自己可以发送。但是,标准的802.11协议并没有为此提供完美的解决方案。
CSMA/CA

信道预约

信道预约

RST冲突不解决,没必要

CTS为广播,被其他端监听到,预留信道

帧间间隔

  • SIFS(Short InterFrame Space): 用于一次交互过程中,两帧之间的间隔。
  • PIFS(PCF InterFrame Space): 点协调方式下访问信道的时间间隔。
  • DIFS(DCF InterFrame Space) : 用于节点发送数据前判断信道是否空闲
  • EIFS(Extended Interframe Space) : 前一帧出错的情况下,发送节点需要延迟EIFS再发送帧。
    信道预约时间间隙

退避机制

  • 触发条件:站点有数据要发送,检测到信道持续空闲一个DIFS间隔后,必须进入退避过程;发送数据失败重传;每次发送成功继续发送数据

退避机制

  • slot:一个被划分出来的资源单元[时隙:变相的时间单位,将时间划分为等长的块]
  • suspend:保持当前状态不变
  • 站点从[0,CW]范围内,随机选择一个整数作为退避计时器,若检测到信道空闲,-1,否则冻结
  • 当退避计数器减至0,获取信道使用权
  • 若重传,CW=2*CW-1

BEB算法

  • 退避窗口(backoff window),也称竞争窗口(contention window),初始大小受物理层相关,默认范围为[0,31]个slot(不同厂家定义不同),slot大小因介质而异。
  • 发生第一次重传后,竞争窗口在[0,63]个slot中随机选取一个
  • 每发生一次重传后,竞争窗口就移至下一个2的指数
  • 达到六次重传后,竞争窗口不再增大。
  • 发送成功后竞争窗口恢复默认大小

对比两种退避机制

分片传输

分片传输

802.11帧结构

802.11帧结构

  • 协议版本:MAC版本
  • 类型:管理帧、控制帧和数据帧
  • 子类型字段:1011为RTS,1100为CTS,1101为ACK
  • 去往/来自DS:标明帧发送到或来自于分布系统
  • 更多分片:标明上层数据是否被分段处理
  • 重传:表明当前帧是重传的帧,协助接收方剔除重复的帧
  • 功率管理:由AP通知工作站唤醒或进入休眠状态(省电模式)。
  • 更多数据:表明后面还有更多分段数据
  • WEP:表明帧内容已用WEP加密算法加密
  • 顺序字段:数据必须严格依次进行传输
  • 持续时间版本:占2字节,第15位为0时,用于设定NAV[请勿打扰告示牌],数值为预计占用信道多少微秒。第14、15位为01时,设定无竞争周期,11时设定休眠模式。
  • 地址字段:包括地址1-地址4四个字段,地址4用于自组网。去往/来自DS字段为01时,地址1/3为目的/源地址,地址2为BSSID;为10时,地址3/2为目的/源地址,地址1为BSSID。
  • 序号控制字段:占16位,用于重组帧或丢弃重复帧
  • 帧主体字段:用于传输上层有效数据
  • FCS:4字节,检查数据的完整性,通常采用CSC

无线:信号会衰弱-码率正确率下降-不采用碰撞检测[CSMA/CD]-无法识别碰撞

CSMA CA地址字段

  1. RA(接收地址)TA(发送地址)DA(目的地址)SA(源地址)
    • 前往DS=0,来自DS=0BSS 内部通信(如 BSS1 内的笔记本 A 给 B 发数据),地址 1 是目的地址,地址 2 是源地址,地址 3 标识当前 BSS,地址 4 无用。
    • 前往DS=0,来自DS=1数据从 DS 进入 BSS(如从互联网经 DS 发给 BSS1 的客户端),地址 1 是目的地址,地址 2 是当前 BSS 的 AP 地址(BSSID),地址 3 是数据的源地址,地址 4 无用。
    • 前往DS=1,来自DS=0数据从 BSS 发往 DS(如 BSS1 的客户端给互联网发数据),地址 1 是 AP 的地址(BSSID),地址 2 是源地址,地址 3 是目的地址,地址 4 无用。
    • 前往DS=1,来自DS=1DS 之间的通信(如两个 BSS 通过 DS 互传数据),四个地址分别对应接收地址、发送地址、目的地址、源地址。

WPAN无线个域网

  • WPAN实现活动半径小、业务类型丰富、面向特定群体、无缝连接的无线通信。
    用在诸如电话、计算机、附属设备以及小范围(一般在10米以内)内的
  • 数字助理设备之间的通讯。
  • 支持无线个人局域网的技术包括:蓝牙、ZigBee、超频波段(UWB)、IrDA、HomeRF等,其中蓝牙技术在无线个人局域网中使用的最广泛。

WPAN-Bluetooth蓝牙

在这里插入图片描述

zigbee

  • 采用自组织网络形式建立网络拓扑。
  • 低成本、低功耗、低速率、低时延、近距离、高容量、计算和存储能力受限。
  • 对网络安全性、抗干扰性、结点自动配置、网络动态重组等方面有一定的要求。
    在这里插入图片描述

WMAN

WMAN

  • 终端设备:能够接收WiMAX信号并实现网络连接的无线设备
  • 用户基站:提供基站与终端设备间的中继连接
  • 基站:无线信号和有线信号互相转化的桥梁
  • WiMAX网关:将WiMAX网络和Internet相连的重要设备,实现对互联网的出口

物理层

  • 基本概念

    • 机械特性:指明接口所用接排列、固定和锁寸、引线数目和线器的形状和尺定装置等。
    • 电气特性:指明在接口电出现的电压的缆的各条线上范围。
    • 功能特性:指明某条线上出现的某一电平的电压表示何种意义。
    • 过程特性:指明对于不同可能事件的出现功能的各种可能顺序。
  • 系统模型:

通信系统模型

  • 常用术语:
    • 数据:运送消息的实体
    • 信号:数据的电气的或电磁的表现
    • 模拟信号:代表消息的参数的取值是连续的
    • 数字信号:代表消息的参数的取值是离散的
  • 码元:在数字通信中常常用时间间隔相同的符号来表示一位二进制数字,这样的时间间隔内的信号称为二进制码元。每秒钟传送码元的数自称为波特率。
  1. 信道:一般用来表示向某一个方向传送信息的媒体。

  2. 单向通信:只能有一个方向的通信而没有反方向的交互。

  3. 双向交替通信:通信的双方都可以发送信息,但不能双方同时发送或接收。

  4. 双向同时通信:通信的双方可以同时发送和接收信息

  • 编码方式:
    • 不归零制:正电平代表1,负电平代表0(无法区分0和无信号)
    • 归零制:正脉冲代表1,负脉冲代表0(不能连续放电充电)
    • 曼彻斯特编码:位周期中心的向上跳变代表0,位周期中心的向下跳变代表1。但也可反过来定义。(存在反接问题)
      • 曼彻斯特编码的同步信息来自于每一位的中间的强制性跳变,而不是信号起始边界。
      • **将时钟与数据取值都包含在信号中
    • 差分曼彻斯特编码:在每一位的中心处始终有跳变。位开始边界有跳变为0,而位开始边界没有跳变为1。(有跳变为0,无跳变为1,无论正接反接结果相同)

在这里插入图片描述

  • 调制方式:调幅、调频、调相

信道传输速率不可能无限提高:实际带宽受限,有噪声、干扰和失真

在这里插入图片描述

H为带宽

传输介质

  • 有线介质(导引型):电磁波被导引沿着固体媒体传播
    • 双绞线
      • 非屏蔽双绞线
      • 屏蔽双绞线
    • 同轴电缆
    • 光纤
      • 单模光纤
      • 多模光纤
  • 无线介质(非导引型):在自由空间中传输
    • 长波、中波、短波、微波和红外线
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值