Physical Layer

STP

Spanning Tree Protocol

最小生成树协议

生成树协议的元素

  1. 主要功能:在交换/桥接网络中允许冗余路径,而不会因环路的影响而引起延迟。
  2. STP通过计算稳定的生成树网络拓扑来防止环路
  3. 生成树帧(称为桥协议数据单元-BPDU)用于确定生成树拓扑

在正常情况下禁用一些端口来防止出现冗余

生成树协议的主要作用是在以太网桥和交换机的网络中防止环路(Loops)的形成。它通过选择一个根桥(Root Bridge)并计算从根桥到所有其他桥的最短路径,从而禁用那些会形成环路的端口,从而确保仅存在一条无环路的路径。

生成树协议的关键点

  1. 根桥的选举
    • 所有桥(交换机)通过比较桥ID选举出一个根桥。桥ID由桥优先级和MAC地址组成,优先级较低的桥或MAC地址较小的桥会被选为根桥。
  2. 路径成本计算
    • 每个桥计算到根桥的路径成本,并选择成本最低的路径作为根路径。
  3. 端口角色确定
    • 每个桥根据路径成本和桥ID确定端口角色:
      • 根端口(Root Port):每个非根桥的端口中成本最低的端口。
      • 指定端口(Designated Port):每个网络段中到根桥成本最低的端口。
      • 非指定端口(Non-Designated Port):被禁用以防止环路的端口。
  4. 生成树的维护
    • 生成树协议会周期性地发送BPDU(Bridge Protocol Data Units)帧,用于维护和更新生成树结构。

CHAP

Challenge Handshake Authentication Protocol

挑战握手验证协议

  1. 被叫方使用三向握手CHAP协议定期验证主叫方。
  2. CHAP不允许呼叫者在没有Challenge(随机数)的情况下尝试进行身份验证。(Challenge->随机数)
  3. 主机(称为参与者)将质询消息发送到远程节点。
  4. 远程节点以一个值(加密的值,包括:接收到的质询,其用户名和密码)进行响应:value是challenge和密钥生成的
  5. 主机根据自己的价值检查响应
    1. 如果值匹配,则确认身份验证
    2. 否则,连接终止

CHAP 的工作过程包括三个主要步骤:挑战(Challenge)、响应(Response)和确认(Acknowledgment)。

  1. 挑战(Challenge)
    • 当客户端(例如远程用户)请求建立连接时,服务器向客户端发送一个随机的挑战消息(Challenge Message)。这个挑战消息通常包含一个随机数和会话标识符。
  2. 响应(Response)
    • 客户端接收到挑战消息后,使用预共享的密码和一个加密哈希函数(如MD5)对挑战消息进行加密,生成一个哈希值(称为响应消息)。客户端将这个响应消息发送回服务器。
  3. 确认(Acknowledgment)
    • 服务器接收到客户端的响应消息后,使用相同的预共享密码和加密哈希函数对原始挑战消息进行加密,生成一个哈希值,并与客户端发送的响应消息进行比较。如果两个哈希值匹配,服务器确认客户端的身份并允许连接;否则,连接请求被拒绝。

Network Layer

IP

Internet Protocol

P是一种无连接的协议,这意味着它不需要在发送数据之前建立一个专门的连接。IP协议也被认为是不可靠的,因为它不保证数据包的交付,也不保证数据包的顺序或完整性。IP协议仅负责将数据包从发送方传输到接收方,而不提供错误检测和纠正功能,这些功能由更高层的协议(如TCP)来实现。

IP协议提供的是无连接且不可靠的数据包服务Connectionless and unreliable packet service

ARP

Address Resolution Protocol

地址解析协议

通过网络层地址来寻找数据链路层地址的网络传输协议(IP地址->MAC地址)

维护ARP Table 存在RAM中 具有时效性

  • ARP request 广播向目的方请求MAC地址(数据帧中有自己的MAC和IP 以及对方的IP)
  • ARP checking
    • 若IP地址与自己不相同,丢掉,也记录对方的MAC地址
    • 若IP地址与自己相同 ARP reply 记录对方的MAC地址
  • ARP reply 对对方进行应答
  • ARP caching 记录MAC地址 再次形成数据帧并发送

以上过程需要双方在同一物理网段,否则广播无法传达,下面是跨网段通信的解决方法

  • 默认网关 路由器上连接到源主机所在网段的接口的IP地址 发送报文到另一个网段,需要路由器把对应端口的网关的MAC告诉你,然后通过网关进行转发
  • Proxy ARP 代理ARP 发送ARP请求,然后路由器给你一个ARP的reply,告诉你MAC地址(一般为本端口的IP地址)

两者提供的都是router对应端口的MAC而非目标主机的MAC

ICMP

Internet Control Message Protocol

互联网控制消息协议

PING (Packet InterNet Groper) 包互联网探测器 检查两个主机的连通性

