计算机网络笔记
该部分为本科期间的计算机网络课程笔记备份整理。
概述
交换网络
- 电路交换:面向连接的服务
- 报文交换:前后端网络,存储转发
- 分组交换:即可面向连接又可无连接,存储转发,更高容错

OSI模型

TCP/IP模型

服务:垂直的
协议:水平的
网络协议
三个要素:语法(数据与控制信息结构与格式)、语义(信息种类与动作反应)、同步(事件先后说明)
物理层
基本概念
信息:载体为数字、文字、语音等
数据:二进制代码,运送信息的载体,分模拟数据和数字数据
信号:数据在传输中的电气或电磁表现,分模拟信号和数字信号
信道
定义:某方向传输信息的媒体
按照交互分类:单工(单路)、半双工(双路但不同时双向)、双工(双路且同时双向)
按照信号分类:数字信号(离散)、模拟信号(连续)
Note:基带信号(baseband)是电压表示的数字信号,宽带信号(Broadband)基带信号调制的频分复用的模拟信号
宽带
信号频带范围,单位Hz
时延
节点时延、队列时延、传输时延、中转时延
时延宽带积:\(\frac{L}{V}\cdot R\)
最大数据速率
波特率:信号变化次数/秒
比特率:传送比特数/秒
两者关系:\(b=B\log_{2}V,B是波特率,b是比特率,V是信号数量\)
乃奎斯特定理
条件:理想地通信道
信道容量:\(C=2W\log_{2}V,W为带宽(Hz)\)
香农定理
信道容量:\(C=W\log_{2}(1+\frac{S}{N}),S为信号平均功率,N为噪声平均功率,\frac{S}{N}为信噪比\)
调制
调制方式:调振幅、调频率、调相位
编码
NRZ:0高平1低平
曼彻斯特:高平起步,0处由高平转低平,1处由低平转高平
拆分曼彻斯特:高平起步,0在左边界跳一次,中间跳一次;1在中间跳一次

传输媒体
三种类型:双绞线、同轴电缆、光纤光缆
双绞线
分屏蔽(STP)与非屏蔽(UTP)两种

同轴电缆
接收端有特性阻抗,宽带用于数字传输,基带用于电视

光纤光缆
分类:多模与单模

无线传输
短波:无法穿透电离层
微波:直线传输,例如GSM、GPRS、CDMA、蓝牙
红外线:电视之类的
激光:光发生器、光接收器
卫星通信
GEO:地球同步卫星
LEO:近地卫星
MEO:中间轨道卫星,GPS
EIA-232-E
物理层异步通信接口标准
机械特性:25脚针,上13下12。
电气特性:电压范围,负逻辑
EIA/TIA-568
绞线连接:568B、568A
568B:直通线,橙白、橙、绿白、蓝、蓝白、绿、棕白、棕
568A:交叉线,绿白、绿、橙白、蓝、蓝白、橙、棕白、棕
链路层
数据链路层
作用:提供可靠、高效通信,运输数据帧
功能:帧同步、差错控制、流量控制、透明传输、寻址
停等协议
正常情况:传输——ACK
数据帧出错:传输——NAK,可以通过CRC检测,通过NAK或重传解决
数据帧丢失:传输——超时,可以通过设置超时重传、添加时钟解决
应答帧丢失:传输——lost ACK,可以通过重复帧、帧编号等方法解决
ARQ协议:自动请求重传协议,停等协议
优点:简单
缺点:效率低、速度慢
CRC校验
数据序列为n bit,首先补齐k bit个0以满足对制定多项式m bit的除法,得到的余数假定为a bit,则CRC总长度为n+a bit,CRC值为两者拼接。
持续ARQ协议
在原来的ARQ协议基础上进行了数据帧编号和CRC校验,并加入了无响应,允许退回n步。
优点:效率提高
缺点:重传开销大、序列号占空间
滑动窗口协议
窗口两类:发送窗口、接收窗口
窗口最大:\(2^n-1\)
接收窗口最大:\(2^{n-1}\)
链路协议示例
HDLC
高级数据链路控制,面向bit,分非平衡和平衡两种配置,支持半双工和全双工。
其中,标志位采用0比特填充法,连续五个1填充0。
地址字段:合法地址254个
FCS字段:CRC-CCITT
PPP
点对点协议,RFC1661。面向字节,使用字节填充。
遇见0x7E填充0x7D5E;遇见0x7D填充0x7D5D
没使用序号和确认机制,出于以下考虑:
- PPP信息字段放入的是IP数据报文
- 在出错概率不大时PPP协议简单高效
- 数据链路层的可靠传输并不能保证上层传输可靠
- FCS可保证链路层数据无差错接收
协议字段:IP(0x0021)、LCP(0xC021)、NCP(0x8021)
链路共享媒体
信道分配问题
问题:
- 在通道发送信息时,存在信号冲突与碰撞
- 要求某一时刻只有唯一信息有效茶u年底
- 要求平等对待用户
- 实时反应
解决策略:
- 动态分配,分受控接入、随机接入
- 静态分配
受控接入
分集中式接入和分散式接入
集中式接入:轮叫轮询、传递轮询
分散式接入:令牌环、令牌总线
随机接入
ALOHA
纯ALOHA:想发就发,碰撞发生时随机等待时间再发送
时隙ALOHA:想发就发,在时间信号开始发送,出现碰撞则等待随机时间再在时间信号开始处发送
CSMA
思想:先听后发
分类:非坚持CSMA,坚持CSMA(分1-坚持和p-坚持)
CSMA/CD
思想:先听后发,边发边听
检测方法:比较信号电压、检测过零点、比较收到信号和发送信号
冲突解决:检测到冲突,则发送干扰信号阻止
信号时间:\(T=\frac{2S}{0.7C}+2t_{phy}\)
时延宽带积:\(L_{min}=(\frac{2S}{0.7C}+2t_{phy})\cdot R\)
静态分配
时分复用、频分复用、波分复用、码分复用
码分复用
- 一个频道发送一串数据序列,1为正常序列,0为反码
- 接收所有信号,将数据序列进行点积
- 点积为1则发送的是1;点积为-1则发送的是-1;点积为0则没发送。
局域网
局域网结构

