计算机网络复习笔记 · 语雀一、概述(一)、因特网概述1、网络、互连网(互联网)和...
https://www.yuque.com/ranqi-bl5fe/acimkw/kg0zm6#nMOMk
pdf版下载链接:https://download.csdn.net/download/Lranqi/89402427
目录
3、单向通信(单工)、双向交替通信(半双工)、双向同时通信(全双工)
3、循环冗余校验CRC(Cyclic Redundary Check)
2、可靠传输的实现机制—停止等待协议SW(Stop-and-Wait)
3、可靠传输的实现机制—回退N帧协议GBN(Go-Back-N)
4、可靠传输的实现机制—选择重传协议SR(Selective Repeat)
1、虚拟专用网VPN(Virtual Private Network)
2、网络地址转换NAT(Network Address Translation)
一、概述
(一)、因特网概述
1、网络、互连网(互联网)和因特网
网络(Network)由若干结点(Node)和连接这些结点的链路(Link)组成。
多个网络还可以通过路由器互连起来,这样就构成了一个覆盖范围更大的网络,即互联网(或互连网)。因此,互联网是“网络的网络(Netwrok of Networks) ”。
因特网(Internet)是世界上最大的互连网络(用户数以亿计,互连的网络数以百万计)。
internet与Internet的区别
internet(互联网或互连网)是一个通用名词,它泛指由多个计算机网络互连而成的网络。在这些网络之间的通信协议可以是任意的。
Internet(因特网)则是一个专用名词,它指当前全球最大的、开放的、由众多网络相互连接而成的特定计算机网络,它采用TCP/IP协议族作为通信的规则,其前身是美国的ARPANET。
2、因特网三个发展阶段
因特网服务提供者ISP(Internet Service Provider)
3、因特网的标准化工作
4、因特网的组成
边缘部分
由所有连接在因特网上的主机组成。这部分是用户直接使用的,用来进行通信(传送数据、音频或视频)和资源共享。
核心部分
由大量网络和连接这些网络的路由器组成。这部分是为边缘部分提供服务的(提供连通性和交换)。
(二)、三种交换方式
1、电路交换(Circuit Switching)
(1)电话交换机接通电话线的方式称为电路交换;
(2)从通信资源的分配角度来看,交换(Switching)就是按照某种方式动态地分配传输线路的资源;
(3)电路交换的三个步骤:
-
- 建立连接((分配通信资源)
- 通话(一直占用通信资源)
- 释放连接(归还通信资源)
2、分组交换(Packet Switching)
3、报文交换(Message Switching)
略
4、电路交换、报文交换、分组交换的对比
电路交换:
优点:
1)通信时延小
2)有序传输
3)没有冲突
4)适用范围广
5)实时性强
6)控制简单
缺点:
1)建立连接时间长
2)线路独占,使用效率低
3)灵活性差
4)难以规格化
报文交换:
优点:
1)无需建立连接
2)动态分配线路
3)提高线路可靠性
4)提高线路利用率
5)提供多目标服务
缺点:
1)引起了转发时延
2)需要较大存储缓存空间
3)需要传输额外的信息量
分组交换:
优点:
1)无需建立连接
2)线路利用率高3)简化了存储管理4)加速传输
5)减少出错概率和重发数据量
缺点:
1)引起了转发时延
2)需要传输额外的信息量
3)对于数据报服务。存在失序、丢失或重复分组的问题;对于虚电路服务,存在呼叫建立、数据传输和虚电路释放三个过程
(三)、计算机网络的定义和分类
1、定义
计算机网络的精确定义并未统一
计算机网络的最简单的定义是:一些互相连接的、自治的计算机的集合。
- 互连︰是指计算机之间可以通过有线或无线的方式进行数据通信;
- 自治︰是指独立的计算机,它有自己的硬件和软件,可以单独运行使用;
- 集合:是指至少需要两台计算机;
计算机网络的较好的定义是:计算机网络主要是由一些通用的、可编程的硬件互连而成的,而这些硬件并非专门用来实现某一特定目的(例如,传送数据或视频信号)。这些可编程的硬件能够用来传送多种不同类型的数据,并能支持广泛的和日益增长的应用。
- 计算机网络所连接的硬件,并不限于一般的计算机,而是包括了智能手机等智能硬件。
- 计算机网络并非专门用来传送数据,而是能够支持很多种的应用(包括今后可能出现的各种应用)。
2、分类
(四)、计算机性能指标
速率 | |
带宽 | 一条通信线路的“频带宽度”越宽,其所传输数据的“最高数据率”也越高。 |
吞吐量 |
|
时延 | * processing delay 处理延迟 * queuing delay 排队延迟(合并到处理时延) * transmission delay 传输延迟 * propagation delay 传播延迟 |
时延带宽积 | 时延带宽积 = 传播时延 * 带宽 若发送端连续发送数据,则在所发送的第一个比特即将到达终点时,发送端就已经发送了时延带宽积个比特; 链路的时延带宽积又称为以比特为单位的链路长度。 |
往返时间 |
|
利用率 |
|
丢包率 |
|
时延计算
(五)、计算机网络体系结构
1、常见的计算机网络体系结构
总体来说,将各层的所有协议组合起来,称为协议栈。
(1)因特网的协议栈
因特网的协议栈有4个层次组成:网络接口层、网络成、传输层、应用层,
网络接口层并没有规定具体内容,目的是可以互连全世界各种不同的网络接口。
各层见下面原理体系结构。
(2)OSI模型
在因特网协议栈出现以前,OSI模型是ISO组织研发的计算机网络结构模型。OSI的模型一共有7层,从下到上依次为:物理层,链路层,网络层,传输层,会话层,表示层,应用层。相比因特网体系结构,OSI多了两层。
因特网将两层的功能留给了开发者自行实现。
(3)原理体系结构
有5个层次组成:物理层、链路层、网络成、传输层、应用层
应用层:应用层协议分布在多个端系统,端系统中的应用程序使用该协议与另一个端系统中的应用程序通信。处于应用层的分组称为报文;
传输层:传输层在应用程序端点之间传输应用层报文,因特网中有两个传输层协议:TCP和UDP。处于传输层的分组称为报文段。TCP提供确保传递、流量控制、拥塞控制机制。UDP提供无连接服务,即不提供不必要服务的服务。没有可靠性、没有流量和拥塞控制。
网络层:网络层将称为数据报的网络层分组从一台主机移动到另一台主机。网络层协议包含著名的IP协议以及其他一些路由选择协议。数据报
链路层:链路层将称为帧的链路层分组从一个结点移动到路径上的另一个端点。一个帧可能被沿途不同链路上的不同链路层协议处理。帧
物理层:物理层的任务是将帧中的比特从一个结点移动到下一个节点,它提供了传输信息的实际物理通道;
2、分层的必要性
- 计算机网络是个非常复杂的系统。早在最初的ARPANET设计时就提出了分层的设计理念。
- "分层"可将庞大而复杂的问题,转化为若干较小的局部问题,而这些较小的局部问题就比较易于研究和处理。
3、分层思想举例
一个分组,在不同的层次有不同的称谓,是因为它们经过每一层的时候就被该层封装上了属于该层的相关信息,也就是前面提到的必要信息;于是,每一分层的分组有两种类型的字段:首部字段和有效负载;其中有效负载即为来自上一层的分组数据,而首部字段就是该层加上的必要信息;分组不断被封装以实现各层协议规定的相关功能
4、专用术语
实体(entity) :任何可发送或接收信息的硬件或软件进程。
对等实体:在层次结构中,通信两端位于相同层次的实体。
协议数据单元(PDU):对等实体之间交换的信息单元。通常上层协议数据单元封装在下层协议数据单元中。
虚通信:对等实体之间的通信,通常需要借助于下层提供的服务完成
协议:控制两个对等实体进行虚通信的规则的集合。
协议栈是指网络中各层协议的总和
协议的三要素:
语法:定义所交换信息的格式;
语义:定义收发双方所要完成的操作
同步:定义收发双方的时序关系
在协议的控制下,两个对等实体间的虚通信使得本层能够向上一层提供服务。
要实现本层协议,还需要使用下层所提供的服务
本层的服务=本层的协议+下层的服务
协议是“水平的”,即协议是控制对等实体之间通信的规则。
服务是“垂直的”,即服务是由下层向上层通过层间接口提供的。
同一系统相邻两层的实体进行交互的地方,称为服务访问点 SAP (Service Access Point)。
服务访问点:同一系统相邻两层的实体进行交互的地方。(在同一系统中相邻两层的实体交换信息的逻辑接口,用于区分不同的服务类型。)
数据链路层的服务访问点为帧的“类型”字段。
网络层的服务访问点为IP数据报首部中的“协议字段”。
运输层的服务访问点为“端口号”。
服务原语:上层使用下层所提供的服务必须通过与下层交换一些命令,这些命令称为服务原语。
协议数据单元PDU:对等层次之间传送的数据包称为该层的协议数据单元。
服务数据单元SDU:同一系统内,层与层之间交换的数据包称为服务数据单元。
多个SDU可以合成为一个PDU; 一个SDU也可划分为几个PDU。
某层的服务用户只能看见(并使用)下层提供的服务而无法看见下层的协议。
下层协议对上层用户是透明的。
(六)、总结
二、物理层
(一)、物理层的基本概念
物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流。
物理层为数据链路层屏蔽了各种传输媒体的差异,使数据链路层只需要考虑如何完成本层的协议和服务,而不必考虑网络具体的传输媒体是什么。(透明)
(二)、物理层下面的传输媒体
导引型传输媒体 | 同轴电缆 | |
双绞线 | | |
光纤 | | |
电力线 | | |
非导引型传输媒体 | 无线电波 | |
微波 | | |
红外线 | | |
可见光 |
(三)、传输方式
1、串行传输、并行传输
远距离用并行(例如计算机网络)
计算机内部一般用串行
2、同步传输、异步传输
3、单向通信(单工)、双向交替通信(半双工)、双向同时通信(全双工)
(四)、编码与调制
码元:在使用时间域的波形表示数字信号时 ,代表不同离散数值的基本波形
1、编码
不归0编码NRZ
归0编码RZ
反向不归零编码NRZI,在码元时间内不会出现零电平。若后一个码元时间内所持续的电平与前一个码元时间内所持续的电平不同(也称为电平反转)则表示0,若电平保持不变则表示1。
2、基本调制
3、混合调制
频率、相位、振幅:
因为频率和相位是相关的,即频率是相位随时间的变化率。所以一次只能调制频率和相位两个中的一个。
通常情况下,相位和振幅可以结合起来一起调制,称为正交振幅调制QAM。
混合调制举例——正交振幅调制QAM
- QAM-16
-
- 12种相位
- 每种相位有1或2种振幅可选可以调制出16种码元(波形),
- 每种码元可以对应表示4个比特
- 码元与4个比特的对应关系采用
- 格雷码
任意两个相邻码元只有1个比特不同
(五)、信道的极限容量
1、奈氏准则
2、香农公式
在信道带宽一定的情况下,根据奈氏准则和香农公式,要想提高信息的传输速率就必须采用多元制(更好的调制方法)和努力提高信道中的信噪比。
自从香农公式发表后,各种新的信号处理和调制方法就不断出现,其目的都是为了尽可能地接近香农公式给出的传输速率极限。
3、题
(六)、总结
三、数据链路层
(一)、概述
1、概述
链路(Link):就是从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换结点。
数据链路(Data Link):是指把实现通信协议的硬件和软件加到链路上,就构成了数据链路。
2、点对点信道的数据链路层的三个重要问题
封装成帧、差错检测、可靠传输
3、使用广播信道的数据链路层
共享式以太网的媒体接入控制协议CSMA/CD
802.11局域网的媒体接入控制协议CSMA/CA
4、数据链路层的互连设备
网桥和交换机的工作原理
集线器(物理层互连设备)与交换机的区别
(二)、封装成帧
- 封装成帧是指数据链路层给上层交付的协议数据单元添加帧头和帧尾使之成为帧。
-
- 帧头和帧尾中包含有重要的控制信息。
- 帧头和帧尾的作用之一就是帧定界。
- 透明传输是指数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样。
-
- 面向字节的物理链路使用字节填充(或称字符填充)的方法实现透明传输。
(在数据里与定界符相同的字符前填充一个转义字符,在数据其它原有转义字符前也加一个转义字符)
-
- 面向比特的物理链路使用比特填充的方法实现透明传输。
(0比特填充法,例:帧首位定界符为01111110,在每5个连续的1后面填充1个0)
高级数据链路控制协议HDLC采用帧头和帧尾中的标志字段作为帧定界符,其值为01111110;
类型字段:指明应用于帧数据字段的协议
- 为了提高帧的传输效率,应当使帧的数据部分的长度尽可能大些。
- 考虑到差错控制等多种因素,每一种数据链路层协议都规定了帧的数据部分的长度上限,即最大传送单元MTU(Maximum Transfer Unit)。
(三)、差错检测
1、概述
- 实际的通信链路都不是理想的,比特在传输过程中可能会产生差错:1可能会变成0,而0也可能变成1。这称为比特差错。
- 在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率BER(Bit Error Rate)。
- 使用差错检测码来检测数据在传输过程中是否产生了比特差错,是数据链路层所要解决的重要问题之一。
接收方根据帧尾部中的检错码检测帧中是否有误码。
图示FCS目的是让接收方的数据链路层检查帧在传输过程中是否产生了误码。
2、奇偶校验
在待发送的数据后面添加1位奇偶校验位,使整个数据(包括所添加的校验位在内)中“1”的个数为奇数(奇校验)或偶数((偶校验)。
- 如果有奇数个位发生误码,则奇偶性发生变化,可以检查出误码;
- 如果有偶数个位发生误码,则奇偶性不发生变化,不能检查出误码(漏检);
3、循环冗余校验CRC(Cyclic Redundary Check)
- 收发双方约定好一个生成多项式
;
- 发送方基于待发送的数据和生成多项式计算出差错检测码(冗余码),将其添加到待传输数据的后面一起传输;
- 接收方通过生成多项式来计算收到的数据是否产生了误码;
(四)、可靠传输
1、基本概念
数据链路层向上层提供的服务类型
-
- 不可靠传输服务: 仅仅丢弃有误码的帧,其他什么也不做;
- 可靠传输服务: 想办法实现发送端发送什么,接收端就收到什么。
- 比特差错只是传输差错中的一种。
- 从整个计算机网络体系结构来看,传输差错还包括分组丢失、分组失序以及分组重复。
- 分组丢失、分组失序以及分组重复这些传输差错,一般不会出现在数据链路层,而会出现在其上层。
- 可靠传输服务并不仅局限于数据链路层,其他各层均可选择实现可靠传输。
- 可靠传输的实现比较复杂,开销也比较大,是否使用可靠传输取决于应用需求。
2、可靠传输的实现机制—停止等待协议SW(Stop-and-Wait)
像停等协议这样通过确认和重传机制实现的可靠传输协议,常称为自动请求重传ARQ(Automatic Repeat reQuesty)
(1)超时重传
接收方收不到数据分组,就不会发送ACK或NAK。如果不采取其他措施,发送方就会一直处于等待接收方ACK或NAK的状态。
为解决该问题,可以在发送方发送完一个数据分组时,启动一个超时计时器。若到了超时计时器所设置的重传时间而发送方仍收不到接收方的任何ACK或NAK,则重传原来的数据分组,这就叫做超时重传。
一般可将重传时间选为略大于“从发送方到接收方的平均往返时间”。
(2)分组重复
为避免分组重复这种传输错误,必须给每个分组带上序号。
对于停止-等待协议,由于每发送一个数据分组就停止等待,只要保证每发送一个新的数据分组,其发送序号与上次发送的数据分组的序号不同就可以了,因此用一个比特来编号就够了。
(3)注意事项
- 接收端检测到数据分组有误码时,将其丢弃并等待发送方的超时重传。但对于误码率较高的点对点链路,为使发送方尽早重传,也可给发送方发送NAK分组。
- 为了让接收方能够判断所收到的数据分组是否是重复的,需要给数据分组编号。由于停止-等待协议的停等特性,只需1个比特编号就够了,即编号0和1.
- 为了让发送方能够判断所收到的ACK分组是否是重复的,需要给ACK分组编号,所用比特数量与数据分组编号所用比特数量一样。数据链路层一般不会出现ACK分组迟到的情况,因此在数据链路层实现停止-等待协议可以不用给ACK分组编号。
- 超时计时器设置的重传时间应仔细选择。一般可将重传时间选为略大于“从发送方到接收方的平均往返时间”。
-
- 在数据链路层点对点的往返时间比较确定,重传时间比较好设定。
- 然而在运输层,由于端到端往返时间非常不确定,设置合适的重传时间有时并不容易。
(4)停止-等待协议的信道利用率
当往返时延RTT远大于数据帧发送时延时(例如使用卫星链路),信道利用率非常低。
若出现重传,则对于传送有用的数据信息来说,信道利用率还要降低。
为了克服停止-等待协议信道利用率很低的缺点,就产生了另外两种协议,即后退N帧协议GBN和选择重传协议SR。
3、可靠传输的实现机制—回退N帧协议GBN(Go-Back-N)
-
- 采用3个比特给分组编序号,即序号0~7;
- 发送窗口的尺寸
的取值:
,本例取
- 接收窗口的尺寸
的取值:
;
(1)累计确认
即使确认分组丢失,发送方也可能不必重传!(如图假设 发送方发送0-4到达接收端,接收端回复 1ack 和4ack,1ack丢失、4ack到达就说明0-4已经正确送达)
接收方不一定要对收到的数据分组逐个发送确认,而是可以在收到几个数据分组后(由具体实现决定)对按序到达的最后一个数据分组发送确认。表示序号为n以前的所有数据分组都已下确接收。
(2)有差错的情况
发送方收到重复的确认,就知道之前所发送的数据分线出现了差错,于是可以不等超时计时器超时就立刻重传!至于收到几个重复确认就立刻重传,由具体实现决定。
-
- 在本例中,尽管序号为6.7.0.1的数据分组正确到达接收方。但由于5号数据分组误码不被接受,它们也“受到牵连”而不被接受,发送方还要重传这些数据分组,这就是所 谓的Go-back-N(回退N帧)。
- 可见,当通信线路质量不好时,回退N帧协议的信道利用率并不比停止:等待协议高。
若Wr超过取值范围,例如Wr=8,会出现什么情况?
(3)总结
发送方 | 接收方 |
|
|
- 回退N帧协议在流水线传输的基础上利用发送窗回来限制发送方连续发送数据分组的数量,是一种连续ARQ协议。
- 在协议的工作过程中发送窗回和接收窗口不断向前滑动,因此这类协议又称为滑动窗口协议。
- 由于回退N帧协议的特性,当通信线路质量不好时,其信道利用离并不比停止等待协议高。
4、可靠传输的实现机制—选择重传协议SR(Selective Repeat)
(1)Go-Back-N与Selective Repeat
-
- 回退N帧协议的接收窗口尺寸WR只能等于1,因此接收方只能按序接收正确到达的数据分组。
- 一个数据分组的误码就会导致其后续多个数据分组不能被接收方按序接收而丢弃(尽管它们无乱序和误码)。这必然会造成发送方对这些数据分组的超时重传,显然这是对通信资源的极大浪费。
- 为了进一步提高性能,可设法只重传出现误码的数据分组。因此,接收窗口的尺寸WR不应再等于1(而应大于1),以便接收方先收下失序到达但无误码并且序号落在接收窗口内的那些数据分组,等到所缺分组收齐后再一并送交上层。这就是选择重传协议。
- 注意:
选择重传协议为了使发送方仅重传出现差错的分组,接收方不能再采用累积确认,而需要对每个正确接收到的数据分组进行逐一确认!
(2)选择重传协议
-
- 采用3个比特给分组编序号,即序号0~7;
- 发送窗口的尺寸
的取值:
,本例取
- 接收窗口的尺寸
的取值:
;
GIF演示:
(3)要求
发送方 | 接收方 |
|
|
(五)、点对点协议PPP
1、PPP协议的特点
- 点对点协议PPP(Point-to-Point Protocol)是目前使用最广泛的点对点数据链路层协议。
(1)
- PPP协议是因特网工程任务组IETF在1992年制定的。经过1993年和1994年的修订,现在的PPP协议已成为因特网的正式标准[RFC1661,RFC1662]。
用户计算机与SP进行通信时,所使用的数据链路层协议通常就是PPP协议。PPP协议也广泛应用于广域网路由器之间的专用线路。
在1999年公布的在奥太网上运行的PPP协议,即PPPover Ethernet,简称为PPPoE,它使得lSP可必通过DSL、电路调制解调器、以太网等宽带接入技术以太网接口的形武 为用户提供接入服务。
(2)PPP协议的组成
PPP协议为在点对点链路传输各种协议数据报提供了一个标准方法,主要由以下三部分构成:
- 对各种协议数据报的封装方法(封装成帧)
- 链路控制协议LCP 用于建立、配置以及测试数据链路的连接
- 一套网络控制协议NCPs 其中的每一个协议支持不同的网络层协议
2、PPP协议的帧格式
(1)帧格式
(2)字节填充
透明传输——面向字节的异步链路采用插入转义字符的字节填充法
(3)零填充
透明传输——面向比特的同步链路采用插入比特0的比特填充法
(4)差错检测
3、工作状态
(六)、接入
1、媒体接入控制的基本概念
共享信道要着重考虑的一个问题就是如何协调多个发送和接收站点对一个共享传输媒体的占用,即媒体接入控制MAC(Medium Access Control)。
随着技术的发展,交换技术的成熟和成本的降低,具有更高性能的使用点对点链路和链路层交换机的交换式局域网在有线领域已完全取代了共享式局域网,但由于无线信道的广播天性,无线局域网仍然使用的是共享媒体技术。
2、媒体接入控制——静态划分信道
(1)信道复用
复用(Multiplexing)是通信技术中的一个重要概念。复用就是通过一条物理线路同时传输多路用户的信号。
当网络中传输媒体的传输容量大于多条单一信道传输的总通信量时,可利用复用技术在一条物理线路上建立多条通信信道来充分利用传输媒体的带宽。
1)频分复用FDM
频分复用的所有用户同时占用不同的频带资源并行通信。
2)时分复用TDM
时分复用的所有用户在不同的时间占用同样的频带宽度。
3)波分复用WDM
4)码分复用CDM
码分复用CDM是另一种共享信道的方法。实际上,由于该技术主要用于多址接入,人们更常用的名词是码分多址CDMA(Code Division Multiple Access)。
同理,频分复用FDM和时分复用TDM同样可用于多址接入,相应的名词是频分多址FDMA(Frequency Division Multiple Access)和时分多址TDMA(Time Division Multiple Access)。
在本课程中,我们不严格区分复用与多址的概念。可简单理解如下:
①复用是将单一媒体的频带资源划分成很多子信道,这些子信道之间相互独立,互不干扰。从媒体的整体频带资源上看,每个子信道只占用该媒体频带资源的一部分。
②多址(更确切地应该称为多点接入)处理的是动态分配信道给用户。这在用户仅仅暂时性地占用信道的应用中是必须的,而所有的移动通信系统基本上都属于这种情况。相反,在信道永久性地分配给用户的应用中,多址是不需要的(对于无线广播或电视广播站就是这样)。
③某种程度上,FDMA、TDMA、CDMA可以分别看成是FDM、TDM、CDM的应用。
与FDM和TDM不同,CDM的每一个用户可以在同样的时间使用同样的频带进行通信。
由于各用户使用经过特殊挑选的不同码型,因此各用户之间不会造成干扰。
CDM最初是用于军事通信的,因为这种系统所发送的信号有很强的抗干扰能力,其频谱类似于白噪声,不易被敌人发现。
随着技术的进步,CDMA设备的价格和体积都大幅度下降,因而现在已广泛用于民用的移动通信中。
直接序列扩频DSSS
①在CDMA中,每一个比特时间再划分为m个短的间隔,称为码片(Chip)。通常m的值是64或128。为了简单起见,在后续的举例中,我们假设m为8。
②使用CDMA的每一个站被指派一个唯一的m bit码片序列(Chip Sequence)。
一个站如果要发送比特1,则发送它自己的m bit码片序列;
一个站如果要发送比特0,则发送它自己的m bit码片序列的二进制反码;
③码片序列的挑选原则如下:
-分配给每个站的码片序列必须各不相同,实际常采用伪随机码序列。
-分配给每个站的码片序列必须相互正交(规格化内积为0)。
令向量S表示站S的码片序列,令向量T表示其他任何站的码片序列。
两个不同站S和T的码片序列正交,就是向量S和T的规格化内积为0:
任何一个码片向量和其它各站码片反码的向量的内积是0:
任何一个码片向量和该码片向量自己的规格化内积是1:
任何一个码片向量和该码片反码的向量的内积是-1:
3、随机接入——CSMA/CD协议
(1)CSMA/CD协议
CSMA/CD协议曾经用于各种总线结构以太网和双绞线以太网的早期版本中。
现在的以太网基于交换机和全双工连接,不会有碰撞,因此没有必要使用CSMA/CD协议。
(2)争用期(碰撞窗口)
(3)最小帧长
(4)最大帧长
(5)截断二进制指数退避算法
k从重传次数和10中取小者
(6)信道利用率
(7)帧发送流程
(8)帧接收流程
(9)例题
4、随机接入——CSMA/CA协议
(1)引入
既然CSMA/CD协议已经成功地应用于使用广播信道的有线局域网,那么同样使用广播信道的无线局域网能不能也使用CSMA/CD协议呢?
- 在无线局域网中,仍然可以使用载波监听多址接入CSMA,即在发送帧之前先对传输媒体进行载波监听。若发现有其他站在发送帧,就推迟发送以免发生碰撞。
- 在无线局域网中,不能使用碰撞检测CD,原因如下:
-
- 由于无线信道的传输条件特殊,其信号强度的动态范围非常大,无线网卡上接收到的信号强度往往会远远小于发送信号的强度(可能相差百万倍)。如果要在无线网卡上实现碰撞检测CD,对硬件的要求非常高。
- 即使能够在硬件上实现无线局域网的碰撞检测功能,但由于无线电波传播的特殊性(存在隐蔽站问题),进行碰撞检测的意义也不大。
(2)载波监听多址接入/碰撞避免CSMA/CA(Carrier Sense Multiple Access/Collision Avoidance)
(3)帧间间隔IFS(InterFrame Space)
(4)CSMA/CA协议的工作原理
(5)CSMA/CA协议的退避算法
- 在执行退避算法时,站点为退避计时器设置一个随机的退避时间:
-
- 当退避计时器的时间减小到零时,就开始发送数据;
- 当退避计时器的时间还未减小到零时而信道又转变为忙状态,这时就冻结退避计时器的数值,重新等待信道变为空闲,再经过时间DIFS后,继续启动退避计时器。
- 在进行第i次退避时,退避时间在时隙编号{0,1,...,2^(2+i)-1}中随机选择一个,然后乘以基本退避时间(也就是一个时隙的长度)就可以得到随机的退避时间。这样做是为了使不同站点选择相同退避时间的概率减少。当时隙编号达到255时(对应于第6次退避)就不再增加了。
(6)CSMA/CA协议的信道预约和虚拟载波监听
(7)例题
(七)、MAC地址、IP地址以及ARP协议
1、MAC地址
- 当多个主机连接在同一个广播信道上,要想实现两个主机之间的通信,则每个主机都必须有一个唯一的标识,即一个数据链路层地址;
- 在每个主机发送的帧中必须携带标识发送主机和接收主机的地址。由于这类地址是用于媒体接入控制MAC(Media Access Control),因此这类地址被称为MAC地址;
-
- MAC地址一般被固化在网卡(网络适配器)的电可擦可编程只读存储器EEPROM中,因此MAC地址也被称为硬件地址;
-
- MAC地址有时也被称为物理地址。请注意:这并不意味着MAC地址属于网络体系结构中的物理层!
- 一般情况下,用户主机会包含两个网络适配器:有线局域网适配器(有线网卡)和无线局域网适配器(无线网卡)。每个网络适配器都有一个全球唯一的MAC地址。而交换机和路由器往往拥有更多的网络接口,所以会拥有更多的MAC地址。综上所述,严格来说,MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识。
(1)IEEE 802局域网的MAC地址格式
(2)IEEE 802局域网的MAC地址发送顺序
(3)单播MAC地址举例
(4)广播MAC地址举例
(5)多播MAC地址举例
(6)随机MAC地址
2、IP地址
数据包转发过程中IP地址与MAC地址的变化情况
3、ARP协议
- 主机在自己的ARP高速缓存表中查找目的主机的P地址所对应的MAC地址。若找到了。则可以封装MAC帧进行发送;若找不到,则发送ARP请求(封装在广播MAC帧中):
- 目的主机收到ARP请求后,将源主机的IP地址与MAC地址记录到自己的ARP高速缓存表中,然后给源主机发送ARP响应(封装在单播MAC帧中),ARP响应中包含有目的主机的IP地址和MAC地址;
- 源主机收到ARP响应后。将目的主机的IP地址与MAC地址记录到自己的ARP高速缓存表中,然后就可以封装之前想发送的MAC帧并发送给目的主机:
- ARP的作用范围:逐段链路或逐个网络使用;
- 除ARP请求和响应外。ARP还有其他类型的报文(例如 用于检查IP地址冲交的“无故ARP、免费ARP(Gratuitous ARP)" ):
- ARP没有安全验证机制,存在ARP欺骗(攻击)问题。
(八)、集线器与交换机
1、集线器与交换机的区别
(1)总线型以太网和星型以太网
(2)、集线器与交换机的区别
忽略ARP过程
假设交换机的帧交换表已“学习好了
2、以太网交换机自学习和转发帧的流程
- 以太网交换机工作在数据链路层(也包括物理层)
- 以太网交换机收到帧后,在帧交换表中查找帧的目的MAC地址所对应的接口号,然后通过该接口转发帧。
- 以太网交换机是一种即插即用设备,刚上电启动时其内部的帧交换表是空的。随着网络中各主机间的通信,以太网交换机通过自学习算法自动逐渐建立起帧交换表。
假设各主机知道网络中其他各主机的MAC地址(无需进行ARP)
习题
小节
3、以太网交换机的生成树协议STP
(1)概述
如何提高以太网的可靠性?
添加冗余链路可以提高以太网的可靠性,但是,冗余链路也会带来负面效应——形成网络环路
网络环路会带来以下问题:
-
- 广播风暴
大量消耗网络资源,使得网络无法正常转发其他数据帧;
-
- 主机收到重复的广播帧
大量消耗主机资源
-
- 交换机的帧交换表震荡(漂移)
(2)生成树协议STP(Spanning Tree Protocol)
以太网交换机使用生成树协议STP(Spanning Tree Protocol),可以在增加冗余链路来提高网络可靠性的同时又避免网络环路带来的各种问题。
- 不论交换机之间采用怎样的物理连接,交换机都能够自动计算并构建一个逻辑上没有环路的网络,其逻辑拓扑结构必须是树型的(无逻辑环路);
- 最终生成的树型逻辑拓扑要确保连通整个网络;
- 当首次连接交换机或网络物理拓扑发生变化时(有可能是人为改变或故障),交换机都将进行生成树的重新计算。
(九)、虚拟局域网VLAN
1、概述
(1)广播域
- 以太网交换机工作在数据链路层(也包括物理层)
- 使用一个或多个以太网交换机互连起来的交换式以太网,其所有站点都属于同一个广播域。
- 随着交换式以太网规模的扩大,广播域相应扩大。
- 巨大的广播域会带来很多弊端:
-
- 广播风暴
-
-
- 广播风暴会浪费网络资源和各主机的CPU资源!
-
-
- 难以管理和维护
- 潜在的安全问题
(2)分割广播域的方法
- 使用路由器可以隔离广播域
路由器的成本较高,大规模使用不现实
- 虚拟局域网VLAN技术应运而生
虚拟局域网VLAN(Virtual Local Area Network)是一种将局域网内的设备划分成与物理位置无关的逻辑组的技术,这些逻辑组具有某些共同的需求。
2、虚拟局域网VLAN的实现机制
(1)IEEE 802.1Q帧
(2)交换机的端口类型
交换机的端口类型有以下三种:Access、Trunk、Hybrid
交换机各端口的缺省VLAN ID
-
- 在思科交换机上称为Native VLAN,即本征VLAN。
- 在华为交换机上称为Port VLAN ID,即端口VLAN ID,简记为PVID。
- Access端口
-
- Access端口一般用于连接用户计算机Access端口只能属于一个VLAN
- Access端口的PVID值与端口所属VLAN的ID相同(默认为1)
- Access端口接收处理方法:
-
-
- 一般只接受“未打标签”的普通以太网MAC帧。根据接收帧的端口的PVID给帧“打标签”,即插入4字节VLAN标记字段,字段中的VID取值与端口的PVID取值相等。
-
-
- Access端口发送处理方法:
-
-
- 若帧中的VID与端口的PVID相等,则“去标签”并转发该帧;否则不转发。
-
- Trunk端口
-
- Trunk端口一般用于交换机之间或交换机与路由器之间的互连
- Trunk端口可以属于多个VLAN
- 用户可以设置Trunk端口的PVID值。默认情况下,Trunk端口的PVID值为1。
- Trunk端口发送处理方法:
-
-
- 对VID等于PVID的帧,“去标签”再转发;
- 对VID不等于PVID的帧,直接转发;
-
-
- Trunk端口接收处理方法;
-
-
- 接收“未打标签”的帧,根据接收帧的端口的PVID给帧“打标签”,即插入4字节VLAN标记字段,字段中的VID取值与端口的PVID取值相等。
- 对VID不等于PVID的帧,直接转发;
-
- Hybrid端口
-
- Hybrid端口既可用于交换机之间或交换机与路由器之间的互连(同Trunk端口),也可用于交换机与用户计算机之间的互连(同Access端口)
- Hybrid端口可以属于多个VLAN(同Trun端口)
- 用户可以设置Hybrid端口的PVID值。默认情况下,Hybrid端口的PVID值为1(同Trun端口)
- Hybrid端口发送处理方法(与Trunk端口不同)
-
-
- 查看倾的VID是否在端口的“去标签”列表中:
-
-
-
-
- 若存在。则“去标签”后再转发;
- 若不存在,则直接转发;
-
-
-
- Hybrid端口接收处理方法(同Trunk端口)
-
-
- 接收“未打标签”的帧。根据接收帧的端口的PVID给帧“打标签”,即插入4字节VLAN标记字段,字段中的VID取值与端口的PVID取值相等。
- 接收“已打标签的帧”;
-
(3)小节
四、网络层
(一)、概述
- 网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输。
- 要实现网络层任务,需要解决以下主要问题:
-
- 网络层向运输层提供怎样的服务(“可靠传输”还是“不可靠传输”)
- 网络层寻址问题
- 路由选择问题
- 因特网(lnternet)是目前全世界用户数量最多的互联网,它使用TCP/IP协议栈。
- 由于TCP/IP协议栈的网络层使用网际协议IP,它是整个协议栈的核心协议,因此在TCP/IP协议栈中网络层常称为网际层。
- 综上所述,我们通过学习TCP/IP协议栈的网际层来学习网络层的理论知识和实践技术。
(二)、网络层提供的两种服务
1、面向连接的虚电路服务
- 可靠通信由网络来保证
- 必须建立网络层的连接——虚电路VC(Virtual Circuit)
- 通信双方沿着已建立的虚电路发送分组
- 目的主机的地址仅在连接建立阶段使用,之后每个分组的首部只需携带一条虚电路的编号(构成虚电路的每一段链路都有一个虚电路编号)。
- 这种通信方式如果再使用可靠传输的网络协议,就可使所发送的分组最终正确到达接收方(无差错按序到达、不丢失、不重复)。
- 通信结束后,需要释放之前所建立的虚电路。
- 很多广域分组交换网都使用面向连接的虚电路服务。例如,曾经的X.25和逐渐过时的帧中继FR、异步传输模式ATM等。
2、无连接的数据报服务
- 可靠通信应当由用户主机来保证
- 不需要建立网络层连接
- 每个分组可走不同的路径
- 每个分组的首部必须携带目的主机的完整地址
- 这种通信方式所传送的分组可能误码、丢失、重复和失序。
- 由于网络本身不提供端到端的可靠传输服务,这就使网络中的路由器可以做得比较简单,而且价格低廉(与电信网的交换机相比较)。
- 因特网采用了这种设计思想,也就是将复杂的网络处理功能置于因特网的边缘(用户主机和其内部的运输层),而将相对简单的尽最大努力的分组交付功能置于因特网核心。
3、小节
(三)、IPv4地址
1、概述
- 在TCP/IP体系中,IP地址是一个最基本的概念,我们必须把它弄清楚。
- IPv4地址就是给因特网(Internet)上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32比特的标识符。
- IP地址由因特网名字和数字分配机构ICANN(Internet Corporation for Assigned Names and Numbers)进行分配。
-
- 我国用户可向亚太网络信息中心APNIC(Asia Pacific Network Information Center)申请IP地址,需要缴费。
- 2011年2月3日,互联网号码分配管理局IANA (由ICANN行使职能)宣布,IPv4地址已经分配完毕。
- 我国在2014至2015年也逐步停止了向新用户和应用分配IPv4地址。同时全面开展商用部署IPv6。
- lPv4地址的编址方法经历了如下三个历史阶段:
- 32比特的IPv4地址不方便阅读、记录以及输入等,因此IPv4地址采用点分十进制表示方法以方便用户使用。
-
- 即8比特为一组:00001010 11110000 00001111 10101010=>10.240.15.170
2、分类编址的IPv4地址
- 只有A类、B类和C类地址可分配给网络中的主机或路由器的各接口
- 主机号为“全0”的地址是网络地址,不能分配给主机或路由器的各接口
- 主机号为“全1”的地址是广播地址,不能分配给主机或路由器的各接口
网络类型 | 第一个可指派的网络号 | 最后一个可指派的网络号 | 不能指派的网络号 | 占总地址空间 | IP地址范围 | 网络数量及主机数量 |
A类地址 | 1 | 126 | 0和127 | 1/2 | 1.0.0.1~126.255.255.254 | 126(2^7-2)个,每个网络能容纳16,777,214(2^24-2)个主机 |
B类地址 | 128.0 | 191.255 | 无 | 1/4 | 128.0.0.1~191.255.255.254 | 16384(2^14)个,每个网络能容纳65534(2^16-2)个主机 |
C类地址 | 192.0.0 | 223.255.255 | 无 | 1/8 | 192.0.0.1~223.255.255.254 | 2097151(2^21-1)个,每个网络能容纳254(2^8-2)个主机 |
D类地址 | 多播地址 | 1/16 | 224.0.0.1~239.255.255.254 | |||
E类地址 | 保留为今后使用 | 1/16 | 240.0.0.1~255.255.255.254 |
练习
3、划分子网的IPv4地址
4、无分类编址的IPv4地址
- 划分子网在一定程度上缓解了因特网在发展中遇到的困难,但是数量巨大的C类网因为其地址空间太小并没有得到充分使用,而因特网的IP地址仍在加速消耗,整个IPv4地址空间面临全部耗尽的威胁。
- 为此,因特网工程任务组IETF又提出了采用无分类编址的方法来解决IP地址紧张的问题,同时还专门成立IPv6工作组负责研究新版本IP以彻底解决IP地址耗尽问题。
- 1993年,IETF发布了无分类域间路由选择CIDR(Classless Inter-Domain Routing)的RFC文档:RFC 1517~1519和1520。
-
- CIDR消除了传统的A类、B类和C类地址,以及划分子网的概念;
- CIDR可以更加有效地分配IPv4的地址空间,并且可以在新的IPv6使用之前允许因特网的规模继续增长。
- CIDR使用“斜线记法”,或称CIDR记法。即在IPv4地址后面加上斜线“/”,在斜线后面写上网络前缀所占的比特数量。
- CIDR实际上是将网络前缀都相同的连续的IP地址组成一个“CIDR地址块”。我们只要知道CIDR地址块中的任何一个地址,就可以知道该地址块的全部细节。
-
- 地址块的最小地址
- 地址块的最大地址
- 地址块中的地址数量
- 地址块聚合某类网络(A类、B类或C类)的数量
- 地址掩码(也可继续称为子网掩码)
例题
路由聚合(构造超网)
- 网络前缀越长,地址块越小,路由越具体;
- 若路由器查表转发分组时发现有多条路由可选,则选择网络前缀最长的那条,这称为最长前缀匹配因为这样的路由更具体。
5、IPv4地址的应用规划
定长的子网掩码FLSM(Fixed Length Subnet Mask)
-
- 使用同一个子网掩码来划分子网
- 每个子网所分配的IP地址数量相同,造成lP地址的浪费
变长的子网掩码VLSM(Variable Length Subnet Mask)
-
- 使用不同的子网掩码来划分子网
- 每个子网所分配的IP地址数量可以不同,尽可能减少对IP地址的浪费
(四)、IP数据报的发送和转发过程
为了将重点放在TCP/IP协议栈的网际层发送和转发IP数据报的过程上,在之后的举例中,我们忽略使用ARP协议来获取目的主机或路由器接口的MAC地址的过程以及以太网交换机自学习和转发帧的过程。
IP数据报的发送和转发过程包含以下两部分:
- 主机发送IP数据报
-
- 判断目的主机是否与自己在同一个网络(判断方法请参看本节课相关示例)
-
-
- 若在同一个网络,则属于直接交付;
- 若不在同一个网络,则属于间接交付,传输给主机所在网络的默认网关(路由器),由默认网关帮忙转发;
-
- 路由器转发IP数据报
-
- 检查IP数据报首部是否出错:
-
-
- 若出错,则直接丢弃该IP数据报并通告源主机;
- 若没有出错,则进行转发;
-
-
- 根据IP数据报的目的地址在路由表中查找匹配的条目(查找方法请参看本节课相关示例)∶
-
-
- 若找到匹配的条目,则转发给条目中指示的下一跳;
- 若找不到,则丢弃该IP数据报并通告源主机;
-
- 中继器和集线器工作在物理层,既不隔离冲突域也不隔离广播域。
- 网桥和交换机(多端口网桥)工作在数据链路层,可以隔离冲突域,不能隔离广播域。
- 路由器工作在网络层,既隔离冲突域,也隔离广播域。
(五)、静态路由配置
- 静态路由配置是指用户或网络管理员使用路由器的相关命令给路由器人工配置路由表。
-
- 这种人工配置方式简单、开销小。但不能及时适应网络状态(流量、拓扑等)的变化。
- 一般只在小规模网络中采用。
- 使用静态路由配置可能出现以下导致产生路由环路的错误
-
- 配置错误
- 聚合了不存在的网络口
- 网络故障
- 路由条目的类型
-
- 直连网络
- 静态路由(人工配置)
- 动态路由(路由选择协议)
- 特殊的静态路由条目
-
- 默认路由(目的网络为0.0.0.0,地址掩码为0.0.0.0)
- 特定主机路由(目的网络为特定主机的lP地址,地址掩码为255.255.255.255)
- 黑洞路由(下一跳为nullO)
静态路由配置
默认路由、特定主机路由
路由环路问题
配置错误:
聚合不存在网络:
通过增加黑洞路由解决这一问题:
网络故障:
通过增加黑洞路由解决这一问题:
(六)、路由选择协议
1、概述
静态路由选择 | 动态路由选择 |
由人工配置的网络路由、默认路由、特定主机路由、黑洞路由等都属于静态路由。 | 路由器通过路由选择协议自动获取路由信息。 |
这种人工配置方式简单、开销小。但不能及时适应网络状态(流量、拓扑等)的变化。 | 比较复杂、开销比较大。能较好地适应网络状态的变化。 |
一般只在小规模网络中采用。 | 适用于大规模网络。 |
因特网所采用的路由选择协议的主要特点
-
- 自适应
动态路由选择,能较好地适应网络状态的变化
-
- 分布式
路由器之间交换路由信息
-
- 分层次
将整个因特网划分为许多较小的自治系统AS(Autonomous System)
因特网采用分层次的路由选择协议
常见的路由选择协议
路由器的基本结构
- 路由表一般仅包含从目的网络到下一跳的映射
- 路由表需要对网络拓扑变化的计算最优化
- 转发表是从路由表得出的
- 转发表的结构应当使查找过程最优化
2、路由信息协议RIP的基本工作原理
- 路由信息协议RIP(Routing Information Protocol)是内部网关协议IGP中最先得到广泛使用的协议之一,其相关标准文档为RFC 1058。
- RIP要求自治系统AS内的每一个路由器都要维护从它自己到AS内其他每一个网络的距离记录。这是一组距离,称为“距离向量D-V(Distance-Vector)" 。
- RIP使用跳数(Hop Count)作为度量(Metric)来衡量到达目的网络的距离。
-
- 路由器到直连网络的距离定义为1。
- 路由器到非直连网络的距离定义为所经过的路由器数加1。
- 允许一条路径最多只能包含15个路由器。“距离”等于16时相当于不可达。因此,RIP只适用于小型互联网。
- RIP认为好的路由就是“距离短”的路由,也就是所通过路由器数量最少的路由。当到达同一目的网络有多条“距离相等”的路由时,可以进行等价负载均衡。RIP包含以下三个要点:
-
- 和谁交换信息 仅和相邻路由器交换信息
- 交换什么信息 自己的路由表
- 何时交换信息 周期性交换(例如每30秒)
RIP的基本工作过程
①路由器刚开始工作时,只知道自己到直连网络的距离为1。
②每个路由器仅和相邻路由器周期性地交换并更新路由信息。
③若干次交换和更新后,每个路由器都知道到达本AS内各网络的最短距离和下一跳地址,称为收敛。
RIP的路由条目的更新规则
- 发现了新的网络,添加
- 到达目的网络,不同下一跳,新路由优势,更新
- 到达目的网络,不同下一跳, 等价负载均衡
- 到达目的网络,相同下一跳,最新消息,更新
- 到达目的网络,不同下一跳,新路由劣势,不更新
RIP存在“坏消息传播得慢”的问题
- RIP存在“坏消息传播得慢”的问题
- “坏消息传播得慢”又称为路由环路或距离无穷计数问题,这是距离向量算法的一个固有问题。可以采取多种措施减少出现该问题的概率或减小该问题带来的危害。
-
- 限制最大路径距离为15 (16表示不可达)
- 当路由表发生变化时就立即发送更新报文(即“触发更新”),而不仅是周期性发送
- 让路由器记录收到某特定路由信息的接口,而不让同一路由信息再通过此接口向反方向传送(即“水平分割”)
练习
3、开放最短路径优先OSPF的基本工作原理
- 开放最短路径优先OSPF(Open Shortest Path First),是为克服RIP的缺点在1989年开发出来的。
-
- “开放”表明OSPF协议不是受某一家厂商控制,而是公开发表的。
- "最短路径优先”是因为使用了Dijkstra提出的最短路径算法SPF。
- OSPF是基于链路状态的,而不像RIP那样是基于距离向量的。
- OSPF采用SPF算法计算路由,从算法上保证了不会产生路由环路。
- OSPF不限制网络规模,更新效率高,收敛速度快。
- 链路状态是指本路由器都和哪些路由器相邻,以及相应链路的“代价”(cost)。
-
- “代价”用来表示费用、距离、时延、带宽,等等。这些都由网络管理人员来决定。
- OSPF相邻路由器之间通过交互问候(Hello)分组,建立和维护邻居关系。
-
- Hello分组封装在IP数据报中,发往组播地址224.0.0.5;
-
- 发送周期为10秒
- 40秒未收到来自邻居路由器的Hello分组,则认为该邻居路由器不可达。
- 使用OSPF的每个路由器都会产生链路状态通告LSA(Link Siate Adverisemen)。LSA中包含以下内容:
-
- 直连网络的链路状态信息
- 邻居路由器的链路状态信息
- LSA被封装在链路状态更新分组LSU中,采用洪泛法发送。
- 使用OSPF的每个路由器都有一个链路状态数据库LSDB,用于存储LSA。
- 通过各路由器洪泛发送封装有自己LSA的LSU分组,各路由器的LSDB最终将达到一致。
- 使用OSPF的各路由器基于LSDB进行最短路径优先SPF计算,构建出各自到达其他各路由器的最短路径,即构建各自的路由表。
OSPF有以下五种分组类型
- 类型1,问候(Hello)分组
用来发现和维护邻居路由器的可达性。
- 类型2,数据库描述(Database Description)分组
向邻居路由器给出自己的链路状态数据库中的所有链路状态项目的摘要信息
- 类型3,链路状态请求(Link State Request)分组
向邻居路由器请求发送某些链路状态项目的详细信息。
- 类型4,链路状态更新(Link State Update)分组
路由器使用这种分组将其链路状态进行洪泛发送,即用洪泛法对全网更新链路状态。
- 类型5,链路状态确认(Link State Acknowledgment)分组
这是对链路状态更新分组的确认分组。
OSPF基本工作过程
OSPF在多点接入网络中路由器邻居关系的建立
- 链路状态确认(Link State Acknowledgment)分组
- 选举指定路由器DR(designated router)和备用的指定路由器BDR(backup designated router)
- 所有的非DR/BDR只与DR/BDR建立邻居关系
- 非DR/BDR之间通过DR/BDR交换信息
区域
为了使OSPF能够用于规模很大的网络,OSPF把一个自治系统再划分为若千个更小的范围,叫做区域(Area)。
划分区域的好处就是把利用洪泛法交换链路状体信息的范围局限于每一个区域而不是整个自治系统,这就减少了整个网络上的通信量。
(七)、边界网关协议BGP的基本工作原理
1、概述
- 内部网关协议IGP(例如路由信息协议RIP或开放最短路径优先OSPF)
-
- 设法使分组在一个自治系统内尽可能有效地从源网络传输到目的网络
- 无需考虑自治系统外部其他方面的策略
- 外部网关协议EGP(例如边界网关协议BGP)
-
- 在不同自治系统内,度量路由的“代价”(距离,带宽,费用等)可能不同。因此,对于自治系统之间的路由选择,使用“代价”作为度量来寻找最佳路由是不行的。
- 自治系统之间的路由选择必须考虑相关策略(政治,经济,安全等)
2、边界网关协议BGP
- BGP只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找━条最佳路由
- 在配置BGP时,每个自治系统的管理员要选择至少一个路由器作为该自治系统的“BGP发言人”
- 不同自治系统的BGP发言人要交换路由信息,首先必须建立TCP连接,端口号为179
-
- 在此TCP连接上交换BGP报文以建立BGP会话
- 利用BGP会话交换路由信息(例如,增加新的路由,或撤销过时的路由,以及报告出错的情况等)
- 使用TCP连接交换路由信息的两个BGP发言人,彼此称为对方的邻站(neighbor)或对等站(peer)
- BGP发言人除了运行BGP外,还必须运行自己所在自治系统所使用的内部网关协议IGP,例如OSPF或RIP
- BGP发言人交换网络可达性的信息(要到达某个网络所要经过的一系列自治系统)
- 当BGP发言人互相交换了网络可达性的信息后,各BGP发言人就根据所采用的策略从收到的路由信息中找出到达各自治系统的较好的路由。也就是构造出树形结构、不存在回路的自治系统连通图。
3、BGP多级结构因特网
5、BGP-4有以下四种报文
- OPEN(打开)报文:用来与相邻的另一个BGP发言人建立关系,使通信初始化。
- UPDATE(更新)报文:用来通告某一路由的信息,以及列出要撤销的多条路由。
- KEEPALIVE(保活)报文:用来周期性地证实邻站的连通性。
- NOTIFICATION(通知)报文:用来发送检测到的差错。
6、练习
(八)、IPv4数据报的首部格式
版本:
占4比特,表示IP协议的版本。
通信双方使用的IP协议的版本必须一致。目前广泛使用的IP协议版本号为4(即lIPv4)
首部长度:
占4比特,表示lP数据报首部的长度。该字段的取值以4字节为单位。
最小十进制取值为5,表示IP数据报首部只有20字节固定部分;
最大十进制取值为15,表示IP数据报首部包含20字节固定部分和最大40字节可变部分。
可选字段:
长度从1个字节到40个字节不等。用来支持排错、测量及安全等措施。
可选字段增加了IP数据报的功能,但这同时也使得IP数据报的首部长度成为可变的。这就增加了每一个路由器处理P数据报的开销。实际上可选字段很少被使用.
填充字段:
确保首部长度为4字节的整数倍。使用全0进行填充。
区分服务:
占8比特,用来获得更好的服务。
1998年,因特网工程任务组IET把这个字段改名为区分服务。
利用该字段的不同数值可提供不同等级的服务质量。
只有在使用区分服务时,该字段才起作用。
一般情况下都不使用该字段。
总长度:
占16比特,表示IP数据报的总长度(首部+数据载荷)。
最大取值为十进制的65535,以字节为单位。
标识:
占16比特,属于同一个数据报的各分片数据报应该具有相同的标识。IP软件维持一个计数器,每产生一个数据报,计数器值加1,并将此值赋给标识字段.
标志:
占3比特,各比特含义如下:
(中间位)DF位:1表示不允许分片;0表示允许分片;
(最低位)MF位:1表示“后面还有分片”;0表示“这是最后一个分片”;
保留位:必须为0.
片偏移:
占13比特,指出分片数据报的数据载荷部分偏移其在原数据报的位置有多少个单位。片偏移以8个字节为单位。
下图分片的MTU=1420
生存时间:
TTL占8比特,表示IP数据报的生存时间。
最初以秒为单位,最大生存周期为255秒;路由器转发IP数据报时,将IP数据报首部中的该字段的值减去IP数据报在本路由器上所耗费的时间,若不为0就转发,否则就丢弃。
现在以“跳数”为单位,路由器转发IP数据报时,将IP数据报首部中的该字段的值减1,若不为0就转发,否则就丢弃。
IP数据报每经过一个路由器,路由器都要重新计算首部检验和,因为某些字段(生存时间、标志、片偏移等)的取值可能发生变化。
协议:
占8比特,指明IPv4数据报的数据部分是何种协议数据单元。
常用的一些协议和相应的协议字段值如下:
首部检验和:
占16比特,用来检测首部在传输过程中是否出现差错。比CRC检验码简单,称为因特网检验和。
由于IP层本身并不提供可靠传输的服务,并且计算首部校验和是一项耗时的操作,因此在IPv6中,路由器不再计算首部校验和,从而更快转发IP数据报。
源IP地址和目的IP地址:
各占32比特,用来填写发送该IP数据报的源主机的IP地址和接收该IP数据报的目的主机的IP地址。
练习
(1)Mac地址:00-21-27-21-51-ee
(2)IP分组经过路由器R时,生存时间字段被减1;首部检验和会被重新计算;若IP分组总长度大于MTU,则需要进行分片。
此时总长度字段、标志字段、片偏移字段都需要修改。
(九)、网际控制报文协议ICMP
1、ICMP差错报告报文共有以下五种:
终点不可达
当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。具体可再根据ICMP的代码字段细分为目的网络不可达.目的主机不可达、目的协议不可达、目的端口不可达、目的网络未知、目的主机未知等13种错误。
源点抑制
当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。
时间超过
- 当路由器收到一个目的IP地址不是自己的IP数据报,会将其生存时间TTL字段的值减1。
若结果不为0,则将该IP数据报转发出去;若结果为O,除丢弃该IP数据报外,还要向源点发送时间超过报文。
- 另外,当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,也会向源点发送时间超过报文。
参数问题
当路由器或目的主机收到IP数据报后,根据其首部中的检验和字段发现首部在传输过程中出现了误码,就丢弃该数据报,并向源点发送参数问题报文。
改变路由(重定向)
路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。
2、以下情况不应发送ICMP差错报告报文:
- 对ICMP差错报告报文不再发送ICMP差错报告报文
- 对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文
- 对具有多播地址的数据报都不发送ICMP差错报告报文
- 对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文
3、常用的ICMP询问报文
常用的ICMP询问报文有以下两种:
回送请求和回答
ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问。
收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。
这种询问报文用来测试目的站是否可达及了解其有关状态。
时间戳请求和回答
ICMP时间戳请求报文是请某个主机或路由器回答当前的日期和时间。
在ICMP时间戳回答报文中有一个32位的字段,其中写入的整数代表从1900年1月1日起到当前时刻一共有多少秒。
这种询问报文用来进行时钟同步和测量时间。
4、ICMP应用举例
分组网间探测PING(Packet InterNet Groper)
-
- 用来测试主机或路由器间的连通性
- 应用层直接使用网际层的ICMP(没有通过运输层的TCP或UDP)
- 使用ICMP回送请求和回答报文
跟踪路由traceroute
- 用来测试lP数据报从源主机到达目的主机要经过哪些路由器
- Windows版本
-
- tracert命令
- 应用层直接使用网际层ICMP
- 使用了ICMP回送请求和回答报文以及差错报告报文
- Unix版本
-
- traceroute命令
- 在运输层使用UDP协议
- 仅使用ICMP差错报告报文
(十)、虚拟专用网VPN与网络地址转换NAT
1、虚拟专用网VPN(Virtual Private Network)
利用公用的因特网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网。
由于IPv4地址的紧缺,一个机构能够申请到的IPv4地址数量往往远小于本机构所拥有的主机数量。因此,虚拟专用网中的各主机所分配的地址应该是本机构可自由分配的专用地址,而不是需要申请的、在因特网上使用的公有地址。
IP隧道技术:
如下图所示,同一机构内不同部门的内部网络所构成的虚拟专用网VPN又称为内联网VPN。
有时一个机构的VPN需要有某些外部机构(通常就是合作伙伴)参加进来。这样的VPN就称为外联网VPN。
在外地工作的员工需要访问公司内部的专用网络时,只要在任何地点接入到因特网,运行驻留在员工PC中的VPN软件,在员工的PC和公司的主机之间建立VPN隧道,即可访问专用网络中的资源。这种VPN称为远程接入VPN。
2、网络地址转换NAT(Network Address Translation)
虽然因特网采用了无分类编址方式来减缓IPv4地址空间耗尽的速度,但由于因特网用户数目的激增,特别是大量小型办公室网络和家庭网络接入因特网的需求不断增加,IPv4地址空间即将面临耗尽的危险仍然没有被解除。
1994年提出了一种网络地址转换NAT的方法再次缓解了IPv4地址空间即将耗尽的问题。
NAT能使大量使用内部专用地址的专用网络用户共享少量外部全球地址来访问因特网上的主机和资源。
不可以由外网主机主动与内网主机进行通信,对于一些P2P网络应用,需要外网主机主动与内网主机进行通信,在通过NAT时会遇到问题,需要网络应用自己使用一些特殊的NAT穿越技术来解决问题。
由于NAT对外网屏蔽了内网主机的网络地址,能为内网的主机提供一定的安全保护
该转换方法存在一个问题:如果NAT路由器具有N个全球IP地址,那么至多只能有N个内网主机能够同时和因特网上的主机通信。
=》
由于绝大多数的网络应用都是使用运输层协议TCP或UDP来传送数据,因此可以利用运输层的端口号和IP地址一起进行转换。
这样,用一个全球IP地址就可以使多个拥有本地地址的主机同时和因特网上的主机进行通信。这种将端口号和IP地址一起进行转换的技术叫作网络地址与端口号转换NAPT(Network Address and Port Translation)。
五、运输层
(一)、概述
1、概述
- 之前课程所介绍的计算机网络体系结构中的物理层、数据链路层以及网络层它们共同解决了将主机通过异构网络互联起来所面临的问题,实现了主机到主机的通信。
- 但实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程。
- 如何为运行在不同主机上的应用进程提供直接的通信服务是运输层的任务,运输层协议又称为端到端协议。
2、基本概念
运输层端口号
- 运行在计算机上的进程使用进程标识符PID来标志。
- 因特网上的计算机并不是使用统一的操作系统,不同的操作系统(windows,Linux,Mac OS)又使用不同格式的进程标识符。
- 为了使运行不同操作系统的计算机的应用进程之间能够进行网络通信,就必须使用统一的方法对TCP/IP体系的应用进程进行标识。
- TCP/IP体系的运输层使用端口号来区分应用层的不同应用进程。
-
- 端口号使用16比特表示,取值范围0~65535;
-
-
- 熟知端口号:0~1023,IANA把这些端口号指派给了TCP/IP体系中最重要的一些应用协议,例如:FTP使用21/20,HTTP使用80,DNS使用53。
- 登记端口号:1024~49151,为没有熟知端口号的应用程序使用。使用这类端口号必须在IANA按照规定的手续登记,以防止重复。例如:Microsoft RDP微软远程桌面使用的端口是3389。
- 短暂端口号:49152~65535,留给客户进程选择暂时使用。当服务器进程收到客户进程的报文时,就知道了客户进程所使用的动态端口号。通信结束后,这个端口号可供其他客户进程以后使用。
-
-
- 端口号只具有本地意义,即端口号只是为了标识本计算机应用层中的各进程,在因特网中,不同计算机中的相同端口号是没有联系的。
发送方的复用和接收方的分用
TCP/IP体系的应用层常用协议所使用的运输层熟知端口号
(二)、UDP、TCP
1、UDP与TCP对比
UDP和TCP是TCP/IP体系结构运输层中的两个重要协议
UDP | TCP |
无连接 | 面向连接 |
支持一对一,一对多,多对一和多对多交互通信。 | 每一条TCP连接只能有两个端点EP,只能是一对一通信。 |
对应用层交付的报文直接打包 | 面向字节流 (全双工) |
尽最大努力交付,也就是不可靠;不使用流量控制和拥塞控制。 | 可靠传输,使用流量控制和拥塞控制。 |
首部开销小,仅8字节 | 首部最小20字节,最大60字节 |
2、TCP的流量控制
- 一般来说,我们总是希望数据传输得更快一些。但如果发送方把数据发送得过快,接收方就可能来不及接收,这就会造成数据的丢失。
- 所谓流量控制(flow control)就是让发送方的发送速率不要太快,要让接收方来得及接收。
-
- 利用滑动窗口机制可以很方便地在TCP连接上实现对发送方的流量控制。
-
-
- TCP接收方利用自己的接收窗口的大小来限制发送方发送窗口的大小。
- TCP发送方收到接收方的零窗口通知后,应启动持续计时器。持续计时器超时后,向接收方发送零窗口探测报文。
-
流量工作工作流程
练习
3、TCP的拥塞控制
- 在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏。这种情况就叫做拥塞(congestion)。
-
- 在计算机网络中的链路容量(即带宽)、交换结点中的缓存和处理机等,都是网络的资源。
- 若出现拥塞而不进行控制,整个网络的吞吐量将随输入负荷的增大而下降。
拥塞控制主要是四个算法:慢启动(慢开始slow-start)、拥塞避免(congestion avoidance)、快速重传(快重传fast retransmit)、快速恢复(快恢复fast recovery)
参考:
计算机网络TCP拥塞控制窗口大小变化、重传、滑动窗口、流量控制等_不会编程的小猿的博客-CSDN博客_tcp拥塞窗口计算
TCP/IP卷一:86---TCP拥塞控制之(慢启动、拥塞避免技术与经典算法(Tahoe、Reno以及快速恢复算法)) - it610.com
慢启动
发送方维护一个叫做拥塞窗口cwnd的状态变量,其值取决于网络的拥塞程度,并且动态变化。
-
- 拥塞窗口cwnd的维护原则:只要网络没有出现拥塞,拥塞窗口就再增大 ;但只要网络出现拥塞,拥塞窗口就减少一些。
- 判断出现网络拥塞的依据:没有按时收到应当到达的确认报文(即发生超时重传)。
发送方将拥塞窗口作为发送窗口swnd,即swnd = cwnd。
维护一个叫慢启动门限 ssthresh (slow start threshold)状态变量。
- 当 cwnd < ssthresh 时,使用慢启动算法。
- 当 cwnd >ssthresh 时,就会使用「拥塞避免算法」。
- 当 cwnd >ssthresh 时,既可使用慢启动算法,也可使用「拥塞避免算法」。
TCP 在刚建立连接完成后,首先是有个慢启动的过程,这个慢启动的意思就是一点一点的提高发送数据包的数量。
慢启动的算法记住一个规则就行:当发送方每收到一个 ACK,拥塞窗口 cwnd 的大小就会加 1。
这里假定拥塞窗口 cwnd 和发送窗口 swnd 相等,下面举个例子:
- 连接建立完成后,一开始初始化 cwnd = 1,表示可以传一个 MSS 大小的数据。
- 当收到一个 ACK 确认应答后,cwnd 增加 1,于是一次能够发送 2 个
- 当收到 2 个的 ACK 确认应答后, cwnd 增加 2,于是就可以比之前多发2 个,所以这一次能够发送 4 个
- 当这 4 个的 ACK 确认到来的时候,每个确认 cwnd 增加 1, 4 个确认 cwnd 增加 4,于是就可以比之前多发 4 个,所以这一次能够发送 8 个。
可以看出慢启动算法,发包的个数是指数性的增长。
拥塞避免算法
前面说道,当拥塞窗口 cwnd 「超过」慢启动门限 ssthresh 就会进入拥塞避免算法。
那么进入拥塞避免算法后,它的规则是:每当收到一个 ACK 时,cwnd 增加 1/cwnd(也就是每轮次加1,线性增长)。
接上前面的慢启动的例子,现假定 ssthresh 为 8:
- 当 8 个 ACK 应答确认到来时,每个确认增加 1/8,8 个 ACK 确认 cwnd 一共增加 1,于是这一次能够发送 9 个 MSS 大小的数据,变成了线性增长。
--当重传计时器超时,判断网络很可能出现了拥塞,触发超时重传:
当发生了「超时重传」,则就会使用拥塞发生算法。
这个时候,sshresh 和 cwnd 的值会发生变化:
-
- ssthresh 设为 cwnd/2,
- cwnd 重置为 1,并重新开始慢开始算法
接着,就重新开始慢启动,慢启动是会突然减少数据流的。这真是一旦「超时重传」,马上回到解放前。但是这种方式太激进了,反应也很强烈,会造成网络卡顿。
快速重传
- 1990年又增加了两个新的拥塞控制算法(改进TCP的性能),这就是快重传和快恢复(TCP Reno版本)。
-
- 有时,个别报文段会在网络中丢失,但实际上网络并未发生拥塞。这将导致发送方超时重传,并误认为网络发生了拥塞;
-
-
- 发送方把拥塞窗口cwnd又设置为最小值1,并错误地启动慢开始算法,因而降低了传输效率。
- 采用快重传算法可以让发送方尽早知道发生了个别报文段的丢失。
-
- 所谓快重传,就是使发送方尽快进行重传,而不是等超时重传计时器超时再重传。
-
- 要求接收方不要等待自己发送数据时才进行捎带确认,而是要立即发送确认;
- 即使收到了失序的报文段也要立即发出对已收到的报文段的重复确认。
- 发送方一旦收到3个连续的重复确认,就将相应的报文段立即重传,而不是等该报文段的超时重传计时器超时再重传。
- 对于个别丢失的报文段,发送方不会出现超时重传,也就不会误认为出现了拥塞(进而降低拥塞窗口cwnd为1)。使用快重传可以使整个网络的吞吐量提高约20%。
快速重传 ssthresh 和 cwnd 变化如下:
-
- cwnd = cwnd/2 ,也就是设置为原来的一半;
- ssthresh = cwnd;
- 进入快速恢复算法
快速恢复
后来的“快速恢复”算法是在上述的“快速重传”算法后添加的,当收到3个重复ACK时,TCP最后进入的不是拥塞避免阶段,而是快速恢复阶段。
快速重传和快速恢复算法一般同时使用,快速恢复算法是认为,你还能收到 3 个重复 ACK 说明网络也不那么糟糕,所以没有必要像 RTO 超时那么强烈。
然后,进入快速恢复算法如下:
- cwnd = cwnd/2 ,也就是设置为原来的一半;
- ssthresh = cwnd;(进入快速恢复之前,cwnd 和 ssthresh 已被更新了,这里的两步和快速重传的相同步骤执行一次即可)
- 拥塞窗口 cwnd = ssthresh (有的版本是cwnd = ssthresh + 3,+ 3 的意思是确认有 3 个数据包被收到了)
- 重传丢失的数据包
- 如果再收到重复的 ACK,那么 cwnd 增加 1
- 如果收到新数据的 ACK 后,设置 cwnd 为 ssthresh,接着就进入了拥塞避免算法
注意
- “慢开始”是指一开始向网络注入的报文段少,并不是指拥塞窗口cwnd增长速度慢;
- “拥塞避免”并非指完全能够避免拥塞,而是指在拥塞避免阶段将拥塞窗口控制为按线性规律增长,使网络比较不容易
4、TCP超时重传
- 针对出现超时重传时无法测准往返时间RTT的问题,Karn提出了一个算法:在计算加权平均往返时间RTTs时,只要报文段重传了,就不采用其往返时间RTT样本。也就是出现重传时,不重新计算RTTs,进而超时重传时间RTO也不会重新计算。
-
- 这又引起了新的问题。设想出现这样的情况:报文段的时延突然增大了很多,并且之后很长一段时间都会保持这种时延。因此在原来得出的重传时间内,不会收到确认报文段。于是就重传报文段。但根据Karn算法,不考虑重传的报文段的往返时间样本。这样,超时重传时间就无法更新。这会导致报文段反复被重传。
- 因此,要对Karn算法进行修正。方法是:报文段每重传一次,就把超时重传时间RTO增大一些。典型的做法是将新RTO的值取为旧RTO值的2倍。
计算超时重传时间RTO
5、TCP可靠传输
发送方ack,确认收到31号的ack携带序号是32;未收到31号,返回确认ack31
TCP基于以字节为单位的滑动窗口来实现可靠传输。
发送方在未收到接收方的确认时,可将发送窗口内还未发送的数据全部发送出去;
接收方只接收序号落入发送窗口内的数据;
虽然发送方的发送窗口是根据接收方的接收窗口设置的,但在同一时刻,发送方的发送窗口并不总是和接收方的接收窗口一样大。
网络传送窗口值需要经历一定的时间滞后,并且这个时间还是不确定的。
发送方还可能根据网络当时的拥塞情况适当减小自己的发送窗口尺寸。
对于不按序到达的数据应如何处理,TCP并无明确规定。
如果接收方把不按序到达的数据一律丢弃,那么接收窗口的管理将会比较简单,但这样做对网络资源的利用不利,因为发送方会重复传送较多的数据。
TCP通常对不按序到达的数据是先临时存放在接收窗口中,等到字节流中所缺少的字节收到后,再按序交付上层的应用进程。
TCP要求接收方必须有累积确认和捎带确认机制,这样可以减小传输开销。接收方可以在合适的时候发送确认,也可以在自己有数据要发送时把确认信息顺便捎带上。
接收方不应过分推迟发送确认,否则会导致发送方不必要的超时重传,这反而浪费了网络的资源。
TCP标准规定,确认推迟的时间不应超过0.5秒。若收到一连串具有最大长度的报文段,则必须每隔一个报文段就发送一个确认[RFC 1122].
捎带确认实际上并不经常发生,因为大多数应用程序很少同时在两个方向上发送数据。
TCP的通信是全双工通信。通信中的每一方都在发送和接收报文段。
因此,每一方都有自己的发送窗口和接收窗口。在谈到这些窗口时,一定要弄清楚是哪一方的窗口。
6、TCP的运输连接管理
- TCP是面向连接的协议,它基于运输连接来传送TCP报文段。
- TCP运输连接的建立和释放是每一次面向连接的通信中必不可少的过程。
- TCP运输连接有以下三个阶段:
-
- 建立TCP连接
- 数据传送
- 释放TCP连接
TCP的运输连接管理就是使运输连接的建立和释放都能正常地进行。
三报文握手
- TCP的连接建立要解决以下三个问题:
①使TCP双方能够确知对方的存在;
②使TCP双方能够协商一些参数(如最大窗口值、是否使用窗口扩大选项和时间戳选项以及服务质量等);
③使TCP双方能够对运输实体资源((如缓存大小、连接表中的项目等)进行分配。
- TCP使用“三报文握手”建立连接
-
- 一握手(TCP连接请求报文)
SYN同步位:表明这是一个TCP连接请求报文段。
seq:TCP客户进程所选择的初始序号。
-
- 二握手(TCP连接请求确认报文)
SYN=1,ACK=1:表明这是一个TCP连接请求确认报文段。
序号字段seq被设置了一个初始值y:作为TCP服务器进程选择的初始序号。
确认号字段ack的值被设置成了x+1:这是对TCP客户进程选择的初始序号的确认。
- 三握手(普通的TCP确认报文)
确认位ACK被设置为1:表明这是一个普通的TCP确认报文段。
seq=x+1,这是因为TCP客户进程发送的第一个TP报文段的序号为x。(发送的下一份TCP报文序号任然是x+1)
ack=y,这是对TCP服务器进程选择的初始序号的确认。
注意:
TCP规定SYN被设置为1的报文段不能携带数据,但要消耗掉一个序号。
TCP规定普通的TCP确认报文段回以携带数据,但如果不携带数据。则不消耗序号。
不多余!这是为了防止已失效的连接请求报文段突然又传送到了TCP服务器,因而导致错误。
四报文挥手
- 一挥手(TCP连接释放报文)
-
- 终止位FIN、确认位ACK设置为1:表明这是一个TCP连接释放报文段,同时也是对之前接收数据的确认。
- 序号seq字段的值设置为u:u等于TCP客户进程之前已传送过的数据的最后一个字节的序号加1。
- 确认号ack字段的值设置为v:等于TCP客户进程之前已收到的数据的最后一个字节的序号加1。
- 二挥手(普通的TCP确认报文)
-
- 确认位ACK被设置为1:表明这是一个普通的TCP确认报文段。
- seq=v,等于TCP客户进程之前已收到的数据的最后一个字节的序号加1。(发送的下一份TCP报文序号任然是v)
- ack=u+1,这是对TCP连接释放报文段的确认。
- 三挥手(TCP连接释放报文段,最后确认状态)
-
- 终止位AN和确认位ACK的值都被变置为1:表明放是—个TCP连接释放报文段,同时也对之前收到的报文段进行确认。
- 序号seq字段的值为v:在半关闭状态下,TCP进程可能发送一些数据,导致序列号增加;如果没有发送数据则w=v
- 确认号adk字段的值为u+1:这是对之前收到的TGP连接释放报文段的重复确认。
- 四挥手(普通的TCP确认报文)
-
- 确认位ACK被设置为1:表明这是一个普通的TCP确认报文段。
- seq=u+1,等于TCP客户进程之前已收到的数据的最后一个字节的序号加1。
- ack=w+1,这是对TCP连接释放报文段的确认。
注意:
TCP规定终止位N等于1的报文段即使不携带数据,但要消耗掉一个序号。
时间等待是为了避免以下这种情况
保活计时器
7、TCP报文首部格式
- 为了实现可靠传输,TCP采用了面向字节流的方式。
- 但TCP在发送数据时,是从发送缓存取出一部分或全部字节并给其添加一个首部使之成为TCP报文段后进行发送。
-
- 一个TCP报文段由首部和数据载荷两部分构成;
- TCP的全部功能都体现在它首部中各字段的作用。
源端口 :占16比特,写入源端口号,用来标识发送该TCP报文段的应用进程。
目的端口 :占16比特,写入目的端口号,用来标识接收该TCP报文段的应用进程。
序号 :占32比特,取值范围[0,2^32-1],序号增加到最后一个后,下一个序号就又回到0。
指出本TCP报文段数据载荷的第一个字节的序号。
确认号 :占32比特,取值范围[0,2^32-1],确认号增加到最后一个后,下一个确认号就又回到0。
指出期望收到对方下一个TCP报文段的数据载荷的第一个字节的序号,同时也是对之前收到的所有数据的确认。
若确认号=n,则表明到序号n-1为止的所有数据都已正确接收,期望接收序号为n的数据。
确认标志位ACK :取值为1时确认号字段才有效;取值为0时确认号字段无效。
TCP规定,在连接建立后所有传送的TCP报文段都必须把ACK置1。
数据偏移 :占4比特,并以4字节为单位。
用来指出TCP报文段的数据载荷部分的起始处距离TCP报文段的起始处有多远。
这个字段实际上是指出了TCP报文段的首部长度。
首部固定长度为20字节,因此数据偏移字段的最小值为
首部最大长度为60字节,因此数据偏移字段的最小值为
保留 :占6比特,保留为今后使用,但目前应置为0。
窗口 :占16比特,以字节为单位。指出发送本报文段的一方的接收窗口。
窗口值作为接收方让发送方设置其发送窗口的依据。
这是以接收方的接收能力来控制发送方的发送能力,称为流量控制。
校验和 :占16比特,检查范围包括TCP报文段的首部和数据载荷两部分。
在计算校验和时,要在TCP报文段的前面加上12字节的伪首部。
同步标志位SYN :在TCP连接建立时用来同步序号。
终止标志位FIN :用来释放TCP连接。
复位标志位RST :用来复位TCP连接。
当RST=1时,表明TCP连接出现了异常,必须释放连接,然后再重新建立连接。
RST置1还用来拒绝一个非法的报文段或拒绝打开一个TCP连接。
推送标志位PSH :接收方的TCP收到该标志位为1的报文段会尽快上交应用进程,而不必等到接收缓存都填满后再向上交付。
紧急标志位URG :取值为1时紧急指针字段有效;取值为0时紧急指针字段无效。
紧急指针 :占16比特,以字节为单位,用来指明紧急数据的长度。
当发送方有紧急数据时,可将紧急数据插队到发送缓存的最前面,并立刻封装到一个TCP报文段中进行发送。紧急指针会指出本报文段数据载荷部分包含了多长的紧急数据,紧急数据之后是普通数据。
选项(长度可变):
最大报文段长度MSS选项:TCP报文段数据载荷部分的最大长度。窗口扩大选项:为了扩大窗口(提高吞吐率)。
时间戳选项:
用来计算往返时间RTT
用于处理序号超范围的情况,又称为防止序号绕回PAWS。
选择确认选项:用来实现选择确认功能
填充 :由于选项的长度可变,因此使用填充来确保报文段首部能被4整除(因为数据偏移字段,也就是首部长度字段,是以4字节为单位的)。
六、应用层
(一)、概述
(二)、客户端-服务器方式和对等方式
(三)、动态主机配置协议DHCP
- 动态主机配置协议DHCP(Dynamic Host Configuration Protocol)提供了一种机制,称为即插即用连网。这种机制允许一台计算机加入新网络时可自动获取IP地址等网络配置信息而不用手工参与。
- DHCP主要使用以下报文来实现其功能:
-
- DHCP DISCOVER: DHCP发现报文
- DHCP OFFER: DHCP提供报文
-
- DHCP REQUEST: DHCP请求报文
- DHCP ACK: DHCP确认报文
- DHCP NACK: DHCP否认报文
- DHCP RELEASE: DHCP释放报文
- DHCP报文在运输层使用UDP协议封装
-
- DHCP客户使用的UDP端口号为68
- DHCP服务器使用的UDP端口号为67
- DHCP客户在未获取到IP地址时使用地址0.0.0.0
- 在每一个网络上都设置一个DHCP服务器会使DHCP服务器的数量太多。因此现在是使每一个网络至少有一个DHCP中继代理(通常是一台路由器),它配置了DHCP服务器的IP地址信息,作为各网络中计算机与DHCP服务器的桥梁。
(四)、域名系统DNS
1、域名系统DNS的作用
因特网是否可以只使用一台DNS服务器?
这种做法并不可取。因为因特网的规模很大,这样的域名服务器肯定会因为超负荷而无法正常工作,而且一旦域名服务器出现故障,整个因特网就会瘫痪。
早在1983年,因特网就开始采用层次结构的命名树作为主机的名字(即域名),并使用分布式的域名系统DNS.
DNS使大多数域名都在本地解析,仅少量解析需要在因特网上通信,因此系统效率很高。
由于DNS是分布式系统,即使单个计算机出了故障,也不会妨碍整个系统的正常运行。
2、域名结构
- 因特网采用层次树状结构的域名结构
- 域名的结构由若干个分量组成,各分量之间用“点”隔开,分别代表不同级别的域名。
-
- 每一级的域名都由英文字母和数字组成,不超过63个字符,不区分大小写字母
- 级别最低的域名写在最左边,而级别最高的顶级域名写在最右边。
- 完整的域名不超过255个字符。
- 域名系统既不规定一个域名需要包含多少个下级域名,也不规定每一级的域名代表什么意思。
- 各级域名由其上一级的域名管理机构管理,而最高的顶级域名则由因特网名称与数字地址分配机构ICANN进行管理。
域名分类
- 顶级域名TLD (Top Level Domain)分为以下三类:
-
- 国家顶级域名nTLD 采用ISO 3166的规定。如cn表示中国,us表示美国,uk表示英国、等等。
- 通用顶级域名gTLD 最常见的通用顶级域名有七个,即: com(公司企业) ,net(网络服务机构).org (非营利性组织)、int(国际组织)、edu(美国教育结构)、gov(美国政府部门) . mil(美国军事部门)。
- 反向域arpa 用于反向域名解析,即IP地址反向解析为域名。
- 在国家顶级域名下注册的二级域名均由该国家自行确定。例如,顶级域名为jp的日本,将其教育和企业机构的二级域名定为ac和co,而不用edu和com。
- 我国则将二级域名划分为以下两类:
-
- 类别域名 共七个: ac(科研机构)、com (工、商、金融等企业).edu(教育机构).gov(政府部门).net(提供网络服务的机构).mil(军事机构)和org (非营利性组织)。
- 行政区域名共34个,适用于我国的各省、自治区、直辖市。例如: bj为北京市、sh为上海市、js为江苏省,等等。
域名空间
域名服务器
域名解析的过程
- 为了提高DNS的查询效率,并减轻根域名服务器的负荷和减少因特网上的DNS查询报文数量,在域名服务器中广泛地使用了高速缓存。高速缓存用来存放最近查询过的域名以及从何处获得域名映射信息的记录。
- 由于域名到IP地址的映射关系并不是永久不变,为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器并删除超过合理时间的项(例如,每个项目只存放两天)。
- 不但在本地域名服务器中需要高速缓存,在用户主机中也很需要。许多用户主机在启动时从本地域名服务器下载域名和IP地址的全部数据库,维护存放自己最近使用的域名的高速缓存,并且只在从缓存中找不到域名时才向域名服务器查询。同理,主机也需要保持高速缓存中内容的正确性。
- DNS报文使用运输层的UDP协议进行封装,运输层端口号为53
(五)、文件传送协议FTP
- 将某台计算机中的文件通过网络传送到可能相距很远的另一台计算机中,是一项基本的网络应用,即文件传送。文件传送协议FTP (File Transfer Protocol)是因特网上使用得最广泛的文件传送协议。
-
- FTP提供交互式的访问,允许客户指明文件的类型与格式(如指明是否使用ASCII码),并允许文件具有存取权限(如访问文件的用户必须经过授权,并输入有效的口令)。
- FTP屏蔽了各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件。
- 在因特网发展的早期阶段,用FTP传送文件约占整个因特网的通信量的三分之一,而由电子邮件和域名系统所产生的通信量还要小于FTP所产生的通信量。只是到了1995年,万维网WWW的通信量才首次超过了FTP。
FTP的常见用途
FTP的常见用途是在计算机之间传输文件,尤其是用于批量传输文件。
FTP的另一个常见用途是让网站设计者将构成网站内容的大量文件批量上传到他们的Web服务器。
FTP的基本工作原理
FTP客户和服务器之间要建立以下两个并行的TCP连接:
-
- 控制连接,在整个会话期间一直保持打开,用于传送FTP相关控制命令。
- 数据连接,用于文件传输,在每次文件传输时才建立,传输结束就关闭。
-
- 默认情况下,FTP使用TCPZ1端口进行控制连接,TCP20端口进行数据连接。但是,是否使用TCP 20端口建立数据连接与传输模式有关,主动方式使用TCP 20端口被动方式由服务器和客户端自行协商决定。
(六)、电子邮件
- 电子邮件(E-mail)是因特网上最早流行的一种应用,并且仍然是当今因特网上最重要、最实用的应用之一。
- 传统的电话通信属于实时通信,存在以下两个缺点:
-
- 电话通信的主叫和被叫双方必须同时在场;
- 一些不是十分紧迫的电话也常常不必要地打断人们的工作或休息。
- 而电子邮件与邮政系统的寄信相似。
-
- 发件人将邮件发送到自己使用的邮件服务器;
- 发件人的邮件服务器将收到的邮件按其目的地址转发到收件人邮件服务器中的收件人邮箱;
- 收件人在方便的时候访问收件人邮件服务器中自己的邮箱,获取收到的电子邮件。
- 电子邮件使用方便、传递迅速而且费用低廉。它不仅可以传送文字信息,而且还可附上声音和图像。
- 由于电子邮件的广泛使用,现在许多国家已经正式取消了电报业务。在我国,电信局的电报业务也因电子邮件的普及而濒临消失。
- 电子邮件系统采用客户/服务器方式。
- 电子邮件系统的三个主要组成构件:用户代理,邮件服务器,以及电子邮件所需的协议。
-
- 用户代理是用户与电子邮件系统的接口,又称为电子邮件客户端软件。
- 邮件服务器是电子邮件系统的基础设施。因特网上所有的ISP都有邮件服务器,其功能是发送和接收邮件,同时还要负责维护用户的邮箱。
- 协议包括邮件发送协议(例如SMTP)和邮件读取协议(例如POP3,IMAP)。
简单邮件传送协议SMTP (Simple Mail Transfer Protocol)的基本工作原理
电子邮件的信息格式
电子邮件的信息格式并不是由SMTP定义的,而是在RFC 822中单独定义的。这个RFC文档已在2008年更新为RFC 5322。一个电子邮件有信封和内容两部分。而内容又由首部和主体两部分构成。
- SMTP协议只能传送ASCII码文本数据,不能传送可执行文件或其他的二进制对象。
- SMTP不能满足传送多媒体邮件(例如带有图片、音频或视频数据)的需要。并且许多其他非英语国家的文字(例如中文、俄文、甚至带有重音符号的法文或德文)也无法用SMTP传送。
- 为解决SMTP传送非ASCII码文本的问题,提出了多用途因特网邮件扩展MIME (Multipurpose Internet MailExtensions)
-
- 增加了5个新的邮件首部字段,这些字段提供了有关邮件主体的信息。
- 定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化。
- 定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变。
- 实际上,MIME不仅仅用于SMTP,也用于后来的同样面向ASCII字符的HTTP。
邮件读取
常用的邮件读取协议有以下两个:
- 邮局协议POP (Post Office Protocol),POP3是其第三个版本,是因特网正式标准。
非常简单、功能有限的邮件读取协议。用户只能以下载并删除方式或下载并保留方式从邮件服务器下载邮件到用户方计算机。不允许用户在邮件服务器上管理自己的邮件。(例如创建文件夹,对邮件进行分类管理等)。
- 因特网邮件访问协议IMAP (Internet Message Access Protocol),IMAP4是其第四个版本,目前还只是因特网建议标准。
功能比POP3强大的邮件读取协议。用户在自己的计算机上就可以操控邮件服务器中的邮箱,就像在本地操控一样,因此IMAP是一个联机协议。
- POP3和IMAP4都采用基于TCP连接的客户/服务器方式。POP3使用熟知端口110,IMAP4使用熟知端口143。
基于万维网的电子邮件
- 通过浏览器登录(提供用户名和口令)邮件服务器万维网网站就可以撰写、收发、阅读和管理电子邮件。这种工作模式与IMAP很类似,不同的是用户计算机无需安装专门的用户代理程序,只需要使用通用的万维网浏览器。
- 邮件服务器网站通常都提供非常强大和方便的邮件管理功能,用户可以在邮件服务器网站上管理和处理自己的邮件,而不需要将邮件下载到本地进行管理。
- 这种工作模式在用户浏览器与邮件服务器网站之间使用HTTP协议,而邮件服务器之间使用SMTP协议。
(七)、万维网www
- 万维网www (World Wide Web)并非某种特殊的计算机网络。它是一个大规模的、联机式的信息储藏所,是运行在因特网上的一个分布式应用。
- 万维网利用网页之间的超链接将不同网站的网页链接成一张逻辑上的信息网。
- 万维网是欧洲粒子物理实验室的Tim Berners-Lee最初于1989年3月提出的。
- 浏览器最重要的部分是渲染引擎,也就是浏览器内核。负责对网页内容进行解析和显示。
-
- 不同的浏览器内核对网页内容的解析也有不同,因此同一网页在不同内核的浏览器里的显示效果可能不同;
- 网页编写者需要在不同内核的浏览器中测试网页显示效果。
- 为了方便地访问在世界范围的文档,万维网使用统一资源定位符URL来指明因特网上任何种类“资源”的位置。
- URL的一般形式由以下四个部分组成:
万维网的文档
超文本传输协议HTTP(HyperText Transfer Protocol)
HTTP定义了浏览器(即万维网客户进程)怎样向万维网服务器请求万维网文档,以及万维网服务器怎样把万维网文档传送给浏览器。
- HTTP/1.0采用非持续连接方式。在该方式下,每次浏览器要请求一个文件都要与服务器建立TCP连接,当收到响应后就立即关闭连接。
- 每请求一个文档就要有两倍的RTT的开销。若一个网页上有很多引用对象(例如图片等),那么请求每一个对象都需要花费2RTT的时间。
- 为了减小时延,浏览器通常会建立多个并行的TCP连接同时请求多个对象。但是,这会大量占用万维网服务器的资源,特别是万维网服务器往往要同时服务于大量客户的请求,这会使其负担很重。
- HTTP/1.1采用持续连接方式。在该方式下,万维网服务器在发送响应后仍然保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的HTTP请求报文和响应报文。这并不局限于传送同一个页面上引用的对象,而是只要这些文档都在同一个服务器上就行。
- 为了进一步提高效率,HTTP/1.1的持续连接还可以使用流水线方式工作,即浏览器在收到HTTP的响应报文之前就能够连续发送多个请求报文。这样的一个接一个的请求报文到达服务器后,服务器就发回一个接一个的响应报文。这样就节省了很多个RTT时间,使TCP连接中的空闲时间减少,提高了下载文档的效率。
HTTP的报文格式
HTTP有两类报文:请求报文和响应报文。
HTTP是面向文本的,其报文中的每一个字段都是一些ASCII码串,并且每个字段的长度都是不确定的。
使用Cookie在服务器上记录用户信息
- 早期的万维网应用非常简单,仅仅是用户查看存放在不同服务器上的各种静态的文档。因此HTTP被设计为—种无状态的协议。这样可以简化服务器的设计。
- 现在,用户可以通过万维网实现各种复杂的应用,如网上购物、电子商务等。这些应用往往需要万维网服务器能够识别用户。
- Cookie提供了一种机制使得万维网服务器能够“记住”用户,而无需用户主动提供用户标识信息。也就是说,Cookie是一种对无状态的HTTP进行状态化的技术。
万维网缓存与代理服务器
- 在万维网中还可以使用缓存机制以提高万维网的效率。
- 万维网缓存又称为Web缓存(Web Cache),可位于客户机,也可位于中间系统上,位于中间系统上的Web缓存又称为代理服务器(Proxy Server)。
- Web缓存把最近的一些请求和响应暂存在本地磁盘中。当新请求到达时,若发现这个请求与暂时存放的请求相同,就返回暂存的响应,而不需要按URL的地址再次去因特网访问该资源。
练习