计网笔记(updating~)
2025年9月14日 · 31408 字 · 63 分钟
主要参考文末,以及偶尔听一节的我
网络概述
因特网概述
具体构成角度
- 节点:
- 主机及其应用程序
- 路由器、交换机等网络设备
- 边(通信链路 communication link) – 接入网:
- 媒介:同轴电缆、铜线、光纤、无线电频谱
- 传输速率:宽带bps
- 接入网链路:主机连接到互联网的链路
- 主干链路:路由器之间的链路
- 接入网络的设备–网络边缘
- 主机(host)= 端系统(end system)
- 运行的联网app
- 分组交换机 – 网络核心
- 路由器(router)和链路层交换机(link-layer switch)
- 协议:规范和控制消息的发送和接受
- 如 TCP、 IP、 HTTP、 FTP
- 对等层实体沟通的标准,包括报文格式、次序及传输动作
- 网络标准
服务角度
- 分布式应用:如Web、VoIP、Email、电子商务、社交网络、分布式游戏
- 通信基础设施:
- 提供应用程序接口(API)
- 连接发送和接收数据的应用程序
- 提供服务类型:无连接不可靠服务(Connectionless Unreliable Service)或面向连接的可靠服务(Connection-Oriented Reliable Service)
网络边缘(Network Edge)
网络边缘包括主机及其运行的应用程序
与因特网相接的计算机及其他设备位于因特网的边缘,称为端系统
端系统 = 主机,可以被划分为下面两种:
- 客户(client)
- 服务器(server):比如有企业存储大量数据的大型数据中心(data centers)
通信模式
- C/S模式(Client/Server Model):客户端请求服务,服务器响应
- 如Web浏览器和服务器、Email客户端和服务器
- P2P模式(Peer-toPeer Model):每个主机同时是客户端和服务器
- 如Gnutella、KaZaA、Emule
传输协议
- 传输控制协议(Transmission Control Protocol, TCP):
- 可靠、保序(不重复,不失序,不丢失,不出错,不乱序)的数据传输
- 流量控制和拥塞控制
- HTTP、FTP、Telnet、SMTP
- 流媒体、远程会议、DNS、Internet 电话
- 用户数据报协议(User Datagram Protocol, UDP):
- 无连接、不可靠、不保序的数据传输
- 无流量控制和拥塞控制
接入网(Access Networks)
网络边缘的端系统通过接入网(物理链路)连接到边缘路由器(端系统到任何其他远程端系统路径上的第一台路由器
家庭接入:DSL、电缆、FTTH、拨号和卫星
- 数字用户线(digital subscriver line, DSL)
利用电话线路接入网络。ADSL是非对称的数字用户线,基本都用ADSL,因为一般下行的数据量远大于上行的数据量,所以要设计成非平衡的链路。
采用独占的频分多路复用来传输。因为利用的是原有的电话线路,所以需要将DSL传输的网络信号(上行、下行)和电话信号通过频分多路复用来区分开来。
| 频段 | 传输信号 |
|---|---|
| 0-4K | 电话语音线路 |
| 4K-50K | 上行信号 |
| 50K-1M | 下行信号 |
-
电缆因特接入(cable internet access)
利用有线电视网接入网络。结构上,通过粗的同轴电缆接入社区,再利用细的同轴电缆接入每家每户。
采用共享和频分多路复用来传输
-
混合光纤同轴电缆(HFC)
同轴电缆和光纤节点相连再接入边缘路由器。
不对称的竞争式协议,最高可达到30Mbps的下行速率和2Mbps的上行速率。由于采用竞争式协议,在用户少时使用体验优于普通电缆因特网接入,但是在用户多时容易造成卡顿
企业(家庭)接入:以太网和WiFi
- 以太网:使用双绞铜线与一台以太网交换机相连,速率可达到100Mbps、1Gbps、10Gbps
- WiFi:IEEE802.11技术无线LAN,范围在几十米内
广义无线接入:4G和5G
后面会讲
物理媒体(Physical Media)
- 导引型媒体(guided media):信号在固体媒体中传输,比如光缆、双绞铜线和同轴电缆
- 非引导型媒体(unguided media):电波在空气中传播,比如无线局域网或数字卫星频道
网络核心(Network Core)
网络核心:由端系统的分组交换机和链路构成的网状网络。下图标亮部分即是网络核心。
一共有三种交换方式:报文交换、分组交换和电路交换

电路交换(Circuit Switching)
端到端连接(end-to-end connection):在发送数据之前,必须先在发送和接收两端建立端到端连接,并预留一部分带宽。而分组交换不预留,所以会造成排队和丢包
- 信令系统为每个呼叫预留专有电路
- 独享资源,适合电话网
- 不适合计算机通信,因连接建立时间长、资源浪费
- 网络资源被分成片,有频分(Frequency Division)、时分(Time Division)、波分(Wavelength Division),为呼叫分配片,如果某呼叫没有数据,则其资源片处于空闲状态

频分多路复用(FDM)
链路中的每条连接专用一个频段
时分多路复用(TDM)
远距离传输会有衰减,所以考虑用数字信号进行传输。在时域上对信号进行采样,接收时再将采样信号恢复。
TDM在时域上被划分为固定的帧(frame),每帧又被划分为固定数量的时隙(slot),链路中的每条连接专用一个时隙。
分组交换(Packet Switching)
端系统之间彼此传输报文,分组交换将长报文划分为分组,分组再通过通信链路和分组交换机(分为路由器和链路层交换机)传送。
- 将要传输的数据分成一个个单位(分组),以分组为单位进行存储、转发
- 将分组从一个路由器传到相邻路由器(Hop)一段段最终从源端传到目标端
- 在转发之前,节点必须收到整个分组
- 排队延迟和丢失:如果分组到达速率高于链路传输速率,分组会排队等待传输;如果路由器缓存用完了,分组会被抛弃
存储转发传输(Store-and-Forward Transmission)
分组交换和报文交换都采用了存储转发的传输形式。但分组交换的存储转发以分组为单位,即交换机接收了整个分组后才能输出该分组的数据;而报文交换的存储转发单位为报文,需要交换机接收到整个报文后才能输出
传输相同大小的数据包,分组交换比报文交换更快。下面是分组交换传输3L大小的报文的时间流,报文分为3个大小为L的分组,根据分组交换原理,一共耗费了4L/R时间完成传输( 即存储转发时延)。如果使用报文传输同样的3L大小的报文则需要耗费6L/R时间
排队时延(Queuing Delay)和分组丢失(Packet Loss)
分组交换机有一个输出缓存(output buffer),分组可能会在分组交换机上排队等待输出,造成排队时延
分组交换机的缓存空间是有限的,所以在过于拥堵时会产生分组丢失(丢包)
转发表(Forwarding Table)和路由选择协议(Routing Protocol)
数据报(Datagram)的工作原理
- 通信之前无须建立起连接,有数据就传输
- 每一个分组都独立路由(由于路径不一样,可能会失序)
- 路由器根据分组的目标地址进行路由
虚电路(Virtual Circuit)的工作原理
- 在数据传输前,发送方和接收方之间通过信令协议建立一条逻辑连接
- 网络节点根据路由算法选择路径,并预留资源(如带宽、缓冲区)。建立完成后,网络会分配一个虚电路标识符(Virtual Circuit Identifier, VCI),用于标识该连接
分组交换&&电路交换
分组交换的性能优于电路交换,适用于随机数据,可以满足更多用户
电路交换需要预留带宽,相当于固定了链路用户的数量
而分组交换不需要预留带宽,用户使用网络是有一定概率的,在一个时刻多人使用的概率其实相对较低,所以一条链路可以给更多的用户使用
电路交换适用于特殊情况,比如要保障传输数据能力
接入网
怎样将端系统和边缘路由器连接?
住宅接入网络
- 调制(Modem):将上网数据调制加载到音频信号上,在电话线上传输,端系统将数据解调出来;拨号调制解调器以56kbps的速率直接接入路由器,不能同时上网和打电话
- 调幅(Amplitude Modulation)
- 调频(Frequency Modulatioin)
- 调相位(Phase Modulation)
- 综合调制(Hybrid Modulation)
- 数字用户线路(DSL, Digital Subscriber Line):一种通过普通电话线提供高速互联网接入的技术
- 线缆网络(Cable Network):
单位接入网络
无线网络
- WLAN(Wireless Local Area Network):建筑物内部
- 广域无线接入(Wide-Area Wireless Acess):由电信运营商提供
物理媒体
导引性(Guided Media)
- 同轴电缆(Coaxial Cable):两根同轴地铜导线、双向
- 基带电缆(Baseband Cable):电缆上有单个信道
- 宽带电缆(Broadband Cable):电缆上有多个信道
- 光纤和光缆(Fiber Optics):光脉冲,一个脉冲代表1bit,高速、低误码率、安全
非引导性媒体(Unguided Media)
- 无线电(Radio):开放空间传输电磁波无需物理线缆
- 传播环境效应:反射、吸收、干扰
- 类型:地面微波、WLAN(wifi)、wide-area(蜂窝)、卫星
因特网结构和ISP
ISP(Internet Service Provider)
ISP是向用户提供互联网接入和服务的公司或组织,ISP分为许多层级,比如第一层ISP(tier-1 ISP)、区域ISP(regional ISP)、接入ISP(access ISP)。端系统通过接入ISP与因特网相连,全球的ISP通过各个层级相连,形成了互联网的互联
- 主要服务包括:
- 互联网接入:通过宽带、光纤、DSL、无线等方式连接互联网
- 电子邮件和网页托管:提供电子邮箱和网站托管服务
- 虚拟专用网(VPN):提供安全的远程访问服务
- 云服务:提供数据存储、备份等云服务
- 技术支持:提供网络设置、故障排除等帮助
- 类型:
- 拨号ISP:通过电话线接入,速度较慢
- 宽带ISP:提供高速连接,如DSL、光纤
- 无线ISP:通过无线技术提供接入
- 卫星ISP:通过卫星为偏远地区提供连接
端系统通过接入ISP链接到互联网,接入ISP是互相连接的;每个ISP都连接到全局ISP(Global ISP),接入ISP和全局ISP往往有经济合约
- 对等连接(Peering Connection):对等连接是指两个或多个ISP之间直接互联,以交换流量,而不通过第三方网络
- IXP(Internet Exchange Point):互联网交换点,是不同网络服务提供商(ISP)和内容分发网络(CDN)之间交换流量的物理基础设施

ICP(Internet Content Provider)
ICP是指在互联网上提供各类消息、服务或应用的公司或组织。它们通过网站、应用程序等平台向用户提供内容
- 主要类型
- 新闻门户
- 视频平台
- 社交网络
- 电子商务
- 搜索引擎
ICP为了减少运营支出、给用户提供更好地服务,会在全球各地部署数据中心机房,用专线连接在一起,数据中心机房往往靠近核心ISP的路由设备

网络结构
网络结构是网中之网,具有层次结构
分组延时、丢失和吞吐量
分组延时(Packet Delay)
在路由缓冲区有分组队列,分组等待排到队头被传输
- 四种延时
- 节点处理延时$D_{proc}$:检查bit级差错,检查分组头部并决定将分组导向何处,耗时很短,毫秒级
- 排队延时$D_{queue}$:在输出链路上等待传输的时间,依赖于路由器的拥塞程度
- 传输延时:$D_{trans}$ = L/R,R是链路带宽(bps),L是分组长度(bits)将分组的比特流传输到链路的时间(比如进行编码转换成查分曼切斯特编码的时间)
- 传播延时:$D_{prop}$ = d/s,d是物理链路长度,s是信号在媒介中的传播速度,信号在媒体上传播的时间
- 流量强度:I = La/R 流量强度不能超过1,L是分组长度(bits),a是平均分组到达速率(packets/sec),R是链路带宽/传输速率(bps), 代表了路由器上排队的拥堵率
分组丢失(Packet Loss 丢包)
由于链路的队列缓冲区容量有限,当分组到达一个满的队列时,该份组会丢失。丢失的分组可能会被前一个节点或端系统重传,或根本不重传
吞吐量(Throughput)
在源端和目标端之间的传输速率(数据量/单位时间)
- 瞬间吞吐量(Instantaneous Throughput):某一时刻的传输速率,反应当前网络的瞬时性能,从主机A到主机B传文件,B接收文件的速率
- 平均吞吐量(Average Throughput):在一段时间内的平均传输速率,反映网络的整体性能
- 瓶颈链路(Bottleneck Link):端到端的路径上,限制端到端吞吐的链路

协议(Protocol)
协议定义了在两个或多个通信实体之间交换的报文格式和次序,以及报文发送和/或接受一条报文或其他时间所采取的动作。
协议三大要素:
- 语法(Syntax):每一段内容符合一定规则的格式,比如一个报文前8位是原地址,后8位是目的地址(just example)之类
- 语义(Semantics):每一段内容需要代表某种意义,比如原地址部分的二进制到底是指哪个地址。
- 同步(Timing):通信的过程,即每一段任务的执行顺序
协议层次(Protocol Layer)及其服务模型
层次化方式实现复杂网络功能
- 将网络复杂的功能分成功能明确的分层次,每一层实现其中一组功能,功能中有其上层可以使用的功能:服务
- 本层协议实体相互交互执行本层的协议动作,目的是实现本层功能,通过接口为上层提供更好的服务
- 在实现本层协议的时候,直接利用了下层所提供的服务
服务(Service)
下层实体向上层实体提供的它们之间通信的能力
原语(Primitive)
上层使用下层服务的形式,上层使用下层提供的服务以及下层向上层提供服务都是通过服务访问源于来进行交互的
服务访问点(Service Access Point, SAP)
上层使用下层提供的服务通过的曾简介口,用于下层服务区分不同的上层用户
- 传输层的SAP:端口(Port)
- 邮箱的SAP:地址(Address)
服务类型
- 面向连接的服务(Connection-Oriented Service):建立连接、通信、拆除连接,网络层的连接成为虚电路,适合传输大的数据块
- 无连接的服务(Connectionless Service):两个对等层实体在通信前不需要建立连接,
数据单元(Data Unit)
- 服务数据单元(Service Data Unit, SDU):某一层从上层接收到的数据单元,是该层需要处理或传输的有效载荷(Payload)
- 协议数据单元(Protocol Data Unit, PDU):头部 + 服务数据单元
五层因特网协议栈
因特网协议栈由5个层次组成:物理层、链路层、网络层、传输层和应用层,因特网协议栈是一个理想模型
下层为上层提供服务,越下面的层,越靠近硬件;越上面的层,越靠近用户

| 层次 | 功能 | PDU名称 |
|---|---|---|
| 应用层(Application Layer) | 支持网络应用,应用协议仅仅是网络应用的一个组成部分,运行在不同主机上的进程则使用应用层进行通信,为应用进程提供网络应用服务,如FTP、SMTP、HTTP、DNS | 消息(Message) |
| 传输层(Transport Layer) | 负责为信源和信宿提供应用程序进程间的数据传输服务,这一层上主要定义了两个传输协议,传输控制协议即TCP和用户数据报协议UDP | 段(Segment, TCP)或数据报(Datagram, UDP) |
| 网络层(Network Layer) | 为数据报从源主机到目标主机选择路由,负责将数据报独立地从信源发送到信宿,主要解决路由选择、拥塞控制和网络互联等问题传输以分组为单位的端到端的数据,如 IP、路由协议 | 分组(Packet,有连接)或数据报(Datagram,无连接) |
| 链路层(Link Layer) | 负责将IP数据报封装成合适在物理网络上传输的帧格式并传输,或将从物理网络接收到的帧解封,取出IP数据报交给网络层,传输相邻两个网络节点之间传输以帧为单位的数据,如点对点协议、802.11(WiFi)、Ethernet | 帧(Frame) |
| 物理层(Physical Layer) | 负责将比特流在结点间传输,即负责物理传输。该层的协议既与链路有关也与传输介质有关 | 比特流(Bit Stream) |
OSI模型
OSI模型由国际标准化组织(ISO)制定,实际并没有应用,只有理论。
OSI模型由7层组成:应用层、表示层(Presentation Layer 允许解释传输的数据,加密、压缩、及其相关的表示转换)、会话层(Session Layer 数据交换的同步、检查点、恢复)、传输层、网络层、数据链路层、物理层
封装(Encapsulation)
在发送端,
- 应用层:将应用层报文(application-layer message)M传送给传输层
- 传输层:接收报文M,附上传输层首部信息Ht(包括差错检测位信息等),构成传输层报文段(transport-layer segment),将其传递给网络层
- 网络层:接受传输层报文段,附上网络层首部信息Hn(包括源和目的地址等),构成网络层数据段(network-layer datagram),将其传递给网络层
- 链路层:接收网络层数据段,附上链路层首部信息HI,构成链路层帧(link-layer frame),将其传递给物理层;
- 物理层:负责比特流物理传输 在接收端以反方向重构报文段
应用层(Application Layer)
网络应用原理
- 可以在不同类型主机运行
- 可以在不同终端间相互通讯
- 在编写网络应用的过程中,不需要考虑网络核心设备,网络核心不会允许应用
- 端系统上的应用开发发以快速,而且一与传播
网络应用结构
客户机-服务器体系结构(Client-server architecture)
HTTP、IMAP、FTP
服务器:
- 永远在线
- IP地址恒定
- 服务器往往在数据中心,通过多台服务器进行拓展
客户机:
- 可以和服务器进行通信
- 可能间断性连接网络
- 可能是动态的IP地址
- 客户机之间不会直接通信
点对点体系结构(Peer-peer architecture)(P2P的文件分享)
- 没有一个一直在线的服务器
- 任意端系统之间直接进行通信
- 每个点(peer)向其他的点请求服务,同时作为回报也会提供相应的服务
优点:自拓展性(self-scalability):新的点都会提供服务容量和负荷
缺点:每个点都是间断性连接,而且IP地址会改变
进程通信(Processes Communicating)
客户机和服务器进程
进程(Process):一台主机上运行的程序
- 在同一台主机上,两个进程通过进程间通信(inter-process communication)进行通信。进程间通信由操作系统定义
- 不同主机之间,进程通信通过报文交换
比如并行计算中的MP和MPI,MP(Multi Process)只能用于统一太主机间的通信,MPI(Message Processing Interface)主要用于不同主机间的通信,也适用于同一台主机
客户机进程(client process):发起通信的进程
服务器进程(server process):等待连接的进程
P2P应用也存在客户机进程和服务器进程
套接字(Sockets)
进程之间通过socket来接收/发送消息
socket在进程通信中的作用相当于一个信封:
进程寻址(Addressing Processes)
如果两个主机之间的进程进行通信,发送端不仅要知接接收端的IP地址还需要知道进程相应的端口号
- IP地址:IPv4中32位IP,负责找到接收端主机 -端端口号(port number):每台主机都可能运行着多个进程,每个进程对应一个端口号,比如HTTP服务端口号80、邮件服务端口号25
应用层协议(Application-Layer Protocols)
网络应用的开发必须遵守网络协议
应用层协议的分类
公开网络协议
- 定义在RFC中
- 统一标准,易于相互操作
- 例如:HTTP、SMTP
专用网络协议
- 一些非公开的网络协议
- 例如:Skype
应用层协议内容
应用层协议定义了
- 消息交换的类型:比如请求、响应
- 消息的语法:消息中有那些字段以及这些字段如何定义
- 消息的语义:消息字段内容的含义
- 规则:进程什么时候、如何发送/接受消息
app对传输服务的需求
- 数据完整性(data integrity)
- 一些app需要100%可靠的文件传输,如文件传输;有一些运行一部分的丢失,比如语音
- 时效性(timing)
- 一些app要求较少的延时,比如对话直播
- 吞吐率(throughput)
- 吞吐率,即最小带宽,一些app存在一个吞吐率下限才能正常使用,比如视频音频等多媒体;有些app运行弹性的吞吐率,比如有间传输,吞吐率小可以慢慢穿过去
网络传输协议服务
传输层提供为应用层提供的两种传输服务
TCP
传输控制协议(TCP)
- 面向连接(connection-oriented):需要客户端和服务器之间能够建立连接
- 可靠传输(reliable transport):数据完整性高
- 流量控制(flow control):发送方不能发送太多数据导致接收方过载
- 阻塞控制(congestion control):不能有太多个主机同时发送导致网络过载
- 不提供的服务:时效性、最小带宽(吞吐率)、安全性
UDP
UDP是一种不提供不必要服务的轻量传输协议,优点是速度快、灵活性好
- 不需要建立连接
- 不可靠的数据传输
- 不提供的服务:基本都不提供,不提供包括可靠传输、流量控制、阻塞控制、时效性、最小带宽(吞吐率)、安全性
不同app网络传输协议
Web和HTTP
World Wide Web中的网页由超链接(hyperlink)连接
- 页面由很多对象(object)组成,对象存储在服务器中
- 对象有多种类型,可以是HTML文件,JPEG图片,Jav啊小程序,MP3文件等
- 网页以HTML文件为基础,包括了许多参考对象,每个对象都可以通过URL来寻址
URL格式:
协议名称://用户:口令@主机名/名径名:端口
HTTP概述
超文本传输协议(hypertext transfer protocol, HTTP)
- 王爷的应用曾协议
- 基于客户机-服务器体系结构
- 客户机:负责请求、接收和显示Web对象
- 服务器:Web服务器负责发送对象,响应客户机请求
- HTTP的传输层使用TCP
- 客户端发起一个与服务器的TCP连接(建立套接字),服务器接受连接
- 浏览器与Web服务器交换HTTP报文(应用层报文)
- TCP关闭连接
- HTTP是无状态的
- 服务器不维护关于客户的任何信息
- 协议要维持状态是很复杂的:保留之前的历史记录 很消耗资源;如果客户机或者服务器有死机,它们的状态会不一致,需要重新同步,这很麻烦
- HTTP消息类型:请求(request)与响应(response)
HTTP连接类型
非持久性连接(Non-persistent HTTP)
-
非持久性HTTP步骤
- TCP连接开启
- 通过这个TCP连接最多传输一个对象
- TCP连接关闭
- 方法:GET、POST、HEAD
- 缺点:
- 每个对象需要两个RTT(Round-Trip Time 一个很小的数据包(处理文件的时间可以忽略)从传到递户机服务器再传回来的时间):一个用于建立连接,一个用于传输数据
- 操作系统必须为每个TCP连接分配资源
持久性连接(Persistent HTTP)
-
持久性HTTP步骤
- 开启TCP连接
- 通过这一个TCP连接可以传多个对象
- TCP连接关闭
-
持久性HTTP特点(HTTP1.1)
- 服务器在发送响应后保持连接开启状态
- 后续这个客户机/服务器的HTTP消息都通过该开启的连接发送
- 两种发送对象方式:HTTP1.1采用流水的方式发送:一次性把对象拳法了;另一种是非流水线模式:客户机接收到一个对象后在发送下一个对象的请求
- 至少需要一个RTT发完所有对象
HTTP请求报文格式
HTTP请求报文由请求行、请求头和请求体组成
HTTP响应报文格式
- 状态行:包含协议版本、状态码和状态信息(如 200 OK、 404Not Found)等
- 首都行:包含Content-length,因为TCP不维护报文边界
- 数据:响应的实际内容
常见状态码
- 200 OK:请求成功
- 301 Moved Request:资源永久重定向
- 400 Bad Request: 请求无效
- 404 Not Found:资源未找到
- 505 HTTP Version Not Supported:HTTP版本不支持
cookie
Cookie 是一小段数据(通常最大为 4KB),由网站服务器生成,并通过用户的浏览器存储在用户本地计算机上。它的主要目的是让网站能够“记住”用户的状态信息。
因为 HTTP 协议本身是 “无状态” 的。这意味着服务器在处理完一个请求后,不会记住你是谁。当你刷新页面或跳转到同一网站的另一个页面时,对服务器来说,你就是一个全新的、陌生的访客。
这带来了一个问题:如何实现购物车、用户登录、个性化设置等功能?Cookie 就是为了解决这个问题而诞生的。
首次请求(无Cookie): 用户第一次访问 example.com。
服务器响应(设置Cookie): 服务器在处理请求后,会在HTTP响应头中添加一个 Set-Cookie 字段,例如 Set-Cookie: session_id=abc123; Path=/。
浏览器存储: 用户的浏览器收到这个指令后,就会将 session_id=abc123 这个键值对保存起来。通常会关联到 example.com 这个域名。
后续请求(携带Cookie): 之后,每当用户再次访问 example.com 下的任何页面,浏览器都会自动在HTTP请求头中加上一个 Cookie 字段,例如 Cookie: session_id=abc123。
服务器识别: 服务器收到这个带有 Cookie 的请求,就能通过 session_id=abc123 识别出用户是谁,从而提供对应的服务(如显示登录名、保持购物车内容等)。
cookie类型
会话Cookie: 临时Cookie,存储在内存中,浏览器关闭后即被删除。
持久Cookie: 拥有一个特定的过期时间,会保存在硬盘上,直到过期。
第一方Cookie: 由当前正在访问的网站域名设置的 Cookie。
第三方Cookie: 由当前网页上嵌入的第三方内容(如广告、分析脚本)设置的 Cookie,常被用于跨站跟踪。现代浏览器(如Safari和Chrome)正在逐步淘汰第三方Cookie。
web cache
减少延迟: 从缓存(离用户更近)加载资源比从遥远的原始服务器加载要快得多,从而加快页面加载速度,提升用户体验。
减少带宽消耗: 重复的资源不需要在网络上反复传输,为用户和网站运营者节省流量和成本。
降低服务器负载: 缓存服务器处理了大量请求,原始服务器的压力会大大减小。
应对网络故障: 即使在原始服务器暂时不可用的情况下,缓存的内容仍然可以被访问。
服务器通过 HTTP 响应头来控制缓存行为:
Cache-Control: max-age=3600:指示资源可以被缓存 3600 秒(1小时)。
Expires: Wed, 21 Oct 2025 07:28:00 GMT:指定一个确切的过期时间。
ETag: "xyz789":资源的版本标识符。浏览器下次请求时会带上 If-None-Match: "xyz789",如果资源没变,服务器会返回 304 Not Modified,告诉浏览器使用缓存。
条件GET
在确保客户端获取的内容是最新的前提下,最大限度地减少不必要的数据传输,从而节省带宽和提高性能
-
基于时间 (Last-Modified 和 If-Modified-Since)
-
首次请求(缓存为空):
-
浏览器向服务器请求一个文件,比如 logo.png。
-
服务器在返回文件(状态码 200 OK)的同时,在响应头中加上:Last-Modified: Wed, 01 Oct 2023 10:00:00 GMT(这个文件的最后修改时间)。
-
-
后续请求(条件GET):
-
当浏览器再次需要这个文件时,发现本地有缓存,并且知道这个缓存的最后修改时间。
-
浏览器在发送GET请求时,会附加一个请求头:If-Modified-Since: Wed, 01 Oct 2023 10:00:00 GMT。
-
-
服务器端判断:
-
资源未修改: 服务器会比较请求中的 If-Modified-Since 时间和资源的当前最后修改时间。如果资源在此时间后没有被修改,服务器会返回一个极简的响应:304 Not Modified,并且不携带文件内容。
-
资源已修改: 如果资源在 If-Modified-Since 时间之后被修改了,服务器会视同一个全新的请求,返回 200 OK 和完整的文件内容。
-
-
-
基于内容标识 (ETag 和 If-None-Match) 基于时间的检查有时不够精确,ETag 提供了更可靠的机制。
-
首次请求(缓存为空):
-
浏览器请求 logo.png。
-
服务器返回文件(200 OK),并在响应头中加上:ETag: “abc123”。这个 ETag 值是由服务器生成的、代表资源唯一版本的标识符(通常是根据文件内容计算出的哈希值)。
-
-
后续请求(条件GET):
- 浏览器再次请求该文件时,会在请求头中附加:If-None-Match: “abc123”。
-
服务器端判断:
-
如果资源未修改: 服务器会计算当前资源的 ETag,并与请求头中的 If-None-Match 值比较。如果两者匹配,说明内容没变,返回 304 Not Modified。
-
如果资源已修改: 当前资源的 ETag 变成了 “xyz789”,与 “abc123” 不匹配,则服务器返回 200 OK 和完整的新文件。
-
-
ETag 的优先级通常高于 Last-Modified。 当两者同时存在时,浏览器会优先使用 If-None-Match 和 ETag 进行验证。
文件传输协议(FTP)
文件传输协议(FTP):用于向远程主机传输文件或从远程主机接受文件
- C/S模式:
- 客户端:发起传输的一方
- 服务器:远程主机
- 默认端口:21(控制连接)和20(数据连接)
FTP控制连接和数据连接
- 控制连接:用于身份验证和命令传输
- 数据连接:用于文件传输
- 特点:
- 控制连接和数据连接分开
- 服务器在受到文件传输命令时,主动建立数据连接
- 传输完成后后,服务器关闭连接
- 带内:数据连接,传输数据
- 带外:控制连接,传输指令
- FTP是有状态的协议,服务器维护客户端状态
电子邮件(Email)
三个主要组成部分
- 用户代理(User Agent):
- 又名“邮件阅读器”,用于撰写、编辑和阅读邮件
- 邮件服务器(Mail Server):
- 管理和维护发送给用户的邮件
- 输出报文队列保持带发送邮件报文
- 通过SMTP协议发送邮件报文
- 邮件传输协议
简单邮件传输协议(SMTP)
- 使用TCP协议在客户端和服务器之间传输报文,端口为25
- 传输分别为握手、传输报文、关闭连接三个阶段
- 命令是ASCII码文本,响应是状态码和状态信息
多媒体邮件扩展(MIME)
MIME(Multimedia Mail Extension)用于支持多媒体邮件
邮件访问协议
- POP(Post Office Protocol):
- 用户确认身份并下载邮件
- 会话中是无状态的
- 本地管理文件夹
- IMAP(Internet Mail Access Protocol):
- 在服务器上处理存储的报文
- 支持目录组织报文
- 会话中保留用户状态
- HTTP:使用HTTP协议访问邮件,如Hotmail、Yahoo Mail
DNS
域名系统(Domain Name System,DNS)通过分布式的数据库来实现IP地址和域名的映射
- 层级结构的域名服务器提供分布式的数据库
- 应用层协议:主机和域名服务器通过通信来实现IP地址和域名的转换
DNS服务
- 域名到IP地址的转换
- 主机别名到规范名字的转换
- 邮件服务器别名到邮件服务器正规名字的转换
- 负载均衡:有些Web可能有多个服务器,即会有多个IP地址对应一个域名,可调整IP地址的顺序以分配负荷
DNS结构
DNS采用三层结构
一个客户机得到www.amazon.com的IP地址的步骤:
- 用户端先查询根域名服务器,得到顶级域名服务器.com DNS server的地址
- 客户机查询顶级域名服务器.com DNS server,得到权威域名服务器amazon.com DNS server的地址
- 客户机查询权威域名服务器amazon.com DNS server,得到www.amazon.com的IP地址
根域名服务器(Root Name Server)
- 官方的服务器,是连接的最后的方法(如果知道下级域名服务器的地址就不需要再从头开始查询根域名服务器,不然会对根域名服务器产生很大的流量负载)
- 对网络运行相当重要,离开根域名服务器网络无法正常工作
- 域名系统安全扩展(Domain Name System Extensions, DNSSEC)–对DNS提供给DNS客户端(解析器)的DNS数据来源进行认证,并验证不存在性和校验数据完整性验证
- ICANN(互联网名称与数字地址分配机构,Internet Corporation for Assigned Names and Numbers)–管理根域名服务器的组织
顶层域名服务器(Top-Level Domain Server, TLD)
- 各种类型的TLD,比如com、org、net、edu等,国家的TLD,比如cn、uk
- Network Solutions:管理com、net TLD的组织
- Educause:管理edu的组织
权威域名服务器(Authoritative Domain Server)
- 组织自己的DNS服务器,用来提供组织内部的域名到IP地址的映射
- 由组织自己或者服务提供商来维护
本地域名服务器(Local DNS Name Server)
- 严格来说不属于层级结构
- 每个ISP都会有一个本地域名服务器,也叫做默认域名服务器(default name server)
- 当主机要进行DNS查询时,查询会被直接送到本地的DNS服务器。
- 作用:
- 缓存:可以缓存最近收到的域名到IP地址的映射(缓存有时效,会过期)
- 代理:可以作为代理,代替主机在层级结构中进行查询
域名的管理
- 一个域名、管理其下的子域,如cn被划分为edu.cn、com.cn
- 创建一个新的域必须征得它所属域的同意
- 域的划分和物理网络结构无关
区域(Zone)
- 将DNS名字空间划分为互不相交的区域
- 每个区域都有一个权威名字服务器(Authoritative Record)维护它所管辖区域的权威信息,上层域的名字服务器中有指针指向下层域的名字服务器(NS记录)
- 权威名字服务器允许被放置在区域之外,以保障可靠性
- 对于权威名字,组织机构可以选择自己维护或者某个服务提供商来维护
DNS缓存和更新
- 一旦域名服务器学习到了一个映射,它就会缓存这个映射。缓存往往在本地域名服务器里,这样可以减轻根域名服务器的压力。
- 缓存有效时间TTL,过了有效时间该缓存就会被删除。
- 更新/通知机制:由IETF制定的 RFC2136 标准。如果中途域名主机改变IP地址,整个网络可能都不知道真正的IP地址,直到TTL到时,所以需要更新/通知机制。
DNS 记录
- RR 格式:(Name, Value, Type, TTL)
- Type = A:Name 为主机,Value 为 IP 地址
- Type = NS:Name 为子域的域名,Value 为子域的权威名字服务器的域名
- Type = CNAME:Name 为规范名字的别名,Value 为规范名字
- Type = MX :Name 为邮件服务器的别名,Value 为邮件服务器的规范名字
DNS工作过程
- 应用调用解析器(Resolver)
- 解析器向名字服务器发送查询报文
- 名字服务器返回报文
DNS消息
DNS有两种消息类型:查询(query)和回答(reply),两种消息格式相同

本地名字服务器(Local Name Server)
- 每个 ISP 都有一个本地名字服务器
- 当主机发起 DNS 查询时,查询被发送到其本地名字服务器
- 本地名字服务器起着代理作用,将查询转发到层次结构中
名字解析过程
- 若目标名字在本地名字服务器的缓存中:直接查询缓存中的IP地址。
- 若目标名字不在本地名字服务器的缓存中:
DNS查询工具
nslookup直接查询
查询一个域名的A记录,如果没指定dns-server,用系统默认的dns服务器。
nslookup domain [dns-server]
nslookup查询其他记录
nslookup -qt=type domain [dns-server]
type可以是以下这些类型:
| type | 类型 |
|---|---|
| A | 地址记录 |
| AAAA | 地址记录 |
| AFSDB | Andrew文件系统数据库服务器记录 |
| ATMA | ATM地址记录 |
| CNAME | 别名记录 |
| HINFO | 硬件配置记录,包括CPU、操作系统信息 |
| ISDN | 域名对应的ISDN号码 |
| MB | 存放指定邮箱的服务器 |
| MG | 邮件组记录 |
| MINFO | 邮件组和邮箱的信息记录 |
| MR | 改名的邮箱记录 |
| MX | 邮件服务器记录 |
| NS | 名字服务器记录 |
| PTR | 反向记录 |
| RP | 负责人记录 |
| RT | 路由穿透记录 |
| SRV | TCP服务器信息记录 |
| TXT | 域名对应的文本信息 |
| X25 | 域名对应的X.25地址记录 |
向DNS数据库插入记录
比如要创建一个networkutopia.com的网站
- 先在.com的TLD提供商 Network Solution 注册 networkutopia.com
- 提供信息:域名、权威域名服务器的IP地址
- 提供商会向.comTLD服务器插入 NS、A 的RR(networkutopia.com, dns1.networkutopia.com, NS) (dns1.networkutopia.com, 212.212.212.1, A)
- 在自己的权威域名服务器上进行配置
- 插入www.networkutopia.com的type A记录
- 如果是邮件服务,插入networkutopia.com的type MX记录
P2P
纯P2P架构
- 没有一直运行的服务器
- 任意端系统之间直接通信
- Peer节点间歇上网,每次IP地址都有可能变化
- 例子:文件分发,流媒体,VoIP
优点:自扩展性(self-scalability):新的点都会提供服务容量和负荷 缺点:每个点都是间断性连接,而且IP地址会改变
P2P类型
- 非结构化P2P
- 结构化P2P(DHT)
BitTorrent
-
文件分为大小为256kb的块(chunk)
-
每个节点负责上传和下载的文件块
-
追踪器(tracker):追踪参加洪流的节点
-
节点加入洪流:
- 本身没有文件块,从其他节点获取文件块
- 在tracker注册获得peers列表
- 与相邻peers取得联系
-
下载时,节点会上传文件块到其他节点
-
节点可以更改文件块的其他节点
-
节点随时会上线和下线
-
一旦节点完整的文件,它可以离开或者留在洪流中
请求文件块
- 在给定的时间,不同的节点拥有不同的文件块
- 一定周期,新的节点会问每个节点有哪些块
- 新节点会从其他节点处下载缺失的文件块
- 最稀缺优先(rarest first):如果有10个节点都有第1、2块,只有一个节点有第3块,则先下载第3块。
发送文件块
发送文件块遵守一报还一报原则(tit-for-tat)
-
节点会给目前给它发送文件块速率最高的四个节点发送文件块,其他节点就不发送了,每隔 10s 会选出新的top4
-
每隔 30s 会随机选择其他节点发送文件块,这样这个随机节点可能就会成为新的top4
tit-for-tat原则:上传速率快的节点相应地得到高下载速率的回报。
CDN
全网部署缓存节点,就近为用户提供内容加速服务
CDN部署策略
- Enter Deep:将CDN服务器深入接入网,数量多、离用户近
- Bring Home:部署在少数关键位置,采用租用线路将服务器簇链接起来
传输层(Transport Layer)
传输层服务
传输层为运行在不同主机上的应用进程提供逻辑通信。传输协议运行在端系统,可选择不同的协议(如TCP和UDP)
- 发送方:将应用层的报文分成报文段,传输给网络层
- 接收方:将报文段重组成报文,传递给应用层
传输层依赖网络层的服务,并对网络层的部分服务进行增强(如数据丢失、乱序、加密可以增强,但延时和带宽不可增强)
传输层网络层对比
- 网络层:主机之间的通信
- 传输层:进程之间的通信
传输层依赖于并能强化网络层服务
传输层协议
- TCP:可靠的,有序的传送
- 拥塞控制
- 流量控制
- 需要建立连接
- UDP:不可靠的,无序的传送
- 提供尽力而为交付服务
二者均不提供的服务:延时保障、带宽保障
多路复用(Multiplexing)与多路分用(Demutiplexing)
多路复用存在于发送方:发送方需要处理多个套接字,并且给套接字加上传输层的头部
多路分用存在于接收方:利用头部信息,将接收到的报文段传输给正确的套接字
多路复用与解复用
TCP的复用与解复用
- 复用:
- 应用层将消息和TCP Socket(包含源IP、源Port、目标IP、目标Port)传递给传输层
- TCP层将源port、目标port和消息封装成TCP段(Segment),并与IP、目标IP一起传递给网络层
- 解复用:
UDP的复用与解复用
- 复用:
- 应用层将信息、UDP Socket(包含源IP、源Port)和目标IP、目标Port传递给传输层
- UDP层将源Port、目标Port和消息封装成UDP段(Datagram),并与源IP、目标IP一起传递给网络层
- 解复用:
socket的作用
- 复用:从多个套接字接受来自多个进程的报文,根据套接字对应的IP地址和端口号封装报文
- 解复用:根据报文段头部信息的IP地址和端口号将接收到的报文段发给正确的套接字和对应的应用进程
用户数据协议(UDP)
UDP数据报格式
- 头部(8字节):
- 源端口(Source Port):2字节,标识发送方的端口号;若不使用则置为0
- 目的端口(Destination Port):2字节 ,标识接收方的端口号
- 长度(Length):2字节,表示整个UDP报文的长度;最小值为8(仅头部),最大值为65535
- 校验和(Cheaksum):2字节,用于检测传输中的错误;在IPv4中可选,若未计算则置为0;在IPv6中强制使用
- 应用程序数据:载荷

UDP的优点
- 简单:发送端和接收端没有连接状态
- 头部小:开销低
- 快速发送:无需建立连接
校验和的工作原理
- 发送方:
- 数据分块:将数据划分为16位(bit)的块
- 求和:对块进行二进制求和(进位回滚)
- 取反码:取反码得到校验和
- 插入校验和:将校验和插入报文头部
- 接收方:
- 对接收到的数据(包括校验和)进行二进制求和
- 若结果不为0,数据有误,丢弃报文
- 伪头部(UDP/TCP):
- 在校验和计算中加入伪头部,包含源IP、目的IP、协议类型长度等信息,确保这些字段未被篡改
可靠数据传输
RDT 1.0:可靠信道上的传输
- 假设:信道完全可靠,无比特差错,无分组丢失
- 发送方:封装,再直接发送数据
- 接收方:直接接收数据,再解封装
RDT2.0:具有比特差错的信道————停止等待协议(Stop-and-wait)
- 差错检测:校验和来检测比特级差错
- 恢复机制:
RDT2.1:发送方处理出错的ACK/NAM
发送方收到的ACK/NAK有可能是出错(Corrupt)的
- 发送方:为分组编号,若发现收到的ACK/NAK出错,重新上传分组
- 接收方:为ACK/NAK添加差错控制编码(EDC);在等待n+1号packet时(说明之前已经收到过n号packet):
RDT2.2:无NAK的协议(NAK Free)
- 特点:仅使用ACK,且ACK需编号
- 恢复机制:若收到重复ACK,发送方重传当前分组
RDT3.0:超时重传机制
引入超时重传机制的原因:下层信道可能会丢失分组(ACK丢失或packet丢失)
- 造成死锁
- 目前的机制(检验和,序列号,ACK,重传)还不够处理这种状况
解决方法:
- 发送端超时重传,每次发送分组后启动计时器,如果超过Timeout还没有受到该分组的ACK,就重传分组并重置计时器
- 和RDT2.2不同,发送端收到上一个packet的ACK之后,并不会立即重传,而是“按兵不动”,等待超时,因为超时也会触发重传
- 超时计时器需要设置合理的Timeout值,若Timeout值设置太短,也能正常工作,但是效率较低,会重复发送数据包
- 数据链路层的Timeout时间是确定的,传输层的Timeout时间是适应性的(动态计算)
RDT 3.0的性能:信道容量较大的情况下,一次发一个协议数据单元不能充分利用链路的传输能力,瓶颈在于网络协议限制了物理资源的利用

流水线协议(Pipeline)– 区别于停止等待协议
允许发送方在未得到对方确认的情况下一次发送多个分组
滑动窗口协议(Sliding Window)– 流量控制
滑动窗口协议通过动态调整发送窗口大小,控制发送方和接收方之间的数据流量,确保数据可靠传输。回退N步协议(Go-Back-N,GBN)和选择重传(Selective Repeat,SR)是滑动窗口协议的两种具体实现方式
- 发送缓冲区
- 定义:发送方用于临时缓存待发送数据的内存区域
- 功能:
- 临时储存待发送的分组,落入缓冲区的分组将按顺序发送
- 存储已发送但未确认的分组,以备重传
- 发送缓冲区的大小
- 停止等待协议:发送缓冲区大小为1,每次只能发送一个分组
- 发送缓冲区中的分组
- 未发送的分组:可以按顺序连续发送
- 已发送但未确认的分组:只有在收到ACK后才能从缓冲区中删除
- 发送窗口
- 定义:发送窗口是发送缓冲区的一个子集,表示已发送但未确认的分组的序号范围
- 初始状态:未发送任何分组时,后沿等于前沿
- 发送过程:
- 每发送一个分组,前沿向前移动一个单位
- 收到确认后,发送缓冲区和发送窗口整体向前移动
- 发送窗口的移动:
- GBN协议:发送方只有在收到对窗口起始序号的数据包的ACK后,才会滑动发送窗口
- SR协议:每收到一个数据包的ACK,发送方就会标记该数据包为“已确认”;发送窗口的起始位置会滑动到第一个未确认的数据包(因此也可能不滑动)
- 发送端超时重发
- GBN协议:发送方检测到丢包(超时或收到重复ACK),会从窗口起始序号开始重传所有未确认的数据包;假设发送窗口大小为4,当前窗口范围为[2,3,4,5];如果发送方收到ACK 2,它会将窗口滑动到[3,4,5,6];如果发送方检测到2丢失(收到ACK 1或超时还未收到ACK 2),它会重传[2,3,4,5]
- SR协议:发送方检测到丢包(超时或收到重复ACK),只会重传该丢失的数据包,而不是整个窗口;假设发送窗口大小为4,当前窗口范围为[2,3,4,5];如果发送方收到ACK 2,它会将窗口滑动到[3,4,5,6];如果发送方检测到4丢失(超时还未收到ACK 4),只会重传4
- 发送端定时器:
- 接收窗口
- 定义:接收窗口等同于接收缓冲区,用于控制哪些分组可以被接收
- 功能:
- 只有序号落入接收窗口的分组才会被接收
- 序号在接收窗口外的分组将被丢弃
- 滑动机制
- 顺序接收:最低序号的到达时,接收窗口滑动
- 乱序接收(窗口>1):非最低序号的分组到达时,缓存但不交付,接收窗口不滑动
- 接收窗口大小
- GBN协议:接收窗口大小=1,只能顺序接收,只有当接收方收到当前期望序号的数据包时,接收窗口才会向前滑动1
- SR协议:接收窗口大小>1,可以乱序接收,但提交给上层的分组必须按序,只有当接收窗口的前n个连续的包都收到时,才将窗口中连续的数据包一起交付给上层,接收窗口向前滑动n
- 确认机制
两种流水线协议:GBN与SR
- 相同点
- 发送窗口大小>1
- 允许一次发送多个未经确认的分组
- 不同点
特性 GBN(Go-Back-N)协议 SR(Selective Repeat)协议 接收窗口大小 = 1 > 1 接受方式 只能顺序接收 可以乱序接收 发送方重传机制 重传缓冲区中所有未确认的分组 选择性重传,只重传未确认的分组 定时器设置 只设置一个定时器,超时后重传所有未确认的分组 为每个未确认的分组设置独立的定时器 优点 出错时回退代价大,贷款利用率低 实现复杂,接收方需要更多缓存资源 特性 GBN(Go-Back-N)协议 SR(Selective Repeat)协议 适用场景 出错率低的链路 高延迟、大带宽的链路
窗口大小的限制
- GBN协议:
- 发送窗口大小不能超过$2^N$ - 1($2^N$为数据包序列号长度)
- 原因:避免接收方混淆新旧分组,如果发送窗口大小超过$2^N$ - 1,可能会导致接收方无法区分新旧数据包
- 反例:
- 假设序列号位数为3,序列号范围为[0,1,2,3,4,5,6,7]
- 发送窗口大小为8,发送方发送第一波数据包[0,1,2,3,4,5,6,7]
- 接收方成功接受并发送了ACK0到ACK7,但这些ACK全部丢失(例如被拦截或网络故障)
- 发送方未收到任何ACK,触发超时重传,重新发送[0,1,2,3,4,5,6,7]
- 接收方在等待下一波的0,但发送方发送的是上一波的0,从而导致混淆
- SR协议:
- 发送窗口和接收窗口大小均不能超过$2^{N - 1}$
- 原因:防止发送方和接收方的窗口重叠,导致分组混淆
- 反例:
分路复用
多路分用工作流程
- 主机接收到数据报(IP datagram)
- 每个数据报有源IP地址和目的IP地址
- 每个数据报携带一个传输层报文段(segment)
- 每个报文段有源和目的端口号
- 主机利用IP地址和端口号来把报文段传入正确的套接字

面向连接的传输:TCP
TCP连接的特点:
- 点对点:一个发送方,一个接收方
- 可靠传输:可靠的、保序的字节流服务
- 全双工通信:在同一连接中数据双向流动
- 管道化:发送方可以连续发送多个报文
TCP报文结构
- 端口号:用来标识同一台计算机的不同的应用进程
- 源端口:源端口和IP地址的作用是标识报文的返回地址
- 目的端口:端口指明接收方计算机上的应用程序接口 TCP报头中的源端口号和目的端口号同IP数据报中的源IP与目的IP唯一确定一条TCP连接
- 序号:报文段首个字节在字节流中的编号,e.g.一个报文段的序号为300,此报文段数据部分共有100字节,则下一个报文段的序号为400。序号确保了TCP传输的有序性
- 确认号:ACK,期望从另一方收到的下一个字节的序号,表明该序号之前的所有数据已经正确无误的收到。确认号只有当ACK标志为1时才有效。比如建立连接时,SYN报文的ACK标志位为0
- 数据偏移/首部长度:4bits。由于首部可能含有可选项内容,因此TCP报头的长度是不确定的,报文不包含任何任选字段则长度为20字节,4位首部长度字段所能表示的最大值为1111,转化为十进制为15,15*32/8 = 60,故报头最大长度为60字节。首部长度也叫数据偏移,是因为首部长度实际上指示了数据区在报文段中的起始偏移值
- 保留:为将来定义新的用途保留,现在一般置0
- 控制位:URG ACK PSH RST SYN FIN,共6个,每一个标志位表示一个控制功能
- URG:紧急指针标志,为1时表示紧急指针有效,为0则忽略紧急指针
- ACK:确认序号标志,为1时表示确认号有效,为0表示报文中不含确认信息,忽略确认号字段
- PSH:push标志,为1表示是带有push标志的数据,指示接收方在接收到该报文段以后,应尽快将这个报文段交给应用程序,而不是在缓冲区排队。
- RST:重置连接标志,用于重置由于主机崩溃或其他原因而出现错误的连接。或者用于拒绝非法的报文段和拒绝连接请求
- SYN:同步序号,用于建立连接过程,在连接请求中,SYN=1和ACK=0表示该数据段没有使用捎带的确认域,而连接应答捎带一个确认,即SYN=1和ACK=1
- FIN:finish标志,用于释放连接,为1时表示发送方已经没有数据发送了,即关闭本方数据流
- 窗口:滑动窗口大小,用来告知发送端接受端的缓存大小,以此控制发送端发送数据的速率,从而达到流量控制。窗口大小时一个16bit字段,因而窗口大小最大为65535
TCP超时重传机制
- 超时时间计算:TimeoutInterval = EstimatedRTT + 4 * DevRTT
TCP的可靠数据传输机制
- 流水线的报文段
- TCP使用流水线方式发送报文段,允许多个报文段同时在网络中传输
- 这种方式结合了GBN和SR协议的特点:
- GBN:累计确认、单个重传计时器
- SR:选择性重传、乱序缓存
- 接收方的确认机制
- 接收方发送的ACK是累计确认,ACK号表示接收方期望收到的下一个字节的序号(ACK 100,表示接收到了序号0-99的字节,期望收到序号100的字节)
- 发送方的重传机制
- 单个重传计时器:
- 发送方只维护一个重传计时器,用于检测最早的未确认字节是否丢失
- 如果计时器超时,发送方会重传最早的未确认字节(类似于SR协议的选择性重传)
- 快速重传机制:
- 当发送方收到3个或更多重复ACK时,会立即重传丢失的数据包,而不必等待计时器超时
- 这种机制可以更快地恢复丢失的数据包,减少传输延迟
- 单个重传计时器:
- 乱序数据的处理
- 是否接受乱序数据:
- TCP规范没有明确规定接收方是否必须缓存乱序数据
- 大多数TCP实现会选择缓存乱序数据,等待前面的数据到达后再按序交付给上层应用
- 是否接受乱序数据:
- 接收方的辅助定时器
- 接收方可能会使用一个辅助定时器,用于检测是否发生了数据包丢失
- 如果接收方收到乱序数据包,但未收到前面的数据包,辅助定时器可以帮助接收方更快地检测到丢失的数据包
TCP流量控制
- 接收窗口(RWND):接收方通过TCP头部的窗口大小字段告知发送方其当前可用的缓冲区空间
- 发送方:根据RWND调整发送窗口,避免发送过多数据
TCP连接管理
拥塞控制
拥塞的定义与表现
- 定义:网络中的数据量超过其处理能力
- 表现:分组丢失、超时重传、延迟增加
拥塞控制方法
- 端到端的拥塞控制
- 没有来自网络的显式反馈
- 端系统根据延迟和丢失事件判断是否有拥塞
- 网络辅助的拥塞控制
- 单个bit置位,显示有拥塞(SNA、DECbit、TCP/IP、ECN、ATM)
- 显式提供发送端可以采用的速率(Explicit Rate)
- 拥塞的交换机可能会降低ER的值
- 发送端发送速率是最低可支持速率
TCP拥塞控制
- 端到端控制:发送方根据网络状态调整发送速率
- 路由器的负担较轻
- 符合网络核心简单的TCP/IP架构原则
- 拥塞发生检测
- 超时(某些段的超时时间到了,但ACK还没到来)
- 网络拥塞(某个路由器的缓冲区没有空间了,被丢弃)=> 概率大
- 出错被丢弃(没有通过各级的数据校验)=> 概率小
- 有关某个段的3次重复ACK => 轻微拥塞
- 超时(某些段的超时时间到了,但ACK还没到来)
- 拥塞窗口(CongWin):发送方维护一个可动态调整的拥塞窗口,用于限制已发送但未确认的数据量的上限
- CongWin的增加:
- 慢启动(Slow-Start)阶段:
- CongWin初始值为1 MSS(最大报文段大小)
- 每收到一个ACK,CongWin增加1 MSS(指数增长:1,2,4,8,…)
- 当CongWin达到阈值(Threshold)时,进入拥塞避免阶段
- 拥塞避免(Congestion-Aoidance)阶段:
- CongWin每经过一个RTT增加1 MSS(线性增长)
- 目标是逐步接近网路的拥塞点,避免突然引发拥塞
- CongWin的减少:
- 慢启动(Slow-Start)阶段:
- CongWin的增加:
- 和流量控制的联合动作:发送端控制发送但未确认的量的同时,也不能超过接收端的接收窗口大小,也即Sendin = Math.Min(CongWin, RecvWin),从而同时满足流量控制和拥塞控制的要求
TCP公平性
网络层
概述
- 数据传输:
- 在发送主机和接收主机之间传送段(Segment)
- 发送端将段封装到数据报中,接收端将上交给传输层实体层
- 协议实现:
- 网络协议存在于每一个主机和路由器
- 路由器检查每一个经过它的IP数据报的头部
网络层的主要功能
转发(数据平面)
- 本地功能:决定路由器输入端口到达的分组如何转发到输出端口
- 转发方式:
- 传统方式:基于目标主机IP和转发表
- SDN方式:基于控制器下发的流表
路由(控制平面)
- 全局功能:确定从源主机到目的主机的路径
- 控制平面方法:
- 传统路由算法:在路由器中实现,数据平面和控制平面紧密耦合,控制平面计算路由表,数据平面IP协议根据目标IP和路由表决定数据报在此路由器上的局部转发
- SDN:远程服务器中实现,远程服务器与本地控制代理(Control Agent)通信,本地控制代理根据多个字段对数据报进行转发、丢弃、泛洪、修改等操作
网络服务模型
- 单个数据报的服务:
- 可靠传输:确保数据报无差错、按序到达
- 延迟保证:确保数据报在规定时间内到达
- 数据报流的服务:
- 保序传达
- 保证流的最小带宽
- 分组之间的延迟差
路由器组成
路由器的功能:路由和转发,输入端口和输出端口是整合在一起的
- 输入端口缓存:解决Head-of-Line阻塞问题(由于排在队头的分组阻塞,后续分组无法发送)
- 输出端口缓存:数据报的到达速率大于发送速率时,缓冲数据报;数据报并不是先发,而是根据调度规则选择队列中的数据报进行传输
- 调度规则:
- FIFO:先到先传
- 优先级调度:根据优先级传输
- Round Robin:轮流传输,循环扫描不同类型的队列,先发完一类再发下一类
- Weighted Fair Queuing(WFQ):一般化的Round Robin,每个类在每一循环中获得不同权重的服务量
第一代路由器
- 在CPU直接控制下交换,采用传统的计算机总线结构
- 分组被拷贝到系统内存,CPU从分组的头部提取目标IP地址,查找转发表,找到并拷贝到输出端口
- 转发速率被内存的带宽限制且数据报需要拷贝两次
- 一次只能转发一个分组

第二代路由器
- 数据报通过共享总线,从输入端口转发到输出端口
- 总线竞争:交换速度受限于总线的带宽
- 一次处理一个分组

第三代路由器
- 同时并发转发多个分组,克服带宽限制

IP协议
IP数据报的格式:包括版本号、首部长度、服务类型、总长度、标识、标志、片偏移、生存时间、协议、头部校验和、源IP地址、目的IP地址、选项和填充、数据
IP分片和重组
- 大的IP数据报在传输过程中可能需要分片,它们:
- 具有相同点ID
- 不同的偏移量
- 最后一个分片标记为0
- 重组只在最终的目标主机进行,目标值户籍设置定时器,超时后所有的分片没到齐就丢弃
- IP头部的信息被用于标识和排序相关分片
IP地址:32位,对主机或路由器接口的编址 接口:主机或路由器和物理链路的连接处
- 路由器通常拥有多个接口
- 主机也可能有多个接口
- 一个IP地址和一个接口相关联
层次编址和路由聚集
- 层次编址
- 分层结构:
- IP地址分为网络部分和主机部分,网络部分可进一步划分子网
- 示例:
- IP地址:192.168.1.1
- 子网掩码:255.255.255.0
- 网络地址:192.168.1.0
- 主机地址:1
- 简化路由:
- 路由器只需要关注网络部分,减少路由表条目
- 分层结构:
- 路由聚集
将多个连续IP地址块合并为一个更大的地址块,减少路由表条目,提高路由效率
- 示例:
- 多个网络:
- 192.168.1.0/24
- 192.168.2.0/24
- 192.168.3.0/24
- 聚合后的网络:
- 192.168.0.0/22
- 多个网络:
子网(Subnet)
- 一个子网内的节点(主机或路由器),它们的IP地址的高位部分相同,这些节点构成的网络叫子网
- 无须路由器介入(可借助交换机),子网内各主机在物理上可以相互直接到达,即一跳可达

IP地址分类
- A类地址:
- 范围:1.0.0.0 - 126.0.0.0
- 子网掩码:255.0.0.0 或 /8
- 用途:大型网络
- B类地址:
- 范围:128.0.0.0 - 191.255.0.0
- 子网掩码:255.255.0.0 或 /16
- 用途:中型网络
- C类地址:
- 范围:192.0.0.0 - 223.255.255.0
- 子网掩码:255.255.255.0 或 /24
- 用途:小型网络
- D类地址:
- 范围:224.0.0.0 - 239.255.255.255
- 用途:多播
- E类地址:
- 范围:240.0.0.0 - 255.255.255.255
- 用途:实验性

特殊地址
- 127.0.0.1:回环地址,用于测试本地网络软件
- 内网专用地址:不会被当作公共地址来分配,在局域网中用于区分不同的设备,路由器不对目标地址为内网专用地址的数据报进行转发
- A类:10.0.0.0 - 10.255.255.255
- B类:172.16.0.0 - 172.31.255.255
- C类:192.168.0.0 - 192.168.255.255
子网掩码的特殊规定
- 子网部分全0 => 本网络
- 主机部分全0 => 本主机
- 主机部分全1 => 广播地址,表示这个网络的所有主机
无类域间路由选择(CIDR)
CIDR解决了传统IP地址分类带来的地址浪费和路由表膨胀问题
- 核心思想:CIDR允许IP地址的网络部分和主机部分的划分更加灵活,不再局限于传统的A类、B类、C类地址的固定划分
- 表示方法:CIDR使用斜线表示法(Slash Notation),例如192.168.1.0/24,其中/24表示前24位是网络部分,后8位是主机部分
路由器的工作流程
- 路由器从IP数据报中提取目标地址
- 对于路由表中的每个表项:
- 如果目标IP地址&子网掩码 == 表项中的目标子网,则按照对应接口转发数据报
- 如果未找到匹配项,则使用默认表项转发数据报
主机如何获得IP地址
- 静态配置
- 系统管理员手动配置IP地址
- 动态主机配置协议(DHCP)
- 功能:
- 动态分配IP地址
- 更新IP地址租用期
- 支持移动用户加入网络
- 工作原理:
- DHCP发现(DHCP Discover):客户端广播请求IP地址
- DHCP提供(DHCP Offer):服务器响应,提供可用IP地址
- DHCP请求(DHCP Request):客户端选择一个IP地址并请求租用
- DHCP确认(DHCP Acknowledgment):服务器确认租用,客户端开始使用IP地址

- 功能:
网络地址转换(NAT)
在私有网络与公共网络之间转换IP地址,主要目的是解决IPv4地址不足的问题,并提供一定的安全性
- 作用:
- IP地址转换:将私有IP地址转换为公共IP地址,以便与外部网络通信
- 节省公共IP地址:多个设备可以共享一个公共IP地址访问互联网
- 增强安全性:隐藏内部网络的真实IP地址,防止直接访问内部设备
- 工作原理:
- NAT设备维护一个转换表,记录内部IP和端口与外部IP和端口的映射关系
ICMP协议
-
主机、路由器、网关使用ICMP协议交流网络层信息
- 报错:到达不了主机、网络、端口、协议
- 用于探测:echo request/reply(使用ping)
-
IP的一部分,但体系结构在IP之上:ICMP消息搭载在IP数据报中传输
-
ICMP消息:type,code,引发错误的IP数据报和前8个字节
Type Code desciption 描述 0 0 Echo Reply ping应答 3 0 Net Unreachable 网络不可达 3 1 Host Unreachable 主机不可达 3 3 Port Unreachable 端口不可达 3 6 Network Unknown 网络未知 3 7 Host Unknown 主机未知 4 0 Source Quench 源端阻塞 8 0 Echo Request ping请求 9 0 Router Advertisement 路由器通告 10 0 Router Solicitation 路由器请求 11 0 Time Exceeded - TTL 生存时间到期 12 0 Parameter Problem 参数问题 -
ICMP被IP使用,同时作为网络协议层使用IP
-
ping命令:利用ICMP的Echo Request和Echo Reply消息测试主机可达性
IPv6
IPv6是为了解决IPv4网络地址枯竭和路由表急剧膨胀而诞生的
- 特点:
- 128地址,固定40字节报文头部
- 移除校验和,减少路由器处理负担
- 新增ICMPv6,新增了“Packet Too Big”报文类型,并支持多播和任播
- IPv4到IPv6的过渡:隧道技术,将IPv6数据报封装在IPv4数据报中传输

通用转发和SDN
传统网络设备控制平面
-
特点:
- 分布式实现:每台设备独立实现数据平面和控制平面功能
- 垂直集成:硬件、操作系统和协议私有实现
- 固定功能:设备按固定方式工作,不同网络功能需要不同中间设备(如防火墙、负载均衡器、NAT设备等)
-
问题:升级代价大,管理困难

软件定义网络(SDN)
- 核心思想:
- 将控制平面从设备中分离,集中到逻辑控制器中
- 控制器决定分组转发逻辑,控制器代理(Control Agent)在设备上执行转发决策
- SDN架构:
- 网络控制应用:
- 利用SDN控制器的API实现多样化网络功能
- SDN控制器:
- 北向接口:与网络控制应用交互
- 南向接口:与网络交换机交互
- 维护网络状态信息,逻辑上集中,实现上分布式
- OpenFlow协议:
- SDN交换机与控制器之间的通信协议
- 网络控制应用:
- SDN的功能实现
- SDN通过匹配(Match)表项执行相应的行为(Action),即Match-Action机制
- 路由器:Match最长前缀匹配,Action通过指定链路转发
- 交换机:Match目标MAC地址,Action转发或泛洪
- 防火墙:MatchIP地址和TCP/UDP端口,Action丢弃或转发
- NAT:MatchIP地址和端口号,Action重写地址和端口号
- SDN通过匹配(Match)表项执行相应的行为(Action),即Match-Action机制

数据链路层和物理层
路由选择算法
- 按照某种指标(如传输延迟、经过的站点数目等),确定从源端到目标端之间的“较好”路径(路由器的序列)
- 实际计算以子网到子网为目标,而非主机到主机
- 目的特性:正确性、稳定性、效率、简单性、最优性、健壮性、公平性
最优化原则————汇集树(Sink Tree)
- 汇集树是每个节点到所有其他节点的最优路径形成的树
- 路由选择算法的目标是为所有路由器找到汇集树
路由选择算法分类
- 链路状态(Link State, LS)算法
- 特点:
- 全局式:所有路由器拥有完整的网络拓扑和边的代价信息
- 基于迪杰斯特拉算法(Dijkstra’s Algorithm)计算最短路径
- 工作流程:
- 发现邻居节点,计算到邻居的代价
- 组装LS分组,描述到邻居的代价
- 通过泛洪将LS分组发送给所有路由器
- 每个路由器使用迪杰斯特拉算法计算最短路径
- 距离向量(Distance Vector,DV)算法
- 特点:
- 分布式:路由器仅知道邻居路由器和到邻居的代价
- 基于弗洛伊德算法,通过迭代与邻居交换路由信息
- 工作流程:
- 每个路由器维护一张路由表
- 定期或事件触发时,与邻居交换路由表
- 根据邻居的路由信息更新自己的路由表
- 问题:
- 好消息坏消息现象:链路断开可能导致路由环路和无穷计算
- 解决方法:水平分裂(Split Horizon)又称毒性逆转(Poisoned Reverse);从某个接口学到了某条路由信息,它不会通过同一接口将这条信息通告回去,防止路由器之间互相传递错误的路由信息
- LS与DV的比较
特性 链路状态(LS)算法 距离向量(DV)算法 消息复杂度 高(需要泛洪LS分组) 低(仅与邻居交换路由表) 收敛速度 快(全局信息,快速计算最短路径,但可能震荡) 慢(依赖邻居信息,可能出现路由环路) 健壮性 高(全局视图,易于检测和修复错误) 低(局部视图,难以检测错误)
自洽网络系统的内部网关协议
自洽网络系统
定义:网络内部的组件、协议或机制能够相互协调,通过内部反馈调节机制维持网络的稳定性、可靠性和高效性
特点:
- 自动适应变化
- 解决冲突并优化性能
- 不依赖外部干预
开放式最短路径优先(Open shortest path first, OSPF)协议
- 算法:基于链路状态(LS)算法
- 特点:
- 携带每一个邻居路由器的表现信息的LS分组通过泛洪在自恰传播
- 每个节点维护全局网络拓扑和链路代价
- 优势:
- 安全性:所有报文经过认证
- 多路径支持:允许存在多个代价相同的路径
- 朵播集成:支持单播和多播
- 层次化:适合大型网网络、支持层次化OSPF
路由信息协议(Routing Information Protocol, RIP)
- 算法:基于距离向量(DV)算法
- 特点:
- 每条链路的代价为1,最大跳数为15
- 定期(30秒)向邻居广播整个路由表(UDP)
- 每个通告最多包含25子网的可达性
- 故障检测:若180秒内未收到邻居的通告,判断邻居或链路失败
- 防坏机制:使用水平分裂和最大跳数(15跳)防止路由环路
RIP与OSPF的比较
| 特性 | RIP | OSPF |
|---|---|---|
| 算法 | 距离向量(DV) | 链路状态(LS) |
| 适用规模 | 小型网络(最大15跳) | 大型网络(支持层次化) |
| 路由更新方式 | 定期广播整个路由表 | 泛洪LS分组 |
| 路由更新内容 | 仅发送距离向量(跳数) | 链路状态信息 |
| 最大跳数 | 15 | 无限制 |
| 收敛速度 | 慢(通过Floyd算法逐步收敛,可能产生路由环路) | 快(通过Dijkstra算法计算最短路径) |
| 资源消耗 | 低(简单实现,资源消耗少) | 高(需要维护全局拓扑,计算复杂) |
| 安全性 | 低(无认证机制) | 高(支持认证) |
| 多路径支持 | 不支持 | 支持 |
| 多播支持 | 不支持 | 支持 |
| 层次化支持 | 不支持 | 支持 |
| 防环机制 | 水平分裂、最大跳数 | 无环路 |
| 协议复杂度 | 低 | |
| 适用场景 | 小型局域网 |
边界网关协议(BGP)
- 层次路由
- 自治系统(AS):由单一管理实体控制的一组路由器和网络,每个AS有唯一的AS号,一个ISP可能包含多个AS
- 路由层次:
- AS内路由(Interior Gateway Protocol, IGP):如RIP、OSPF
- AS间路由(Exterior Gateway Protocol, EGP):如BGP
- BGP协议
- eBGP(外部BGP):用于不同AS之间的路由信息交换,基于距离向量算法,但包含详细路径(ASN列表),避免路由环路
- iBGP(内部BGP):用于同一AS内的路由信息交换,确保AS内路由器对外部路由信息的一致性
- 路由选择规则
- 本地偏好:优先选择本地偏好值6高的路径
- 最短AS路径:优先选择经过AS数量最少的路径
- 热土豆策略:优先选择离本AS出口最近的路径

广域网与局域网
- 广域网(WAN)
- 连接方式:通常采用点到点连接
- 特点:
- 带宽大,距离远
- 链路层功能简单,只需封装和解封装
- 局域网(LAN)
- 连接方式:通常采用多点链接
- 特点:
- 多个节点连接到共享介质或交换机
- 链路层功能复杂,需处理介质访问控制、错误检测和纠正等
数据链路层服务
- 成帧和链路输入:
- 将网络层传下来的数据报封装成帧,添加帧头和帧尾
- 帧头部使用MAC地址标识源和目的节点
- 在共享介质中,需通过协议获得信道访问权
- 可靠数据传输:
- 在低出错率链路(如光纤、同轴电缆)上,较少使用
- 在高出错率链路(如无线链路)中常用
- 流量控制:
- 确保发送方和接收方的速度匹配
- 错误控制:
- 检测信号衰减和噪声引起的差错
- 接收端检测到错误后丢弃帧,并通知发送端重传
- 差错纠正:
- 接收端检查和纠正比特错误
差错检验方法
- 单比特奇偶校验
- 原理:在数据中添加一个奇偶校验位,使得数据中1的个数为奇数或偶数
- 优点:简单,易于实现
- 缺点:只能检测奇数个比特错误,无法纠正错误
- 二维奇偶校验
- 原理:将数据组织成矩阵形式,分别对每行和每列进行奇偶校验
- 优点:能检测并纠正单个比特错误
- 缺点:复杂度较高,增加了额外的校验位
- Internet校验和
- 原理:将数据划分为16位字,计算所有字的和,并取反作为校验和
- 优点:能检测大部分错误,广泛应用于IP、TCP、UDP等协议
- 缺点:无法检测某些特定类型的错误
- 循环冗余校验(CRC)
- 原理:将数据比特D视为二进制数,除以生成多项式G,得到的余数为校验码:$ R = (D \cdot 2^r) \bmod G $
- 性能:
- 能检测所有单比特错误和双比特错误
- 能检测出长度小于等于r的奇数个比特错误
- 出现长度 = r + 1的错误,检测失败的概率为1/$${2^r}$$
- 出现长度 > r + 1的错误,检测失败的概率为1/$${2^r}$$

多点连接和媒体访问控制协议
局域网内部链路的连接形式:
- 点对点连接
- 拨号访问
- 以太网交换机和主机之间
- 共享链路
- 传统以太网
- 无限局域网 媒体访问控制(Medium Access Control):决定节点如何使用共享信道,可以分为 三类协议:
- 信道划分协议:把信道根据时间、频率或编码划分成小片
- 案例:TDMA、FDMA、CDMA
- 随机访问协议:信道不划分允许冲突
- 案例:时隙ALOHA、纯ALOHA、CSMA/CA、CSMA/CD
- 轮流协议
- 案例:轮询和令牌传递
信道划分协议
- 时分多址(Time Division Multiple Access,TDMA):
- 信道的时间划分为周期,节点轮流使用信道,每个节点使用每周期中固定的时隙传输帧。如果某节点没有帧传输,时隙空闲。
- 频分多址(Frequency Division Multiple Access,FDMA):
- 信道的有效频率范围被划分成一个个小的频段。每个节点分配一个固定的频段传输帧。如果某节点没有帧传输,频段空闲。
- 码分多址(Code Division Multiple Access,CDMA):
- 所有节点在整个频段上同时进行传输,采用编码原理加以区分。完全无冲突,线性叠加。
随机存取协议
- 当节点有帧要发送时,以信道带宽的全部进行发送,没有节点间的预先协调
- 两个或多个节点同时传输,会发生冲突
- 随机存取协议规定如何检测冲突以及如何从冲突中恢复
- 随机存取协议:CSMA/CD、CSMA/CA
轮流协议
- 轮询:主节点依次邀请其他节点传输。
- 令牌传递:令牌在节点间传递,持有令牌的节点可传输
常见的媒体访问控制协议
时隙ALOHA
- 原理:节点在时隙开始时传输数据,若冲突则随机等待后重试。
- 优点:
- 节点可以以信道带宽全速连续传输。
- 高度分布式,仅需要节点之间在时钟上同步。
- 缺点:
- 冲突和概率发送会浪费时隙。
- 没有延迟上限保证。
- 节点需要在时钟上同步。
- 效率:1/e,约37%。

纯ALOHA
- 原理:节点在任意时间传输数据,若冲突则随机等待后重试。
- 优点:无须时钟同步,简单易实现。
- 缺点:冲突概率增加,若帧在t0时刻发送,会和其它在[t0 − 1, t0 + 1]区间内开始发送的帧冲突
- 效率:1/(2e),约17.5%

载波监听多点接入/碰撞检测(Carrier Sense Multiple Access with Collision Detection,CSMA/CD)
- 原理:
- 每个节点发送数据前先侦听信道,若信道空闲则发送,否则等待
- 发送过程中持续检测冲突,一旦发现冲突,就发送一个强化冲突的Jam信号,停止发送并等待随机时间后重试,等待时间通过与载荷自适应的二进制指数退避算法得到
- 应用:传统以太网
- 优点:
- 实时冲突检测
- 适用于有线网络,延迟较低
- 效率:1/ (1 +$${5t_prop/t_trans}$$),其中t_prop是两个节点的最大传播延迟,t_trans是传输最大帧的时间。
载波监听多点接入/碰撞避免(Carrier Sense Multiple Access with Collision Avoidance,CSMA/CA)
- 原理:
- 每个节点发送数据前先侦听信道,若信道空闲则发送,若忙则等待。
- 在WLAN中,由于隐藏终端和暴露终端等现象的存在,不冲突和传输成功之间没有关联;通过随机退避时间来减少冲突概率(信道空闲时并不是立即发送,而是在随机回退值*时隙之后再发送),且即使采用随机退避的方法,依然无法完全避免冲突(两个节点互相隐藏,或两个节点选择了非常接近的随机回退值)。
- 接收方收到数据后会隔一段时间发送确认帧(ACK)。
- 应用:主要用于Wi-Fi(如IEEE 802.11)
- 特点:
- 通过随机退避机制避免冲突
- 适用于无线网,延迟较高
轮询
- 原理:主节点依次邀请其他节点传输数据。
- 缺点:
- 开销开销:轮询本身身信道的西带宽
- 等待时间:每个节点要等到主节点轮询后才开始传输。
- 单点故障:主节点失效造成整个系统无法工作。

令牌传递(Token Passing)
- 原理:令牌报文从一个节点到下一个节点传递,数据环绕一周,接收方拷贝接收,最后传回发送方。
- 缺点:
- 令牌开销:令牌传递消耗带宽。
- 延迟:只有等到拥有令牌才可传输。
- 75单点故障:令牌丢失会造成整个系统无法传输,重新生成令牌恢复时间长。

局域网(LANs)
局域网指有限区域内由计算机和其它网络设备互联组成的计算机网络。
媒体访问控制(Media Access Control,MAC)地址
- 也称局域网地址,是网络设备的物理地址,用于在局域网中唯一标识设备。
- 长度48bit,通常表示为12个十六进制数,如00:1A:2B:3C:4D:5E。
- MAC 地址由设备制造商分配,并固化在网卡中。

地址解析协议(Address Resolution Protocol)
- 作用:用于将IP地址解析为MAC地址,当设备需要与同一局域网内的另一设备通信 时,它通过ARP 请求获取目标设备的MAC地址:
- ARP 请求:源设备广播一个ARP请求,询问目标IP地址对应的MAC地址。
- ARP 响应:拥有该IP地址的设备回复请求方其MAC地址。
- 缓存:源设备将IP与MAC地址的映射存入ARP缓存(ARP表),供后续通信使用,缓存一段时间(通常是20分钟)后消失。
交换机(Switch)
- 监听流入的数据帧,学习并记录源MAC地址与端口的映射关系,存储在MAC地址表中。
- 当交换机收到数据帧时,它会检查目标MAC地址:
- 已知地址:若目标MAC地址在MAC地址表中,交换机会将数据帧仅转发到对应的端口;如果目标MAC地址和源MAC地址相同,则不转发(过滤)。
- 未知地址:若目标MAC地址不在表中,交换机会将数据帧广播(泛洪)到所有端口,以确保数据帧到达目标设备。
- 在复杂网络中,交换机使用生成树协议(STP)来防止环路,避免广播风暴和数据包无限循环。
曼彻斯特(Manchester)编码
- 每个比特的位时中间有一个信号跳变。
- 目的是在接收方和发送方节点之间进行时钟同步。
- 缺点:编码后数据占的带宽会加倍。

4B5B编码
- 原理:用5个比特代表4个比特。
- 目的:避免连续高电平或连续低电频的情况,因为这两种情况发送方难以检测时钟周期。

参考:[《计算机网络-自顶向下方法》笔记](https://gy23333.github.io/2020/03/16/%E3%80%8A%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C-%E8%87%AA%E9%A1%B6%E5%90%91%E4%B8%8B%E6%96%B9%E6%B3%95%E3%80%8B%E7%AC%94%E8%AE%B0/)














































