Physical Layer
Data Link Layer
STP
Spanning Tree Protocol
最小生成树协议
生成树协议的元素
- 主要功能:在交换/桥接网络中允许冗余路径,而不会因环路的影响而引起延迟。
- STP通过计算稳定的生成树网络拓扑来防止环路
- 生成树帧(称为桥协议数据单元-BPDU)用于确定生成树拓扑
在正常情况下禁用一些端口来防止出现冗余
生成树协议的主要作用是在以太网桥和交换机的网络中防止环路(Loops)的形成。它通过选择一个根桥(Root Bridge)并计算从根桥到所有其他桥的最短路径,从而禁用那些会形成环路的端口,从而确保仅存在一条无环路的路径。
生成树协议的关键点
- 根桥的选举:
- 所有桥(交换机)通过比较桥ID选举出一个根桥。桥ID由桥优先级和MAC地址组成,优先级较低的桥或MAC地址较小的桥会被选为根桥。
- 路径成本计算:
- 每个桥计算到根桥的路径成本,并选择成本最低的路径作为根路径。
- 端口角色确定:
- 每个桥根据路径成本和桥ID确定端口角色:
- 根端口(Root Port):每个非根桥的端口中成本最低的端口。
- 指定端口(Designated Port):每个网络段中到根桥成本最低的端口。
- 非指定端口(Non-Designated Port):被禁用以防止环路的端口。
- 每个桥根据路径成本和桥ID确定端口角色:
- 生成树的维护:
- 生成树协议会周期性地发送BPDU(Bridge Protocol Data Units)帧,用于维护和更新生成树结构。
CHAP
Challenge Handshake Authentication Protocol
挑战握手验证协议
- 被叫方使用三向握手CHAP协议定期验证主叫方。
- CHAP不允许呼叫者在没有Challenge(随机数)的情况下尝试进行身份验证。(Challenge->随机数)
- 主机(称为参与者)将质询消息发送到远程节点。
- 远程节点以一个值(加密的值,包括:接收到的质询,其用户名和密码)进行响应:value是challenge和密钥生成的
- 主机根据自己的价值检查响应
- 如果值匹配,则确认身份验证
- 否则,连接终止
CHAP 的工作过程包括三个主要步骤:挑战(Challenge)、响应(Response)和确认(Acknowledgment)。
- 挑战(Challenge):
- 当客户端(例如远程用户)请求建立连接时,服务器向客户端发送一个随机的挑战消息(Challenge Message)。这个挑战消息通常包含一个随机数和会话标识符。
- 响应(Response):
- 客户端接收到挑战消息后,使用预共享的密码和一个加密哈希函数(如MD5)对挑战消息进行加密,生成一个哈希值(称为响应消息)。客户端将这个响应消息发送回服务器。
- 确认(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 差错报告报文的几种情况
- 对 ICMP 差错报告报文不再发送 ICMP 差错报告报文
- 对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文(就是每次传送只要发送一次就够了)
- 对具有多播地址的数据报都不发送 ICMP 差错报告报文
- 对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送 ICMP 差错报告报文
- 127.0.0.0:逻辑回路地址
- 0.0.0.0:确认路由地址
IGMP
Internet Group Management Protocol 互联网组管理协议
是用于管理网路协议多播组成员的一种通信协议
Transport Layer
TCP

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的字节数)
- Server:
- 第三次握手
- Client
- ACK = 1
- seq = x + 1
- ack = y + 1
- SYN = 0(表示已经完成连接同步了)
- Client
同步连接之后

Stop-and-Wait Protocol
工作原理
- 数据发送:
- 发送方将一个数据帧发送给接收方,并等待接收方的确认(ACK)。
- 等待确认:
- 发送方在发送数据帧后,会等待接收方的确认。如果在一定时间内没有收到确认,则认为数据帧丢失或损坏,会重新发送该数据帧。
- 确认接收:
- 接收方在成功接收到数据帧后,会发送一个确认帧(ACK)给发送方,表示已经成功接收到该数据帧。
- 继续发送:
- 发送方在收到确认帧后,会继续发送下一个数据帧。
简而言之,上一个数据帧发送后,若未收到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协议
滑动窗口