不应发送 ICMP 差错报告报文的几种情况

  1. 对 ICMP 差错报告报文不再发送 ICMP 差错报告报文
  2. 对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文(就是每次传送只要发送一次就够了)
  3. 对具有多播地址的数据报都不发送 ICMP 差错报告报文
  4. 对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送 ICMP 差错报告报文
    1. 127.0.0.0:逻辑回路地址
    2. 0.0.0.0:确认路由地址

IGMP

Internet Group Management Protocol 互联网组管理协议

是用于管理网路协议多播组成员的一种通信协议

Transport Layer

TCP

img

Transmission Control Protocol

  • 面向连接的,可靠的,基于字节流的传输层协议
  • TCP连接可以发送和接收任意大小的数据,而不一定是两个字节

三次握手

  • 第一次握手
    • Client: SYN = 1(表示连接请求或者连接接受) seq = x
  • 第二次握手
    • Server:
      • 若没有进程,返回RST = 1(意思是TCP连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接)
      • 若有进程,且接受。发送SYN = 1 ACK = 1(表示确认号字段有效) seq = y ack = x + 1(握手建立连接时+1,建立连接后开始传输数据时,则是x + data的字节数)
  • 第三次握手
    • Client
      • ACK = 1
      • seq = x + 1
      • ack = y + 1
      • SYN = 0(表示已经完成连接同步了)

同步连接之后

Stop-and-Wait Protocol

工作原理

  1. 数据发送
    • 发送方将一个数据帧发送给接收方,并等待接收方的确认(ACK)。
  2. 等待确认
    • 发送方在发送数据帧后,会等待接收方的确认。如果在一定时间内没有收到确认,则认为数据帧丢失或损坏,会重新发送该数据帧。
  3. 确认接收
    • 接收方在成功接收到数据帧后,会发送一个确认帧(ACK)给发送方,表示已经成功接收到该数据帧。
  4. 继续发送
    • 发送方在收到确认帧后,会继续发送下一个数据帧。

简而言之,上一个数据帧发送后,若未收到ACK,是不会开始发下一个数据帧的

丢失确认(Lost Acknowledgment)

丢失确认指的是发送方发送的数据帧已经被接收方成功接收,但接收方发送的确认帧(ACK)在传输过程中丢失,导致发送方没有收到确认帧。

影响和处理方法:

  • 影响:发送方在超时时间内未收到确认帧,会认为数据帧未成功传输,并重新发送该数据帧。尽管接收方已经接收到数据,但由于确认帧丢失,导致数据的重复传输,增加了通信开销。

  • 处理方法

    • 超时重传(Timeout Retransmission):发送方在超时后重新发送数据帧。

    • 重复ACK(Duplicate ACKs):如果接收方接收到重复的数据帧,会发送重复的ACK,通知发送方已接收到该数据。

确认延迟(Delayed Acknowledgment)

确认延迟指的是接收方在接收到数据帧后,故意延迟发送确认帧(ACK),以便在短时间内可能会有更多的数据帧到达,从而在一个ACK中确认多个数据帧。

影响和处理方法:

  • 影响:确认延迟可以减少ACK帧的数量,从而降低网络负载,但可能增加数据传输的延迟。如果延迟时间设置不当,可能导致发送方误认为数据帧丢失而重传数据。
  • 处理方法
    • 合理的延迟时间:通常,TCP协议允许在接收到数据后延迟几百毫秒再发送ACK,以便有机会合并多个数据帧的确认。
    • Nagle算法:Nagle算法通过合并小的数据包,减少网络上的数据包数量。

Contiguous Automatic Repeat-reQuest Protocol

连续ARQ协议

滑动窗口

img

//