IEEE 802 LAN模型
数据链路层包括:LLC(逻辑链路)、MAC(媒体接入)、物理链路
物理链路:信号编码/解码、添加前缀、数据传输与接收
MAC:封装与拆分、错误检测、寻址、媒介管理
LLC:管理数据链路通信、定义服务接入点、提供流量控制
IEEE协议族如下:
- 802.1 研究局域网体系结构、寻址、网络互联和网络管理。
- 802.2 研究逻辑链路控制子层 CLLC) 的定义。
- 802.3 研究以太网介质访问控制协议 CSMNCD 及物理层技术规范。
- 802.4 研究令牌总线网 CToken-Bus) 的介质访问控制协议及物理层技术规范。
- 802.5 研究令牌环网 (Token-氏ng) 的介质访问控制协议及物理层技术规范。
- 802.6 研究城域网介质访问控制协议 DQDB 及物理层技术规范。
- 802.7 宽带技术咨询组,提供有关宽带联网的技术咨询。
- 802.8 光纤技术咨询组,提供有关光纤联网的技术咨询。
- 802.9 研究综合声音数据的局域网 (ND LAN) 介质访问控制协议及物理层技术规范。
- 802.10 网络安全技术咨询组,定义了网络互操作的认证和加密方法。
- 802.11 研究无线局域网 CWLAN) 的介质访问控制协议及物理层技术规范。
- 802.12 研究需求优先的介质访问控制协议 (lOOVG-AnyLAN)。
- 802.14 研究采用线缆调制解调器 (Cable Modem) 的交互式电视介质访问控制协议及 物理层技术规范。
- 802.15 研究采用蓝牙技术的无线个人网 (Wireless Personal Area Network, WPAN) 技术规范。
- 802.16 宽带无线接入工作组,开发 2~66GHz 的无线接入系统空中接口。
- 802.17 弹性分组环 (RPR) 工作组,制定了弹性分组环网访问控制协议及有关标准。
- 802.18 宽带无线局域网技术咨询组 (Radio Regulatory)。
- 802.19 多重虚拟局域网共存 (Coexistence) 技术咨询组。
- 802.20 移动宽带无线接入 (MBWA) 工作组,正在制定宽带无线接入网的解决方案。
- 802.21 研究各种无线网络之间的切换问题,正在制定与介质无关的切换业务 (MIH) 标准。
- 802.22 无线区域网 (Wireless Regional Area Network, WRAN) 工作组,正在制定利 用感知无线电技术,在广播电视频段的空白频道进行无干扰无线广播的技术标准。
IEEE-802.3
适用于CSMA/CD的标准
MAC地址
MAC地址是硬件的地址或物理地址
地址规则:前3字节为Vendor Code(制作商ID),后3字节为序列号
传播方式:单播(1对1)、广播(1对所有,FF.FF.FF.FF.FF.FF)、多播(1对多)
MAC帧格式
长度:64到1518字节范围内
征用期:51.2\(\mu s\)
最初的格式:

