导航

计算机网络协议

Posted on 2022-11-27 22:19  wuqiu  阅读(27)  评论(0编辑  收藏  举报

网络协议

  1. 定义 : 通信双方必须遵守的规则、标准、约定
  2. 三要素
    1. 语法 -- 数据与控制信息的结构或格式,如:数据格式、信号电平
    2. 语义 -- 需要发出何种控制信息、完成何种动作、如何应答
    3. 时序(同步) -- 时间实现顺序的详细说明,包括信息同步,速度匹配和顺序

物理层协议

四个特性

  1. 机械特性: 定义物理连接的特性,规定物理连接时所采用的规格、接口形状引线数目引脚数量排列情况
  2. 电气特性: 规定二进制位时,线路上信号的电压范围阻抗匹配传输速率距离限制等
  3. 功能特性: 指明某条线上出现的某一电平表示何种意义,接口部件的信号线的用途
  4. 规程特性: 定义各条物理线路的工作规程和时序关系

USB2.0/USB3.0

USB3.0提供全双工的数据传输

数据链路层协议

停止等待协议

每发送完一个帧就停止发送,等待对方的确认,在收到确认后再发送下一个帧。可以看成一种特殊的滑动窗口协议(发送窗口与接收窗口大小均为1),发送端接收到一个确认后,向右滑动一个窗口。

出错情况 : 接收端检测出错或者数据帧丢失、确认帧丢失、确认帧迟到。

超时计时器 : 每次发送一个帧就启动一个计时器,计时器的计时要比平局往返传输时间要长一些(RTT)。如果超时,将会重新传输一个帧。

传输帧和确认帧传递失败都会重新传输,所以在发送端要保有传输的副本以便重传,在接收端要检测是否接收过以便重传确认帧

滑动窗口协议

  1. 后退N帧协议(GBN)
    发送方的窗口大于一,接收方的窗口等于一。在发送方的滑动窗口中有三种状态 : 发送完毕确认完毕的、|| 发送完毕但还没有确认的、可以进行发送的 || 还不可以进行发送的(||窗口中||)

    发送方要考虑的事情:

    1. 接收上层调用
    2. 接收接收方回传的ACK : 由于采用的是累计确认,接收到N的确认,也就代表在N之前的帧都已经收到了
    3. 超时时间 : 如果出现了超时,发送方会重新传递所有已经发送但是没有确认的帧

    接收方要考虑的事情:

    1. 如果正确的收到n号帧,那么回传一个n的ACK,并将该帧的数据部分上交给上层
    2. 其余情况都丢弃帧,并且为最近按序接收的帧重新发送一个ACK。

    接收方无需缓存任何失序帧,只需要维护一个下一个预计接到的帧。例如接受方收到了 12 45,它一直在等待着接到3,但是没有,就会为12返回一个ACK,丢掉45

    滑动窗口长度的问题:
    若采用n个比特对帧进行编号,那么发送窗口的尺寸应该满足 : \(1 <= W_t <= 2^n -1\)。 因为发送窗口尺寸过大,就会使得接收方无法区别新帧和旧帧。

    重点总结

    1. 累计确认(偶尔捎带确认 : 指接收方也做发送,顺带着将ACK带回)
    2. 接收方只按序对帧进行接收,如果不是按序的就都丢弃(并发送最近正确的帧的ACK)
  2. 选择重传协议(SR)

    发送窗口大于1,接收窗口大于1。相对于后退N帧协议的接收方只接收一个正确的帧。选择重传协议可以接受任何在窗口内的帧。

    发送方要考虑的事情:

    1. 上层的调用
    2. 接收方传回的ACK : 如果收到ACK,假如该帧序号在窗口内,则SR发送方将对应帧标记为已接收。如果该帧位于窗口下界,那么窗口向前移动到第一个未被确认的帧的位置上。如果窗口移动并且窗口内有未发送的帧,那么发送这些帧
    3. 超时事件 : 每一个帧都有一个自己的定时器,一个超时事件发生后,只重新传输一个帧

    接收方要考虑的事情:

    1. 只要是窗口内的帧,就接收然后回传对应ACK,当窗口内的全部帧都接收到了之后,将整个窗口送往上层,并向前移动滑动窗口。
    2. 如果收到小于窗口下界的帧,回传对应ACK
    3. 其他情况忽略

    滑动窗口长度问题:
    发生窗口的大小最好等于接收窗口的大小。 \(W_{Tmax} = W_{Rmax} = 2^{n-1}\)

    重点总结

    1. 对数据帧逐一确认,收一个确认一个
    2. 只重传出错帧
    3. 接收方有缓存
    4. \(W_{T max}=W_{R max} = 2^{n-1}\)

HDLC通信协议

高级数据链路控制(High-level Data Link Control)是面向比特的数据链路层协议。该协议不依赖于任何一种字符编码集

  1. 站 : HDLC有3种站类型 分别为主站,从站和复合站

    1. 主站 : 负责控制链路的操作,主站发出的帧称为命令帧
    2. 从站 : 从站受控于主站,按主站的命令进行操作,发出的帧称为响应帧
    3. 复合站 : 既具有主站的功能,又具有从站的功能。可以发出命令帧和响应帧
  2. 两种链路配置 :

    1. 非平衡式配置 : 由一个主站控制整个链路的工作
      1. 正常响应方式。这是一种非平衡结构操作方式。即主站向从站传输数据,从站响应传输,但从站只有在收到主站的许可后,才可以进行响应。
      2. 异步响应方式。这是一种非平衡结构操作方式。从站即使未收到主站的允许,也可以进行传输。
    2. 平衡式配置 : 链路的两端的两个站都是复合站,每个复合站都可以平等地发起数据传输,而不需要对方复合站的允许
      1. 异步平衡方式 : 每一个复合站都可以进行对另一站的数据传输。
  3. HDLC帧
    HDLC的帧格式
    标志位 -- 地址A --- 控制C --- 信息(零比特传输) ---

    1. 信息帧(I) : 控制位第一位为 0 : 用来传输数据信息
    2. 监督帧(S) : 控制位为10,用于流量控制和差错控制
    3. 无编号帧(U) : 控制位为11,用于提供对链路的建立,拆除等控制功能

IEEE局域网参考模型

  1. 物理层 分为 上子层 : 介质访问单元(MAU),做信息编码、信号发送和介质处理等 下子层 : 介质说明

  2. 数据链路层被分为

    1. 逻辑链路控制(LLC)子层 : IEEE 802数据链路层的上子层,它对于所有的LAN协议来说都是相同的。

    该层中包含了数据帧中和用户相关的部分 : 逻辑地址、控制信息和数据。

    1. 媒体访问控制(MAC)子层 : 解决共享介质的竞争使用问题。它包含了从一个地方到另一个地方所需要的同步、标记、流量和差错控制等信息,也包含着下一个站点的物理地址。不同的局域网MAC协议式不同的。
  3. IEEE802标准

需要注意的是802.3、802.4、802.5三个标准是横跨物理层与数据链路层的

随机访问介质访问控制

  1. CSMA协议(载波监听多路访问协议)

    CS : 载波侦听,侦听信道上是否有其他计算机在发送数据

    MA : 多点接入,表示应用的情况为总线型网络

    在发送帧之间,监听信道。若信道空闲会发送帧,信道忙时推迟发送。

    1. 1-坚持CSMA : 监听信道。若空闲则直接传输,不必等待。若忙则一直监听。若产生冲突,随机sleep一段时间,重复上述过程。

    信道利用率高,冲突率高。

    1. 非坚持CSMA : 监听信道。若空闲则直接传输,不必等待。若忙则等待一个随机时间,再进行监听。

    信道利用率低,冲突率低

    1. P-坚持CSMA : 监听信道。若空闲有P的概率直接传输,1-P的概率等待到下一个时间槽再传输。若忙则持续监听。

    两者兼顾

  2. CSMA/CD协议

    CD指碰撞检测,在发送数据时,也在检测总线上是否有其他的计算机在发送数据(通过检测信道上电压的变化)

    最迟知道自己发送的数据与其他数据发生了碰撞的时间 = 两倍的总线端到端的传播时延。最早为 0

    截断二进制指数规避算法

    1. 确定基本退避时间为争用期\(2\tau\)(两倍的总线端到端的传播时延)
    2. 定义参数k,等于重传的次数,但是k不超过10,即k = min (重传次数,10).当重传次数不超过10时,k等于重传次数;当重传次数大于10时,k就不再增大而一直等于10
    3. 从离散的整数集合[0,1,...,\(2^k\)-1]中随机取出一个数r,重传所需要的规避时间就是r倍的基本退避时间,即\(2r\tau\)
    4. 当重传达16次仍不能成功时,向上层报错,这个帧不再进行传输。

    帧的传输时延至少要两倍于信号在总线中的传播时延。

    \(\frac{帧长(bit)}{数据传输速率} >= 2\tau\)

    以太网规定的最短帧长为64B,短的全都不要

  3. CSMA/CA协议

    CA 为碰撞避免

    CD式协议应用于以太网连接,CA协议可以应用于无线局域网

    1. 发送方在发送数据之前检测信道是否空闲,若空闲则发出RTS(request to send)。若忙则等待。
    2. 接收端收到RTS后,响应CTS(clear to send)。
    3. 发送方收到CTS后,开始发送数据帧(同时预约信道:告知其他站点自己要传多久的数据)。
    4. 接收端收到数据帧后,用CRC检验是否正确,正确则相应ACK帧。
    5. 发送方收到ACK就可以进行下一个数据帧的发送,若没有则一直重传至规定重发次数为止。(二进制指数规避算法)

网络层协议

分布式路由选择策略

  1. RIP协议 -- 距离向量路由算法
    算法概述:

    1. 每个路由器周期性的将自己关于整个网络的信息发送给它的邻居

      1. 每个路由器都有关于整个网络的信息
      2. 仅仅和邻居进行交换
      3. 无论是否有变化,周期性的进行发送(30s)

      收到邻居的路由表后,取相同目的地更小的更新

    2. 每个路由器依据路由表来转发数据包
      数据表的表项格式 : NetID(目的网络) : Distance(网络距离) : Nexthop(下一个跳转地址)
      典型算法 RIP : 将距离定义为跳数(所经过的路由器的个数)

  2. OSPF协议 -- 链路状态路由算法

    1. 每个路由器和互连网络中的所有其他路由器共享关于它邻居的信息
      1. 共享关于邻居的信息
      2. 信息发给所有的路由器
      3. 周期性发布(30min)
    2. 使用Dijsktra算法计算单原点到达所有目的节点的最短路径

IP协议

IP协议为高层提供不可靠、无连接的数据报通信。网络中每个独立的主机的每个接口必须有一个唯一的Internet地址,也称为IP地址。IP地址长度为32位。表示地址空间是2^32

  1. IP地址的表示方法

    1. 二进制表示方法
      8位一个字节,32位共有4个字节。二进制表示中通常在中间加上一个空格。
    2. 点分十进制表示方法
      每个字节写成一个十进制数(这个数小于256)
    3. 十六进制表示方法
      每一个十六进制数等效为4个位
  2. IP地址的分类

  3. 子网编址
    将IP中的主机号部分进一步的划分为了子网号和一个主机号。

    1. 子网掩码 : 可以借助子网掩码找到IP地址中的子网部分。
      1. 子网掩码是一个32比特的数值,其中值位1的比特用于网络号和子网号,为0的比特留给主机号。
      2. 子网掩码是一个网络或一个子网的重要属性。路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码。若一个路由器连接在两个子网上,就具有两个网络地址和两个子网掩码。
      3. 通过子网掩码我们就可以知道一个IP地址到底是不是一个子网中的,例如:
  4. 无分类编制CIDR
    为进一步提高IPV4的利用率而生,消除了传统的A,B,C类地址以及划分子网的概念。CIDR使用各种长度的“网络前缀”来替代网络号和子网号。使IP的三级编址(加子网)又回到了两级编址。

    IP地址 = 网络前缀 + 主机号

    1. CIDR地址块 : 网络前缀相同的划分为一个地址块。

      例如 : 128.14.32.0 / 20 表示的地址快共有 2^12 个地址 20代表的是网络前缀的长度。

ARP协议

ARP地址解析协议,就是将主机IP地址映射为硬件地址。(IP地址 -> MAC地址)

  1. 工作原理
    ARP协议的请求包是以广播方式发送的。网段中的所有主机都会接收到这个包,如果一个主机的IP地址和ARP请求中的目的IP地址相同,该主机会对这个请求数据报做出ARP应答,将其MAC地址发送给源端。

ARP请求 : IP地址为XX的MAC地址是什么 ? ARP应答 : IP地址为XX的MAC地址是 XX。

  1. ARP高速缓存
    高速缓存中存放了最近Internet地址到硬件地址之间的映射。借助高速缓存中IP地址和硬件地址之间的映射,可以避免远程访问的开销。

  2. 使用ARP的四种典型情况

    1. 发送方是主机,接收方是本网络中的主机。ARP找到目的主机MAC地址并返回
    2. 发送方是主机,接收方是另一个网络中的主机。ARP找到本网络上的一个硬件地址。剩下的工作右路由器来完成。
    3. 发送方是路由器,接收方是本网络上的一个主机。使用ARP找到目的主机的MAC地址
    4. 发送方是路由器,接收方是另一个网络中的主机。ARP找到本网络上的一个硬件地址。剩下的工作右路由器来完成。

DHCP协议(基于UDP)

动态主机配置协议(Dynamic Host Configuration Protocol),它提供了一种动态指定IP地址和配置参数的机制,用于简化主机IP配置管理。

DHCP服务器聚合DHCP客户端的交换过程如下:

  1. DHCP客户机广播一个 DHCP发现消息,试图找到网络中的DHCP服务器,以便从DHCP服务器获得一个IP地址。
  2. DHCP服务器收到DHCP发现消息后,向网络中广播"DHCP提供"消息,其中包括提供客户机的IP地址以及相关配置信息
  3. DHCP客户机收到"DHCP提供"消息后,如果接收DHCP服务器所提供的相关参数,那么通过广播“DHCP请求”消息向DHCP服务器提供请求IP地址
  4. DHCP服务器广播“DHCP确认”消息,将IP地址分配给客户机

客户机拿到的IP并不是永久的,客户机只能在一段时间内使用这个IP地址,这段时间一般被叫做租用期。

DHCP是应用层协议,通过客户端\服务器的方式工作。客户端与服务器之间的交互是通过广播的形式,原因在于在DHCP执行期间,客户端和服务器端都没有标识自己身份的IP,因此不能通过单播的形式进行交互。采用UDP而不是TCP的方式也很明晰:TCO需要建立连接,但是连对方IP都不知道,更不可能通过套接字进行连接。

ICMP协议

IP协议是一种不可靠无连接的包传输。当数据报出现了错误,目的主机不响应包拥塞包丢失等问题时就到了ICMP(Internet Control Message Potocol)协议上场的时候。

ICMP的数据封装在IP数据报中传输,在IP协议层、传输层协议(TCP\UDP)和用户进程中都可以使用。

  1. ICMP的报文类型:
    1. 查询报文
      查询报文一般都伴随着一个回答。比如回送请求和回答报文、时间戳请求和回答报文、掩码请求和回答报文、路由器请求和回答报文,一般常用的是前两类。
    2. 差错报文
      差错报文主要用于目标主机或者到目标主机上的路由器向源主机报告差错和异常情况。共有五种类型。
      1. 终点不可达 : 向源点发送我这暂时接不了
      2. 源点抑制 : 向源点发送你慢点发接不过来了
      3. 时间超过 : 喂 你给我发的是个死的啊
      4. 参数问题 : 好像出错了,这个首部不太对
      5. 改变路由(重定向) : 他的手应该比我更暖~
  2. 不应该发送ICMP报文的情况
    1. 对ICMP差错报告报文不应该再发送报错报文
    2. 对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文
    3. 对具有组播地址的数据报都不发送ICMP差错报告报文
    4. 对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文

应用 :

  1. Ping程序 : 测试网络连通性的
    利用了ICMP协议类型8的回显请求和类型0的回显应答完成
  2. Tracert程序 : 测试目的主机路由线路的程序
    利用了ICMP协议的请求回显,利用TTL值来获得目的

IGMP协议

(Internet Group Management Protocol)协议的简称。是TCP/IP协议族中负责IP多播成员管理的协议,用来在IP主机和与其直接相邻的组播路由器之间建立、维护多播组成员关系。

  1. 工作机制
    1. 第一阶段 : 当某个主机加入新的多组播时,该主机应向多组播的多播地址发送IGMP报文,声明自己要成为该组成员。
    2. 第二阶段 : 因为组成员关系是动态的,因此本地多播路由器要周期性地探寻本地局域网上的主机,以便知道这些主机是否还继续是组的成员。

Internet路由问题

  1. 内部网关协议IGP -- OSPF链路状态路由协议
  2. 外部网关协议EGP -- BGP距离向量协议

传输层协议

用户数据报协议UDP

  1. 非连接,不可靠,IP之上
    1. UDP采用非连接的方式提供网络应用层的事务处理。
    2. UDP不提供可靠性,即UDP协议不提供端到端的确认和重传功能,它不保证数据包一定能到达目的地,因此称为不可靠协议。
    3. UDP必须在IP上运行。它在IP之上仅提供两个附加服务:多路复用和对数据的错误检查
  2. UDP的首部格式
    大小为8B,由4个字段组成,每个字段的长度都是2B,各字段含义:
    1. 源端口 : 源端口号。在对方需要回信的时候使用,不需要时可以全部使用零
    2. 目的端口 : 在终点交付报文的时候必须用到
    3. 长度 : UDP数据报的长度,最小是8(仅有首部)
    4. 校验和 : 检测UDP数据报在传输之中是否出现了差错。
  3. UDP校验:
    1. 发送方首先将全零放入校验和字段并添加伪首部,然后把UDP数据报视为许多16位的字连接起来。若UDP数据报的数据部分不是偶字节,则要在数据部分增加一个全零字节(但是不发送这个字节)
    2. 按照二进制反码计算出这些16位字的和,并将次和的二进制反码写入校验和字段
    3. 接收方收到之后加上伪首部,若UDP数据报的数据部分不是偶字节,则要在数据部分增加一个全零字节,然后按二进制反码计算出这些16位字的和。
    4. 如果无差错那么结果应该全都为1,否则丢弃UDP数据报

传输控制协议TCP

  1. 连接,可靠,IP之上,一对一,全双工,面向字节流

  2. TCP拥塞控制

(1). IP数据报和UDP数据报的区别:IP数据报在网络层要经过路由的存储转发;而UDP数据报在传输层的端到端的逻辑信道中传输,封装成IP数据报在网络层传输时,UDP数据报的信息对路由是不可见的

(2).TCP和网络层虚电路的区别 : TCP报文段在传输层抽象的逻辑信道中传输,对路由器是不可见的;虚电路所经过的交换节点都必须保存虚电路状态信息。在网络层若采用虚电路方式,无法提供无连接服务;而传输层采用TCP不影响网络层提供无连接服务

应用层协议

SMTP协议

使用客户服务器模式,负责发送邮件的进程时SMTP客户,负责接收邮件的进程时SMTP服务器

POP3

使用客户服务器模式,接收邮件的计算机运行POP客户程序,其ISP的邮件服务器中运行POP服务程序。POP是脱机程序。

IMAP 也是接收邮件协议,不同于POP,IMAP是联机协议

FTP协议

(File Transfer Protocol)FTP是基于TCP的文件传输协议,用于在两台异构的主机间传输文件,可靠性由TCP保障
主要功能是减少或消除不同操作系统下处理文件的不兼容性,有匿名和非匿名两种。
在运行时使用两个并行的TCP连接 : 一个是控制连接(端口号为21)一个是数据连接(端口号为20)。使用两个不同的端口号可以使协议更加简单和更容易实现。

  1. 控制连接 :
    服务器监听21号端口,等待客户连接,建立在这个端口上的连接称为控制连接。控制连接在整个会话期间会一直保持开始状态。
  2. 数据连接 :
    服务端的控制进程在接收到FTP客户发来的文件传输请求后,就创建“数据传输进程”和“数据连接”。数据连接用来连接客户端和服务器端的数据传送进程,数据传送进程实际完成文件的传送,在传送完毕后关闭“数据传送连接”并结束运行。

TFTP协议

基于UDP协议
优点:

  1. 简单、代码所占的内存小
  2. 因使用UDP协议,可以用于分发程序或文件
    缺点:
    支支持文件传输、不支持交互

HTTP协议

超文本传输协议以普通文本、超文本、音频、视频等格式传输数据。通常在端口80上使用TCP服务。是典型的客户\服务器模式。客户是浏览器,服务是WWW服务器。

  1. HTTP协议定义了这些报文的结果和交换的规范
  2. HTTP协议是无状态协议,不保留客户的状态
  3. HTTP协议有持续连接和非持续连接

几种方法

  1. GET方法:请求一个文档
  2. HEAD方法:请求状态信息
  3. POST方法:发送数据给服务器
  4. PUT方法: 发送数据给服务器