//
断开连接 四次挥手
-
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
- 没有建立连接(避免延时) 没有握手
- 简单:发送方,接收方无连接状态
- 小段标题
- 没有拥塞控制:UDP可以按照期望的速度传输

- UDP的数据段很简单
- UDP只有8个字节的首部
- 源端口、目的端口、长度、校验(data)、Data
- 校验也要对data一并校验,如果出现错误,直接丢弃。
- 应用层进行数据切片,决定如何进行发送,UDP直接发送
- 这里面的length单位是字节
DVP vs LSP
DVP
距离矢量协议(Distance-Vector Protocols,RIP, IGRP):
- 从邻居的角度查看网络拓扑。(注意不基于全局)
- 在路由器之间添加距离向量。(根据跳数来决定,经过一个路由器+1一次)
- 经常定期(periodic)更新。
- 将路由表的副本传递到邻居路由器
RIP
Routing Information Prot
- 最受欢迎。(实现算法简单,更加靠谱)
- 基于距离矢量的内部网关协议。
- 唯一的指标是跳数。
- 最大跳数为15。(评判依据简单,是一个短板)
- 每30秒更新一次(广播),可以修改。
- 并非总是选择最快的路径(而是走跳数最短的路径)。
- 产生大量的网络流量。
- RIP v2是RIP v1的改进版本
- RIP v1用地址广播
- RIP v2用主播地址广播,支持身份认证、路由等,比较安全,常用
LSP
链路状态协议(Link State Protocols, OSPF):
- 获取整个网络拓扑的通用视图。(全局的视角,会有代价)
- 计算到其他路由器的最短路径。(基于带宽计算出来的cost,形成cost拓扑图,然后计算出对应的路径代价作为评判依据)
- 事件触发的更新。
-
将链接状态路由更新传递给其他路由器
-
彼此交换连接情况,交换的是Link state而不是路由表,包含link的信息,以NetID作为主键(无相同网段),包含的是link上的路由器邻接关系、链路类型(4种)、链路带宽,会指定谁连接了谁,这个条目就被称为Database(表)。这样子就不仅仅知道链路,还知道更多的全局信息。
-
LSP操作过程:
- 相互交换彼此学到对应的Tpological Database(是全局的信息)
- 之后使用SPF算法,以自己为根,通过最短路径优先算法,生成以自己为根的树
- 根据这一个树再生成路由表(了解全局的信息),逻辑是树的逻辑。
-
LSP不是进行定时进行交换的,而是初始的时候进行交换,稳定之后,根据
事件触发
的时候才会更新数据。
- 更新后发送给所有的路由器,需要将Database发送给所有的路由器
- 收到的路由器的,根据database更新自己的树,然后再次生成路由表。
-
LSP是指从所有可达的道路上找到代价最小的路径。
-
全局可能会比较大,考虑负载进行处理
-
但是没有路由回路,单域内一般不超过20个路由器
- 路由表一般只保存一个最优的转发点的(负载均衡)
OSPF(Open Shortest Path First)
- 最短路径优先协议,是基于链路状态的内部网关协议,消耗CPU和内存。
- 指标由带宽,速度,流量,可靠性和安全性组成,本科阶段只考虑带宽的。
- 事件触发的更新。
- 最快和什么有关?(最快指的是带宽)
- 和实时各条链路上的通信冗余有关,也和管理方案有关,简单来说是和带宽有关
- 带宽表示为代价,带宽和代价成反比。
IGRP (Interior Gateway Routing Protocol) and EIGRP (Enhanced IGRP)
- 思科知识产权的。
- 基于距离矢量的内部网关协议。
- IGRP最大跳数为255。
- EIGRP指标由带宽(bandwidth),负载(load),延迟(delay)和可靠性(reliability)组成。加权进行运算
- 每90秒更新一次。
- EIGRP是IGRP的高级版本,它是混合路由协议(不全是根据跳数来计算)。
- IOS 12.0以后,不支持IGRP,在模拟器中还可以。
- EIGRP是可以的,和华为等路由器是不兼容的。(因为知识版权是思科独有的)
Session Layer
Presentation Layer
Application Layer
DHCP
Dynamic Host Configuration Protocol
动态主机配置协议
Dynamic Host Configuration Protocol可以高效地分配IP地址
- 局域网的网络协议
- 使用UDP来实现
工作过程

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