TCP/IP族协议使用的格式:没有了LLC层

以太网光缆
缆线规格
粗缆:10 BASE 5,遵循5-4-3原则(五个部分,4个中继器,3个可用部分)
细缆:10 BASE 2,实际185m距离
双绞线缆:10 BASE T
光纤:10 BASE F
光缆命名规则:LAN BASE/Broad Type/Length
快速网络的双绞线缆:100 BASE TX,最多100m,使用CSMA/CD,遵循5-4-3原则,最多2个集线器
快速网络的光纤:100 BASE FX,不使用hub,长度为412m,使用CSMA/CD
自动协商:在不同缆线间切换优先级,根据最高性能以及FLP信号,10 BASE T不支持FLP
高速网络的铜线缆:1000 BASE CX,只支持25m
高速网络的激光缆:1000 BASE SX,770到860m,多模,SC连接器
高速网络的短波缆:1000 BASE LX,1270到1355m,多模,SC连接器
高速网络的双绞线缆:1000 BASE T,100m范围,RJ-45连接器
注意:高速网络有帧扩展和帧突发
相关硬件
NIC:网卡,即插即用,有ROM存储MAC地址
中继器:运行于物理层,是一种信号放大器,信号在传输的过程中是要衰减的,中继器的作用就是将信号放大,使信号能传的更远
集线器:运行于物理层,对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上,可以看作内置以太网总线;集线器线路上一般不超过5个主机网络
中继器与集线器区别:
- 在于连接设备的线缆的数量。一个中继器通常只有两个端口,而一个集线器通常有更多的端口
- 集线器还有把所有节点进行集成的功能
网桥:运行于链路层,连接两个局域网的存储转发设备,用它可以使完全具有相同或相似体系结构网络系统的连接,根据MAC地址表进行转发
交换机:运行于链路层,网络系统的集线设备,原理等同于多端口网桥,连接数个相同网段的不同主机,减少网内冲突,隔离冲突域,利用存储转发和过滤技术来从物理上分割网段,分级联和堆叠两种拓扑结构,堆叠整体可以看作大的交换机
交换机与网桥区别:
- 交换机允许多组端口间通道同时工作,而网桥只支持一组端口工作
- 交换机能分多个网段,而网桥只能分两个
- 交换机传输快于网桥
交换机和集线器区别:集线器表示单一的冲突域和单一广播域,而交换机每组端口醋表示一个冲突域,整个交换机表现一个广播域
网络层
进行源头网络到目的网络的数据包传输以及网络拓扑划分。
IP地址
点分十进制表示法:xxx.xxx.xxx.xxx,每段字范围0-255
地址分类
分A、B、C、D、E类地址。D类用于测试,E类用于保留


| 类型 | 最大网络地址數 | 最大主机地址數 |
|---|---|---|
| A | \(2^7-2\) | \(2^{24}-2\) |
| B | \(2^{14}\) | \(2^{16}-2\) |
| C | \(2^{21}\) | \(2^8-2\) |
特殊地址
网络地址主机号部分全0;广播地址部分主机号全1。本地广播地址:255.255.255.255;本地回环地址:127.xxx.xxx.xxx;本地主机地址:0.0.0.0。
子网分配
子网掩码:指明网络子网的掩码
网络地址=主机地址&子网掩码
子网掩码分为可变掩码和固定掩码
固定掩码计算公式,m为子网类型的网络前缀比特数(A为8,B为16,C为24):
可变掩码:分配子网按照掩码匹配最长进行选择与区分
网络协议
ARP
ARP包和RARP包都是这样的结构。
操作码1、2为ARP请求和应答,3、4为RARP请求与应答