断开连接 四次挥手

  • Client

    • FIN = 1(用来释放连接)
    • seq = u
  • Server

    • ACK = 1(允许断开,但是此时并不是断开连接,而是说不在发送新的数据,此时我们需要完成之前未处理完成的数据的处理。(这里只是说我已经收到了你请求停止传输的请求)

    • seq = v
    • ack = u + 1
  • Data Transfer(完成未处理完成的数据的处理)

  • Server

    • FIN = 1
    • ACK = 1
    • seq = w
    • ack = u + 1
  • Client

    • ACK = 1
    • seq = u + 1
    • ack = w + 1
  • 等待2MSL(MSL(Maximum Segment Lifetime)是一个TCP段在网络中的最大生存时间)

    • 为了确保A发送的最后一个ACK可以到达B
    • 防止出现任何无效的连接请求段:等待2 MSL之后,我们可以确保连接上的所有段均已消失

//

通常情况下,TCP连接的建立和关闭至少需要6个数据包(3次握手+4次挥手,但ACK可以合并)

UDP

用户数据报协议

User Datagram Protocol

  1. 没有建立连接(避免延时) 没有握手
  2. 简单:发送方,接收方无连接状态
  3. 小段标题
  4. 没有拥塞控制:UDP可以按照期望的速度传输

img

  1. UDP的数据段很简单
  2. UDP只有8个字节的首部
  3. 源端口、目的端口、长度、校验(data)、Data
  4. 校验也要对data一并校验,如果出现错误,直接丢弃。
  5. 应用层进行数据切片,决定如何进行发送,UDP直接发送
  6. 这里面的length单位是字节

DVP vs LSP

DVP

距离矢量协议(Distance-Vector Protocols,RIP, IGRP):

  1. 邻居的角度查看网络拓扑。(注意不基于全局)
  2. 在路由器之间添加距离向量。(根据跳数来决定,经过一个路由器+1一次)
  3. 经常定期(periodic)更新。
  4. 将路由表的副本传递到邻居路由器
RIP

Routing Information Prot

  1. 最受欢迎。(实现算法简单,更加靠谱)
  2. 基于距离矢量的内部网关协议。
  3. 唯一的指标是跳数。
  4. 最大跳数为15。(评判依据简单,是一个短板)
  5. 每30秒更新一次(广播),可以修改。
  6. 并非总是选择最快的路径(而是走跳数最短的路径)。
  7. 产生大量的网络流量。
  8. RIP v2是RIP v1的改进版本
    • RIP v1用地址广播
    • RIP v2用主播地址广播,支持身份认证、路由等,比较安全,常用

LSP

链路状态协议(Link State Protocols, OSPF):

  1. 获取整个网络拓扑的通用视图。(全局的视角,会有代价)
  2. 计算到其他路由器的最短路径。(基于带宽计算出来的cost,形成cost拓扑图,然后计算出对应的路径代价作为评判依据)
  3. 事件触发的更新。
  4. 将链接状态路由更新传递给其他路由器

  5. 彼此交换连接情况,交换的是Link state而不是路由表,包含link的信息,以NetID作为主键(无相同网段),包含的是link上的路由器邻接关系、链路类型(4种)、链路带宽,会指定谁连接了谁,这个条目就被称为Database(表)。这样子就不仅仅知道链路,还知道更多的全局信息。

  6. LSP操作过程:

    1. 相互交换彼此学到对应的Tpological Database(是全局的信息)
    2. 之后使用SPF算法,以自己为根,通过最短路径优先算法,生成以自己为根的树
    3. 根据这一个树再生成路由表(了解全局的信息),逻辑是树的逻辑。
  7. LSP不是进行定时进行交换的,而是初始的时候进行交换,稳定之后,根据

    事件触发

    的时候才会更新数据。

    1. 更新后发送给所有的路由器,需要将Database发送给所有的路由器
    2. 收到的路由器的,根据database更新自己的树,然后再次生成路由表。
  8. LSP是指从所有可达的道路上找到代价最小的路径。

  9. 全局可能会比较大,考虑负载进行处理

  10. 但是没有路由回路,单域内一般不超过20个路由器

  11. 路由表一般只保存一个最优的转发点的(负载均衡)

OSPF(Open Shortest Path First)

  1. 最短路径优先协议,是基于链路状态的内部网关协议,消耗CPU和内存。
  2. 指标由带宽,速度,流量,可靠性和安全性组成,本科阶段只考虑带宽的。
  3. 事件触发的更新。
  4. 最快和什么有关?(最快指的是带宽)
    1. 和实时各条链路上的通信冗余有关,也和管理方案有关,简单来说是和带宽有关
    2. 带宽表示为代价,带宽和代价成反比

IGRP (Interior Gateway Routing Protocol) and EIGRP (Enhanced IGRP)

  1. 思科知识产权的。
  2. 基于距离矢量的内部网关协议。
  3. IGRP最大跳数为255。
  4. EIGRP指标由带宽(bandwidth),负载(load),延迟(delay)和可靠性(reliability)组成。加权进行运算
  5. 每90秒更新一次。
  6. EIGRP是IGRP的高级版本,它是混合路由协议(不全是根据跳数来计算)。
  7. IOS 12.0以后,不支持IGRP,在模拟器中还可以。
  8. EIGRP是可以的,和华为等路由器是不兼容的。(因为知识版权是思科独有的)

Session Layer

Presentation Layer

Application Layer

DHCP

Dynamic Host Configuration Protocol

动态主机配置协议

Dynamic Host Configuration Protocol可以高效地分配IP地址

  1. 局域网的网络协议
  2. 使用UDP来实现

工作过程

img

  1. AB是两个Server
  2. Client先Discover去搜索
  3. Server返回一个Offer报文
  4. Client选择优先返回的Offer来优先服务
  5. Client进行广播,告知到底服务了谁
  6. 然后B返回一个Ack报文
  7. 到了时间之后,选择release或者续租
  8. AB的信息不对称不同步(局域网的地址B分配完成了但是A不知道,广播里面会携带分配的地址信息,告知A进行同步)