计算机网络笔记
前言
好难。。。
网络概述
Internet最早起源于ARPAnet
公用数据网大多采用分组交换方式 IP电话使用的数据交换技术是分组交换
电路交换技术不采用“存储-转发”方式
拓扑结构
主要功能
(1)建立数据通信
(2)实现资源共享
(3)增加可靠性
(4)提高系统处理能力
网络协议三要素
语法、语义、时序
网络体系结构
(1)物理层:规定物理接口,比特流透明传输。
(2)数据链路层:实现逻辑链路上无差错的数据帧传输。
(3)网络层:实现网络分组传输,解决寻址、路由、转发。
(4)传输层:实现进程之间可靠/无差错的端到端通信。
(5)应用层:根据应用进程通信要求,满足用户的需要。
TCP/IP
主要特点:
在互联网应用层提供丰富的网络应用服务(C/S、P2P)
在传输层支持面向连接/可靠/无差错服务(TCP)和无连接/快速/高效服务(UDP)
较少的协议层次,实现简单、高效
实现多种异构网的互连问题,网际协议IP为互联网核心
应用层
2.1 应用程序体系结构的分类
网络应用模式
- 客户机/服务器结构(Client/Server, C/S)
- 点对点结构(Peer to Peer, P2P)
- 混合结构(Hybrid)
网络应用与应用层协议
网络应用与应用层协议的基本概念
网络应用:基于网络的金融应用系统、电子政务、电子商务、远程医疗、远程数据存储等。
应用层协议:网络应用主要组成部分。规定应用程序进程之间通信所遵循的通信规则,包括:如何构造进程通信报文、报文应包括的字段、每个字段意义、交互过程等。
应用层协议的基本内容
- 交换报文的类型。如请求报文与应答报文
- 各种报文格式与包含的字段类型
- 对每个字段意义的描述
- 进程在什么时间、如何发送报文,以及如何响应
应用层协议的类型
标准网络应用:E-mail、FTP、TELNET、Web等
专用应用层协议:很多P2P共享文件的应用层协议属于专用协议
网络应用对传输层协议的选择
有TCP和UDP
TCP: 功能完善、面向连接、可靠传输服务
- 支持可靠的面向连接服务
- 支持字节流传输服务
- 支持全双工服务
- 进程在什么时间、如何发送报文,以及如何响应
UDP: 简单、高效传输服务
- 无连接、不可靠的传输
- 无提供拥塞控制机制
- 不提供最小延时保证
网络应用类型 | 应用层协议 | 传输层协议 |
---|---|---|
SMTP | TCP | |
TELNET | TELNET | TCP |
Web | HTTP | TCP |
FTP | FTP | TCP |
DNS | DNS | UDP或TCP |
流媒体 | Real Network | UDP或TCP |
VoIP | Net2phone | UDP |
2.2 Web服务
基本概念
超文本传输协议HTTP:
Web服务应用层协议,超文本在浏览器与Web服务器之间的传输协议。
超文本标记语言HTML:
文档中的特殊数据格式,一个文档可以链接到另一个文档
统一资源定位符URL:
标识Web中的资源,以便于用户查找
超文本与超媒体:
在Web系统中,信息按超文本方式组织;超媒体进一步扩展了超文本所链接的信息类型
Web的工作方式:
C/S
原因:网络资源分布的不均匀性
HTTP工作机制
URL格式
URL与信息资源定位
- 访问Web网站要使用的HTTP协议 ,其形式为:
- http://服务器名[:端口号]/路径/文件名
- URL(:冒号左边)指明了URL的访问方式
- http:超文本传输协议(HTTP)
- ftp:文件传输协议(FTP)
- telnet:交互式会话
- mailto:电子邮件地址
- HTTP的默认端口号是80(可以省略)
- 路径/文件名用于直接指向服务器中的某一个文件
- 省略路径和文件名,则URL就指向了Internet上的某个主页
HTTP使用面向连接的TCP协议,客户端Web浏览器要与Web服务器之间建立一个TCP连接
HTTP协议两种状态:非持续连接、持续连接
- 非持续连接(HTTP1.0) 每次请求/响应都要建立一次TCP连接
1 |
|
持续连接
持续连接时,服务器在发出响应后保持该TCP连接,相同的客户端进程与服务器端之间的后续报文都通过该连接传送
持续连接工作有两种:非流水线和流水线
非流水线:客户端只有在接收到前一个响应时才能发出新的请求
流水线:客户端在没有收到前一个响应时就发出新的请求
HTTP报文格式
请求报文
应答报文
应答状态码
常见:
200:请求成功
202:请求被接受但是没有马上起作用
403:请求拒绝
404:not found
2.3 电子邮件
电子邮箱由提供电子邮件服务的机构(ISP)为用户建立。
基本组成
用户代理 邮件服务器 邮件传输协议:SMTP/MIME 邮件存储访问协议:POP、IMAP
邮件协议
邮件传输协议
- 客户端到邮件服务器、邮件服务器之间简单邮件传输协议STMP
- 通用Internet邮件扩展协议MIME
邮件存储访问协议
- 邮件服务器到客户端,邮政协议第3版POP-3
- Internet邮件访问协议第4版IMAP-4
STMP邮件报文封装
- 所有报文都是由ASCII码组成
- 报文由报文行组成,各行之间用回车、换行符分隔
- 报文的长度不能超过998个字符
- 报文行的长度≤78个字符之内(不包括回车换行符)
- 报文中可包括多个首部字段和首部内容
- 报文可包括一个主体,主体必须用一个空行与其首部分隔
- 除非需要使用回车与换行符,否则报文中不使用回车与换行符
报文的传输
先发源地址,等待250确认
再发送目的地址,等待250确认
再发送DATA块,等待354确认
再将首部+空行+主体发送,最后发送终结符,收到250确认
MIME协议基本内容
- 允许非7位ASCII码数据通过SMTP传输
POP3协议
IMAP4协议
- 与POP3类似,但功能更强
- 下载邮件之前检查邮件头部
- 下载邮件之前可用特定字符串搜索电子邮件的内容
- 可以下载部分电子邮件
- 可以在邮件服务器上创建、删除、更名邮箱
基于Web的电子邮件
基于Web电子邮件,用户代理就是Web浏览器,用户与远程邮箱之间的通信使用的是HTTP协议,而不是POP3或IMAP4协议
邮件服务器之间的通信仍然使用SMTP协议
2.4 文件传输服务
FTP
- FTP允许用户将文件从一台计算机保证可靠传输到另一台计算机
- FTP服务使用户可以方便地访问网络文件资源,无需对文件进行转换,服务效率高
- FTP服务器:提供FTP服务的计算机; FTP客户端:请求FTP服务器的计算机
- 服务模式:C/S模式; 传输层协议:TCP(FTP协议)、UDP(TFTP协议)
- 控制进程使用端口21,数据进程使用端口20
- 控制连接先于数据连接被建立,并晚于数据连接被释放
工作原理
FTP和TFTP的特点对比
FTP特点:
- 交互式用户界面:利用FTP命令方便与服务器对话
- 对文件格式说明:允许指定数据类型和格式(文本方式、二进制方式)
- 权限控制:文件传输之前,向服务器提供登录用户名和口令
TFTP特点:(!!)
- 传输可靠性:FTP面向连接的可靠传输,采用TCP;TFTP简洁、采用UDP
- 协议命令集:FTP包含发送/接收文件、列出目录与删除文件等复杂命令,TFTP协议只定义文件发送/接收基本命令
- 数据表示:FTP可指定数据类型,TFTP只允许传输ASCII码或二进制文本文件
- 用户鉴别:FTP有登录用户鉴别功能,TFTP不提供用户鉴别功能
注
匿名FTP访问通常使用Anonymous作为用户名
浏览器软件支持访问FTP服务器,可以直接登录到FTP服务器并下载文件(x),下载可以匿名下载,无需登录
2.5 域名系统与DNS服务
DNS基于C/S模式的分布系统
DNS的作用
- 主机域名转换成IP地址
- 能够方便访问各种网络资源和服务
- 实现互联网应用层协议的基础
例子
域名结构
- 主机名字要求全局唯一,能在整个互联网通用
- 便于管理(名字分配、确认、回收)
- 便于映射,域名与IP地址之间映射(关键问题映射效率)
DNS的基本原理
域名解析器:将域名转换为对应的IP地址的过程
域名解析算法
- 递归解析!
- 迭代解析
DNS的高速缓存
- 复制:每个根目录被复制,该服务器副本存放在整个网络上。当一个新的网络加入互联网时,在本地的DNS服务器中配置一个根服务器表
- 缓存:使用高速缓存优化查询开销。每个服务器都保留了一个域名缓存,查询一个新的域名时,服务器将该绑定的一个副本置于它的缓存中
注
DNS可以使用传输层无连接服务(DNS)
传输层
通过报文段传输
3.1 基本功能
根本目的:在网络层提供的数据通信服务基础上,实现主机进程间可靠服务,实现“端到端”服务(主机-主机 → 端-端),UDP的可靠性弱于TCP的可靠性
传输层与应用层和网络层的关系
传输层协议在本地主机操作系统控制下,为应用程序提供确定的服务
- 网络层解决IP地址,传输层解决进程标识
套接字:建立网络应用程序的可编程接口(应用编程接口API)(socket) IP地址+端口号,比如:202.1.2.5:80
进程标识三元组:协议、本地地址、本地端口,也叫半相关
进程通信标识五元组:协议、本地地址、本地端口、远程地址、远程端口号,也叫全相关
端口号(16bits)
- 熟知端口号:给每种服务器分配的确定的全局端口号,也叫公认端口号,范围在0~1023,统一分配与控制
- 注册端口号:在IANA注册的端口号,没有明确的定义服务对象,不同程序可根据实际需要自己定义,范围在1024~49152
- 临时端口号:客户端程序使用的临时端口号,由客户端上TCP/IP软件随机选取,范围在49152~65535
常见端口号
表5-1 UDP常用的熟知端口号
DNS协议运行在UDP协议之上,使用端口号53
端口号 | 服务进程 | 说 明 |
---|---|---|
53 | Domain(DNS) | 域名服务 (!!) |
67/68 | DHCP | 动态主机配置协议 |
69 | TFTP | 简单文件传输协议 (!!) |
111 | RPC | 远程过程调用 |
123 | NTP | 网络时间协议 |
161/162 | SNMP | 简单网络管理协议 |
520 | RIP | 路由信息协议 |
表5-2 TCP常用的熟知端口号
端口号 | 服务进程 | 说 明 |
---|---|---|
20 | FTP | 文件传输(数据连接) (!!) |
21 | FTP | 文件传输(控制连接) (!!) |
23 | TELNET | 网络虚拟终端协议 |
25 | SMTP | 简单邮件传输协议 (!!) |
80 | HTTP | 超文本传输协议 (!!) |
119 | NNTP | 网络新闻传输协议 |
179 | BGP | 边界路由协议 |
TCP和UDP比较
特征/描述 | TCP | UDP |
---|---|---|
一般描述 | 允许应用程序可靠地发送数据,功能齐全 | 简单、高速,只负责将应用层与网络层衔接起来 |
面向连接与无连接 | 面向连接,在TPDU传输之前需要建立TCP连接 | 无连接,在TPDU传输之前不需要建立UDP连接 |
与应用层的数据接口 | 基于字节流,应用层不需要规定特点的数据格式 | 基于报文,应用层需要将数据分成包来传送 |
可靠性与确认 | 可靠报文传输,对所有的数据均要确认 | 不可靠,不需要对传输的数据确认,尽力而为地交付 |
重传 | 自动重传丢失的数据 | 不负责检查是否丢失数据和重传 |
开销 | 低,但高于UDP | 很低 |
传输速率 | 高,但低于UDP | 很高 |
适用的数据量 | 从少量到几个GB的数据 | 从少量到几百个字节的数据 |
适用的应用类型 | 对数据传输可靠性要求较高的应用,例如文件与报文传输 | 发送数量比较少,对数据传输可靠性要求低的应用,例如IP电话、视频会议、多播与广播 |
3.2 UDP
特点
- 无连接、不可靠:开销低、尽力而为
- 面向报文的传输层协议:UDP 对应用层传递下来的报文,既不合并,也不拆分,而是保留这些报文的边界。UDP 层一次向对方交付一个完整的报文
- 没有拥塞控制:网络出现的拥塞时,UDP不会使源主机的发送速率降低,适合实时通信应用
- 首部开销小:只有8字节
数据报格式
- 端口号:包括源端口号和目的端口号,分别表示发送方和接收方的进程端口号,各为2字节
- 长度:包括报头在内的用户数据报的总长度,2字节
- 校验和:用于检查整个数据报(含报头)是否传输出错,可选,若无,填0
校验和计算:
- 按每16位求和并在高位补0得到一个32位的求和结果
- 如果这个结果高16位不为0,则将高16位和低16位相加,高16位补上0,得到一个32位的结果
- 一直相加直到高16位为0,将低16位取反得到校验和
直观点看代码:
1 |
|
3.3 TCP
特点
- 支持面向连接的服务:打电话式、会话式通信
- 支持字节流传输:字节管道、字节按序传输和到达
- 支持全双工服务[1]:一个应用进程可以同时收发数据、捎带确认
- 支持建立多个并发的TCP连接(服务器同时响应多个连接)
- 支持可靠传输服务:不丢失、不重复、有序
报文格式
TCP报头长度
发送序号(seq):表示TCP数据字段的第一个字节的序号
连接建立时(即SYN=1),初始序号(ISN)由随机数生成器生成,发送端和接收端独立产生,可能不一样
确认序号(ack):只有当ACK位=1时有效,表示发送此报文段的进程期望接收的下一个新字节的序号。
确认序号=N+1,表示接收方已经成功接收了序号为N及之前的所有字节,要求发送方接下来应该发送起始序号为N+1的字节段。
(注:这个是发送报文,接收方的确认报文的ack=接收的发送报文的ack,seq=发送报文的seq+1;若是双方互通传数据,确认序号表示已经接收的最后一位数据的序号,序号为接收的确认序号+1,即请求发送的序号的第一位)
- 窗口值:指示当前进程可以接收的数据长度 (单位: 字节)。
准备接收下一个TCP报文的接收方,通知即将发送报文的发送方下一个报文中最多可以发送的字节数,是发送方确定发送窗口的依据,是动态可变[2]的
报头长度:表示TCP报文首部的大小,单位是4字节
- 该字段的取值范围是[5,15]
- TCP头部的固定部分(除了TCP头部的选项)为4*5=20Byte
校验和:
与UDP校验和的相同点:
1)计算方式相同;
2)也需要伪首部。
与UDP校验和的不同点:
1)UDP校验和可选,TCP校验和必须;
2)伪首部协议字段值为6。
标志 | 说明(注重前三位) |
---|---|
SYN | 当SYN=1,而ACK=0时,表明这是一个建立连接请求报文,若对方同意建立该连接,则应在发回的报文中将SYN和ACK标志位同时置1。实质上,就是用SYN来代表Connection Request和Connection Accepted,用ACK位来区分这两种情况。 |
ACK | 确认号字段的值有效。只有当ACK=1时,确认序号字段才有意义。当ACK=0时,确认序号没有意义。 |
FIN | 终止连接。当FIN=1时,表明数据已经发送完毕,并请求释放连接。 |
RST | 连接必须复位。当RST=1时,表明出现严重差错,必须释放连接,然后重新建立连接。 |
URG | 此报文是紧急数据,应尽快传送出去。此标志位要与紧急指针字段配合使用,由紧急指针指出在本报文段中的紧急数据的最后一个字节的编号。 |
PSH | 将数据推向前。当PSH=1时,请求接收方TCP软件将该报文立即推送给应用程序。 |
TCP最大段长度(MSS)
TCP报文数据部分的最大长度,不包括TCP报头长度。默认值为536字节
3.4 TCP基本通信过程
- 通信建立---三次握手
- 通信释放---四次挥手
3.5 TCP滑动窗口与确认重传机制
2个缓存、2个窗口
- 发送方缓存:用于存储准备发送的数据
- 发送窗口:窗口值不为0,可以发送报文段
- 接收方缓存:将正确接收的字节流写入缓存,等待接收读取
- 接收窗口:窗口值等于接收缓存可以接收的字节流
字节流分段[3],按段(序号)传输,捎带确认(确认号)
特点
- 使用发送和接受缓冲区,以及滑动窗口机制控制TCP连接上的字节传输
- TCP滑动窗口面向字节流,可以起到差错控制和流量控制作用
- 接收方可以在任何时候发送确认,窗口大小可由接收方根据需要增大或减少
- 发送窗口值不能超过接收窗口值,发送方可以根据自身需要来决定
重传定时器
TCP滑动窗口使用超时重传机制
定时器设置与报文段往返时间RTT紧密相关。RTT表示一个报文段自发出到收到ACK的时间间隔。
- RTT随网络状态而随机波动,既非定值,也无规律
- 发送数据报的同时,需要对该报文的RTT进行估计
\[ Timeout=\beta \times RTT \]
其中:
- Timeout:本次定时器的时间值
- RTT:对本次发出报文段的往返时间的估计值
- β:常数值,大于1,推荐值为2
\[ RTT = \alpha \times 旧RTT+(1-\alpha)\times 最新RTT测量值 \]
其中:
- α为常数值,小于1,推荐值为0.125
流量控制
由发送方控制发送速率,使之不超过接收速率,防止接收方来不及接收字节流,而出现报文丢失现象
基本过程:
接收方从缓存中读取速度大于等于字节到达速度,接收方在每个确认中发出一个非零窗口通告
如果发送方发送速度比接收方读取速度快,将造成缓冲区被全部占用,之后到达的字节因缓冲区溢出而丢弃。此时,接收方必须发出一个“零窗口”[4]的通告。告知当发送方停止发送(直到接收“非零窗口”通告为止)。
接收方需要接收能力给出一个合适的接收窗口,并将它写入TCP报头中,通知发送方。接收窗口又称为通知窗口。
为避免活锁,发送方使用一种叫坚持定时器(persist timer)来定期触发:发送方往接收方发送窗口探测报文段(数据长度>0, 保证被TCP递送)。作为响应,接收方将自己的缓冲区可用空间大小放入ACK报文段的窗口字段,由此,发送方获知接收方是否能继续接收数据。
拥塞控制
1 拥塞现象
当多个主机端点通过TCP向整个网络注入数据时,TCP如果不对注入数据的速率进行控制,将导致整个网络出现拥堵:
- 往返时延增大导致TCP重传,进一步增加拥堵
- 中间路由器的缓冲容量有限。当IP数据报的到达率持续超过发出率时,中间路由器的缓冲变满, 只好丢弃新进的数据包,导致TCP重传。
2 拥塞控制
- 实现拥塞控制最基本手段:TCP滑动窗口技术
- 发送数据,既要考虑接收能力,又要避免网络发生拥塞
- 发送窗口计算
发送窗口 = Min(通知窗口,拥塞窗口)
- 通知窗口rwnd:接收方允许接收的能力,来自接收方流量控制(将“通知窗口”值放在TCP报头中,传送给发送端)
- 拥塞窗口cwnd:发送方根据网络拥塞情况得出的窗口值,来自发送方的流量控制
拥塞控制判定
- 重传定时器超时 现在通信线路的传输质量一般都很好,因传输出差错而丢弃分组的概率是很小的(远小于 1 %)。只要出现了超时,就可以猜想网络可能出现了拥塞)
- 收到三个相同(重复)的 ACK 个别报文段会在网络中丢失,预示可能会出现拥塞(实际未发生拥塞),因此可以尽快采取控制措施,避免拥塞
3 TCP拥塞控制算法
慢开始阔值SST:慢开始阶段和拥塞避免阶段的分界线,初始值有算法设定
慢开始阶段:cwnd≤SST。在该阶段,cwnd初始值为1,且每结束一个RTT,cwnd翻倍
当cwnd=SST时:进入拥塞避免阶段
发生拥塞时:
- 拥塞避免阶段结束
- 设置SST=cwnd/2
- cwnd重为1,进入新的慢开始阶段(Tahoe版本)或者cwnd减半,进入快恢复阶段(Reno版本)
网络层
4.1 IPv4
网络层的功能
路径决策:为分组在收发双方之间确定路径, 路由选择算法
交换:在路由器的输入、输出端口传递分组
在网络层没有联接建立过程
路由器: 没有端对端的连接状态:在网络层不存在“连接”的概念
网络层的定位
网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一。
与 IP 协议配套使用的还有三个协议:
- 地址解析协议 ARP (Address Resolution Protocol)
- 网际控制报文协议 ICMP (Internet Control Message Protocol)
- 网际组管理协议 IGMP (Internet Group Management Protocol)
4.2 IPv4协议
特点
- 无连接、不可靠(尽力而为的服务)
- 不维护 分组发送的状态信息,分组独立发送
- 不保证 不丢失、按序等
- 为传输层屏蔽了物理网络的差异: 掩盖各种不同物理网和协议差异性,实现异构互连
4.3 IPv4地址结构
IPv4地址标准分类
- IP地址的点分十进制表示法:地址长度为32位,采用点分十进制(X.X.X.X,X在[0,255]之间,占8位)表示
- 标准分类:网络号+主机号,根据网络号前缀和位数的差异,分为A、B、C、D和E五类
网络类别 | 网络标识 | 二进制 | 十进制 | 网络地址长度 | 主机地址长度 | 最大网络数 | 最大主机数 | 使用范围 |
---|---|---|---|---|---|---|---|---|
A | 0 | 0xxxxxxx | 1–126 | 1字节 | 3字节 | 126 | 16777214 | 大型网络 |
B | 10 | 10xxxxxx | 128–191 | 2字节 | 2字节 | 16383 | 65534 | 中型网络 |
C | 110 | 110xxxxx | 192–223 | 3字节 | 1字节 | 2097151 | 254 | 小型网络 |
D | 1110 | 1110xxxx | 224–239 | 多播传送 | ||||
E | 1110 | 11110xxx | 240-247 | 保留 |
特殊IP地址
专用IP地址
类别 | 网络号 | 总 数 |
---|---|---|
A | 10 | 1 |
B | 172.16 ~ 172.31 | 16 |
C | 192.168.0 ~ 192.168.255 | 256 |
IP 地址是一种分等级的地址结构。分两个等级的好处是:
- IP 地址管理机构在分配 IP 地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。这样就方便了 IP 地址的管理。
- 路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间。
IPv4划分
由两级划分变为三级划分:从主机位中拿出若干位作为子网位(也叫子网号字段),从而将一个网络进一步划分成多个子网
子网位不能全为“0”,也不能全为“1”;
主机位不能全为“0”,也不能全为“1”。
无类别域间路由
不限制于标准分类(A/B/C)的地址结构,而是根据对地址管理需要灵活决定(使用可变长度子网掩码)
网络掩码采用:“IP地址/掩码”
NAT技术(网络地址转换技术)
目的是解决IP地址短缺,有效快速补救办法
概念
NAT软件通过维护一张源(IP地址,端口)到目的(IP地址,端口)的转换表,就可以完成互联网IP数据报到专用网IP数据报的内容转发
- “一对一”(静态NAT)
- “多对多”(动态NAT)
4.4 IPv4分组格式
第一行:
- 版本字段:占4bit,4代表IPv4,6代表IPv6
- 分组头长度:占4bit,单位4B,范围[5,15] (当说首部固定长度,默认20B)
- 服务类型字段:占8bit,指示路由器如何处理分组
- 优先级:分组传输时,需要网络提供优先服务
- 延迟D(delay),(delay)、可靠性R(reliability)、吞吐量T(throughput)、成本C(cost)
- 总长度:占16bit,单位是字节,表示分组头长度和数据长度之和
第二行:
标识:占16bit,用来标识不同的IP分段,最多能分配216-1个ID
标志:占3bit,最高位固定为0,中间位为DF,最低位为MF
- DF=1,表示接收节点不能对分组进行分段。反之,则可
- MF=0,表示接收的是最后一个分段。反之,则不是
段偏移:占13bit,表示分段在整个分组中的相对位置,以8字节为单位进行计数,因此分段长度应为8字节的整数倍
第三行:
生存时间TTL:占8bit,表示分组在网络中的存活时间,以跳数来计数
协议:占8bit,表示IP的高层协议类型,可选值如表中所示
值 | 上层协议 | 值 | 上层协议 |
---|---|---|---|
1 | ICMP | 50 | ESP(IPSec) |
2 | IGMP | 51 | AH(IPSec) |
6 | TCP | 89 | OSPF |
8 | EGP | 41 | IPv6 |
17 | UDP |
头部校验和:用于头部校验
- 不负责数据校验
- 降低延迟,提高效率
分段与组装
最大传输单元(MTU)
链路帧的数据字段的最大长度,也就是封装链路帧时允许的IP分组大小上限
特点
- 不同网络的MTU大小不同;
- 规定IP分组的最大长度为65535字节;
- MTU一般小于IP分组长度,因此需要将IP分组分割成若干个较小的段,每个段的长度不超过MTU
TCP最大段长度(MSS)
TCP报文数据部分的最大长度,不包括TCP报头长度,默认值为536字节
4.5 路由算法的选择和分组转发
分组转发:
互联网中主机、路由器转发IP分组的过程
默认路由(网关):也叫第一跳路由,即主机所在局域网与互联网相连的网关
源(目的)路由器:发送(接收)主机的默认路由器
分组转发分类:
- 直接转发:源主机与目的主机在同一个网络或目的路由向目的主机转发分组
- 间接转发:源主机与目的主机不在一个网络
路由算法
评价依据
- 算法必须是正确、稳定和公平的
- 算法应该尽量简单
- 算法必须能够适应网络拓扑和通信量的变化
- 算法应该是最佳的
量化指标
- 跳数(hop count),跳数越少,路径越好
- 带宽(bandwidth),链路传输速率
- 延时(delay),从源结点到达目的结点时间开销
- 负载(load),路由器单位时间通信量
- 可靠性(reliability),传输过程中误码率
- 开销(overhead),传输过程中耗
类型
静态路由选择算法:
将到每个目的地址的路径都固定存储在路由表中,唯一地确定了从源主机到目的主机的路径
- 路由表无法自动更新;路由表的更新由管理员手动完成
动态路由选择算法:
网络系统运行时,系统自行运行动态路由选择协议建立路由表
- 网络结构变化时,可自动更新路径
路由表
路由表二元组(N,R)
其中N:目标网络地址,R:网络N的下一跳路由器地址
路由表二元组(M,N,R)
M是目标网络子网掩码
取出目的地址,逐项与路由表中的子网掩码做位与操作,得到目的子网地址,找到匹配条目
特殊路由
- 默认路由:路由选择过程中,若路由表中没有明确指明到达目的网络的路由信息,则将该分组转发到默认路由指定的路由器地址
- 特定主机路由:路由表是基于网络地址,但允许为一个特定主机地址建立路由表项
IP路由汇聚(!!)
- 减少路由表项数量重要手段
- 基于CIDR,网络前缀越长,主机地址数越少,寻址目的主机越容易
- 路由表项由(“网络前缀”、“下一跳地址”)组成
- 最长前缀匹配:路由选择具有最长网络前缀的路由
路由协议
采用分层思想,用“化整为零、分而治之”办法解决路由选择问题
自治系统(AS)
- 互联网由自治系统互联而成,“自治”管理(大学、公司、部门等),有权自主地定内部采用何种路由协议
- 域内路由选择:自治系统内部的路由选择
- 域间路由选择:不同自治系统之间的路由选择
协议
- 内部网关协议(IGP):AS内部使用的路由选择协议,RIP和OSPF协议
- 外部网关协议(EGP):不同AS边界路由器之间交换路由信息,BGP协议
路由信息协议RIP
算法思想
- 周期性向相邻路由器告知本地路由器可以到达的网络,以及到达该网络的距离(跳数)
- 路由向量(V,D)中,V-该路由器到达的目的网络地址;D-代表距离(跳数)
- 按照最短路径原则,刷新路由表
算法步骤
- 初始化路由表:只包含与该路由器有直接相连的路由信息,距离均为0(本地路由)
- 更新路由表(若路由器X到目的网络Y的距离为n)
- 若原路由表中没有到网络Y的表项,则增加一个到网络Y的表项
- 若原路由表中已有到网络Y的表项(到目的网络Y经过路由器Z距离为m),则只要m>n+l,都进行更新。否则不变。更新后的下一站路由器应为X
细节补充
- 设置周期更新定时器,每隔30s在相邻路由器之间交换一次路由信息
- 如果接收到同一网络有多条距离相同的路径,将按照“先入为主”原则,取用第一条路径信息(直到该路径失效,或被更短路径取代)
- 根据向量距离路由选择算法,当有开销小的路径出现时,修改表中路由记录,否则一直保持下去
- 每个路由表项设有超时定时器,在路由表项被修改时开始计时,若180s后没有收到刷新信息时,表示该路径已经出现故障,将该项纪录置为“无效”(不删除该项路由记录)
- RIP协议基于距离向量路由选择算法(Bellham-Ford)(DistanceVectorAlgorithms),使用“跳数” (即metric)来衡量到达目标地址的距离。(不是链路状态法!!!)
最短路径优先协议OSPF
主要特点
- 使用链路状态协议(非RIP的向量距离路由协议)
- 路由器周期性地发送链路状态信息,AS内所有路由器都能形成链路状态数据库(可用端口、已知可达路由、链路状态信息)
- 在链路状态发生变化时,用洪泛法向所有路由器发送该信息(RIP仅向相邻路由器通报)
- 按照最短路径原则,刷新路由器之间交换链路状态信息有:费用、距离、延时、带宽等
算法过程
使用Dijkstra算法
外部网关协议BGP
基本思想
- 不同AS路由器之间交换路由信息
- 采用路径向量路由协议(不同于RIP、OSPF协议)
- 在链路状态发生变化时,用洪泛法向所有路由器发送该信息(RIP仅向相邻路由器通报)
- 每个AS至少有一个路由器作为该AS的“BGP发言人”
工作过程
边界路由器初始化过程
BGP协议分组数据
- 打开分组。用来与相邻的另一个BGP发言人建立关系
- 更新分组。发送路由信息,列出要撤销多条路由
- 保活分组。确认打开分组、周期性地证实相邻边界路由器存在
- 通知分组。用来发送检测到的差错
路由器与第三层交换技术
主要功能
- 建立、维护路由表
- 提供网络间分组转发功能
4.6 互联网控制报文协议ICMP
ICMP报文结构
ICMP差错报文
1 路由重定向报文(type: 5)
2 超时报文(type: 11)
- 路由器转发分组时,TTL字段值减1后为0,则丢弃该分组,同时向源主机发送超时报文
- 分组所有分段在限定时间内(当第1个分段到达,启动定时器)未能到达目的主机时(分组无法组装),若多个分组出现这种情况,导致目的主机不能接收新的分组,从而出现“死锁”,将丢弃接收到的分段,并向源主机发送超时报文
3 参数出错报文(type: 12)
路由器发现以上4种差错情况以外的错误字段,丢弃该分组,向源结点发送参数出错报文。
ICMP查询报文
1 时间戳请求和应答(type 13/14)
- 提供基本简单的网络时钟同步
- 用来确定IP分组在两个机器之间往返所需时间(时钟同步)
- 时间戳:
- 初始时间戳:源主机发出请求的时间
- 接收时间戳:目的主机收到请求的时间
- 发送时间戳:目的主机发送应答时间
2 回应请求与应答(type: 8/0)
- 测试能否到达目的主机/路由器(网络连通性)
- 由主机发出请求,检查另一个主机能否可达(ping命令)
3 地址掩码请求与应答(type: 17/18)
要得到网络子网掩码,主机向目标路由器发送地址掩码请求报文。路由器回送应答报文,向主机提供所需的掩码
4 路由查询与通告(type: 10/9)
- 主机要获取目标路由器是否正常工作,向目标路由器发送“询问与通告报文”。
- 主机广播/多播“路由器询问报文”,收到询问报文的路由器回送“通告报文”,广播其路由信息。
- 在没有主机询问时,路由器也可以周期性地发送路由器通告报文,不仅通告自己的存在,而且通告它所知道的网络中所有路由器。
细节
- ICMP报文作为IP分组数据转发(被封装在IP分组的数据段中)
- 包含ICMP报文的IP分组头的协议类型字段值设为:1
源站(点)抑制报文:
用于通知源主机其发送的数据包已被路由器丢弃。这种报文是由路由器生成的,用于告诉源主机减慢其发送速度。
CRC校验错误时,路由器不会发送ICMP报文
4.7 地址解析协议ARP
- IP逻辑地址:实现不同物理网设备(主机、路由器等)地址统一
- 分组数据包最终在物理网络上传输(使用物理地址MAC)
地址映射方法
- 静态映射(人工维护地址映射表)不足:
- 映射表不能及时反映网络设备变化(新添加了主机或路由器)
- IP地址不变情况下更换网卡,重新映射(设备物理地址变化)
- 主机物理位置发生变化(IP地址变),但物理地址不变(IP变了)
- 动态映射(ARP建立映射)
ARP协议
- 正向地址解析协议(ARP):从已知IP地址解析对应的物理地址(MAC)的映射关系过程,从IP地址到物理地址
- 反向地址解析(RARP):从已知的物理地址解析对应的IP地址,从 IP地址到物理地址
- 解析过程:使用ARP请求分组、应答分组
下图中:B -> byte
字段意义
- 硬件类型:16位,物理网络类型(1-以太网)
- 协议类型:16位,网络协议类型(08000x-IPv4协议)
- 硬件地址长度:8位,物理地址长度(6-以太网地址)
- 协议地址长度:8位,网络层地址长度(4-IPv4协议)
- 操作:16位,1-ARP请求分组;2-ARP应答分组
- 源(目的)结点MAC地址:6B,以太网源(目的)结点物理地址
- 源(目的)结点IP地址:4B,源(目的)结点IP地址
- 补充数据段:18B,ARP分组长度达到46B(最小帧64B要求)
分组的封装
地址解析过程
工作过程
目的mac地址不知道就填0 然后广播(FF:FF:FF:FF:FF:FF) 接收的主机跟自己的进行匹配,匹配上了就定向发回主机a
本地ARP高速缓存
ARP欺骗与防范(选修)
1. ARP协议缺陷
- ARP高速缓存根据所接收的ARP协议包,随时进行动态更新
- ARP协议无需连接,任意主机在无ARP请求时,也可以做出应答
- ARP协议没有认证机制,只要接收的协议包有效,主机无条件根据协议包内容刷新本机ARP缓存,并不检查该协议包的合法性
2. ARP欺骗过程
3. ARP欺骗防范
链路层
5.1 链路
链路:一条点到点的物理线路(中间没有任何其它交换结点),也叫物理链路
数据链路:物理线路/传输设备+规程(软硬件)保证数据传输正确性,也叫逻辑链路
通路:由许多链路串接而成(链路是通路的组成部分)
物理层:为数据传输提供所需要的物理链路。
数据链路层:将数据从物理链路的一个节点传送到下一个节点
- 不同的链路采用不同的链路层协议,提供的服务不同
网络层:将数据从数据链路的源主机传送到目的主机
- 能够在各段链路层提供异构服务的情况下,完成端到端的工作
5.2 差错产生原因
信道存在底噪,数据就会被影响
- 在物理通信线路上传输数据信号一定存在差错(收发数据不一致!)
- 在原始、有差错物理线路上层,采取差错检测、差错控制等方法,将物理线路改造成无差错的数据链路(向网络层提供高质量服务)
- 物理层以上各层都有改善数据传输质量责任,数据链路层差错控制最重要
根本原因:噪声
类型:
- 热(白)噪声:由热噪声引起的差错是随机差错,或随机差错。是由电子热运动引起的,具有“幅度小,不能够消除”等特点
- 冲击噪声:引起的差错是突发差错,具有“呈突发状,常由外界因素引起,幅度可能相当大,无法靠提高信噪比来避免”,是主要差错原因
信噪比(SNR)
定义
所需的信号强度与背景噪声的强度。其定义为信号功率与噪声功率的比例,以分贝为单位
要点
- 一般来说,信噪比越大,说明混在信号里的噪声越小,信号质量越好
- 信噪比越高,接收端误码率越低
- 提高信噪比的手段:提高信号发射功率、降低环境干扰
误码率(BER)
定义
表示二进制比特流在数据传输系统中被传错的概率
要点
误码率是衡量数据传输系统正常工作状态下传输可靠性的参数
传输出现误码是正常且不可避免的,只要控制在一个合理的范围内
误码率只是衡量通信系统的一个指标,并非越低越好
非二进制数据传输系统的误码率计算,需折合成二进制
差错校验与纠正-检错码(EDC)和纠错码(ECC)
检错码:自动发现差错的编码
纠错码:不仅能发现差错,还能自动纠正差错的编码
思想
在向信道发送数据之前,先按某种关系加上一定的冗余位(差错控制编码),构成码字再发送。接收方收到码字后查看信息位和冗余位,并检查它们的关系(校验),以发现传输中是否存在差错
码字(n比特)=信息位(k比特)+ 冗余位(r比特)
编码效率\(R=\frac{k}{n}=\frac{k}{k+r}\),R越大,编码效率越高
常见的检错纠错:
- 校验和:常用于传输层,检错码
- 奇偶校验:较简单,检错码
- 循环冗余校验:较复杂,检错码
- 海明码:纠错码
注:
- 差错检测和纠正技术不能保证接收方检测到所有的比特差错,即可能出现未检测到的比特差错,而接收方并未发现。
- 选择一个合适的差错检测方案使未检测到的情况发生的概率很小
校验和
常用于传输层,TCP/UCP报文的差错检测。
校验位的计算:将要发送的数据看成是一个16位整数的序列,将这些16 位整数加起来,得到的和作为检验位。
发送端
- 将数据的每两个字节当作一个16位的整数,可分成若干整数
- 将所有16 位的整数求和
- 对得到的和逐位取反,作为检查和,放在报文段首部,一起发送
接收端
对接收到的信息 (包括检查和)按与发送方相同的方法反码求和
- 等于“0”:收到的数据无差错
- 不等于“0”:收到的数据出现差错
奇偶校验码
- 奇偶校验:在信息位后面加上一位校验位使得码字中“1”的个数为奇(偶)数
海明码(纠错)
利用一个以上的校验位,不仅可以验证是否有错,还能在数据出错时指明出错的位置
若用r个监督关系式产生r个校正因子,区分无错、码字中n个不同位置的位错,则要求\(2^r \geqslant n+1\),即\(2^r \geqslant k+r+1\)
循环冗余校验码(CRC校验码)
- 自动反馈重发(ARR纠错):收发双方在发现帧传输错误时,采用反馈/重发方法纠正错误
- 接收方通过检错码检查接收数据是否正确,发现传输错误就采用ARR纠错
5.3 流量控制
单帧停止等待协议
- 发送方每次发送一帧后,需要等待确认帧返回,再发送下一帧
- 发送方收到否认帧(数据帧错),重新发送出错的数据帧
- 优点:协议简单、容易实现
- 缺点:帧传输效率低下
帧传输总延时 = 2*传播延时+(数据帧处理延时+确认帧处理延时)+数据帧发送延时+确认帧发送延时
tT ≈tf+2tp ,因为处理延时和确认报文很短,忽略不计
帧传播效率 = 数据帧发送延时 / 帧传输总延时
连续ARQ协议
拉回重发(GBN)
(1)发送方发送N个帧以后,若发现该N个帧的前一个帧在计时器超时后仍未返回其确认信息,则该帧被判断为出错或丢失,此时将重发该出错帧及随后的N个帧;
(2)采用累积确认的方法,即对某一数据帧的确认即表明该数据帧及这以前所有的数据帧均已正确接收
选择重发(SR)
(1)每一个发送缓冲区有一个计时器,当计时器超时时,缓冲区的帧就会重传;
(2)如果接收方怀疑帧出错,就会发一个否定帧NAK给发送方,要求重传NAK中指定的帧
滑动窗口协议
链路层滑动窗口与传输层TCP滑动窗口原理相同
- 一个是针对于帧的传送
- 另一个是针对字节数据的传送
详情见TCP滑动窗口
5.4 局域网参考模型与以太网工作原理
介质控制访问
定义
用来决定广播信道中信道分配的协议,属于数据链路层的一个子层,称为介质访问控制(Medium Access Control,MAC)子层
任务
为使用介质的每个节点隔离来自同一信道上其它节点所传送的信号,以协调活动节点的传输
分类
信道划分介质访问控制:频分多路复用、时分多路复用、波分多路复用、码分多路复用【静态划分】 随机访问介质访问控制:ALOHA、CSMA/CD、CSMA/CA 【动态划分】 轮询访问介质访问控制:令牌传递协议【动态划分】
频分多路复用与时分多路复用
随机介质控制访问-纯ALOHA
- 每个主机均自由地发送数据帧
- 不考虑由于信道不良引起的误码
- 碰撞后,各主机等待一段随机的时间,然后再进行重传。若再发生碰撞,则需要再等待一段随机的时间,直到重传成功为止
- 效率较低
时隙ALOHA
- 将所有主机进行时间同步,并将时间划分为一段段等长的时隙(time slot)
- 只能在每个时隙的开始时才能发送一个数据帧
- 时隙长度T0使得每个帧正好在一个时隙内发送完毕
- 每个帧到达后,一般都要在缓存中等待一段小于T0然后才发送出去
CSMA/CD
- 以太网数据传输特点
- 载波侦听多路访问/冲突检测(CSMA/CD)技术
- 载波侦听:监听总线占用
- 多路访问:平等访问总线
- 冲突检测:冲突不可避免
冲突窗口概念
以太网帧结构
- 前导符/帧前定界符:由10101010比特流组成
- 目的地址、源地址:MAC地址(6字节)
- 类型:网络层协议类型(0x800表示IP协议;0x8137表示IPX协议
- 数据:46B~1500B(帧头长度为18B)
- 帧校验:32位CRC校验(目的地址、源地址、类型、帧数据)
以太网卡结构
5.5 局域网技术与数据链路层协议
现代以太网技术: 交换式局域网
交换技术应用于高性能局域网技术
传统共享介质局域网(所有结点共享一条传输介质)不可避免发生冲突(结点数量不断增加,网络负荷加重,网络效率急剧下降)
克服网络规模与网络性能矛盾,将共享介质改为交换方式,即二层交换技术
二层交换技术不关心三层协议
不会检查网络层,IPV4、IPV6等三层协议分组均可以穿越二层交换机
网桥、交换机
网桥
基本特征
- 互联两个不同数据链路层协议(不同传输介质、不同传输率)
- 以接收、存储、地址过滤与转发方式实现网络之间通信
- 需要互联网络在数据链路层以上采用相同协议
- 分隔两个网络之间的广播通信量,改善互联网络性能与安全性
层次结构
从802.X到802.Y的网桥
- 不同的帧格式-重新封装
- 不同的传输速率-缓存
- 不同的最大帧长度-切割
- 不同的安全策略
- 不同的服务质量要求
透明网桥
- 通过透明网桥,将多个局域网连接起来,硬件和软件不需要做任何变化。
- 透明网桥工作在混杂模式,接受所有的帧
- 当一个帧到达网桥时,它必须做出丢弃还是转发的决策。
- 决策通过在网桥内部的地址表中,查找目的MAC地址而做出的。
网桥的内部结构
当一个帧到达网桥时:
- 源地址是否有匹配:有->检查更新 / 没有->逆向学习
- 目的地址是否有匹配:有->转发 / 没有->广播
变化拓扑的适应
- 当网桥往表中加入记录时,必须要打时间戳,
- 如果收到帧的源地址在表中有记录,也要更新时间戳,
- 网桥需要周期性的扫描转发表,把超时的记录从表中面删除
网桥转发的原理
- 如果查到目的端口和源端口是相同,就会丢弃这一帧,
- 如果目的端口和源端口不同,就会转发这一帧,
- 如果这个目的地址没有在表里面查到,就会广播这一帧。
局域网交换机
结构与工作原理
- 泛洪广播 目的地址未知,或广播地址,除源端口外在其他所有的端口进行转发
- 转发 对于已经学习到的目的地址,直接转发到相应的端口。
- 过滤 目的地址和源地址所处的端口是相同的,将帧丢弃。
- 逆向学习 读取真的源地址和达到端口进行学习,补充更新转发表。
三种交换方式
- 直接交换方式
- 交换机只接收数据帧头部,检测目的地址,立即转发(无论帧是否出错)
- 帧出错检测由结点主机完成(延迟小,缺乏差错检测)
- 存储转发交换方式
- 交换机完整地接收数据帧,并检测差错。若帧正确,则根据帧目的地址确定输出端口,进行转发出
- 具有帧差错检测能力,延迟大
- 改进的直接交换方式(二者结合)
- 检查帧的长度是否够64个字节,如果小于64字节则丢弃(碎片帧);如果大于64字节,则转发。
- 不提供差错检测,但是出错的机会比直接转发小,数据处理速度比存储转发方式快
VLAN
- 一种网络服务(不是组网技术)
- 交换式局域网技术是实现VLAN基础(用户与局域网资源一种逻辑组合)
IPv6
IPv6地址使用128位地址
7.1 IPv6的优势与特点
优势
- 解决地址耗尽问题:IPv6采用128位的地址空间,几乎能够做到不受任何限制地提供IP地址。 “地球上的每一粒沙子都拥有一个IPv6地址”。
- 改善网络性能:IPv6数据包远远大于IPv4数据包的64KB,应用程序可以利用最大传输单元MTU获得更高效的数据传输速率
- 方便各项业务开展:充足的IPv6地址保证了通信终端都可以获得外网IP地址,无需NAT的中转
- 服务质量保证:负载均衡,实现优先级控制和服务质量保证
- 安全性更高:内置了安全机制IPSec,确保端到端通信的完整性和保密性
- 支持移动性:保证在通信不中断的情况下,漫游到其他网络
特点
- 新的协议头格式
- 巨大的地址空间
- 有效的分级寻址和路由结构
- 有状态和无状态的地址自动配置
- 内置的安全机制
- 更好地支持QoS
7.2 IPv6地址格式
冒分十六进制地址表示法
内嵌IPv4地址表示法
将IPv4地址嵌入于IPv6地址中,形式如下
\[ x: x: x: x: x: x:d.d.d.d \] 其前96位采用冒分十六进制表示,后32位地址使用IPv4的点分十进制表示。 例如: \[ ::192.168.0.1 与 ::FFFF:192.168.0.1 \]
IPv6前缀格式
- IPv6不支持子网掩码,它只支持前缀长度表示法
- 前缀是IPv6地址的一部分,用作IPv6路由或子网标识。其格式为: IPv6地址/前缀长度n,例如:60位前缀20010DB80000CD30,可以写为:2001:0DB8:0:CD30::/60
7.3 IPv6地址分类
IPv6地址主要分为:单播地址、组播地址、任意播地址
7.4 IPv6的分组结构
IPv6扩展头部的特点包括:逐跳选项报头、目的选项报头、路由选项报头、分段选项报头、认证选项报头、封装安全有效载荷报头。
扩展头部各字段含义
1. 逐跳选项报头(hop-by-hop option header)
2.目的选项报头(destination option header)
用于指定中间结点或目的结点的分组转发参数。有两种使用方式: (1)如果存在路由选项报头,那么目的选项报头指定每个中间结点都要转发或处理的选项。在这种情况下,目的选项报头出现在路由选项报头之前。 (2)如果不存在路由选项报头,或目的选项报头出现在路由选项报头之后,则目的选项报头指定在最后的路由结点要转发或处理的选项