当为ARP请求时,目的IP为请求的IP,MAC为广播地址。
ICMP
头部封装:

报文结构:

类型代码与解释:
| TYPE | CODE | Description | Query | Error |
|---|---|---|---|---|
| 0 | 0 | Echo Reply——回显应答(Ping应答) | x | |
| 3 | 0 | Network Unreachable——网络不可达 | x | |
| 3 | 1 | Host Unreachable——主机不可达 | x | |
| 3 | 2 | Protocol Unreachable——协议不可达 | x | |
| 3 | 3 | Port Unreachable——端口不可达 | x | |
| 3 | 4 | Fragmentation needed but no frag. bit set——需要进行分片但设置不分片比特 | x | |
| 3 | 5 | Source routing failed——源站选路失败 | x | |
| 3 | 6 | Destination network unknown——目的网络未知 | x | |
| 3 | 7 | Destination host unknown——目的主机未知 | x | |
| 3 | 8 | Source host isolated (obsolete)——源主机被隔离(作废不用) | x | |
| 3 | 9 | Destination network administratively prohibited——目的网络被强制禁止 | x | |
| 3 | 10 | Destination host administratively prohibited——目的主机被强制禁止 | x | |
| 3 | 11 | Network unreachable for TOS——由于服务类型TOS,网络不可达 | x | |
| 3 | 12 | Host unreachable for TOS——由于服务类型TOS,主机不可达 | x | |
| 3 | 13 | Communication administratively prohibited by filtering——由于过滤,通信被强制禁止 | x | |
| 3 | 14 | Host precedence violation——主机越权 | x | |
| 3 | 15 | Precedence cutoff in effect——优先中止生效 | x | |
| 4 | 0 | Source quench——源端被关闭(基本流控制) | ||
| 5 | 0 | Redirect for network——对网络重定向 | ||
| 5 | 1 | Redirect for host——对主机重定向 | ||
| 5 | 2 | Redirect for TOS and network——对服务类型和网络重定向 | ||
| 5 | 3 | Redirect for TOS and host——对服务类型和主机重定向 | ||
| 8 | 0 | Echo request——回显请求(Ping请求) | x | |
| 9 | 0 | Router advertisement——路由器通告 | ||
| 10 | 0 | Route solicitation——路由器请求 | ||
| 11 | 0 | TTL equals 0 during transit——传输期间生存时间为0 | x | |
| 11 | 1 | TTL equals 0 during reassembly——在数据报组装期间生存时间为0 | x | |
| 12 | 0 | IP header bad (catchall error)——坏的IP首部(包括各种差错) | x | |
| 12 | 1 | Required options missing——缺少必需的选项 | x | |
| 13 | 0 | Timestamp request (obsolete)——时间戳请求(作废不用) | x | |
| 14 | Timestamp reply (obsolete)——时间戳应答(作废不用) | x | ||
| 15 | 0 | Information request (obsolete)——信息请求(作废不用) | x | |
| 16 | 0 | Information reply (obsolete)——信息应答(作废不用) | x | |
| 17 | 0 | Address mask request——地址掩码请求 | x | |
| 18 | 0 | Address mask reply——地址掩码应答 | x |
IP
目前主要介绍IPv4协议数据报文,IPv4协议头部数据报文结构如下:

