以下总结提纲来自于hcgg,伟大无需多言。socket编程没有写进去,Rdt的话我后来感觉可能只考概念,其余我感觉会考的部分都在里面了,如果有错误或者解释不清楚造成的疑问,希望大家及时指正,感谢。
应用层
DNS递归&迭代【画图】
区别
这个up画的图很直观的讲了这两者的区别(里面的问一次 就是发一次域名请求消息)
查询方式使用
而DNS服务器有本地,顶级这些,具体的查询方式如下:
1. 在主机查询本地域名服务器的时候使用递归查询(记成本地服务器帮忙问)
2. 在本地服务器查询根、顶级、权威域名服务器的时候使用的是迭代查询(因为问的服务器没有义务帮忙问)
查询次数
DNS查询最少次数为1,这一次是直接查本地域名服务器就查到了。
DNS查询最多次数为4,1次本地域名服务器没查到,然后1次根域名服务器,也没查到,1次顶级域名服务器也没查到,1次权威域名服务器查到了。顺序是根-顶级-权威。
Http版本迭代
1. HTTP/1.0
-
每次请求需建立单独的 TCP 连接(短连接),请求完成后立即关闭。
-
无状态协议,不支持持久连接(Keep-Alive)。
-
性能差:频繁建立连接增加延迟。
2. HTTP/1.1
-
核心改进:
-
持久连接(默认启用 Keep-Alive):一个 TCP 连接可处理多个请求/响应,减少延迟。
-
管道化(Pipelining):允许连续发送多个请求(无需等待响应),但存在队头阻塞(HOL Blocking)问题。
-
缓存控制:新增
Cache-Control
、ETag
等头部字段。 -
分块传输(Chunked Transfer):支持流式传输。
-
-
缺点:
-
队头阻塞(前一个请求未完成会阻塞后续请求)。
-
头部冗余(每次请求携带重复的头部信息)。
-
3. HTTP/2
-
核心改进:
-
二进制协议:取代文本格式,解析更高效。
-
多路复用(Multiplexing):单一 TCP 连接上并行传输多个请求/响应,解决队头阻塞。
-
头部压缩(HPACK):减少冗余头部开销。
-
服务器推送(Server Push):服务器可主动推送资源。
-
-
缺点:
-
仍依赖 TCP,可能因 TCP 丢包重传引发队头阻塞。
-
4. HTTP/3
-
核心改进:
-
基于 QUIC 协议:使用 UDP 替代 TCP,解决 TCP 的队头阻塞和握手延迟。
-
内置加密:默认使用 TLS 1.3,安全性更高。
-
快速连接建立:0-RTT(零往返时间)恢复连接。
-
改进的多路复用:每个数据流独立传输,彻底解决队头阻塞。
-
-
优势:
-
更适合高延迟、不稳定网络(如移动端)。
-
对比总结
版本 | 核心协议 | 连接方式 | 关键改进 | 主要问题 |
---|---|---|---|---|
HTTP/1.0 | TCP | 短连接 | 基础文本协议 | 性能差 |
HTTP/1.1 | TCP | 持久连接 | 管道化、缓存控制 | 队头阻塞、头部冗余 |
HTTP/2 | TCP | 多路复用 | 二进制、头部压缩、服务器推送 | TCP 层队头阻塞 |
HTTP/3 | QUIC/UDP | 独立流传输 | 无队头阻塞、0-RTT、内置加密 | 兼容性需提升 |
CDN
概念
CDN(Content Delivery Network,内容分发网络)是一个分布式服务器网络,用于快速、高效地向用户分发静态和动态内容(如网页、视频、图片等)。
作用
-
加速访问:将内容缓存到离用户最近的服务器,减少延迟。
-
减轻源站压力:分担流量,避免服务器过载。
-
提高可用性:即使部分节点故障,仍可提供服务。
工作原理
-
用户请求资源时,CDN 会智能选择最近的边缘服务器响应。
-
若边缘服务器没有缓存,则从源站获取并缓存,供后续用户使用。
P2P
P2P(Peer-to-Peer,对等网络)是一种去中心化的网络架构,其中所有节点(Peer)地位平等,既可以是客户端(请求数据),也可以是服务器(提供数据)。
应用 下载使用的种子节点、区块链这些,没有什么好说的
传输层
TCP三次握手四次挥手【画图】
UDP
UDP(用户数据报协议)是一种无连接的传输层协议,提供简单、不可靠的数据传输服务。
主要特点
-
无连接:无需建立连接即可发送数据。
-
不可靠:不保证数据顺序、不重传丢失报文。
-
高效:头部开销小(仅8字节),传输延迟低。
-
支持广播/多播:可向多个目标同时发送数据。
与TCP的主要区别
-
TCP可靠、有连接、保证顺序;UDP不可靠、无连接、不保证顺序。
-
TCP适合文件传输;UDP适合实时性要求高的应用。
拥塞控制&流量控制
拥塞控制算法
流量控制算法
这个一般会结合TCP三次握手四次挥手去考
RDT
RDT(可靠数据传输协议,Reliable Data Transfer)是一种确保数据在不可靠信道上可靠传输的机制,通常用于传输层(如TCP)或应用层协议设计。核心目的是确保数据无差错、不丢失、不重复、按序到达接收端。
主要技术
-
校验和:检测数据错误(如CRC、校验和)。
-
确认(ACK)与重传:接收方确认成功接收,发送方超时未收到ACK则重传。
-
序号(Sequence Number):标识数据包,解决乱序和重复问题。
-
滑动窗口:允许连续发送多个包,提高效率(如TCP的窗口机制)。
RDT 1.0(理想可靠信道)
-
假设:底层信道完全可靠(无比特差错、无丢包、无乱序)。
-
机制:无需任何额外控制(如校验、ACK、序号等),直接发送和接收数据。
-
问题:现实中不存在完全可靠的信道,仅作为理论基准。
RDT 2.0(处理比特差错)
-
问题:信道可能发生比特差错(如数据损坏)。
-
机制:
-
校验和(Checksum):检测数据是否出错。
-
ACK/NAK:
-
接收方校验无误 → 回复 ACK(确认)。
-
校验出错 → 回复 NAK(否定确认),要求重传。
-
-
重传:发送方收到NAK或未收到反馈时重发数据。
-
-
缺陷:
-
若 ACK/NAK 本身丢失或损坏,发送方无法区分是否需重传,可能导致重复或丢包。
-
RDT 2.1(引入序号解决ACK/NAK丢失)
-
改进点:在RDT 2.0基础上增加序号(0/1),解决ACK/NAK丢失导致的歧义。
-
机制:
-
每个数据包携带1比特序号(交替0和1)。
-
接收方通过序号判断是否收到重复包(如收到相同序号则丢弃并重发ACK)。
-
-
示例:
-
发送方发送包(seq=0)→ 接收方回复ACK0。
-
若ACK0丢失,发送方超时重发包(seq=0)→ 接收方发现重复,丢弃包并再次回复ACK0。
-
RDT 2.2(取消NAK,仅用ACK+序号)
-
改进点:取消NAK,全部用带序号的ACK(如ACK0、ACK1)实现确认。
-
机制:
-
接收方若检测到错误,直接不回复ACK(发送方超时重传)。
-
若数据正确,回复下一个期望的序号(如收到seq=0,回复ACK1)。
-
-
优势:简化协议设计,与TCP的确认机制类似。
RDT 3.0(处理丢包问题)
-
问题:信道可能丢失数据包或ACK(不只有比特差错)。
-
机制:
-
超时重传计时器:发送方每次发送数据后启动计时器,若超时未收到ACK则重传。
-
序号+ACK:沿用RDT 2.2的序号机制,避免重复包问题。
-
-
关键点:
-
计时器时长需大于RTT(往返时间),否则会频繁误判丢包。
-
即使ACK丢失,超时重传仍能保证可靠性。
-
-
示例:
-
发送方发送包(seq=0)→ 若包丢失,接收方无反馈 → 发送方超时重传。
-
若ACK丢失,发送方超时重传 → 接收方通过序号去重。
-
各版本核心改进总结
版本 | 解决的问题 | 关键技术 | 缺陷或局限 |
---|---|---|---|
1.0 | 无(理想信道) | 无 | 不现实 |
2.0 | 比特差错 | 校验和、ACK/NAK、重传 | ACK/NAK丢失导致歧义 |
2.1 | ACK/NAK丢失 | 1比特序号(0/1) | 仍需NAK机制 |
2.2 | 简化确认机制 | 仅用带序号的ACK | 未解决丢包问题 |
3.0 | 数据包或ACK丢失 | 超时重传计时器 | 效率低(停等协议) |
后续演进(超出基础RDT)
-
滑动窗口协议:RDT 3.0是停等协议(发1个包等1个ACK),效率低;滑动窗口允许连续发送多个包(如TCP)。
-
拥塞控制:纯RDT不解决网络拥塞问题,需额外机制(如TCP的慢启动、拥塞避免)。
总结:RDT通过逐步增加差错检测、序号、ACK、超时重传等机制,最终实现可靠传输,为TCP等协议奠定基础。
套接字编程
函数名 | 汉语名 |
socket() | 创建套接字 |
bind() | 绑定地址和端口 |
listen() | 监听连接(TCP) |
accept() | 接受连接(TCP) |
connect() | 发起连接(TCP/UDP) |
send()/write() | 发送数据 |
recv()/read() | 接收数据 |
sendto() | 发送数据(UDP) |
recvfrom() | 接收数据(UDP) |
inet_addr()/inet_aton() | IP地址转换 |
inet_ntoa() | IP地址转字符串 |
getaddrinfo() | 地址信息查询 |
freeaddrinfo() | 释放地址信息 |
setsockopt() | 设置套接字选项 |
getsockopt() | 获取套接字选项 |
close()/shutdown() | 关闭套接字 |
select()/poll()/epoll() | I/O多路复用 |
fcntl() | 文件控制 |
gethostbyname() | 主机名解析(过时) |
可靠数据传输协议
可靠数据传输协议(RDT)是一种确保数据在网络中无差错、不丢失、不重复、按序到达的传输机制,通常用于TCP等可靠传输协议。
引入技术
-
差错检测(如校验和 Checksum)
-
确认机制(ACK, Acknowledgement)
-
超时重传(Timeout & Retransmission)
-
序号机制(Sequence Number)
-
滑动窗口(Sliding Window)
回退N帧协议(GBN, Go-Back-N)
(1)基本思想
-
发送方维护一个固定大小的窗口(N),可以连续发送多个分组。
-
接收方只按序接收,丢弃所有乱序分组,并返回最后一个正确接收的ACK。
-
如果某个分组丢失或超时,发送方重传该分组及其之后的所有分组(“回退N帧”)。
(2)特点
✅ 简单,接收方只需维护一个期望的序号。
❌ 效率低,一旦丢包,需要重传大量分组。
选择重传协议(SR, Selective Repeat)
(1)基本思想
-
发送方和接收方各自维护一个滑动窗口。
-
接收方缓存乱序到达的分组,并返回每个正确接收的分组的ACK。
-
发送方只重传丢失或超时的分组,而不是全部回退。
(2)特点
✅ 高效,只重传丢失的分组,减少带宽浪费。
❌ 实现复杂,接收方需要缓存乱序分组,并管理多个ACK。
GBN vs SR 对比
特性 | GBN(回退N帧) | SR(选择重传) |
---|---|---|
接收方式 | 只按序接收,丢弃乱序分组 | 缓存乱序分组 |
ACK机制 | 累积确认(只ACK最后一个正确接收的) | 单独确认(每个分组都ACK) |
重传策略 | 丢失分组及其后所有分组全部重传 | 仅重传丢失的分组 |
效率 | 低(可能重传大量数据) | 高(只重传必要的分组) |
实现复杂度 | 简单 | 复杂(需缓存乱序分组) |
总结
-
GBN 适用于低错误率网络,实现简单但效率低。
-
SR 适用于高错误率网络,效率高但实现复杂。
-
TCP 实际结合了 GBN 和 SR 的思想(如快速重传、选择确认 SACK)。
网络层
IP与子网划分【计算题】
DHCP
概念
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一种网络协议,用于自动为设备分配 IP 地址、子网掩码、默认网关和 DNS 服务器等网络配置信息。使设备能快速接入网络,广泛应用于家庭、企业等场景。
作用
-
自动分配 IP 地址:避免手动配置,减少错误。
-
集中管理网络参数:管理员可统一设置和更新。
-
提高 IP 利用率:动态回收和分配 IP,节省地址资源。
工作原理
-
发现(Discover):客户端广播请求 IP 地址。
-
提供(Offer):DHCP 服务器回应可用的 IP 地址。
-
请求(Request):客户端确认选择该 IP。
-
确认(Acknowledge):服务器正式分配 IP 并发送配置信息。
优点
-
简化网络管理,减少人工配置
-
支持 IP 地址的动态回收和复用
-
可扩展性强,适用于大规模网络
NAT
NAT(Network Address Translation,网络地址转换)是一种网络技术,用于将私有(内网)IP 地址转换为公有(外网)IP 地址,使多台设备能共享一个公网IP访问互联网。
作用
-
节省 IPv4 地址:多个设备共用1个公网IP,缓解地址不足问题。
-
增强安全性:隐藏内网设备真实IP,防止外部直接访问。
-
解决地址冲突:允许不同内网使用相同的私有IP段(如192.168.1.x)。
常见类型
-
静态NAT:一对一固定映射(如将内网服务器暴露到公网)。
-
动态NAT:多对多IP池映射(临时分配公网IP)。
-
PAT(NAPT):多对一映射,通过不同端口区分设备(最常见,家庭路由器即采用此方式)。
Traceroute
Traceroute(路由追踪)是一种网络诊断工具,用于检测数据包从源主机到目标主机经过的所有网络路径(路由器跳数),并测量每跳的延迟时间。Traceroute 通过TTL机制追踪网络路径,是网络管理员常用的故障诊断工具。
作用
-
显示数据包传输路径
-
检测网络故障节点(如丢包、高延迟)
-
分析网络拓扑结构
工作原理
-
发送TTL(生存时间)递增的探测包(ICMP/UDP/TCP)
-
每经过一个路由器,TTL减1,当TTL=0时返回"超时"响应
-
通过收集各跳的响应IP和耗时,构建完整路径
路由CS+DV【迪杰斯特拉算法】
数据链路层
CRC 校验和 与 差错检测
性能比较
CRC > 校验和 > 差错检测
CRC算法内容
校验和与奇偶校验
通信划分协议
FDM分频率、TDM分时间、CDM分编码,三者分别通过频域、时域和编码域实现多路信号共享信道。
FDM(频分复用,Frequency Division Multiplexing)
-
原理:将总带宽划分为多个不同频率的子信道,每个信号占用一个频段。
-
特点:
-
各信号并行传输,互不干扰(如广播电台、Wi-Fi信道)。
-
需要保护频带(Guard Band)防止串扰。
-
-
应用:传统电话系统、无线电广播、有线电视(CATV)。
TDM(时分复用,Time Division Multiplexing)
-
原理:将时间划分为固定时隙,每个信号轮流占用全部带宽的特定时间段。
-
特点:
-
按时间片轮转(如CPU时间片调度)。
-
需严格同步时钟(如SDH光纤通信)。
-
-
应用:传统电话PCM系统、4G LTE的时隙分配。
CDM(码分复用,Code Division Multiplexing)
-
原理:为每个信号分配唯一编码(扩频码),所有信号共享同一频段和时间,通过编码区分。
-
特点:
-
抗干扰能力强(如军事通信)。
-
支持软容量(用户数灵活增减)。
-
-
应用:3G(CDMA2000)、GPS信号、Wi-Fi DSSS技术。
对比总结
复用技术 | 划分维度 | 典型场景 | 核心优势 | 主要缺点 |
---|---|---|---|---|
FDM | 频率 | 广播、ADSL | 简单易实现 | 带宽利用率低 |
TDM | 时间 | 传统电话、光纤通信 | 延迟稳定 | 需精确同步 |
CDM | 编码 | 3G网络、卫星通信 | 抗干扰、安全性高 | 实现复杂 |
随机访问协议
ALOHA简单但效率低,CSMA通过监听信道显著提升性能;CSMA/CD用于有线网络,CSMA/CA解决无线冲突问题。
ALOHA(纯ALOHA & 时隙ALOHA)
-
原理:
-
纯ALOHA:用户有数据就立刻发送,冲突后随机退避重发。
-
时隙ALOHA:时间被划分为时隙,用户只能在时隙起点发送。
-
-
特点:
-
无需监听信道,实现简单。
-
信道利用率低(纯ALOHA仅18%,时隙ALOHA约36%)。
-
-
应用:早期卫星通信、RFID标签。
CSMA(载波监听多路访问,Carrier Sense Multiple Access)
-
原理:发送前先监听信道:
-
非持续CSMA:信道忙则随机等待后再监听。
-
1-持续CSMA:信道忙则持续监听,空闲立即发送。
-
p-持续CSMA:信道空闲时以概率p发送。
-
-
改进版:
-
CSMA/CD(用于以太网):检测到冲突后立即停止发送。
-
CSMA/CA(用于Wi-Fi):通过ACK和退避机制避免冲突。
-
-
特点:
-
减少冲突概率,提高信道利用率。
-
需额外机制处理隐藏终端问题(如RTS/CTS)。
-
-
应用:有线以太网(CSMA/CD)、无线Wi-Fi(CSMA/CA)。
对比总结
协议 | 核心机制 | 信道利用率 | 典型场景 | 主要缺点 |
---|---|---|---|---|
纯ALOHA | 直接发送,冲突后重传 | ≤18% | 早期卫星通信 | 效率极低 |
时隙ALOHA | 时隙同步发送 | ≤36% | RFID系统 | 需时间同步 |
CSMA | 先监听后发送 | 较高 | 有线/无线局域网 | 存在隐藏终端问题 |
CSMA/CD | 监听+冲突检测 | 80%~90% | 传统以太网(半双工) | 不适用于无线环境 |
CSMA/CA | 监听+冲突避免 | 60%~70% | Wi-Fi(无线网络) | 额外控制帧开销 |
轮流协议
轮询依赖主节点分配发送权,令牌传输通过令牌循环实现无冲突访问;前者适合主从网络,后者适用于分布式高负载场景。
轮询(Polling)
-
原理:
-
主节点(如服务器)按固定顺序依次询问各从节点(如终端设备)是否有数据发送。
-
从节点收到询问后,若有数据则发送,否则回复“无数据”。
-
-
特点:
-
集中式控制:依赖主节点协调,主节点故障则全网瘫痪。
-
公平性:每个节点有均等机会发送数据。
-
效率问题:即使节点无数据,仍需轮询,造成带宽浪费。
-
-
应用场景:
-
传统的主从式网络(如早期IBM系统)。
-
工业控制网络(如Modbus协议)。
-
令牌传输(Token Passing)
-
原理:
-
一个特殊帧(令牌)在节点间按逻辑顺序传递。
-
只有持有令牌的节点可发送数据,发送后释放令牌给下一节点。
-
-
特点:
-
分布式控制:无需主节点,令牌丢失时需恢复机制。
-
无冲突:令牌独占性避免数据冲突。
-
延迟问题:节点需等待令牌到达,高负载时效率高,低负载时延迟大。
-
-
应用场景:
-
令牌环网络(如IEEE 802.5)。
-
实时性要求高的网络(如FDDI光纤网络)。
-
对比总结
协议 | 控制方式 | 核心机制 | 优点 | 缺点 |
---|---|---|---|---|
轮询 | 集中式 | 主节点主动询问从节点 | 公平、易管理 | 主节点单点故障、效率低 |
令牌传输 | 分布式 | 令牌循环传递 | 无冲突、高负载效率高 | 令牌丢失导致全网瘫痪 |
ARP
ARP通过广播请求和单播响应,实现IP地址到MAC地址的动态解析,是局域网通信的基础协议。
概念
ARP(Address Resolution Protocol,地址解析协议) 是一种用于将 IP地址 解析为 MAC地址 的网络协议,工作在 数据链路层(OSI L2)。
作用
-
解决IP→MAC映射:在局域网(LAN)中,设备通过IP地址通信,但实际数据传输需要MAC地址。
-
维护ARP缓存表:存储最近查询的IP-MAC对应关系,减少重复请求。
工作原理
-
ARP请求(广播):
-
主机A想发送数据给主机B(已知B的IP,但不知其MAC)。
-
A向局域网广播发送 "Who has IP_B? Tell IP_A" 的ARP请求。
-
-
ARP响应(单播):
-
主机B收到请求后,回复 "IP_B is at MAC_B" 的单播响应。
-
其他主机忽略该请求。
-
优点
-
简单高效,解决IP与MAC的映射问题。
-
支持动态更新(ARP缓存表自动刷新)。
路由器和交换机
交换机用于局域网内设备直连(认MAC),路由器用于跨网络通信(认IP),两者协同构建完整网络架构。
交换机(Switch)
-
作用:
-
工作在 数据链路层(OSI L2),负责局域网(LAN)内设备间的 MAC地址转发。
-
通过 MAC地址表 学习并记录设备连接端口,实现 点对点高效通信。
-
-
特点:
-
仅限局域网:无法跨网络通信(如连接不同子网)。
-
无IP处理能力:不识别IP地址,仅根据MAC地址转发数据帧。
-
减少冲突域:每个端口是独立的冲突域(全双工模式下无冲突)。
-
-
应用场景:
-
企业内网、家庭局域网(连接电脑、打印机等设备)。
-
路由器(Router)
-
作用:
-
工作在 网络层(OSI L3),负责不同网络(如LAN与WAN)间的 IP数据包转发。
-
通过 路由表 选择最佳路径,连接互联网或跨子网通信。
-
-
特点:
-
跨网络通信:支持不同IP子网或ISP之间的数据传输。
-
NAT功能:共享公网IP(如家庭路由器让多设备上网)。
-
防火墙功能:过滤非法流量(部分高级路由器支持)。
-
-
应用场景:
-
家庭宽带接入、企业级网络互联、互联网骨干网。
-
对比总结
设备 | 工作层级 | 核心功能 | 寻址依据 | 典型应用场景 |
---|---|---|---|---|
交换机 | 数据链路层(L2) | MAC地址转发 | MAC地址 | 局域网内设备互联 |
路由器 | 网络层(L3) | IP路由与跨网络通信 | IP地址 | 连接不同网络/互联网 |
补充说明
-
三层交换机:结合交换机与路由器功能(支持VLAN间路由)。
-
家庭“路由器”:实际是 路由器+交换机+AP 的集成设备。
知识点笔记
下面这部分是我之前学习时候的知识点笔记,不全,可以简单的过一下