计算机网络 学习笔记
1. 绪论
1.1 计算机网络在信息时代的作用
- 互联网基本特点:
- 连通性: 互联网上用户不管距离多远,都能通信,就像这些用户终端都彼此连通
- 共享性: 指资源共享,包含信息、软件、硬件等共享,就像资源在用户身边
- 连通性: 互联网上用户不管距离多远,都能通信,就像这些用户终端都彼此连通
- 计算机网络(网络)的组成:
- 由若干结点和连接这些结点的链路组成;
- 结点可以是计算机、集线器、交换机、路由器等
- 由若干结点和连接这些结点的链路组成;
1.2 因特网概述
我们先给出关于网络,互联网,因特网的一些最基本概念.
网络: 许多计算机连接在一起
互联网: Internet 许多网络连接在一起
因特网: Internet 全球最大的,开放的,有众多网络相互连接而成的计算机
1.3 因特网组成
从工作形式上分为两大块:
边缘部分 由互联网上的主机组成,是用户直接使用的部分,用来进行通信和资源共享.
核心部分 由大量网络和连接这些网络的路由器组成,是为边缘部分提供服务的,提供连通性和交换.
1.3.1 互联网的边缘部分
端系统:主机
计算机之间的通信:主机A上的进程与主机B上的进程进行通信
端系统间通信方式:
在往里边缘的端系统之间的通信方式可划分为两大类:客户-服务器方式(C/S方式) 和对等方式(P2P方式)
客户-服务器方式:
**概述: **是最常用与传统的方式,一方请求服务,一方提供服务,通信可以是单向的,也可以是双向的
客户和服务器:指通信中涉及的两个应用进程
主要特征:客户是服务请求方,服务器是服务提供方 主要特点:
- 客户程序:
- 用户调用后,在通信时主动向远地服务器发起通信(请求服务)。因此, 客户程序必须知道服务器程序的地址
- 不需要特殊的硬件和很复杂的操作
- 服务器程序
- 是一种专门提供服务的程序,可同时处理多个客户的请求
- 系统启动后即自动调用不断运行,被动等待接受客户的通信请求。因此,服务器程序不需要知道客户程序的地址
- 一般需要强大的硬件和操作系统支持
- 对等连接方式(P2P):
概述:两台主机不区分服务器和客户,只要都运行P2P软件,就可以进行平等对等连接通信,双方都可访问对方硬盘中的共享文档。可支持大量对等用户同时工作
- 客户程序:
1.3.2 互联网的核心部分
路由器的重要性:路由器是一种专用计算机,是实现分组交换的关键部件,其任务是转发收到的分组,这是网络核心部分最重要的功能
交换:按照某种方式动态分配传输线路的资源
三种交换方式:
电路交换
从通信资源的分配角度来看,交换(switching)就是按照某种方式动态地分配传输线的资源.在使用电路交换打电话之前,必须先拨号请求连接.
这种必须经过
建立连接(占用通信资源)
⇒通话(一直占用通信资源)
⇒释放资源(归还通信资源)
三个步骤的交换方式称为电路交换. 其一个重要特点:在通话的全部时间内,通话的两个用户是指占用端到端的通信资源.
分组交换
分组交换采用存储转发技术.把要发送的的整块数据称为一个报文(message).在发送之前,先把其分为一个个小的等长数据段.在每一个数据段前面加上一些必要控制信息组成的首部(header)后,就构成了一个分组(packet),其又称为包.
分组是在因特网中传送的数据单元,分组中的首部包含了如目的地址和原地址等重要信息,每一个分组才能在因特网中独立地选择传输路径,并最终正确地交付到分组传输的终点.
位于网络边缘的主机和网络核心部分的路由器都是计算机,但它们的作用却不一样.主机是为用户进行信息处理的,并且可以和其他主机通过网络交换信息.路由器是用来转发分组的,即进行分组交换的.
**优点: **
高效:在分组传输过程动态分配传输带宽,对通信链路逐段占用
灵活:为每个分组独立选择最合适的转发路由
迅速:以分组为单位传输,不用建立和释放连接
可靠:保证可靠性的网络协议;分布式多路由器的分组交换网,有很好的生存性
缺点:
分组在各路由器存储转发时需要排队,这就会造成一定时延.另外,各分组必须携带的控制信息也造成了一定的开销.
报文交换
整个报文先传送到相邻结点,全部存储下来后查找转发表,转到下一个结点.
1.4 计算机网络类别
按照网络的作用范围分类:
广域网(WAN):作用范围几十到几千公里,是互联网的核心部分,其任务是通过长距离运送主机所发送的数据,广域网各结点采用高速链路,有较大通信容量
城域网(MAN):作用范围一个城市,用来将多个局域网进行互联,多采用以太网技术
局域网(LAN):作用范围1 km左右,一般用微机或工作站通过高速通信线路相连
个人区域网(PAN):作用范围10 m左右,把个人工作的地方属于个人的设备用无线技术相连,也叫无线个人区域网(WPAN)
1.5 计算机网络性能
7个性能指标 速率、带宽、吞吐量、时延、时延带宽积、往返时间、利用率
1、速率
连接在计算机网络上的主机在数字信号道上传送数据位数的速率,单位b/s,Kb/s,Mb/s
2、带宽
计算机领域中,带宽来表示网络的通信线路传送数据的能力,表示单位时间内从网络中的某一点到另一点所通过的“最高数据率”
数据通信领域中,数字信道所传送的最高数据率单位b/s,Kb/s,Mb/s
3、吞吐量
即在单位时间内通过某个网络的数据量;单位b/s,Mb/s等
4、时延
是指数据从网络的一端传送到另一端所需的时间
(1)发送时延: 是主机或路由器发送数据帧所需要的时间 \( 发送时延=\frac{数据帧长度(b)}{发送速率(b/s)}=\frac{数据长度}{信道带宽} \) (2)传播时延: 是电磁波在信道中传播一定的距离需要发费的时间 \( 传播时延=\frac{信道长度(m)}{电磁波在信道上的传播速率(m/s)} \) (3)处理时延: 主机或路由器在收到分组是要花费一定的时间进行处理,例如分析分组的首部,从分组中提取数据部分.
(4)排队时延: 分组在经过网络传输时,要经过许多路由器.但分组在进入路由器后要先在输入队列中等待处理.在路由器确定了转发接口后,还要在输出队列中排队等待转发.这就产生了排队延时. \( 总时延=发送时延+传播时延+处理时延+排队时延 \) 5、时延带宽积 \( 时延带宽积=传播时延\times带宽 \) 表示这样的链路可容纳多少个比特.又称以比特为单位的链路长度
6、往返时间RTT
双向交互一次所需的时间;包含中间各结点的处理时延、排队时延、转发数据时的发送时延
7、利用率
信道利用率:指某信道有百分之几的时间是被利用的 \( 信道利用率:\frac{有数据通过时间}{(有+无)数据通过时间} \) 网络信道利用率:全网络的信道利用率的加权平均数
1.6 计算机网络体系结构
1.6.1 协议与划分层次
网络协议(协议):为进行网络中的数据交换而建立的规则、标准或约定
计算机网络体系结构:计算机网络各层及其协议的集合
网络协议的三要素:
- 语法:数据与控制信息的结构或格式
- 语义:需要发出何种控制信息,完成何种动作以及做出何种响应
- 同步:事件实现顺序的详细说明
分层的优点:
- 各层之间是独立的:某一层不需要知道下一次如何实现,只需要知道接口提供的服务
- 灵活性高:当一层发生变化时,只要保证接口不变,就能方便修改
- 结构上可分割:各层都可以采用最合适的技术实现
- 易于实现和维护:这种结构使实现和调试一个庞大复杂的系统更容易,因为整个系统以被分解成若干相对独立的子系统
- 促进标准化:因每一层的功能及其提供的服务都已精确说明
各层要完成的主要功能:
- 差错控制:使相应层次对等方的通信更可靠
- 流量控制:发送端的发送速率必须使接收端来得及接受
- 分段和重装:发送端将要发送的数据块划分为更小单位,在接收端将其还原
- 复用和分用:发送端几个高层会话复用一条低层的连接,在接收端再进行分用
- 连接建立和释放:交换数据前先建立一条逻辑连接,数据传送结束后释放连接
1.6.2 网络五层协议体系结构
OSI七层协议
应用层、表示层、会话层、传输层 、网络层 、数据链路层 、物理层
TCP/IP四层模型
应用层 运输层(TCP或UDP) 网际层IP 网络接口层
综合OSI和TCP/IP的优点,采用一种五层协议的体系结构
(1)应用层:
作用:通过应用进程间的交互来完成特定网络应用,应用层协议定义的是应用进程间通信和交互的规则
常见协议:DNS、HTTP、SMTP等
报文:应用层交互的数据单元
(2)运输层:
作用:负责向两台主机中进程之间的通信提供通用的数据传输服务,应用进程利用该服务传送应用层报文;通用指多种应用可以使用同一运输层服务;有复用和分用功能
分用和复用:复用是多个应用层进程可同时使用下面运输层的服务,分用是运输层把收到的信息分别交付上面应用层中的相应进程
主要协议:
- 传输控制协议TCP:提供面向连接的、可靠的数据传输服务,数据传输的单位是报文段
- 用户数据报协议UDP:提供无连接的、尽最大努力的数据传输服务,数据传输的单位是用户数据报
(3)网络层:
作用:负责为分组交换网上不同主机提供通信服务。在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组或包进行传送;选择合适路由,使运输层传下来的分组能通过网络中的路由器找到目的主机
主要协议:IP协议、多种路由选择协议
(4)数据链路层:
- 作用:负责两主机间链路上的传输;将网络层交下来的IP数据报组装成帧,在两个相邻结点间的链路上传送帧,帧中包含数据和必要的控制信息;在接收数据时,提取出数据部分交给网络层;通过控制信息监测差错,丢弃差错帧或纠正错误
(5)物理层:
- 作用:考虑用多大电压代表0或1,如何识别对方发送的比特;确定电缆插头的物理结构
2.物理层
2.1 物理层的基本概念
物理层的功能:怎样在连接各种计算机的传输媒体上传输数据比特流,屏蔽不同传输媒体和通信手段的差异
规程:用于物理层的协议
传输媒体接口的特性:
- 机械特性:接口所用接线器的形状和尺寸、引脚数目和排列、固定和锁定装置等
- 电气特性:接口电路的各条线上出现的电压范围
- 功能特性:某条线上出现某一电平电压的意义
- 过程特性:对于不同功能的各种可能事件的出现顺序
2.2 数据通信的基础知识
2.2.1数据通信系统模型
相关术语
消息:通信的目的是传送消息,如语音、文字、图像、视频等
数据:是运送消息的实体;使用特点方式表示的信息,通常是有意义的符号序列
信号:数据的电气或电磁表现
模拟信号(连续信号):代表消息的参数取值是连续的
数字信号(离散信号):代表消息的参数的取值是离散的
码元:代表不同离散数值的基本波形
2.2.2有关信道的基本概念
信道:一般表示一个方向传送信息的媒体。所以我们说平常的信道线路往往包含一条发送信息的信道和一条接收信息的信道
信息交互的方式:
单向通信(单工通信)——只能有一个方向的信号没有反方向的交互
双向交替通信(半双工通信)——通信的双方都可以发送信息,但不能双方同时发送(当然也就不能同时接收)
双向同时通信(全双工通信)——通信的双方可以同时发送和接收信息
基带型号和带通信号:
基带信号(即基本频带信号)——来自信号源的信号,像计算机输出的代表各种文字图像文件的数据信号都属于基带型号。基带信号就是发出来的直接表达了要传输信息的信号,比如我们说话的声波就是基带信号。
带通信号——把基带信号经过载波调制后,把信号频率范围搬移到较高的频段以便在信道中传输(即仅在一段频率范围内能够通过信道)
常用编码方式:
(1)不归零制:正电平代表1,负电平代表0
(2)归零制:正脉冲代表1,负脉冲代表0
(3)曼切斯特编码:位周期中心的向上跳变代表0,位周期中心的向下跳变代表1;也可反过来定义
(4)差分曼切斯特编码:在每一位的中心处始终都有跳变。位开始边界有跳变代表0,位开始边界没有跳变代表1
基本的带通调制方法:
(1)调幅:载波的振幅随基带数字信号而变化;如0或1分别对应无载波或有载波输出
(2)调频:载波的频率随基带数字信号而变化;如0或1分别对应频率f1或f2
(3)调相:载波的初始相位随基带数字信号而变化;如0或1分别对应于相位0度或180度
2.2.3 信道的极限容量
限制码元在信道上传输速率的因素:
信道能够通过的频率范围:
码间串扰:信号中高频分类受到衰减,在接收端收到的波形前沿和后沿不那么陡峭,每个码元所占时间界限不明确,失去了码元间的清晰界限的现象
奈氏准则:其给出了在假定的立项条件下,为了避免码间串扰,码元的传输速率的上限值在任何信道中,码元传输的速率是有上限的,传输速率超过此上限,都会出现严重的码间串扰问题,使接收端对码元的识别成为不可能
信噪比
信噪比就是信号的平均功率和噪声的平均功率之比,记为S/N.
\[ 信噪比(dB)=10\log_{10}\left(\frac{S}{N}\right)(dB) \]
香农公式指出:信道的极限信息传输速率C是 \( C=W\log_2\left(1+\frac{S}{N}\right) (bit/s) \) 其中,W为信道的带宽(以Hz为单位);S为信道内所传信号的平均功率,N为信道内部的高斯噪声功率
香农公式表明:信道的带宽或信道中的信噪比越大,信息的极限传输速率就越高
香农公式的意义在于:只要信息传输速率低于信道的极限传输速率,就一定可以找到某种方法来实现无差错的传输
2.3 物理层下面的传输媒体
传输媒体:**导引型传输媒体 **与 非导引型传输媒体
**导引型传输媒体 **
双绞线
同轴电缆
光纤
非导引型传输媒体
短波通信
无线电微波通信
2.4 信道复用技术
频分复用,时分复用,统计时分复用,波分复用,码分复用
频分复用
在分配到一定的频率后,在通信过程中自始至终都占用这个频带.
频分复用的所用用户在同样的时间占用不同的带宽资源(这里的带宽指的是频率带宽而不是数据的发送频率)
时分复用
是将时间划分为一段段等长的时分复用帧.每一个时分复用的用户在每一个TDM帧占用固定的时隙
时分复用的所有用户是在不同的时间占用同样的频带宽度
统计时分复用
是一种改进的时分复用,他能明显地提高信道的利用率
波分复用
原理:就是光的频分复用,使用同一根光纤同时传输多个光载波信号
码分复用 CDM(码分多址)
原理:各个用户使用进过特殊挑选的不同码型,因此彼此不会互相干扰
码片:每一个比特时间划分为m个短的间隔,称为码片
工作方式:每个站被指派一个唯一的mbit码片,若发送1,则发送自己的m bit码片,若发送0,则发送该码片的二进制反码
码片实现扩频:由于一个比特可转换成m个比特的码片,因此实际发送数据率提高了m倍
重要特点:每个站的码片必须各不相同,并相互正交
码片正交关系:不同码片正交,就是向量S和T的规格化内积为0,(规格化内积即对应为相乘)
正交关系的重要特征:任何码片与自己的规格化内积为1,与自己反码的规格化内积为-1
3.链路层
数据链路层使用的信道主要有以下两种类型:
(1) 点对点信道. 这种信道使用一对一的点对点通信方式
(2) 广播通信. 这种信道使用一对多的广播通信方式.
3.1 使用点对点信道的数据链路层
3.1.1 链路与数据链路和帧
链路与数据链路
链路(物理链路):从一个结点到相邻结点的一段物理线路,中间没有任何其他的交换节点
数据链路(逻辑链路):把实现了这些通信协议的硬件和软件加到链路上,就构成了数据链路(物理线路+协议)
网络适配器:既有硬件也包括软件,实现了通信协议,包括了数据链路层和物理层两层的功能
规程:数据链路层中,规程等同于协议
帧
帧:点对点信道数据链路层的协议数据单元
数据链路层通信时的主要步骤:
(1)结点A的数据链路层把网络层交下来的IP数据报添加首部和尾部封装成帧
(2)结点A把封装好的帧发送给结点B的数据链路层
(3)若结点B的数据链路层收到的帧无差错,则从收到的帧中提取IP数据报上交给网络层;否则丢弃这个帧
3.1.2.数据链路层的三个基本问题
封装成帧
封装成帧:就是在一段数据前后分别添加首部和尾部,确定帧的界限,然后就构成了一个帧
添加首部和尾部的作用:进行帧定界(确定帧的界限);包含许多必要的控制信息
帧长:帧的数据部分加上帧首部和帧尾部的长度
最大传送单元MTU:链路层协议规定的所能传送的帧的数据部分长度上限
帧格式:
帧界定的方法:可用特殊的帧定界符,在ACSCII码中,用SOH表示帧的首部开始,EOT表示帧的结束
帧界定的作用:判断收到的帧是否完整,不完整则丢弃
透明传输
透明传输:不管什么数据,都能完整无差错的通过这个数据链路层,数据链路层对数据没有妨碍,数据链路层对数据时透明的
透明传输中的问题:若数据中的某个字节的二进制代码恰好组成了帧界定符,就会出现错误
解决方法:字节填充,在控制字符和特殊字符前插入一个转义字符
ESC
,而真正的首部和尾部前不加差错检测
在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率(BER)
为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施.目前在数据链路层广泛使用了循环冗余检验CRC的检测技术.
循环冗余校验(CRC)原理:
在发送端,先把数据划分为组,假定每组k个比特,若传输一组数据M=101001(k=6),在M后添加供差错检测用的n位冗余码后一起发送,共发送(k+n)位,接收方用收到的数据除P,若余数为0则表示没有差错
冗余码计算方法:在M后面添加n个0,得到(k+n)位的数除以选定好的除数p,得出商Q,余数R,将余数R作为冗余码,添加到M后
帧校验序列(FCS):为差错检验而添加的冗余码;就是计算后得到的余数R
生成多项式:一种方便的表示循环冗余校验过程的方法
CRC的局限性:只能实现无比特差错,不能实现无传输差错,只能判断收到的数据是否正确,其余均无法判断,并不是可靠传输
3.2 点对点协议PPP
PPP协议就是用户计算机和ISP进行通信时所使用的数据链路层协议.
PPP协议应满足的需求:
(1)简单
(2)封装成帧
(3)透明性
(4)多种网络层协议
(5)多种类型链路
(6)差错检验
(7)检测连接状态
(8)最大传送单元
(9)网络层地址协商
(10)数据压缩协商
PPP协议的组成:
(1) 一个将IP数据报封装到串行链路的方法.
(2) 一个用来建立,配置和测试数据链路连接的链路控制协议LCP
(3) 一套网络控制协议NCP,其中每一个协议支持不同的网络层协议,如IP,OSI的网络层,DECnet,以及AppleTalk等.
PPP协议的帧格式
各字段的意义
首部和尾部分别为4个字段和2个字段
标志字段F:规定为0x7E,表示一个帧的开始或结束,就是帧的定界符
地址字段A:规定为0xFF
控制字段C:规定为0x03
协议字段:
(1)当协议字段为0x0021时,PPP帧的信息字段就是IP数据报。
(2)当协议字段为0xC021时,PPP帧的信息字段就是PPP链路控制协议LCP的数据。
(3)当协议字段为0x8021时,PPP帧的信息字段就是网络层的控制数据。
信息字段:长度可变,不超过1500字节
帧减压序列FCS:CRC中使用的冗余码
异步传输-字符填充:
当PPP使用异步传输时,它把转移符定义为0x7D,并使用字节填充。
RFC1662规定了如下填充方法:
(1)把信息字段中出现的每一个0x7E字节转变为2字节序列(0x7D,0x5E)。
(2)若信息字段中出现一个0x7D的字节(即出现了和转义字符一样的比特组合),则把转义字符0x7D转变为2字节序列(0x7D,0x5D)。
(3)若信息字段中出现ASCII码的控制字符(即数值小于0x20的字符),则在该字符前面要加入一个0x7D字节,同时将该字符的编码加以改变。例如,出现0x03(在控制字符中是“传输结束”ETX)就要把它转变为2字节序列的(0x7D,0x31)。
由于在发送端进行了字节填充,因此在链路上传送的信息字节数就超过了原来的信息字节数。但接收端在接收到数据后再进行与发送端字节填充相反的变换,就可以正确地恢复出原来的信息。
- 同步传输-零比特填充:
当PPP使用同步传输时,使用零比特填充。
零比特填充的具体方法:
(1)在发送端先扫描整个信息字段(通常使用硬件实现,但也可以用软件实现,但是会慢一些)。
(2)只要发现有5个连续的1,则立即填入一个0。
(3)接收端在收到一个帧时,先找到标志字段F以确定帧的边界,接着再用硬件对其中的比特流进行扫描,每当发现5个连续1时,就把5个连续1后的一个0删除,以还原成原来的信息比特流。
因此通过这种零比特填充后的数据,就可以保证在信息字段中不会出现连续6个1。
PPP协议的工作状态
3.3 使用广播信道的数据链路层
3.3.1局域网的数据链路层
局域网最主要特点是:网络为一个单位所有拥有,且地理范围和结点数目均有限.
局域网具有如下的一些主要优点:
- 具有广播功能,从一个站点点可很方便地访问全网.局域网上的主机可共享连接在局域网上的各种硬件和软件资源.
便于系统的扩展和逐渐地演变,各设备的位置灵活调整和改变
提高了系统的可靠,可用性好生存性.
以太网的两个标准:DIX Ethernet V2;IEEE 802.3
适配器的作用:
网络适配器又被称为网卡,包含了数据链路层和物理层两层的功能
适配器的重要功能:(1)进行串行\并行转换、(2)对数据进行缓存、(3)在计算机的操作系统安装设备驱动程序、(4)实现以太网协议
计算机通过适配器和局域网通信:
3.3.2 CDSMA/CD协议
为使通信简便采取的措施:
(1)采用无连接工作方式,不必先建立连接就可以直接发送数据;适配器对数据帧不编号,不要求发回确认;因此,以太网提供尽最大努力交付,是不可靠交付;收到差错帧则丢弃,是否重传由高层决定,和以太网无关;同一时间只允许一台主机发送数据;使用CSMA/CD协议
(2)发送的数据使用曼切斯特编码
CSMA/CD协议要点:
(1)多点接入:说明是总线型网络
(2)载波监听:检测总线上有没有其他计算机也在发送;每个主机必须不停的检测信道,发送前检测是为了获得发送权,发送中检测是为了及时发现碰撞
(3)碰撞检测:边发松边监听,也叫冲突检测;发生碰撞就立即停止发生,等待一段随机时间后再次发送
以太网使用的协议是CSMA/CD,意思是载波监听多点接入碰撞检测
“多点接入”:表示许多计算机以多点接入的方式连接在一根总线上
“载波监听”:每一个站在发送数据之前先要检测一个总线上是否有其他计算机在没发送数据,如果有,则暂时不要发送数据,以免发生碰撞.就是用电子技术检测总线上有没有其他计算机发送的数据信号.
“碰撞检测”:就是计算机边发送数据边检查信道上的信号电压变化情况
争用期
最先发送数据的站,在发送数据帧后之多经历2τ(两倍的端到端往返传播时延)就可以知道发送的数据帧是否遭到了碰撞
经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发送碰撞.
4. 以太网的争用期
- 以太网的端到端往返时间时延2τ称为争用期,或碰撞窗口.通常,取51.2微秒为争用期的长度.
- 对于10Mb/s以太网,在争用期内可发送512bit,即64字节.
以太网在发送数据时,若前64字节未发生冲突,则后续的数据就不会发送冲突.
- 以太网的二进制指数类型退避算法
发生碰撞的站在停止发送数据后,要推迟(退避)一个随机时间在发送数据.
确定基本退避时间,一般是取争用期2τ
定义参数k
K=Min[重传次数,10]
从整数集合[0,1,…,(2k-1)]中随机地取一个数,记为r.重传所需的时延就是r倍的基本退避时间
当重传16次仍不能成功时即丢弃该帧,并向高层报告.
以太的网信道利用率
以太网信道的利用率:由于会发生碰撞,实际利用率达不到100%
成功发送一个帧占用信道的时间:$T_0+\tau$
参数a是单程端到端时延τ与帧的发送时间T0之比
\[ a=\frac{\tau}{T_0} \]
$a\rightarrow0$表示一发生碰撞就能立即检测出来并停止发送,而a越大,争用期占比越大,使信道利用率降低
因此a的值越小越好;当数据率一定时,以太网连线的长度受到限制,同时以太网的帧长不能太短
- 极限信道利用率Smax:
\[ S_{max}=\frac{T_0}{T_0+\tau}=\frac{1}{1+a} \]
只有参数a远小于1才能得到尽可能高的极限信道利用率
以太网的MAC层
MAC地址:
定义:又叫物理地址或硬件地址;就是适配器的标识符,用48位二进制数来标识网卡的硬件地址,表示为6个16进制数,在局域网内具有唯一性
I/G位:地址字段第一个字节的最低位;为0表示单个站地址、为1表示组地址,用来进行多播
G/L位:地址字段第一个字节的最低第二位;为0表示全球管理、为1表示本地管理
MAC帧格式:
以太网数据帧长度:64~1518
各字段含义:
类型:用来标志上一层使用的是什么协议
数据:长度在46~1500字节
FCS:帧检验序列,使用CRC检验
填充字段:当数据字段长度小于46字节时,MAC子层会在数据字段后面加入一个整数字节的填充字段,以保证MAC帧长不小于64字节
插入的8字节:从MAC子层传到物理层时要在帧前插入8字节,由硬件生成
前同步码:7字节;使接收端的适配器在接收MAC帧时能迅速调整时钟频率,使其和发送端时钟同步
帧开始定界符:定义为10101011;用来表示帧开始
无效的MAC帧:
(1)帧的长度不是整数个字节
(2)用收到的帧检验序列FCS查出差错
(3)收到的帧的MAC客户数据长度不在46至1500字节之间,或MAC帧长度不在64~1518
3.4扩展以太网
在数据链路层扩展以太网要使用网桥.网桥工作在数据链路层,它根据,MAC帧的目的地址对收到的帧进行转发和过滤.当网桥收到一个帧时,并不是向所有的接口转发此帧,而是先检查次真的目的MAC地址,然后再确定将该帧转发到哪一个接口,或者把它丢弃(即过滤)
使用网桥可以带来以下好处:
(1) 过滤通信量,增加吞吐量
(2) 扩大了物理范围
(3) 提高了可靠性
(4) 可互联不同的物理层,不同MAC子层和不同速率
透明网桥:是指以太网上的站点并不知道所发送的帧将经过哪几个网桥,以太网上的站点都看不见以太网上的网桥.
4.网络层
4.1 网络层提供两种服务
网络层关注的是如何将分组从源端沿着网络路径送达目的地.
在计算机网络领域,网络层应该向运输层提供怎样的服务(“面向连接”还是”无连接”)曾引起了长期的争论.
争论点的实质就是:在计算机通信中,可靠交付应当由谁来负责?是网络层还是端系统?
两种服务:网络层应该向运输层提供怎样的服务?
虚电路服务
数据报服务
虚电路:
虚电路表示这只是一条逻辑上的连接,分组都沿着这条逻辑连接存储转发方式传送,而并不是真正建立了一条物理连接.
请注意,电路交换的电话通信是先建立了一条真正的连接.因此分组交换的虚连接只是类似,但并不完全一样.
数据报服务
网络层向上只提供简单灵活的,无连接的,尽量大努力交付的数据报服务.(虽然并不表示路由器可以任意丢弃分组,但在网络层上的这种交付实质上就是不可靠交付.)
网络在发送分组时不需要先建立连接.每一个分组(即IP数据报)独立发送,与其前后的分组无关(不进行编号)
网络层不提供服务质量承诺.即所传送的分组可能出错,丢失,重复和失序(既不按序到达终点)当然也不保证分组交付的时限
4.2 网际协议
与IP配套使用的三个协议:
地址解析协议ARP
网际控制报文协议ICMP
网际组管理协议IGMP
4.2.1 虚拟互联网络
虚拟互联网络:逻辑互连的网络,可以由多种异构网络互连组成,在网络层上看起来像一个统一的网络
中间设备:用来将网络互相连接
(1)物理层的中间设备:转发器
(2)数据链路层的中间设备:网桥
(3)网络层的中间设备:路由器
(4)网络层以上的中间设备:网关
4.2.2 IP地址分类
IP地址的编址方法:
分类的IP地址:是最基本的编址方法
子网的划分:对最基本编址方法的改进
构成超网:比较新的无分类编址方法
IP的划分:
将IP地址划分为若干个固定类,每一类地址都由网络号(net-id)和主机号(host-id)构成
一个IP地址再整个互联网范围内是唯一的,A、B、C类地址都是单播地址,D类地址用于多播
IP地址的记法:点分十进制记法
常用的三类IP地址:
A类:
最大可指派网络数:126(27-2) 8位除去1个固定位剩7位,减2因为要除去全0和全1位
第一个可指派的网络号:1
最后一个可指派的网络号:126
每个网络中最大主机数:16777214(224-2(网络地址+广播地址))
B类:
最大可指派网络数:16383(214-1) 16位除去2个固定位,减1因为有两个固定位为10,
所以不存在 全0或全1,但规定128.0.0.0不使用,所以减去
第一个可指派的网络号:128.1
最后一个可指派的网络号:191.255
每个网络中最大主机数:65534(216-2(网络地址+广播地址))
C类:
最大可指派网络数:2097151(221-1) 24位除去3个固定位,减1同B类,192.0.0.0规定不使用
第一个可指派的网络号:192.0.1
最后一个可指派的网络号:223.255.255
每个网络中最大主机数:254(28-2(网络地址+广播地址))
- IP地址的指派范围:
网络类别 | 最大网络数 | 第一个可用的网络号 | 最后一个可用的网络号 | 每一个网络中最大的主机数 |
---|---|---|---|---|
A | 126(27-1) | 1 | 126 | 16777214 |
B | 16383(214-1) | 128.1 | 191.255 | 65534 |
C | 2097151(221-1) | 192.0.1 | 223.255.255 | 254 |
特殊的几个地址
127.0.0.1 本地环回地址
169.254.0.0 Windows自己给自己配的地址
保留的私网地址(在互联网上没有给服务器来用,可以给企业,政府,学校来用)
10.0.0.0 (每一个学校都可以用10网段,因为学校与学校之间也并不打算通信)
172.16.0.0 ----- 172.31.0.0
192.168.0.0 ---- 192.168.255.0
4.2.3 地址解析协议ARP
IP地址与MAC地址:源IP地址和目的IP地址始终不变;而源MAC地址和目的MAC地址在每条链路上都要变化
作用:从网络层使用的IP地址,解析出在数据链路层使用的硬件地址
工作方式:每个主机里都设有一个ARP高速缓存,里面有所在局域网上各主机和路由器的IP地址到硬件地址的映射表,且这个映射表经常动态更新
工作流程:当主机A向局域网上某个主机B发送IP数据报时,先在ARP高速缓存中查看有无主机B的IP地址,若有,就可查出对应的硬件地址,反之,执行ARP请求分组:
(1)ARP请求分组:在局域网广播一个ARP请求分组,包含发送方硬件地址,发送方IP地址,目的方硬件地址(未知时填0),目的方IP地址
(2)本地广播ARP请求,路由器不转发ARP请求
(3)ARP响应分组:某主机收到广播,发现本机IP与查询IP一致,就回复ARP响应分组,包含发送方硬件地址,发送方IP地址;同时将请求分组中IP与硬件地址对应关系保存
(4)收到回复的ARP响应分组后,将对应IP和硬件地址存入ARP高速缓存中,方便下次使用
生存时间:ARP高速缓存中每条映射都只存在一段时间,超过时间后就被删除
特点:
ARP协议只解决同一局域网上IP地址和硬件地址映射问题,不在同一局域网则无法解决
ARP工作过程对用户来说是透明的
四种使用ARP的典型情况:
(1)发送方是主机,要把IP数据报发送到本网络上的一个主机,这时ARP找到目的主机的硬件地址
(2)发送方是主机,要把IP数据报发送到另一个网络上的一个主机,这时ARP找到本网络上的一个路由器的硬件地址,剩下的工作由这个路由器完成
(3)发送方是路由器,要把IP数据报发送到本网络上的一个主机,这时ARP找到目的主机的硬件地址
(4)发送方是路由器,要把IP数据报发送到另一个网络上的主机,这时ARP找到本网络上的一个路由器的硬件地址,剩下的工作由这个路由器完成
4.2.4 IP数据报格式
首部各字段含义:
1.版本:占4位,说明该IP数据报使用的IP协议的版本,通信双方必须使用同一个IP协议版本
2.首部长度:占4位,长度20~60字节,因为IPv4中首部存在可变部分,所以需要指出首部的长度以划分首部与数据部分;以4字节为单位,不是4的整倍数时要填充至整倍数
3.区分服务:占8位,只在区分服务时才起作用,一般不用
4.总长度:占16位,说明该IP数据报的总长度(首部+数据)。IP数据报封装为MAC帧时受限于MAC帧的长度上限,所以IP数据报还存在“分片”操作,即将IP数据报分为多片,封装进多个MAC帧。因此IP数据报最大长度216-1=65535字节
5.标识:占16位,IP数据报若存在分片,则接收方需要将各分片组合出原IP数据报,相同标识号的IP数据报就说明它们其实是同一个源IP数据报。
6.标志:占3位,目前只有前两位有意义,最低位为MF(More Fragment),若MF=1则说明该数据报后面“还有分片”。中间一位为DF(Don't Fragment),若DF=1则不能分片,只有DF=0才可以分片
7.片偏移:占13位,用于说明该IP数据报(已分片)在源IP数据报中的相对位置(相对于数据字段的起点),单位是8字节,每个分片一定是8字节的整倍数
8.生存时间:IP分组在网络中传递时有可能出现“兜圈子”的情况,所以需要对IP数据报进行一定的限制,生存时间的单位是“跳数”,最大值为255,每经过一个路由器,路由器便将IP数据报的生存时间-1,当IP数据报中的生存时间为0时,路由器丢弃该分组。
9.协议:说明该IP数据报的上层协议类型,如IP对应4,TCP对应6,UDP对应17
10.首部校验和:验证首部是否存在传输错误,只检验首部,不包括数据部分
11.源地址
12.目的地址
13.可变部分:长度为1~40字节,IP地址中的可变部分可用于支持很多操作,但很多情况都用不上,而且会增加路由器处理分组的开销,所以IPv6中的数据报首部做成了固定长度
4.2.5 IP层转发分组的流程
每个路由器路由表表项数:每有一个网络就要有一个路由表项
接口所在网络为直连网络:直接交付
特定主机的路由:给特定主机指定路由表,通过指定路线访问目标主机
默认路由:可以减少路由表所占用的空间和搜索路由表所用的时间,将不在路由表中的网络都连向默认路由
路由表:只有目标网络和对应的下一跳地址,并不储存到某个网络的完整路径
- 分组转发算法:
(1)从数据报的首部提取目的主机的IP地址D,得出目的网络地址为N
(2)若N就是与此路由器直接相连的某个网络地址,则进行直接交付,不需要再经过其他的路由器,直接把数据报交付给目的主机(这里包括把目的主机地址D转换为具体的硬件地址,把数据报封装为MAC帧,再发送此帧)否则就要执行(3)进行间接交付
(3)若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器,否则执行(4)
(4)若路由表中有到达网络N的路由,则把数据报传送给路由表中所指明的下一跳路由器,否则执行(5)
(5)若路由表中有一个默认路由,则把数据报传送给路由表中所指明的下一跳路由器,否则执行(6)
(6)报告转发分组出错。
4.2.6 划分子网和构造超网
1. 子网掩码的概念及作用
子网掩码又叫网络掩码,地址掩码,它是一种用来指明一个IP地址的哪些位标识的主机所在的子网以及哪些是主机的位掩码,长度为32位,原IP中网络号和子网部分置为1,主机号部分置为0
(IP地址)and(子网掩码)=网络地址
默认子网掩码:在不进行子网划分时,也要给出子网掩码,就用默认子网掩码
子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分
假如一台计算机的IP地址配置为172.16.122.204,子网掩码为255.255.0.0,将其IP地址和子网掩码都写成二进制,进行与运算.这样经过IP地址和子网掩码做完与运算后主机位不管是什么值都归零,网络位的值保持不变,这样就得到该计算机所处的网段为172.16.0.0
得到计算机所处网段和目标地址是不是在一个网段,如果是的话,计算机就想直接解析对方计算机MAC地址(即把数据报给发过去),如果不一样,就把数据包发给路由器.
子网划分
划分子网的基本思路:借用主机号若干位作为子网地址
划分子网后的IP地址:| 网络号 | (子网) | 主机号 |
子网划分方法
- 固定长度划分:所划分的所有子网的子网掩码都是相同的,取所用最大的主机数进行划分
- 变长划分:根据需求灵活划分
超网(CIDR)
概述:它最最主要的一点是消除了A,B,C类地址和划分子网的概念.它重新将IP地址划分为两个部分即,”网络前缀”和”主机号”.注意这里的网络前缀再也没有位数的限制,即没有A,B,C类之分.
CIDR的主要特点:
- 消除了传统A、B、C类地址及划分子网的概念,重新将IP地址划分为两个部分即,”网络前缀”和”主机号”.注意这里的网络前缀再也没有位数的限制,即没有A,B,C类之分.
- 把网络前缀相同的连续IP地址组成一个CIDR地址块,只要知道任一个地址,就可以知道这个地址块的起始地址和最大地址以及地址数
CIDR地址块的划分:
最长前缀匹配
用收到的目的地址与路由表中的每条掩码依次相与,取最长前缀匹配项的地址作为下一跳
因为前缀越长,其地址块就越小,因而路由就越具体
二叉线索树
将路由表中各IP地址构成一个01字典树,也称为二叉线索树,能极大优化路由表匹配过程
4.2.7 网际控制报文协议ICMP
ICMP简介
为了提高IP数据交付成功的机会,在网际层使用了网际控制报文协议
ICMP允许主机或路由器报告差错情况和提供有关异常的报告
ICMP报文作为IP层数据报的数据,加入数据的首部,组成IP数据报发送出去
- ICMP报文格式
ICMP报文的前4个字节是统一的格式,共有三个字段:即类型,代码和检验和.接着4个字节的内容与ICMP的类型有关.
- ICMP报文类型
ICMP报文的类型有两个,即ICMP差错报和IMP询问报文
ICMP报文的应用
PING命令诊断网络故障
路由探测
4.2.8 动态路由协议
分层次的路由选择协议:互联网采用分层次的路由选择协议,自适应的(动态的)、分布式路由选择协议
路由选择协议分类:
内部网光协议IGP:在一个自治系统内部使用。如RIP、OSPF协议
外部网光协议EGP:在不同自治系统之间使用。如BGP协议
- RIP协议
概述:是一种分布式,基于距离的路由选择协议
距离:直连网络距离为1,每过一个非直连网络距离加1,距离也称为跳数,每经过一个路由器跳数就加1,距离实际上指最短距离
工作流程:每个路由器每隔一段时间向外广播,每个路由器收到广播后更新自己的路由表
刚开始时只知道直连网络的距离,路由表为空,以后,每个路由器只和数目有限的相邻路由器交互并更新路由信息,经过若干次更新后,所有路由器最终会知道到达本自治系统其他路由器的最短距离和下一跳地址,此时称该网络收敛
RIP协议的特点:
仅和相邻路由器交换信息,不相邻的路由器不交换信息
交换的信息是当前本路由器所知道的全部信息,即其现在的路由表
按固定时间间隔交换信息
距离向量算法:
(1)路由器收到地址为X的相邻路由器的一个RIP报文,修改报文中所有项目,把下一跳地址改为X,把距离字段值都+1
(2)对修改后的RIP报文中的每个项目重复以下步骤
若项目中目的地址不在路由表中,则加入路由表;
若下一跳给出的路由器地址与RIP报文传来地址相同,则用收到的项目替换原路由表中的项目
若收到项目中的距离小于路由表中的距离,进行更新
(3)若超过3分钟未收到相邻路由信息,则将其标记为不可达,即把距离置为16
(4)返回
RIP协议报文格式:
各字段含义:
命令:指出报文的意义;1表示请求路由信息,2表示对请求路由信息的响应或路由更新报文
地址族标识符:标志所使用的的地址协议;如IP地址就置为2
路由标记:填入自治系统号,因为RIP可能受到本自治系统以外的路由选择信息
RIP协议优缺点
优点:实现简单,开销较小
缺点:限制了网络的规模,出故障时传播时间较长
- OSPF协议
主要特征:使用分布式的链路状态协议,而不像RIP使用距离向量协议
OSPF的要点:
- (1)向本自治系统中所有路由器发送信息。使用洪泛法,向所有相邻路由发送信息,每个相邻路由又再将此信息发给所有相邻路由
- (2)发送信息就是与本路由器相邻的所有路由器的链路状态,说明与哪些路由相邻,以及该链路的
度量
;而不是发生路由表 - (3)只有当链路状态发生变化时,才使用洪泛法发生信息;不是定期更新
OSPF报文:
OSPF报文的5种分组类型:
类型1:问候分组;
类型2:数据库描述分组;
类型3:链路状态请求分组;
类型4:链路状态更新分组,用泛洪法对全网更新链路状态;
类型5:链路状态确认分组
指定路由器法:指定一个代表路由器,将信息都传送给指定的路由,再由其向其他路由器转发,减小网络上的通信量
外部. 网关协议EGP
EGP协议的作用:寻找一条能够到达目的网络且比较好的路由,不一定是最佳路由,采用路径向量路由选择协议
4.2.9 路由器的构成
路由器:路由器是一种由多个输入端口和多个输出端口的专用计算机
路由器两大部分:
路由选择部分:路由选择处理机,路由选择协议,路由表
分组转发部分:交换结构,一组输入端口,一组输出端口
转发与路由选择:转发根据转发表,转发表由路由表而来,路由选择根据路由表,路由表由路由选择协议及相关算法而来
分组丢弃:由于没有足够存储空间
交换结构:交换结构是路由器的关键部件、把分组从一个输入端口转到一个输出接口
4.2.10 IPV6
IPv6主要变化:
更大的地址空间:将地址从32位增大到128位
扩展的地址层次结构
灵活的首部格式:定义了很多可选的扩展首部
改进选项:允许数据报包含有选项的控制信息,其选项放在有效载荷中
允许协议继续扩充
支持即插即用:自动配置,不需要使用DHCP
支持资源的预分配
首部改为8字节对齐
IPv6数据报格式:
首部长度固定位40字节
基本首部:
各字段含义:
版本:占4位。指明协议的版本
通信量类:占8位。为了区分不同的IPv6数据报的类别或优先级
流标号:占20位。标明数据报所属的流,在流经过的路径上的路由器都保证服务质量
有效载荷长度:占16位。指明除基本首部外的字节数,最大值是64KB
下一个首部:占8位。相当于IPv4的协议字段或可选字段。当没有扩展首部时,指明首部后面的数据应交付IP上层哪个协议;有扩展首部时,就标识后面第一个扩展首部的类型
跳数限制:占8位。防止数据报在网络中无限期存在,最大255跳,每转发一次就-1,为0就将这个数据报丢弃
源地址:占128位。是数据报发送端的IP地址
目的地址:占128位。是数据报接收端的IP地址
IPv6地址的表示
- 冒号16进制记法:用8段,每段4个16进制数组成,允许将数据前的0省略
例:68E6:8C64:FFFF:FFFF:0:1180:FFFF:FFFF
- 零压缩:一串连续的零可用一对冒号所代替,在一个地址中只能使用一次,若多次压缩将导致地址无法还原
例:FF05:0:0:0:0:0:0:0:03 => FF05::03
- 点分十进制记法的后缀:可将IPv4地址前添加6组0,使其变成IPv6的地址
例:0:0:0:0:0:0:128.10.2.1 = ::128.10.2.1
IPv6地址分类:
4.3 虚拟专用网和NAT
虚拟专用网VPN
概述:用于机构内部的通信,而不是用于和网络外非本机构的主机通信,但没有真正使用通信专线,VPN只是在效果上和真正的专用网一样
VPN的构建:
所有通过互联网传送的数据都必须加密,要构建VPN必须为它的每一个场所配置专门的硬件和软件,使每一个场所的VPN系统都知道其他场所的地址
网络地址转换NAT
要在路由器上安装NAT软件,装有NAT软件的路由器称为NAT路由器,它至少有一个有效的外部全球IP地址,所有使用本地地址的主机在和外界通信时,都要在NAT路由器上将其本地地址转换为全球IP地址,才能和互联网连接
网络转换的过程:
在内部主机与外部主机通信时,在NAT路由器上进行了两次转换
离开专用网时:替换源地址,将内部地址替换为全球地址
进入专用网时:替换目的地址,将全球地址替换为内部地址
5.运输层
5.1 运输层协议概述
运输层功能
- 运输层为应用进程之间提供端到端的逻辑通信(但网络层是为主机之间提供逻辑通信)
- 运输层还要对收到的报文进行差错检测
- 运输层需要有两种不同的运输协议,即面向连接的 TCP 和无连接的 UDP
2.运输层的两个主要协议
- 用户数据报协议 UDP(User Datagram Protocol)
- 传输控制协议 TCP(Transmission Control Protocol)
UDP 在传送数据之前不需要先建立连接。对方的运输层在收到 UDP 报文后,不需要给出任何确认。虽然 UDP 不提供可靠交付,但在某些情况下 UDP 是一种最有效的工作方式。
TCP 则提供面向连接的服务。TCP 不提供广播或多播服务。由于 TCP 要提供可靠的、面向连接的运输服务,因此不可避免地增加了许多的开销。这不仅使协议数据单元的首部增大很多,还要占用许多的处理机资源。
3.运输层的端口
- TCP/IP的运输层的端口用一个 16 位端口号进行标志 端口号只具备本地意义,即端口号只是为了标志本计算机应用层中的各进程。
客户发起通讯请求时,必须先知道对方服务器的IP地址和端口号,运输层的端口号分为下面三大类:
熟知端口号,数值一般为 0~1023。 一些常用的数值端口号:
FTP 21 LELNET 23 SMTP 25 DNS 53 TFTP 69 HTTP 80 SNMP 161 SNMP(trap) 162
登记端口号,数值为1024~49151,为没有熟知端口号的应用程序使用的。
客户端口号或短暂端口号,数值为49152~65535,留给客户进程选择暂时使用。
5.2 用户数据报协议 UDP
1.UDP的主要特点:
UDP 是无连接的,即发送数据之前不需要建立连接。
UDP 使用尽最大努力交付,即不保证可靠交付,同时也不使用拥塞控制
UDP 是面向报文的
UDP 没有拥塞控制,很适合多媒体通信的要求。
UDP 支持一对一、一对多、多对一和多对多的交互通信
UDP 的首部开销小,只有 8 个字节
5.3 传输控制协议 TCP
1.TCP的主要特点:
TCP 是面向连接的运输层协议
每一条 TCP 连接只能有两个端点(endpoint),每一条 TCP 连接只能是点对点的(一对一)
TCP 提供可靠交付的服务
TCP 提供全双工通信
面向字节流
TCP与UDP在发送报文时所采用的方式完全不同。TCP具体发送的报文由接收方给出的窗口值和当前网络拥塞的程度来决定一个报文段包含多少字节。而UDP发送的报文长度由应用进程给出。
5.4 可靠传输的工作原理
理想传输条件:
传输信道不产生差错
不管发送方以多快的速度发送数据,接收方总是来得及处理收到的数据
1.停止等待协议:
停止等待:每发送完一个分组就停止发送,等待对方确认,在收到确认后再发送下一个分组
(1)无差错情况:
(2)出现差错:
A只要超过一段时间每收到确认,就默认发送的分组丢失而重传之前的分组,就是超时重传
注意:
(1)A发送完一个分组后,必须暂时保留已发送分组的副本,只有在收到相应确认后才删除
(2)分组和确认都需要编号,才能明确哪个分组收到确认,哪个没收到
(3)超时计时器的重传时间应比数据在分组传输的平均往返时间更长一些
(3)确认丢失和确认迟到:
确认丢失:
确认迟到:
2.连续ARQ协议
发送方维持发送窗口,位于发送窗口内的分组都可以连续发送出去,而不需要等待对方确认,这样信道利用率就提高了
工作原理:
ARQ规定,发送方每收到一个确认,就把发送窗口滑动一个分组位置,接收方采用累积确认方式,在收到几个分组后,对按序到达的最后一个分组发送确认
优点:容易实现,确认丢失也不必重传
缺点:不能向发送方反映出接收方已经正确收到的所有分组信息
5.5 TCP报文段的首部格式
**首部格式:**
(1)源端口和目的端口:各占2字节,分别是源端口号和目的端口号
(2)序号:占4字节,TCP中传输的数据流中的每一字节都有一个编号。序号字段的值是本报文段所发送的数据的第一个字节的序号
(3)确认号:占4字节,是期望收到对方下一个报文段的第一个数据字节的序号
确认号=N,则表明到序号N-1为止所有数据都正确收到
(4)数据偏移:占4位,指出TCP报文段的数据起始处距离TCP报文段的起始处有多远
(5)保留:占6位,保留为今后使用
(6)紧急URG:当URG=1时,表明紧急指针字段有效,告诉系统此报文中有紧急数据,应尽快传送,而不采用原来的按排队顺序来传送
(7)确认ACK:当ACK=1时确认号字段有效,TCP规定,在连接建立后所有数据报文段都把ACK置为1
(8)推送PSH:当收到PSH=1的报文时,就尽快交付接收应用进程,而不再等到整个缓存都填满后再向上交付
(9)复位RST:当RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后重新建立连接
(10)同步SYN:在连接建立时用来同步序号;当SYN=1而ACK=0时,表明这是一个连接请求报文,对方若同一建立连接,则应在响应报文中使SYN=1,ACK=1
(11)终止FIN:用来释放一个连接,当FIN=1时,表示此报文段的发送方已经发送完毕,并要求释放连接
(12)窗口:占2字节,指的是发送本段报文段的一方的接收窗口,窗口值作为接收方让对方设置其发送窗口的依据;窗口字段明确指出了现在允许对方发送的数据量,窗口值经常动态变化
(13)校验和:占2字节,检验和字段检验的范围包括首部和数据两部分
(14)紧急指针:占2字节,在URG=1时才有意义,指出本报文段中的紧急数据的字节数
(15)选项:长度可变,最长40字节
最大报文段长度(MSS):
是每一个TCP报文段中的数据字段的最大长度,并不是整个TCP报文段的最大长度,是TCP报文段长度-TCP首部长度
5.6 TCP可靠传输的实现
1.以字节为单位的滑动窗口:
根据B给出的窗口值,A构造自己的发送窗口
发送窗口表示:在没有收到B的确认时,A可以连续把窗口内的数据都发送出去
发送窗口中的序号表示允许发送的序号,窗口越大,发送方就可以在收到对方确认前连续发送更多的数据,因此可能获得更高的传输效率
收到新的确认后发送窗口前沿向前移动,没有收到新的确认或收到新的确认但对方通知的窗口缩小了,会使发送窗口前沿不动
TCP的缓存和窗口的关系:
发送缓存存放:
发送应用程序发送给发送方TCP准备发送的数据
TCP已发送出但尚未收到确认的数据
接收方缓存存放:
按序到达的、但尚未被接受应用程序读取的数据
未按序到达的数据
2.超时重传时间的选择:
加权平均往返时间RTTs:
新的RTTs=(1-a)(旧的RTTs)+a(新的RTT样本)
超时重传时间RTO:
RTO=RTTs+4*RTTd
RTT的偏差的加权平均值RTTd:
新的RTTd=(1-b)(旧的RTTd)+b|RTTs-新的RTT样本| 其中b=0.25
Karn算法:
在计算加权平均RTTs时,只要报文段重传了,就不采用其往返时间样本,这样得出的加权平均RTTs和RTO就较准确
3.选择确认SACK:
选择确认的工作原理:
接收方在接受对方发送过来的数据字节流的序号不连续,结构就形成了一些不连续的字节块,如果这些字节的序号都在接受窗口内,接收方就先收下这些数据,但要把这些信息告诉发送方,使发送方不再重复发送这些已收到的数据
左边界为闭,右边界为开;左边界指向字节块第一个字节序号,右边界指向字节块最后一个序号+1
5.7 TCP的流量控制
1.利用滑动窗口实现流量控制:
流量控制:让发送方发送速率不要太快,让接收方来得及接收
滑动窗口的单位:字节
滑动窗口流量控制流程:
开始时rwnd=400,每个报文段长100字节
持续计时器:解决盲等死锁。只要TCP连接的一方收到对方的零窗口通知,就启动持续计时器,若计时器到期,就发送一个零窗口探测报文段,而对方就在确认这个报文段时给出了现在的窗口值,若窗口值仍是零,那么收到报文的一方就重新设置持续计时器,若不是零,那么死锁就被打破
2.TCP的传输效率:
Nagle算法:
若发送应用进程要把发送的数据逐个字节地送到TCP发送缓存,则发送方就把第一个数据字节先发送出去,把后面到达的数据字节都缓存起来。当发送方收到对第一个数据字符的确认后,再把发送缓存中的所有数据组装成一个报文发送出去,同时继续对后到达的数据进行缓存。只有在收到对前一个报文段的确认后才继续发送下一个报文段
糊涂窗口综合征:接收缓存每次只能释放出1字节空间,然后把窗口设为1,向发送方发送确认,发送方又发来1字节数据,接收方发回确认,仍将窗口设为1字节,这样会使网络效率降低
解决方法:让接收方等待一段时间,使得接收缓存有足够空间容纳一个最大的报文段,或等接收缓存中有一半空闲空间。此时再发送确认报文
5.8 TCP的拥塞控制
1.拥塞控制的一般原理:
拥塞:某段时间,若对网络中某资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏,这种现象称为拥塞
出现拥塞的原因:对资源的需求>可用资源
增加资源解决拥塞:不能。拥塞由多种因素引起,不能单纯通过增加资源解决
拥塞的恶化:如果路由器没有足够缓存空间,就会丢弃一些新到的分组,当分组被丢弃时,发送方就会重传,甚至多次重传,这样会导致更多分组流入网络和被网络中的路由器丢弃
拥塞控制与流量控制的区别:
拥塞控制就是防止过多的数据注入到网络,这样可以使网络中的路由器或链路不致过载,拥塞控制的前提是网络能够承受现有的网络负荷,拥塞控制是一个全局性过程
流量控制是指对点对点通信量的控制,是端到端的问题,流量控制就是抑制发送端发送数据的速率,以便使接收端来得及接收
拥塞控制的一般原理:
开环控制:就是在设计网络时事先将有关发生拥塞的因素考虑周到,力求网络在工作时不发生拥塞
闭环控制:基于反馈回路概念;检测网络系统以便检测到拥塞在何时、何处发生;把拥塞发生的信息传送到可采取行动的地方;调整网络系统的运行以解决出现的问题
检测网络拥塞的指标:
由于缺少缓存空间而被丢弃的分组的百分数
平均队列长度
超时重传分组数
平均分组时延
分组时延的便准差
2.TCP的拥塞控制方法
拥塞控制算法: * 慢开始 * 拥塞避免 * 快重传 * 快恢复 慢开始和拥塞避免: 拥塞窗口:大小取决于网络的拥塞程度,并且动态的变化,发送方让自己的发送窗口等于拥塞窗口 判断拥塞的依据:出现了超时 发送方控制拥塞窗口的原则:只要没有出现拥塞,拥塞窗口就可以再增大一些,以便把更多分组发送出去,提高网络利用率;只要发生拥塞,就把拥塞窗口减小一些,以减少注入到网络种的分组数,以缓解网络出现的拥塞 拥塞的判断:重传定时器超时、收到三个相同的ACK
快重传算法
特点:可以让发送方尽早知道发生了个别报文段的丢失
算法思路:要求接收方不等待自己发送数据时才进行捎带确认,而是要立即发送确认,即使收到了失序的报文段也要立即发出对已收到的报文段的重复确认
算法启动:发送方只要一连收到3个重复确认,就立即进行重传(即快重传)
算法流程:
快恢复算法
发送方只是丢失个别报文,不启动慢开始而用快恢复算法,发送方调整门限值ssthresh=cwnd/2,同时设置拥塞窗口cwnd=ssthresh,并开始执行拥塞避免算法
拥塞控制流程图:
发送方窗口的上限值:发送方的发送窗口一定不能超过对方给出的接收方窗口值rwnd;上限值应取接收方窗口和拥塞窗口这两个变量中较小的一个,即发送方窗口的上限值= min(rwnd,cwnd)
5.9 TCP的运输连接管理
运输连接的三个阶段:连接建立、数据传送、连接释放
客户-服务器方式:TCP连接建立采用客户服务器方式,主动发起连接建立的应用叫客户,而被动等待连接建立的应用进程叫服务器
1.TCP的连接建立:
三报文握手:
流程:
最初两端TCP进程都处于关闭状态,开始时B的TCP服务器进程先创建传输控制块TCB,准备接受客户进程的连接请求,然后进入收听状态;
A的TCP客户进程也先创建TCB,然后打算建立TCP连接时,向B发送连接请求报文,这是首部中同步位SYN=1,同时选择一个初始序号seq=x,TCP规定,SYN报文段不能携带数据,但要消耗一个序号,这时TCP客户进程进入同步已发送状态;
B收到连接请求报文后,若同意建立连接,则向A发送确认。在确认报文中将SYN位和ACK位都置1,确认号时ACK=x+1,同时也为自己选择一个初始序号seq=y。这个报文段也不能携带数据,但同样消耗一个序号,这时TCP服务器进程进入同步收到状态
TCP客户进程收到B的确认后,还要向B给出确认。确认报文的ACK置1,确认号ack=y+1,而自己的序号seq=x+1。TCP规定,ACK报文段可以携带数据,但如果不携带数据则不消耗序号,这种情况,下一个数据报文段序号仍是seq=x+1。这时TCP连接已经建立,A进入已建立连接状态
B收到A的确认后,也进入已建立连接状态
2.TCP连接的释放:
四报文握手:
流程:
起始时A和B都处于已建立连接状态
A的应用进程先向其TCP发出连接释放报文段,并停止再发送数据,主动关闭TCP连接,A把连接释放报文段首部的终止控制位FIN置1,序号seq=u,它等于前面已传送过的数据的最后一个字节的序号+1。这时A进入终止等待状态。FIN报文段即使不携带数据,也消耗一个序号
B收到连接释放报文后发出确认,确认号是ack=u+1,而这个报文自己的序号是v,等于B前面已传送过的数据的最后一个字节的序号+1。然后B进入关闭等待状态,TCP服务器进程通知高层应用进程,因而从A到B这个方向的连接就释放了,这时的TCP连接处于半关闭状态,即A已经没有数据要发送了,但B若发送数据,A仍要接受
A收到来自B的确认后,进入终止等待2状态,等待B发送的连接释放报文段
若B已经没有要向A发送的数据,应用进程就通知TCP释放连接,此时B发出的连接释放报文段FIN=1,假定现在B的序号为w,B还必须重复上次已发送过的确认号ack=u+1,此时B进入最后确认状态,等待A的确认
A在收到B的链接释放报文后,必须对此发出确认,在确认报文段中把ACK置1,确认号ack=w+1,而自己的序号时seq=u+1,然后进入时间等待状态。此时TCP连接还没有释放,必须经过时间等待计时器设置的时间2MSL后,A才进入关闭状态。
6.应用层
6.1 DNS服务的作用
域名系统DNS:是互联网使用的命名系统,用来把便于人们使用的机器名字转换为IP地址
许多应用层软件经常使用域名系统DNS,但计算机的用户只是间接而不是直接使用DNS
互联网采用层次结构的命名树作为主机的名字,并使用分布式的域名系统DNS
DNS使大多数名字都在本地进行解析,仅少量解析需要互联网上通信
域名的解析过程:当需要把主机名解析成IP地址时,应用进程调用解析程序,并成为DNS的一个客户,把待解析的域名放在DNS请求报文中,以UDP用户数据报方式发给本地域名服务器,本地域名服务器查找域名后,把对应的IP地址放在回答报文中返回,应用进程获得目的主机的IP地址后即可进行通信
互联网的域名结构:
互联网采用了层次树状结构的命名方法
域名是逻辑概念,并不代表计算机所在的物理地点
顶级域名的分类:
国家顶级域名:如cn、us
通用顶级域名:如com、net、org、edu
基础结构域名:只有arpa,用于反向域名解析,又称为反向域名
二级域名:
类别域名:ac、com、edu、gov
行政区域名:bj、js
互联网的域名空间:
6.2 FTP协议
FTP概述
文件传输协议FTP:时互联网上使用最广泛的文件传送协议,提供交互式访问,允许客户指明文件的类型与格式,并允许文件具有存取权限
特点:要存取一个文件,必须先获得一个本地的文件副本,要修改文件,只能对副本进行修改,然后将修改后的文件副本传回原节点
FTP的基本工作原理
FTP的特点:只提供文件传送的基本服务,使用TCP可靠性运输服务,FTP的主要功能是减少或消除在不同操作系统下处理文件的不兼容性
FTP工作流程:FTP使用客户服务器方式,一个FTP服务器进程可同时为多个客户进程提供服务,FTP的服务进程分为两大部分:主进程,负责接受新的请求;若干从属进程,负责处理单个请求
主进程的工作步骤:
(1)打开熟知端口(21),使客户进程能够连接
(2)等待客户进程发出连接请求
(3)启动从属进程处理客户进程发来的请求。从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建一些子进程
(4)回到等待状态,继续接受其他客户进程发来的请求。主进程与从属进程的处理是并发进行的
6.3 万维网
万维网概述
万维网:是一个大规模联机式的信息储存所,用连接的方法能非常方便的从互联网上的一个站点访问另一个站点,从而主动按需获得信息;是一个分布式的超媒体系统,是超文本系统的扩充
页面:在客户程序(浏览器)主窗口上显示出的万维网文档就是页面
统一资源定位符URL:标志万维网上各种文档,使每个文档在互联网范围具有唯一标识符URL
超文本传送协议HTTP:是一个应用层协议,使用TCP进行可靠传送
统一资源定位符URL
URL作用:用来表示从互联网上得到的资源位置和访问这些资源的方法
URL的格式:<协议>://<主机>:<端口>/<路径>
协议:指出使用什么协议来获得该文档,常用HTTP或FTP
主机:指出文档在哪台主机上,主机就是指该主机在互联网上的域名
端口和路径:为了进一步定位,有事可省略
超文本传送协议HTTP
HTTP作用:定义了浏览器怎么向万维网服务器请求万维网文档,以及服务器怎么把文档传送给浏览器;是面向事物的应用层协议
HTTP的主要特点:
(1)HTTP本身是无连接的:虽然使用TCP连接,但通信双方在交换HTTP报文前不需要建立HTTP连接
(2)HTTP是无状态的:同一个客户第二次访问同一服务器上的页面时,服务器的响应与第一次被访问时相同
HTTP/1.0的主要缺点:每请求一个文档就要有两倍的RTT的开销;这种非持续连接会使万维网服务器负担很重
HTTP/1.1的改进:使用了持续连接;服务器在发送响应后仍在一段时间内保持连接,使同一个客户能继续在这条连接上传送后续HTTP请求报文和响应报文
HTTP/1.1持续连接的两种工作方式:
非流水线方式:客户在收到响应报文之后才能继续发送
流水线方式:客户收到响应报文之前也可以继续发送
6.4 动态主机配置协议DHCP
DHCP作用:提供一种机制,称为即插即用连网,允许一台计算机加入网络和获取IP而不用手工参与
协议配置:在协议软件中给参数赋值的动作叫做协议配置
需要配置的项目:IP地址、子网掩码、默认路由器的IP地址、域名服务器的IP地址
DHCP工作方式:
(1)DHCP使用客户服务器方式
(2)需要IP地址的主机在启动时向DHCP服务器广播发送发现报文,这时该主机就成为DHCP客户
(3)本地网络上所有主机都能收到该报文,但只有DHCP服务器才回复此报文
(4)DHCP服务器先在其数据库中查找该计算机的配置信息,若找到,则返回找到的信息,若找不到,则从服务器IP地址池中取一个地址分配给该计算机
(5)DHCP服务器的回答报文叫提供报文,表示提供了IP地址等配置信息
DHCP工作流程
1、DHCP服务器被动打开UDP端口67,等待客户端发来的报文
2、DHCP客户从UDP端口68发送DHCP发现报文
3、所有收到DHCP发现报文的服务器都会发出DHCP提供报文,因此客户可能收到多个DHCP提供报文
4、客户从几个DHCP服务器中选择一个,并向其发送DHCP请求报文
5、被选中的服务器发送确认报文DHCPACK,此时客户就可以使用这个IP地址了,这种状态叫已绑定状态;DHCP客户现在要根据服务器提供的租用期T设置两个计时器T1和T2,它们的超时时间分别为0.5T和0.875T,当超时时间到了就要请求更新租用期
6、租用期过半,DHCP发送请求报文,要求更新租用期
7、服务器若同意,则发回确认报文。客户得到了新的租用期,重置计时器
8、服务器若不同意,则发回否认报文。这是客户停止使用原来的IP地址,而重新申请新IP地址(回到步骤2)
9、客户可以随时提前终止服务器所提供的租用期,这时只需向DHCP服务器发送释放报文即可
雁过留痕,风过留声