IP校验和的算法代码:
u_short AttackWindow::ip_checksum(u_short initcksum,u_char *data,int len){
u_int cksum;
int idx,odd;
cksum=(u_int)initcksum;
odd=len&1;
len-=odd;
for(idx=0;idx<len;idx+=2)
cksum+=( ((u_long) data[idx] << 8) + ((u_long) data[idx+1]));
if(odd)
cksum += ((u_long) data[idx]<< 8);
while(cksum>>16)
cksum = (cksum & 0xFFFF) + (cksum >> 16);
return ~cksum;
}
IP数据切片:看Flag部分,Flag分DF和MF,DF表示整个数据包就是完整的,MF代表是数据包是切片,拼接到上一数据包之中。而偏移则在Offset部分,偏移计算需要剃掉头部进行。
路由与其应用层协议
路由器
路由器是连接两个或多个网络的硬件设备,运用于网络层,路由器一般会维护一个路由表进行地址跳转。
网关:数据包进入时判断目的IP是不是在本网络区域的掩码。
RIP
路由跳转协议,是基于距离测量的路由协议。路由之间传递路由表记录跳数,跳数最多为16。RIP如果不限制跳数,可能就会导致路由无穷计算。
针对无穷计算可以采用水平分割(禁止一个方向跳)、路由毒化(告知此路不通)、毒化逆转(告知所有路由此路不通)、时钟计时、延迟到达等方法。
OSPF
基于距离测量的路由协议,需要路由器已知所有周边路由及其周边路由距离。
工作过程:邻居发现、路由交换、路由计算、路由维护
最短路查找:迪杰斯特拉算法(全局最优路径的局部也是最优的)
BGP
运行于 TCP 上的一种自治系统的路由协议,内部自治,用于外部网关。
路由规则:
- 对于那些经过了某些特定AS的流量,不提供传输服务
- 在AS之间使用的路由协议
- 距离矢量路由协议
- 不仅仅维护它到每个目标的开销值
- 记录下所使用的路径
传输层
进行主机间不同进程传输。
端口
传输层通过端口确定不同进程,端口范围为0到65535,前1024个端口为著名端口。
TCP协议
面向连接的传输层协议
报文格式
TCP头部结构如下:

需要注意的是在TCP校验的时候需要添加伪首部:

IP校验和TCP校验区别:
- TCP校验需要加入伪首部
- TCP检查整个TCP数据包的完整性,而IP只检查IP头部完整性
TCP连接
TCP连接需要三次握手:

为什么不是一次握手:如果只是一次握手,接收请求后客户端无法确认服务器是否接收连接请求。
为什么不是两次握手:
- 如果只是两次握手, 至多只有连接发起方的起始序列号能被确认, 另一方选择的序列号则得不到确认。
- 谢希仁的计网说法:防止已失效的连接请求又传送到服务器端,因而产生错误
TCP释放
TCP释放需要四次握手:

为什么四次需要四次握手释放?
TCP是全双工通信的
- 第一次挥手:当主动方发送断开连接的请求(即FIN报文)给被动方时,仅仅代表主动方不会再发送数据报文了,但主动方仍可以接收数据报文。
- 第二次挥手:被动方此时有可能还有相应的数据报文需要发送,因此需要先发送ACK报文,告知主动方“我知道你想断开连接的请求了”。这样主动方便不会因为没有收到应答而继续发送断开连接的请求(即FIN报文)。
- 第三次挥手:被动方在处理完数据报文后,便发送给主动方FIN报文;这样可以保证数据通信正常可靠地完成。发送完FIN报文后,被动方进入LAST_ACK阶段(超时等待)。
- 第四次挥手:如果主动方及时发送ACK报文进行连接中断的确认,这时被动方就直接释放连接,进入可用状态。
TCP流量控制
Silly window syndrome:发送方发的慢,接收方接的慢,数据报文切片小,而且量大影响效率。
解决:
- 针对发送方:Nagle算法,发送的TCP报文不立即发送,等待足够数据后发送大数据包。
- 针对接收方:
- Clark方案:发送ACK,但只有当数据切片最大值为缓冲区一半时窗口才不为0。
- 延迟ACK:当接收TCP数据切片时,不立即发送ACK,等接收者有足够空间了才发ACK,之间间隔最多500ms。
TCP差错控制
差错:重传数据包
丢失:重传数据包
重复:丢弃重复数据包
乱序:缓冲等待
应答丢失:重新发送应答包
TCP拥塞控制
网络面对的负载超过了他的处理能力时,拥塞就会发生。
拥塞真正的解决方案就是减慢数据率:只有当一个老的分组离开之后才允许向网络注入一个新的分组;动态的维护窗口大小
管理拥塞:拥塞检测、拥塞控制
拥塞控制:两个窗口,一个接收方准许窗口,一个拥塞窗口(慢启动、累计增加、加速递减)。
拥塞窗口中:
- 慢启动:窗口初始为1,之后倍数增长
- 累计增加:在慢启动达到阈值时窗口增加为加1增长
- 加速递减:在出现超时时,阈值设置为原来的1/2,同时窗口置1开始慢启动
UDP协议
UDP协议是无连接的传输层协议
报文格式

校验是整个UDP包校验。
应用
一般用于视频传输等数据量大、不需要特别安全的应用上。

浙公网安备 33010602011771号