0 概述
-
边缘部分:由所有连接在因特网上的主机组成。这部分是用户直接使用的,用来进行通信(传送数据、音频或视频)和资源共享。
-
核心部分:由大量网络和连接这些网络的路由器组成。这部分是为边缘部分提供服务的(提供连通性和交换)。
0.1 三种交换方式
-
电路交换(Circuit Switching):交换时按照某种方式动态地分配传输线路的资源。
-
步骤:1,建立连接(分配通信资源);2,通话(一直占用通信资源);3,释放连接(归还通信资源)。
-
优点:通信时延小;有序传输;没有冲突;适用范围广;实时性强;控制简单
-
缺点:建立连接时间长;线路独占,使用效率低;灵活性差;难以规格化
-
-
报文交换(Message Switching):主要用于早期的电报通信网,现在较少使用,通常被较先进的分组交换方式所取代。
-
优点:无需建立连接;动态分配线路;提高线路可靠性;提高线路利用率;提供多目标服务
-
缺点:引起转发时延;需要较大的存储缓存空间;需要传输额外的信息量
-
-
分组交换(Packet Switching):发送方构造分组、发送分组;路由器缓存分组、转发分组;接收方接收分组、还原报文。
-
优点:无需建立连接;线路利用率高;简化存储管理;加速传输;减少出错概率和重发数据量
-
缺点:引起转发时延;需要传输额外的信息量;对于数据报服务,存在失序、丢失或重复分组的问题;对于虚电路服务,存在呼叫独立、数据传输和虚电路释放三个过程。
-
0.2 性能指标
-
速率:比特率或数据率,bit/s (bps), kb/s, Mb/s, Gb/s
-
带宽:
-
在模拟信号系统中的意义:信号所包含的各种不同频率成分所占据的频率范围。单位:Hz。
-
在计算机网络中的意义:在单位时间内从网络中的某一点到另一点所能通过的最高数据率,单位:b/s
-
-
吞吐量:单位时间内通过某个网络(或信道、接口)的数据量。受网络的带宽或额定速率的限制。
-
时延:
-
发送时延:分组长度 / 发送速率
-
传播时延:信道长度 / 电磁波传输速率 (自由空间:3×10^8 m/s,铜线:2.3,光纤:2.0)
-
处理时延:不方便计算,一般忽略不计
-
-
时延带宽积:传播时延与带宽的乘积。又称为以比特位单位的链路长度。
-
往返时间(Round-Trip Time):
-
利用率
-
信道利用率:表示某信道有百分之几的时间是被利用的。并非越高越好,因为信道利用率增大时,该信道引起的时延也会迅速增加。
-
网络利用率:全网络的信道利用率的加权平均。
-
令D0表示网络空闲时的时延,D表示网络当前的时延,那么在适当的假定条件下,可以用下面的公式表示D、D0和利用率U之间的关系:
-
网络利用率达到50%,时延加倍;
-
网络利用率超过50%,时延急剧增大;
-
网络利用率接近100%,时延无穷大。
-
-
-
丢包率:在一定的时间范围内,传输过程中丢失的分组数量与总分组数量的比率。可以分为接口丢包率、结点丢包率、链路丢包率、路径丢包率、网络丢包率等。
-
分组丢失主要有两种情况:
-
分组在传输过程中出现误码,被结点丢弃
-
分组到达一台队列已满的分组交换机时被丢弃;在通信量较大时就看你造成网络拥塞。
-
-
丢包率反映了网络的拥塞情况:
-
无拥塞时路径丢包率为0
-
轻度拥塞时路径丢包率为1%~4%
-
严重拥塞时路径丢包率为5%~15%
-
-
0.3 分层
-
OSI体系结构:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
-
TCP/IP体系结构:网络接口层、互联网层、传输层、应用层
-
原理体系结构:物理层、数据链路层、网络层、传输层、应用层
-
物理层:解决使用何种信号来传输比特的问题。
-
数据链路层:解决分组在一个网络(或一段链路)上传输的问题。
-
网络层:解决分组在多个网络上传输(路由)的问题。
-
传输层:解决进程之间基于网络的通信问题。
-
应用层:解决通过应用进程的交互来实现特定网络应用的问题。
-
OSI模型 | TCP/IP模型 | 主要协议 |
---|---|---|
7 应用层 6 表示层 5 会话层 | 4 应用层 | HTTP、FTP、DNS、SNMP TELNET、SMTP、POP3 |
4 传输层 | 3 传输层 | TCP、UDP |
3 网络层 | 2 互联网层 | IP、ICMP |
2 数据链路层 1 物理层 | 1 网络接口层 | IEEE802系列、HDLC、PPP |
0.4 术语
-
实体:任何可发送或接收信息的硬件或软件进程。
-
对等实体:收发双方相同层次中的实体。
-
-
协议:控制两个对等实体进行逻辑通信的规则的集合。
协议的三要素:
-
语法:定义所交换信息的格式。
-
语义:定义收发双方所要完成的操作。
-
同步:定义收发双方的时序关系。并不是指时钟频率同步。
-
-
服务:在协议的控制下,两个对等实体间的逻辑通信使得本层能够向上一层提供服务。
要实现本层协议,还需要使用下面一层所提供的服务。
协议是“水平的”,服务是“垂直的”。下面的协议对上面的实体是透明的。
-
服务访问点:同一系统中相邻两层的实体交换信息的逻辑接口,用于区分不同的服务类型。
-
服务原语:上层使用下层所提供的服务必须通过与下层交换一些命令,这些命令称为服务原语。
-
协议数据单元PDU:对等层次之间传送的数据包。物理层:比特流(bit stream);链路层:帧(frame);网络层:IP数据报或分组(packet);传输层:TCP报文段(segment)或UDP用户数据报(datagram);应用层:报文(message)。
-
服务数据单元SDU:同一系统内,层与层之间交换的数据包。多个SDU可以合称为一个PDU:一个SDU也可划分为多个PDU。
-
习题
-
在OSI参考模型中,自下而上第一个提供端到端服务的层次是传输层
传输层使用端口号为应用层的应用进程之间提供端到端的逻辑通信,而网络层仅仅为主机之间提供逻辑通信。
-
不属于网络体系结构所描述的内容是协议的内部实现细节
比如,使用何种硬件或软件。
-
TCP/IP参考模型的网络层提供的是无连接不可靠的数据报服务
-
TCP/IP体系结构中直接为ICMP提供服务的协议是IP
-
在OSI参考模型中,由应用层的相邻层实现的是数据格式转换
应用层的相邻层是表示层,其的任务是实现与数据表示相关的功能,主要包括数据字符集的转换、数据格式化、文本压缩、数据加密以及解密等工作。
-
通过POP3协议接收邮件时,使用的传输层服务类型是有连接可靠的数据传输服务
-
路由器的最高层是网络层,交换机的最高层是数据链路层,集线器的最高层是物理层。
-
下列TCP/IP应用层协议中,可以使用传输层无连接服务的是DNS
-
TCP/IP协议族的核心协议是IP
-
-
-
1 物理层
物理层为数据链路层屏蔽了各种传输媒体的差异,使数据链路层只需要考虑如何完成本层的协议和服务,而不必考虑网络具体的传输媒体是什么。
物理层协议的主要任务:
-
机械特性:指明接口所用接线器的形状和尺寸、引脚数目和排列、固定和锁定装置。
-
电气特性:指明在接口电缆的各条线上出现的电压的范围。
-
功能特性:指明某条线上出现的某一电平的电压表示何种意义。
-
过程特性:指明对于不同功能的各种可能事件的出现顺序。
1.1 传输媒体
位于物理层之下。
-
导引型传输媒体
-
同轴电缆:价格较贵且布线不够灵活,随着集线器的出现,在局域网领域今本上都是采用双绞线作为传输媒体。
-
双绞线:绞合的作用:抵御部分来自外界的电磁波干扰;减少相邻导线的电磁干扰。
-
光纤:
-
优点:通信容量大;传输损耗小;抗雷电和电磁干扰性能好;无串音干扰,保密性好,不易被窃听;体积小,重量轻。
-
缺点:割接需要专用设备;光电接口价格较贵
-
-
电力线
-
-
非导引型传输媒体
-
无线电波
-
微波
-
红外线:点对点无线传输;直线传输,中间不能有障碍物,传输距离短;传输速率低(4Mb/s ~ 16Mb/s)
-
可见光
-
1.2 传输方式
-
串行传输:数据按比特依次发送,在收发双方之间只需要一条线路。
-
并行传输:一次发送n个比特,在收发双方之间需要n条线路。速度是串行的n倍。
-
计算机内部常采用并行,计算机之间常采用串行
-
同步传输:数据以数据块的方式传输,彼此之间没有间隔,接收端在每个比特信号的中间时刻进行检测,以判别接收到的是比特0还是1。需要采取方法使收发双方时钟同步。
-
外同步:收发双方之间添加一条单独的时钟信号线
-
内同步:发送端把时钟同步信号编码到发送数据中一起传输
-
-
异步传输:以字节为独立的传输单位,字节之间的时间间隔不固定,接收端在每个字节的起始处对字节内的比特实现同步。在每个字节前后分别加上起始位和结束位。
字节之间异步(时间间隔不固定),字节中的每个比特同步(各比特的持续时间相同)
-
单工:单向通信,收发双方只有一个方向
-
半双工:双向交替通信,不能同时收发
-
全双工:双向同时通信,双方可以同时发送和接收信息
单工需要一条线路,半双工和全双工都需要两条。
1.3 编码和调制
码元:在使用时间域的波形表示数字信号时,代表不同离散数值的基本波形。简单来说,码元就是构成信号的一段波形。
混合调制:
正交振幅调制QAM:相位和振幅可以结合起来一起调制。如:
QAM-16:12种相位,每种相位有1或2种振幅可选;可以调制出16种码元(波形),每种码元可以对应表示4个比特。
码元与4个比特的对应关系采用格雷码,任意两个相邻码元只有1个比特不同。
1.4 信道的极限容量
奈奎斯特准则:在假定的理想条件下,为了避免码间串扰,码元传输速率是有上限的。
码元传输速率:又称波特率、调制速率、波形速率或符号速率。与比特率的关系:
-
当1个码元只携带1比特的信息量时,则波特率(码元/秒)与比特率(比特/秒)在数值上是相等的;
-
当1个码元携带n比特的信息量时,则将波特率转换成比特率时,数值要乘以n。
理想低通信道的最高码元传输速率 = 2W Baud = 2W 码元/秒
理想带通信道的最高码元传输速率 = W Baud = W 码元/秒
W:信道带宽,单位为Hz;
Baud:波特,即码元/秒。
香农公式:
C:信道的极限信息传输速率,bit/s
W:信道带宽,Hz
S:信道内所传信号的平均功率
N:信道内的高斯噪声功率
S/N:信噪比,dB = 10 × log_10 (S/N)
习题
-
10BaseT网卡使用的编码是曼彻斯特编码
10表示带宽为10Mb/s,Base表示基带传输,T表示双绞线。
-
不会影响信道数据传输速率的是信号传播速度
从香农公式可知,信噪比、频率带宽会影响;从奈氏准则可知,调制速度会影响。
-
在无噪声情况下,若某通信链路的带宽为3kHz,采用4个相位,每个相位具有4种振幅的QAM调制技术,则该通信链路的最大数据传输速率是24kbps
根据奈氏准则,该链路的最高码元传输速率 = 2 × 3k = 6k 码元/秒;采用4个相位,每个相位具有4种振幅的QAM调制技术,可以调制出4 × 4 = 16 个不同的基本波形(码元);采用二进制对这个16个不同的码元进行编码,需要使用4个比特,即每个码元可以携带的信息量为4比特;因此,该链路的最大数据传输速率 = 6k × 4 = 24kbps。
2 数据链路层
链路:从一个结点到相邻结点的一段物理线路,中间没有任何其他的交换结点。
数据链路:把实现通信协议的硬件和软件加到链路上。
数据链路层以帧为单位传输和处理数据。
2.1 封装成帧
封装成帧:数据链路层给网络层交付的协议数据单元添加帧头和帧尾,使之成为帧的操作。添加帧头和帧尾的目的是为了在链路上以帧为单位传送数据。
-
帧头、帧尾有重要的控制信息。
-
帧头、帧尾的作用之一就是帧定界。
并不是每一种数据链路层协议的帧都包含有帧定界标志,如以太网V2的MAC帧,此时物理层会在MAC帧前面添加8字节的前导码,其前7个字节为前同步码,作用是让双方的时钟同步;之后的1字节为帧开始定界符。还规定了帧间间隔为96比特时间,因此MAC帧不需要帧结束定界符。
透明传输:数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样。
-
面向字节的物理链路使用字节填充的方式实现透明传输。
-
面向比特的物理链路使用比特填充的方式实现透明传输。
为了提高帧的传输速率,应当使帧的数据部分的长度尽可能大些。
考虑到差错控制等多种因素,每一种数据链路层协议都规定了帧的数据部分的长度上限,即最大传送单元MTU(Maximum Transfer Unit)。
2.2 差错检测
把检错码封装在帧尾。
比特差错:比特在传输过程中产生差错,1可能变为0,而0也可能变成1。
误码率BER(Bit Error Rate):在一段时间内传输错误的比特占所传输比特总数的比率。
使用差错检测码来检测数据在传输过程中是否产生了比特差错。只能检测帧在传输过程中出现了差错,但不能定位错误,因此无法纠错。可以使用冗余信息更多的纠错码进行前向纠错,但纠错码开销较大,在计算机网络中较少使用。
-
奇偶校验:在待发送的数据后面添加1位奇偶校验位,使整个数据(包括所添加的校验位在内)中“1”的个数为奇数(奇校验)或偶数(偶校验)。会产生漏检。
-
循环冗余校验CRC(Cyclic Redundancy Check):收发双方约定好一个生成多项式G(x);发送方基于待发送的数据和生成多项式计算出差错检测码(冗余码),将其添加到待传输数据的后面一起传输;接收方通过生成多项式来计算收到的数据是否产生误码。生成多项式必须包含最低次项。
”除法“计算过程中使用异或。1表示“够除”,即位数足够;0表示“不够除”,即位数不够,需要使用下一位补足。
CRC漏检率很低,易于用硬件实现,因此广泛应用于数据链路层。
2.3 可靠传输
如果出现误码则丢弃,可靠传输服务确保接收方主机还可以重新接收到被丢弃的这个帧的正确副本。即实现发送方发送什么,接收方就能收到什么。不可靠传输服务仅仅丢弃有误码的帧,不进行其他操作。
一般有线链路的误码率比较低,为了减小开销,不要求数据链路层向上提供可靠传输服务。即使出现误码,也可由上层处理。
但无线链路易受干扰,误码率比较高,因此要求数据链路层必须向上层提供可靠传输服务。
比特差错只是传输差错的一种,还包括分组丢失、分组失序以及分组重复。后面三个一般不会出现在数据链路层,而会出现在其上层。
-
TCP向上层提供面向连接的可靠传输服务;UDP向上层提供无连接、不可靠传输服务。
-
IP向上层提供无连接、不可靠传输服务。
-
802.11无线局域网要求数据链路层实现可靠传输;以太网不要求数据链路层实现可靠传输。
可靠传输的实现比较复杂,开销也比较大,是否使用可靠传输取决于应用需求。
-
停止-等待协议SW(Stop-and-Wait):类似的通过确认和重传机制实现的可靠传输协议,常称为自动请求重传协议ARQ,不需要接收方显式的请求发送方重传某个出错的分组。
-
确认与否认:发送方每发送一帧就等待,接收到ACK则继续发下一帧,接收到NAK则重传;接收方收到数据则发送ACK,收到误码则发送NAK。
-
超时重传:发送方发送完一个分组后启动一个超时计时器,若到了设置的重传时间而仍收不到接收方的ACK或NAK,则重传原来的分组。一般将重传时间选为略大于“从发送方到接收方的平均往返时间”。
数据链路层点对点的往返时间比较确定,重传时间比较好设定。但在传输层,则不容易设定合适的重传时间。
-
确认丢失:为数据分组进行编号,防止重复发送。由于停止-等待协议的停等特性,只需要一个比特编号就够了,即编号0和1。
-
确认迟到:防止对数据分组的重复确认。所用比特数量与数据分组编号的一致。数据链路层一般不会出现ACK分组迟到的情况,因此在数据链路层实现停止-等待协议可以不用给ACK分组编号。
-
信道利用率:设发送数据分组耗费的发送时延为TD,收发双方之间的往返时间为RTT,接收方发送确认分组耗费的发送时延为TA,忽略双方的处理时延,则:
$$
U=\frac{T_D}{T_D+RTT+T_A}
$$当RTT远大于TD时,信道利用率会非常低。若出现超时重传,则信道利用率更低。
-
-
后退N帧协议GBN(Go-Back-N):是一种连续ARQ协议,这类协议也称为滑动窗口协议。
发送方维持一个发送窗口,可以连续发送多个分组。发送窗口的取值:1 < WT ≤ 2^K - 1,K是构成分组序号的比特数量(比如分组序号为0~7,则K=3),如果WT取值为1,则是停止-等待协议。接收窗口的取值为WR,对于后退N帧协议,WR的取值只能为1,与停止-等待协议相同。
如果WT > 2^K - 1,则会导致接收方无法区分新、旧数据分组。
-
累积确认:接收方可以在数据按序到达后,对到达的最后一个数据分组发送确认。这样,即使确认分组丢失,发送方也可能不必重传。减小接收方的开销,减少对网络资源的占用。
-
当通信线路质量不好时,后退N帧协议的信道利用率并不比停止-等待协议高。
-
可以理解为出现差错的分组“卡住”了窗口。
-
-
选择重传协议SR(Selective Request):接收窗口WR应大于1,以便接收方先收下失序到达但无误码并且序号落在接收窗口内的那些数据分组,等到所缺分组收齐后再一并送交上层。接收方不能再采用累积确认,而要对每个正确接收到的数据分组进行逐一确认。
-
发送窗口WT的取值:1 < WT ≤ 2^(K - 1)。接收窗口WR的取值:1 < WR ≤ WT。若WR=1,则与后退N帧协议相同。若WR > WT,则没有意义。
-
2.4 点对点协议
点对点协议PPP(Point-to-Point Protocol)是目前使用最广泛的点对点数据链路层协议。是因特网的正式标准。
PPP协议为在点对点链路传输各种协议数据报提供了一个标准方法,主要由以下三部分构成:
-
对各种协议数据报的封装方法(封装成帧)
-
链路控制协议LCP,用于建立、配置以及测试数据链路的连接
-
一套网络控制协议NCPs,其中的每一个协议支持不同的网络层协议
实现透明传输的方法:
-
面向字节的异步链路:字节填充法,插入转义字符
-
发送方:
-
出现的每一个7E字节(PPP帧的定界符)转变成2字节序列(7D, 5E)
-
出现的每一个7D字节(转义字符)转变成2字节序列(7D, 5D)
-
出现的每一个ASCII码控制字符(数值小于0x20的字符),则在该字符前面插入一个7D字节,同时将该字符的编码加上0x20
-
-
接收方:做与发送方相反的操作即可
-
-
面向比特的同步链路:比特填充法,插入比特0
-
发送方:对帧的数据部分进行扫描(一般由硬件实现),只要发现5个连续的比特0,则立即填充1个比特0
-
接收方:对帧的数据部分进行扫描(一般由硬件实现),只要发现5个连续的比特0,则删除其后的1个比特0
-
差错检测:
-
生成多项式:
RFC 1662的附录部分给出了FC的计算方法的C语言实现(查表法)。
-
FCS的计算范围:包括帧头和数据部分,不包括帧尾。
-
接收方每收到一个PPP帧,就进行CRC检验。若CRC检验正确,则收下这个帧;否则丢弃。使用PPP的数据链路层向上不提供可靠传输服务。
2.5 媒体接入控制
共享信道要着重考虑的一个问题就是如何协调多个发送和接收站点对一个共享传输媒体的占用,即媒体接入控制MAC(Medium Access Control)。
分为两类:
-
静态划分信道:预先固定分配好信道,这类方法非常不灵活,对于突发性数据传输信道利用率会很低。通常在无线网络的物理层中使用,而不是在数据链路层。
分为:频分多址、时分多址、码分多址
-
动态接入控制
-
受控接入:已经淘汰。
-
集中控制:有一个主站以循环方式轮询每个站点有无数据发送,只有被轮询到的站点才能发送数据,最大缺点是存在单点故障问题。
-
分散控制:各站点是平等的,并连接成一个环形网络,令牌(一个特殊的控制帧)沿环逐站传递,接收到令牌的站点才有权发送数据,并在发送完数据后将令牌传递给下一个站点。IEEE 802.5 令牌环网,IEEE 802.4 令牌总线网,光纤分布式数据接口FDDI。
-
-
随机接入:所有站点通过竞争,随机的在信道上发送数据。如果恰巧有两个或更多的站点在同一时刻发送数据,则信号在共享媒体上就要产生碰撞(即发生了冲突),使得这些站点的发送都失败。因此,这类协议要解决的关键问题就是如何尽量避免冲突及在发生冲突后如何尽快恢复通信。著名的共享式以太网采用的就是随机接入。
-
随着技术的发展,交换技术的成熟和成本的降低,具有更高性能的使用点对点链路和链路层交换机的交换式局域网在有线领域已完全取代了共享式局域网,但由于无线信道的广播天性,无线局域网仍然使用的是共享媒体技术。
信道复用:复用(Multiplexing)是通信技术中的一个重要概念。复用就是通过一条物理线路同时传输多用户的信号。当网络中传输媒体的传输容量大于多条单一信道传输的总通信量时,可利用复用技术在一条物理线路上建立多条通信信道来充分利用传输媒体的带宽。
-
频分复用FDM:将传输线路的频带资源划分成多个子频带,形成多个子信道,各子信道之间需要留出隔离频带,以免造成子信道间的干扰。频分复用的所有用户同时占用不同的频带资源并行通信。
-
时分复用TDM:将时间划分成一个个的时隙,将传输线路的带宽资源按时隙轮流分配给不同的用户,每对用户只在所分配的时隙里使用线路传输数据。时分复用技术将时间划分成了一段段等长的时分复用帧,每一个用户在每一个时分复用帧中占用固定序号的时隙。时分复用的所有用户在不同的时间占用同样的频带宽度。
-
波分复用WDM:光的频分复用。
-
码分复用CDM:由于该技术主要用于多址接入,人们更常使用的名词是码分多址CDMA(Code Division Multiple Access)。频分复用和时分复用同样可用于多址接入,相应的名词是频分多址FDMA和时分多址TDMA。码分复用的每一个用户可以在同样的时间使用同样的频带进行通信。由于各用户使用经过特殊挑选的不同码型,因此各用户之间不会造成干扰。
每一个比特时间再划分为m个短的间隔,称为码片(Chip)。通常m的值是64或128。使用CDMA的每一个站被指派一个唯一的m bit码片序列(Chip Sequence)。
-
一个站如果要发送比特1,则发送它自己的m bit码片序列;
-
一个站如果要发送比特0,则发送它自己的m bit码片序列的二进制反码;
为了方便,把码片序列中的0写为-1,1写为+1。
这种通信方式称为直接序列扩频DSSS。
码片序列的挑选原则:
-
分配给每个站的码片序列必须各不相同,实际常采用伪随机码序列。
-
分配给每个站的码片序列必须相互正交(规格化内积为0)。
令向量S表示站S的码片序列,T表示其他任何站的码片序列。两个不同站S和T的码片序列正交,就是S和T的规格化内积为0:
任何一个码片向量S和其他各站码片反码的向量的内积也为0:
任何一个码片向量S和自身的规格化内积为1:
任何一个码片向量S和该码片反码的向量的内积是-1:
对于接收的数据,将其相加后依次与各站的码片序列做内积,结果为1说明该站发送了比特1;结果为-1说明该站发送了比特0;结果为0说明该站没有发送比特。
-
复用和多址的区别:
-
复用是将单一媒体的频带资源划分成很多子信道,这些子信道之间相互独立,互不干扰。从媒体的整体频带资源上看,每个子信道只占用该媒体资源的一部分。
-
多址(更确切的应该称为多点接入)处理的是动态分配信道给用户。这在用户仅仅暂时性地占用信道的应用中是必须的,而所有的移动通信系统基本上都属于这种情况。相反,在信道永久性的分配给用户的应用中,多址是不需要的(对于无线广播或电视广播站就是这样)。
-
某种程度上,FDMA、TDMA、CDMA可分别看成是FDM、TDM、CDM的应用。
2.6 随机接入
CSMA/CD
早期以太网使用载波监听多路访问/碰撞检测 CSMA/CD (Carrier Sense Multiple Access / Collision Detection)来避免总线上的碰撞。
曾经用于各种总线结构以太网和双绞线以太网的早期版本中。现在的以太网基于交换机和全双工连接,不会有碰撞,因此没有必要使用CSMA/CD协议。
-
多址接入MA:多个主机连接在一条总线上,竞争使用总线。
-
载波监听CS:每一个站在发送帧之前先要检测一下总线上是否有其他站点在发送帧("先听后说"):
-
若检测到总线空闲96比特时间,则发送这个帧;
-
若检测到总线忙,则继续检测并等待总线转为空闲96比特时间,然后发送这个帧。
-
96比特时间是指发送96比特所耗费的时间,也称为帧间最小间隔。其作用是使接收方可以检测出一个帧的结束,同时也使得所有其他站点都有机会平等竞争信道并发送帧。
-
-
碰撞检测CD:每一个正在发送帧的站边发送边检测碰撞("边说边听"):
-
一旦发现总线上出现碰撞,则立即停止发送,退避一段随机时间后再次发送("一旦冲突,立即停说,等待时机,重新再说")。
-
强化碰撞:以太网采取的一种措施,当发送帧的站点一旦检测到碰撞,除了立即停止发送帧以外,还要再继续发送32比特或48比特的人为干扰信号(Jamming Signal),以便有足够多的碰撞信号使所有站点都能检测出碰撞。
-
争用期(碰撞窗口):以太网的端到端往返传播时延称为争用期或碰撞窗口。
-
主机最多经过这么长的时间就可以检测到,本次发送是否遭受了碰撞。
-
经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。
-
每一个主机在自己发送帧之后的一小段时间内,存在着遭遇碰撞的可能性。这一小段时间是不确定的,它取决于另一个发送帧的主机到本主机的距离,但不会超过一个争用期时间。
-
主机越多,总线越长,发生碰撞的概率就越大。因此,共享式以太网不能链接太多的主机,使用的总线也不能太长。
-
10Mb/s以太网把争用期定为512比特发送时间,即51.2μs,因此总线长度不能超过5120m,但考虑到信号衰减等因素,以太网规定总线长度不能超过2500m。
-
最小帧长:以太网规定最小帧长为64字节,即512比特(即为争用期)。最小帧长 = 争用期 × 数据传输速率
-
如果要发送的数据非常少,那么必须加入一些填充字节,使帧长不小于64字节。
-
最小帧长确保主机可在帧发送完成之前就检测到,该帧的发送过程中是否遭遇了碰撞。
-
如果在争用期内没有检测到碰撞,那么后续发送的数据就一定不会发生碰撞;
-
如果在争用期内检测到碰撞,就立即终止发送,这时已经发送出去的数据一定小于64字节,因此凡长度小于64字节的帧都是由于碰撞而异常中止的无效帧。
-
最大帧长:避免帧的长度太长导致总线一直被占用,或接收方缓冲区溢出丢失数据。
截断二进制指数退避算法:退避时间的计算方法,退避时间 = 基本退避时间 × 随机数r,基本退避时间为争用期的时长,随机数r从离散的整数集合0, 1, ……, 2^k - 1中随机选出一个数,k = Min (重传次数,10)。
-
若连续多次发生碰撞,就表明可能有较多的主机参与竞争信道。但使用上述退避算法可使重传需要推迟的平均时间随重传次数而增大(这也称为动态退避),因而减小发生碰撞的概率,有利于整个系统的稳定。
-
当重传16次仍不能成功时,表明同时打算发送帧的主机太多,以至于连续发生碰撞,则丢弃该帧,并向高层报告。
信道利用率:设τ为单程传播时延(2τ即为争用期),发送时延为T0,则:
为了提高信道利用率,参数a的值应尽量小。即τ的值应尽量小,即以太网端到端的距离受到限制,不应太长;T0的值应尽量大,即以太网帧的长度应尽量长些。
CSMA/CA
无线局域网使用的协议:载波监听多路访问/碰撞避免 CSMA/CA (Carrier Sense Multiple Access / Collision Avoidance)
不能在无线局域网中使用碰撞检测CD:
-
由于无线信道的传输条件特殊,其信号强度的动态范围非常大,无线网卡上接收到的信号强度往往会远远小于发送信号的强度(可能相差百万倍)。如果要在无线网卡上实现碰撞检测,对硬件的要求非常高。
-
即使能够在硬件上实现无线局域网的碰撞检测功能,但由于无线电波传播的特殊性(存在隐蔽站问题),进行碰撞检测的意义也不大。
-
隐蔽站问题:未能检测出信道上其他站点的问题。
-
802.11 无线局域网使用CSMA/CA协议,在CSMA的基础上加了一个碰撞避免CA功能,而不再实现碰撞检测功能。
由于不可能避免所有的碰撞,并且无线信道误码率较高,802.11标准还使用了数据链路层确认机制(停止-等待协议)来保证数据被正确接收。无线站点每发送完一个数据帧后,要等到收到对方的确认帧后才能继续发送下一帧。
802.11的MAC层标准定义了两种不同的媒体接入控制方式:
-
分布式协调功能DCF(Distributed Coordination Function)。在DCF方式下,没有中心控制站点,每个站点使用CSMA/CA协议通过争用信道来获取发送权,这是802.11定义的默认方式。
-
点协调功能PCF(Point Coordination Function)。PCF方式使用集中控制的接入算法(一般在接入点AP实现集中控制),是802.11定义的可选方式,在实际中较少使用。
帧间间隔IFS(Inter-Frame Space):802.11标准规定,所有的站点必须在持续检测到信道空闲一段指定时间后才能发送帧,这段时间称为帧间间隔IFS。
-
IFS的长短取决于该站点要发送的帧的类型:
-
高优先级帧需要等待时间较短,因此可优先获得发送权;
-
低优先级帧需要等待的时间较长。若某个站的低优先级帧还没来得及发送,而其他站的高优先级帧已发送到信道上,则信道变为忙态,因而低优先级帧就只能再推迟发送了。这样就减少了发生碰撞的机会。
-
-
常用的两种帧间间隔如下:
-
短帧间间隔SIFS(28μs),是最短的帧间间隔,用来分隔属于一次对话的各帧。一个站点应当能够在这段时间内从发送方式切换到接收方式。使用SIFS的帧类型有ACK帧、CTS帧、由过长的MAC帧分片后的数据帧、以及所有回答AP探询的帧和在PCF方式中接入点AP发送出的任何帧。
-
DCF帧间间隔DIFS(128μs),它比短帧间间隔SIFS要长的多,在DCF方式中用来发送数据帧和管理帧。
-
当站点检测到信道是空闲的,并且所发送的数据帧不是成功发送完上一个数据帧之后立即连续发送的数据帧,则不使用退避算法。
以下情况必须使用退避算法:
-
在发送数据帧之前检测到信道处于忙状态时;
-
在每一次重传一个数据帧时;
-
在每一次成功发送后要连续发送下一个帧时(这是为了避免一个站点长时间占用信道)。
退避算法:
信道预约和虚拟载波监听:
-
为了尽可能减少碰撞的概率和降低碰撞的影响,802.11标准允许要发送数据的站点对信道进行预约。
-
源站在发送数据帧之前先发送一个短的控制帧,称为请求发送RTS(Request To Send),它包括源地址、目的地址以及这次信道(包括相应的确认帧)所需的持续时间。
-
若目的站正确收到源站发来的RTS帧,且媒体空闲,就发送一个响应控制帧,称为允许发送CTS(Clear To Send),它也包括这次通信所需的持续时间(从RTS帧中将此持续时间复制到CTS帧中)。
-
源站收到CTS帧后,再等待一段时间SIFS后,就可发送其数据帧。
-
若目的站正确收到了源站发来的数据帧,在等待时间SIFS后,就向源站发送确认帧ACK。
-
-
除源站和目的站以外的其他各站,在收到CTS帧(或数据帧)后就推迟接入到无线局域网中。这样就保证了源站和目的站之间的通信不会受到其他站的干扰。
-
如果RTS帧发生碰撞,源站就收不到CTS帧,需执行退避算法重传RTS帧。
-
由于RTS帧和CTS帧很短,发生碰撞的概率、碰撞产生的开销及本身的开销都很小。而对于一般的数据帧,其发送时延往往大于传播时延(因为是局域网),碰撞的概率很大,且一旦发生碰撞而导致数据帧重发,则浪费的时间就很多,因此用很小的代价对信道进行预约往往是值得的。802.11标准规定了三种情况供用户选择:
-
使用RTS帧和CTS帧
-
不使用RTS帧和CTS帧
-
只有当数据帧的长度超过某一数值时才使用RTS帧和CTS帧
-
-
除RTS帧和CTS帧会携带通信需要的持续时间,数据帧也能携带通信需要的持续时间,这称为802.11的虚拟载波监听机制。
-
由于利用虚拟载波监听机制,站点只要监听到RTS帧、CTS帧或数据帧中的任何一个,就能知道信道被占用的持续时间,而不需要真正监听到信道上的信号,因此虚拟载波监听机制能减少隐蔽站带来的碰撞问题。
2.7 MAC地址、IP地址及ARP协议
-
MAC地址是以太网的MAC子层所使用的地址;数据链路层
-
IP地址是TCP/IP体系结构网络层所使用的地址;网络层
-
ARP协议属于TCP/IP体系结构的网络层,其作用是已知设备所分配到的IP地址,使用ARP协议可以通过该IP地址获取到设备的MAC地址;网络层
使用点对点信道的数据链路层不需要使用地址;使用广播信道的数据链路层必须使用地址来区分各主机。
MAC地址:
-
在每个主机发送的帧中必须携带标识发送主机和接收主机的地址。由于这类地址是用于媒体接入控制MAC(Media Access Control),因此这类地址被称为MAC地址;
-
MAC地址一般被固化在网卡(网络适配器)的电可擦可编程只读存储器EEPROM中,因此MAC地址也被称为硬件地址;
-
有时也被称为物理地址。这并不意味着MAC地址属于网络体系结构中的物理层。
-
-
一般情况下,用户主机会包含两个网络适配器:有线局域网适配器(有线网卡)和无线局域网适配器(无线网卡)。每个网络适配器都会有一个全球唯一的MAC地址。而交换机和路由器往往拥有更多的网络接口,所以会拥有更多的MAC地址。综上所述,严格来说,MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识。
MAC地址格式:
第一字节:
-
b0位,取0:表示单播,1:表示多播(组播)
-
b1位,取0:全球管理,1:本地管理
发送顺序:
-
字节发送顺序:第一字节→第六字节
-
字节内的比特发送顺序:b0→b7
给主机配置多播组列表进行私有应用时,不得使用公有的标准多播地址。
IP地址:
-
IP地址是因特网(Internet)上的主机和路由器所使用的地址,用于标识两部分信息:
-
网络编号:标识因特网上数以百万计的网络
-
主机编号:标识同一网络上不同主机(或路由器各接口)
-
-
MAC地址不具备区分不同网络的功能。如果主机所在的网络需要接入因特网,则IP地址和MAC地址都需要使用。
-
IP地址封装在网络层首部,MAC地址封装在数据链路层首部。
在数据包的转发过程中,源IP地址和目的IP地址始终保持不变;而源MAC地址和目的MAC地址逐段链路(或逐个网络)改变。
主机H1知道R1相应接口的IP地址为IP3,但不知道其对应的MAC地址;主机H2、路由器R1、R2同理。
ARP协议:
-
每台主机都有一个ARP高速缓存表,记录了一些IP地址和MAC地址的对应关系。
-
主机A在向另一台主机B发送数据时,会先从ARP高速缓存表查找主机B的IP地址对应的MAC地址;
-
如果没有找到,主机A需要发送ARP请求报文(广播,封装在MAC帧中,目的地址为FF-FF-FF-FF-FF-FF)来获取主机B的MAC地址。
ARP请求报文包含主机A的IP地址、MAC地址、主机B的IP地址。
-
其他主机收到该帧时不予理会;
-
主机B收到该请求报文时进行响应,先把主机A的IP地址和MAC地址记录到自己的ARP高速缓存表,然后给主机A发送ARP响应报文(单播,封装在MAC帧中,目的地址是主机A的MAC地址),以告知自己的MAC地址。
ARP响应报文包含主机B的IP地址、MAC地址。
-
其他主机的MAC地址不匹配,丢弃该帧;主机A收到后将主机B的P地址和MAC地址记录到自己的ARP高速缓存表。
ARP高速缓存表:分为动态和静态两种。
-
动态:记录是主机自动获取到的,生命周期默认为两分钟,当生命周期结束时,该记录将自动删除。
-
静态:记录是用户或网络维护人员手工设置的,不同操作系统下的生命周期不同,例如系统重启后不存在或重启后依然有效。
ARP协议只能在一段链路上使用,而不能跨链路使用。
ARP还有其他类型的报文,如用于检查IP地址冲突的无故ARP(或称免费ARP)。
ARP没有安全验证机制,存在ARP欺骗(攻击)问题。
2.8 集线器与交换机的区别
-
早期的总线型以太网:使用细同轴电缆,现在已经淘汰
-
使用双绞线和集线器HUB的星型以太网:
-
使用集线器的以太网在逻辑上仍是一个总线网,各站共享总线资源,使用的还是CSMA/CD协议;
-
集线器只工作在物理层,它的每个接口仅简单的转发比特,不进行碰撞检测(由各站的网卡检测);
-
集线器一般都有少量的容错能力和网络管理能力。例如,若网络中某个网卡出了故障,不停地发送帧。此时,集线器可以检测到这个问题,在内部断开与出故障网卡的连线,使整个以太网仍然能正常工作。
-
-
使用集线器HUB在物理层扩展以太网:可以使用集线器把原先独立的几个碰撞域(冲突域)合并成一个更大的碰撞域(冲突域)。
-
以太网交换机:
-
以太网交换机通常都有多个接口。每个接口都可以直接与一台主机或另一个以太网交换机相连。一般都会工作在全双工方式。
使用集线器的以太网在逻辑上是共享总线的,需要使用CSMA/CD协议来协调各主机争用总线,只能工作在半双工模式。
-
以太网交换机具有并行性,能同时连通多对接口,使多对主机能同时通信,无碰撞(不使用CSMA/CD协议)。
-
以太网交换机工作在数据链路层(也包括物理层),它收到帧后,在帧交换表中查找帧的目的MAC地址所对应的接口号,然后通过该接口转发帧。
-
以太网交换机是一种即插即用设备,其内部的帧交换表是通过自学习算法自动地逐渐建立起来的。
-
帧的两种转发方式:
-
存储转发
-
直通交换:采用基于硬件的交叉矩阵(交换时延非常小,但不检查帧是否有差错)。不必把整个帧先缓存后再进行处理,而是在接收帧的同时就立即按帧的MAC地址决定该帧的转发接口,因而提高了帧的转发速率。
-
-
-
对比集线器和交换机
集线器 交换机 单播帧 集线器对其他所有主机转发帧,各主机中的网卡根据帧的目的MAC地址决定是接收还是丢弃该帧。 交换机根据目的MAC地址和自身帧交换表将帧转发给目的主机。 广播帧 集线器对其他所有主机转发帧,各主机中的网卡检测到是广播地址就接收该帧。 交换机检测到帧的目的MAC地址是广播地址,于是从除该帧进入交换机接口外的其他各接口转发该帧。 同时给一个主机发送单播帧 产生碰撞 交换机把这些帧缓存起来,逐个转发给目的主机 扩展总线后,发送单播帧:
扩展总线后,发送广播帧:
使用集线器的共享总线型以太网中的各主机属于同一个广播域;使用交换机的交换式以太网中的各主机,也属于同一个广播域。扩展后依然如此。
仅使用集线器扩展的以太网,在逻辑上仍然是共享总线的,并且形成为一个更大的碰撞域;仅使用交换机扩展的以太网,只会扩大广播域而不会扩大碰撞域。
也就是说,交换机可以隔离碰撞域。
工作在数据链路层的以太网交换机,其性能远远超过工作在物理层的集线器,而且价格并不贵,使得集线器逐渐被淘汰。
2.9 以太网交换机
自学习和转发帧的流程:
-
以太网交换机工作在数据链路层(也包括物理层)
-
以太网交换机收到帧后,在帧交换表中查找帧的目的MAC地址所对应的接口号,然后通过该接口转发帧。有以下三种情况:
-
明确转发:交换机知道应当从哪个(或哪些)接口转发该帧(单播、多播、广播)
-
盲目转发:交换机不知道应当从哪个端口转发帧,只能将其通过除进入交换机的接口外的其他所有接口转发(也称为泛洪)。
-
明确丢弃:交换机知道不应该转发该帧,将其丢弃。
-
-
以太网交换机是一种即插即用设备,刚上电启动时其内部的帧交换表是空的。随着网络中各主机间的通信,以太网交换机通过自学习算法逐渐建立起帧交换表。
帧交换表中的每条记录都有自己的有效时间,到期自动删除。这是因为MAC地址域交换机接口的对应关系并不是永久性的。
生成树协议STP:
添加冗余链路可以提高以太网的可靠性。但冗余链路会带来负面效应——形成网络环路。会带来以下问题:
-
广播风暴,会大量消耗网络资源,使得网络无法正常转发其他数据帧;
-
主机收到重复的广播帧,大量消耗主机资源;
-
交换机的帧交换表震荡(漂移)
以太网交换机使用生成树协议STP(Spanning Tree Protocol)可以在增加冗余链路的同时避免网络环路的问题。
-
不论交换机之间采用怎样的物理连接,交换机都能自动计算并构建一个逻辑上没有环路的网络,其逻辑拓扑结构必须是树型的(无逻辑环路);
-
最终生成的树型逻辑拓扑要确保连通整个网络;
-
当首次连接交换机或网络物理拓扑发生变化时(有可能是人为改变或故障),交换机都将进行生成树的重新计算。
生成树算法的三个步骤:
这里所谓的“选举”,是通过网络中各交换机相互发送生成树协议专用的数据帧BPDU来实现的。
-
“选举”根交换机
-
网桥ID(BID)最小的当选。网桥ID(BID)由两部分组成:
-
优先级
范围:0~61440
步长:4096
默认值:32768
-
交换机的基本MAC地址
-
-
网桥ID(BID)的比较方法:
-
优先级取值越小,则网桥ID(BID)越小
-
若优先级相同,则比较MAC地址,从MAC地址的左侧开始依次比较,数值小的,则网桥ID(BID)就小。
-
-
-
“选举”根端口
-
在每一个非根交换机上选出一个根端口RP(Root Port),并且只能是一个。
-
根端口RP用于接收根交换机发来的BPDU,也用来转发普通流量。
-
选举条件:
-
BPDU接收端口到根交换机的路径成本最小。
-
如果路径成本相等,选择对端(与该端口相连的交换机)的网桥ID(BID)最小的。
-
如果对端的网桥ID相等,则选择对端的端口ID(PID)最小的。PID由两部分组成:
-
优先级
范围:0~240
步长:16
默认值:128
-
端口号
-
-
-
-
“选举”指定端口并阻塞备用端口
-
在每一个网段上选出一个指定端口DP(Designated Port),并且只能是一个。
-
指定端口DP用于转发根交换机发来的BPDU,也用来转发普通流量。
-
选举条件:
-
根交换机的所有端口都是指定端口DP。
-
根端口的对端端口一定是指定端口DP。
-
BPDU转发端口到根交换机的路径成本最小。
-
本端的网桥ID(BID)最小。
-
-
剩余的端口成为备用端口AP(Alternate Port),将他们阻塞。
-
2.10 虚拟局域网VLAN
使用一个或多个以太网交换机互连起来的交换式以太网,其所有站点都属于同一个广播域。随着交换式以太网规模的扩大,广播域相应扩大。巨大的广播域会带来很多弊端:
-
广播风暴
-
难以管理和维护
-
潜在安全问题
网络中会频繁出现广播信息:
-
TCP/IP协议栈中的很多协议都会使用广播:
-
地址解析协议ARP(已知IP地址,找出其相应的MAC地址)
-
路由信息协议RIP(一种小型的内部路由协议)
-
动态主机配置协议DHCP(用于自动配置IP地址)
-
-
NetBEUI: Windows下使用的广播型协议
-
IPX/SPX: Novell网络的协议栈
-
Apple Talk: Apple公司的网络协议栈
分隔广播域的方法:
-
使用路由器隔离广播域。但路由器成本较高
-
虚拟局域网技术VLAN
虚拟局域网技术VLAN(Virtual Local Area Network)是一种将局域网内的设备划分成与物理位置无关的逻辑组的技术,这些逻辑组具有某些共同的需求。
IEEE 802.1Q(也称Dot One Q帧)对以太网的MAC帧格式进行了扩展,插入了4字节的VLAN标记。
VLAN标记的最后12比特称为VLAN标识符VID,它唯一地标志了以太网帧属于哪一个VLAN。
-
VID的取值范围是 0 ~ 4095 ( 0 ~ 2^12 -1)
-
0和4095都不用来表示VLAN,因此用于表示VLAN的VID的有效取值范围是 1 ~ 4094.
802.1Q帧是由交换机来处理的,而不是用户主机。
-
当交换机收到普通的以太网帧时,会将其插入4字节的VLAN标记转变为802.1Q帧,简称“打标签”。
-
当交换机转发802.1Q帧时,可能会删除其4字节VLAN标记转变为普通以太网帧,简称“去标签”。
交换机的端口类型有以下三种:
-
Access
-
Trunk
-
Hybrid
交换机各端口的缺省VLAN ID
-
在思科交换机上称为Native VLAN,即本征VLAN。
-
在华为交换机上称为Port VLAN ID,即端口VLAN ID,简称为PVID。
Access端口:
-
一般用于连接用户计算机
-
只能属于一个VLAN
-
端口的PVID值与端口所属VLAN的ID相同(默认为1)
-
发送处理方法:
若帧中的VID与端口的PVID相等,则“去标签”并转发该帧;否则不转发。
-
接收处理方法:
一般只接受“未打标签”的普通以太网MAC帧。根据接收帧的端口PVID值给帧“打标签”,即插入4字节VLAN标记字段,字段中的VID取值与端口的PVID取值相等。
Trunk端口:
-
一般用于交换机之间或交换机与路由器之间的互连
-
可以属于多个VLAN
-
用户可以设置Trunk端口的PVID值。默认为1
-
发送处理方法:
-
对VID等于PVID的帧,“去标签”再转发;
-
VID不等于PVID的帧,直接转发。
-
-
接收处理方法:
-
接收“未打标签”的帧,根据接收帧的端口的PVID给帧“打标签”,即插入4字节VLAN标记字段,字段中的VID取值与端口的PVID取值相等。
-
接收“已打标签”的帧。
-
-
互连的Trunk端口的PVID值不相等,可能会造成转发错误。
Hybrid端口:
-
既可用于交换机之间或交换机与路由器之间的互连(同Trunk端口),也可用于交换机与用户计算机之间的互连(同Access端口)。
-
Hybrid端口可以属于多个VLAN(同Trunk端口)
-
用户可以设置Hybrid端口的PVID值。默认为1
-
发送处理方法(与Trunk端口不同):
查看帧的VID是否在端口的“去标签”列表中:
-
若存在,则“去标签”后再转发;
-
不存在,直接转发
-
-
接收处理方法(同Trunk端口):
-
接收“未打标签”的帧,根据接收帧的端口的PVID给帧“打标签”,即插入4字节VLAN标记字段,字段中的VID取值与端口的PVID取值相等。
-
接收“已打标签”的帧。
-
习题
-
HDLC协议对0111 1100 0111 1110组帧后对应的比特串为0111 11000 0111 11010
高级数据链路控制协议HDLC采用帧头和帧尾中的标志字段作为帧定界符,其值为01111110;HDLC为了实现透明传输,采用零比特填充法(每5个连续1后面插入一个比特0)。
-
主机甲采用停等协议向主机乙发送数据,数据传输速率为3kpbs,单向传播延时是200ms,忽略确认帧的传输延时,当信道利用率等于40%时,数据帧的长度为800比特
TD = x/3 ms,RTT= 2*200 = 400 ms,计算得x = 800。
-
数据链路层采用后退N帧协议GN,发送方已发送了编号0~7的帧。当计时器超时时,若发送方只收到0、2、3号帧的确认,则发送方需要重发的帧数是4
-
数据链路层采用选择重传协议SR传输数据,发送方已发送了0~3号数据帧,现已收到1号帧的确认,而0、2号帧依次超时,则此时协议重传的帧数是2
-
在一个采用CSMA/CD协议的网络中,传输介质是一根完整的电缆,传输速率为1Gbps,电缆中的信号传播速度是200 000km/s。若最小数据帧长减少800比特,则最远的两个站点之间的距离至少需要减少80m
设最远两个站点之间的距离为d m,最小帧长为x bit;最小帧长 = 争用期 × 数据传输速率,代入数据得d = x / 10。即若帧长减小800比特,则距离减少80m。
-
以太网交换机进行转发决策时使用的PDU地址是目的物理地址
PDU:协议数据单元。以太网交换机在帧交换表中查找帧的目的MAC地址所对应的接口号,MAC地址又称为硬件地址或物理地址。
-
某以太网的拓扑为:主机A、B、C分别对应接口1、2、3,当前的转发表为:目的地址B对应端口号2。主机A向主机C发送一个数据帧,主机C收到该帧后向主机A发送1个确认帧,交换机对这两个帧的转发端口分别是{2,3}和{1}
3 网络层
-
网络层的主要任务是实现网络互联,进而实现数据包在各网络之间的传输。
-
需要解决以下主要问题:
-
网络层向传输层提供怎样的服务("可靠传输"还是"不可靠传输")
-
网络层寻址问题
-
路由选择问题
-
-
因特网(Internet)是目前全世界用户数量最多的互联网,它使用TCP/IP协议栈。由于其中的网络层使用网际协议IP,它是整个协议栈的核心协议,因此在TCP/IP协议栈中网络层常称为网际层。
-
网络层提供两种服务:
-
面向连接的虚电路服务
-
无连接的数据报服务
-
面向连接的虚电路服务:
-
可靠通信由网络来保证
-
必须建立网络层的连接——虚电路VC(Virtual Circuit)
-
通信双方沿着已建立的虚电路发送分组
-
目的主机的地址仅在连接建立阶段使用,之后每个分组的首部只需携带一条虚电路的编号(构成虚电路的每一段链路都有一个虚电路编号)。
-
这种通信方式如果再使用可靠传输的网络协议,就可使所发送的分组最终正确到达接收方(无差错按序到达、不丢失、不重复)。
-
通信结束后,需要释放之前所建立的虚电路。
-
很多广域分组交换网都使用面向连接的虚电路服务。例如,曾经的X.25和逐渐过时的帧中继FR、异步传输模式ATM等。
无连接的数据报服务:
-
可靠通信应当由用户主机来保证
-
不需要建立网络层连接
-
每个分组可走不同的路径
-
每个分组的首部必须携带目的主机的完整地址
-
这种通信方式所传送的分组可能误码、丢失、重复和失序
-
由于网络本身不提供端到端的可靠传输服务,这就使网络中的路由器可以做的比较简单,而且价格低廉(与电信网的交换机相比较)。
-
因特网采用了这种设计思想,也就是将复杂的网络处理功能置于因特网的边缘(用户主机和其内部的传输层),而将相对简单的尽最大努力的分组交付功能置于因特网核心。
3.1 IPv4地址
IPv4地址就是给因特网(Internet)上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32比特的标识符。
编址方法经历了如下三个历史阶段:分类编址→划分子网→无分类编址。
IPv4地址采用点分十进制表示方法以方便用户使用。
分类编址
注意:
-
只有A类、B类和C类地址可分配给网络中的主机或路由器的各接口
-
主机号为“全0”的地址是网络地址,不能分配给主机或路由器的各接口
-
主机号为“全1”的地址是广播地址,不能分配给主机或路由器的各接口
A类地址:
-
最小网络号为0,保留不指派
-
最小的可指派的网络号为1,网络地址为1.0.0.0
-
最大的可指派的网络号为126,网络地址为126.0.0.0
-
最大网络号127,作为本地回环测试地址,不指派。127.0.0.1~127.255.255.254
-
可指派的网络数量为 2^(8-1)-2 = 126.
-
每个网络中可分配的IP地址数量为 2^24-2 = 16777214.
B类地址:
-
最小网络号也是第一个可指派的网络号128.0,网络地址为128.0.0.0
-
最大网络号也是最后一个可指派的网络号191.255,网络地址为192.255.0.0
-
可指派的网络数量为 2^(16-2) = 16384.
-
每个网络中可分配的IP地址数量为 2^16-2 = 65534.
C类地址:
-
最小网络号也是第一个可指派的网络号192.0.0,网络地址为192.0.0.0
-
最大网络号也是最后一个可指派的网络号223.255.255,网络地址为223.255.255.0
-
可指派的网络数量为 2^(24-3) = 2097152.
-
每个网络中可分配的IP地址数量为 2^8-2 = 254.
划分子网
32比特的子网掩码可以表明分类IP地址的主机号部分被借用了几个比特作为子网号。
-
子网掩码使用连续的比特1来对应网络号和子网号
-
子网掩码使用连续的比特0来对应主机号
-
将划分子网的IPv4地址与其相应的子网掩码进行逻辑与运算就可得到IPv4地址所在子网的网络地址。
默认子网掩码:未划分子网的情况下使用的子网掩码,A类地址的默认子网掩码为255.0.0.0,B类为255.255.0.0,C类为255.255.255.0。
无分类编址
无分类域间路由选择CIDR:消除了传统的A类、B类和C类地址,以及划分子网的概念;可以更加有效地分配IPv4的地址空间,并且可以在新的IPv6使用之前允许因特网的规模继续增长。
CIDR使用斜线记法,或称CIDR记法。即在IPv4地址后面加上斜线"/",在斜线后面写上网络前缀所占的比特数量。实际上是将网络前缀都相同的连续的IP地址组成一个“CIDR地址块”。只需要知道CIDR地址块中的任何一个地址,就可以知道该地址块的全部细节:
-
地址块的最小地址
-
地址块的最大地址
-
地址块中的地址数量
-
地址块聚合某类网络(A类、B类或C类)的数量
-
地址掩码(也可继续称为子网掩码)
路由聚合(构造超网):找共同前缀。
-
网络前缀越长,地址块越小,路由越具体。
-
若路由器查表转发分组时发现有多条路由可选,则选择网络前缀最长的那条,这称为最长前缀匹配,因为这样的路由更具体。
定长的子网掩码FLSM (Fixed Length Subnet Mask) | 变长的子网掩码VLSM (Variable Length Subnet Mask) |
---|---|
使用同一个子网掩码来划分子网 | 使用不同的子网掩码来划分子网 |
每个子网所分配的IP地址数量相同,造成IP地址的浪费 | 每个子网所分配的IP地址数量可以不同,尽可能减少对IP地址的浪费 |
FLSM:
VLSM:
使用的例子如上例。
IP数据报的发送和转发过程:
包含以下两部分:主机发送IP数据报;路由器转发IP数据报。
-
直接交付:属于同一个网络的主机之间可以直接通信
-
间接交付:属于不同网络的主机之间不能直接通信,需要由路由器中转
主机发送IP数据报:
-
主机如何判别目的主机是否与自己在同一个网络中:将目的主机的地址和源主机的子网掩码做逻辑与运算,得到目的网络地址与自己的网络地址不相等,说明不在同一个网络中。
-
主机如何知道应该经过哪个路由器中转:用户指定一个路由器,叫默认网关。由默认网关进行中转。
路由器转发IP数据报:
-
检查IP数据报首部是否出错:
若出错,则丢弃该数据报并通告源主机;
没有出错,则进行转发
-
根据IP数据报的目的地址在路由器表中查找匹配的条目:
若找到匹配的条目,则转发给条目中指定的下一跳;
若找不到,则丢弃该数据报并通告源主机。
路由器是隔离广播域的,本网络的广播不会经过路由器转发到其他网络。
3.2 路由选择协议
静态路由配置
路由表的内容:目的网络、下一跳、类型。对于路由器上的接口,下一跳是接口名,类型是直连;静态路由配置的路由条目类型是静态。路由选择协议生成的条目,类型为动态。
静态路由配置:用户或网络管理员使用路由器的相关命令给路由器人工配置路由表。
-
这种人工配置方式简单、开销小。但不能及时适应网络状态(流量、拓扑等)的变化。
-
一般只在小规模网络中采用。
使用静态路由配置可能出现以下导致产生路由环路的错误:
-
配置错误
-
聚合了不存在的网络
-
网络故障
默认路由:目的网络地址为0.0.0.0/0,用于配置所有下一跳地址(接口)相同,但目的网络地址不同的路由条目。类型为静态。
主机路由:针对某个特定主机的路由条目。目的网络地址的子网掩码为/32,类型为静态。
主机路由的目的网络前缀最长,路由最具体;默认路由的目的网络前缀最短,路由最模糊。当路由器查表转发IP数据报时,若有多条路由可选时,采用“最长前缀匹配”的原则,选择目的网络前缀最长的路由条目进行转发。
静态路由配置错误导致路由环路问题:配置错误导致一个IP数据报在两个路由器接口之间被反复转发。
解决方法:为了防止IP数据报在路由环路中永久兜圈,IP数据报首部设有生存时间TTL字段。IP数据报进入路由器后,TTL字段的值减1。若TTL的值不等于0,则被路由器转发,否则被丢弃。
聚合了不存在的网络导致路由环路问题:如果一个目的网络地址是由几个IP地址聚合而成的超网,那么向这个超网中不存在于具体网络里的某个IP地址发送数据报,由于存在默认路由,会出现路由环路。
解决方法:在路由表中添加黑洞路由,目的网络地址是不存在的IP地址,下一跳为null0。null0是路由器内不存在的接口。
网络故障导致的路由环路问题:如果路由器的某个接口出现故障,路由器会将这个接口对应的路由条目删除,此时向该接口连接的主机发送数据报,由于存在默认路由,会出现路由环路。
解决方法:在删除了故障接口对应的路由条目后,添加针对这个直连网络的黑洞路由。如果之后故障接口恢复正常,则将这个黑洞路由设置为失效状态。
路由选择协议
特点:
-
自适应:动态路由选择,能较好地适应网络状态的变化
-
分布式:路由器之间交换路由信息
-
分层次:将整个因特网划分为许多较小的自治系统AS(Autonomous System)。AS之间为域间路由选择(外部网关协议EGP),AS之内为域内路由选择(内部网关协议IGP)
常见路由选择协议:
-
内部网关协议IGP
设法使分组在一个自治系统内尽可能有效的从原网络传输到目的网络。无需考虑自治系统外部其他方面的策略。
-
内部网关路由协议IGRP
RIP和IGRP基于距离向量。RIP在因特网上最早使用;IGRP是思科早期私有的协议,现在已被EIGRP取代。
-
增强型内部网关路由协议EIGRP
思科私有的,用来取代IGRP的混合型路由协议(结合距离向量和链路状态)
-
中间系统到中间系统IS-IS
OSPF和IS-IS基于链路状态。OSPF在各种网络中广泛使用;集成化IS-IS是ISP骨干网上最常用的IGP协议
-
外部网关协议EGP
在不同自治系统内,度量路由的“代价”(距离,带宽,费用等)可能不同。因此,对于自治系统之间的路由选择,使用“代价”作为度量来寻找最佳路由是不行的。自治系统之间的路由选择必须考虑相关策略(政治,经济,安全等)。
-
BGP只是能力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而非要寻找一条最佳路由。
-
路由器的基本结构:
-
路由表一般仅包含从目的网络到下一跳的映射
-
路由表协议对网络拓扑变化的计算最优化
-
转发表是从路由表得出的
-
转发表的结构应当使查找过程最优化
-
路由器的端口一般都具有输入和输出的功能
路由信息协议RIP(Routing Information Protocol)是内部网关协议IGP中最先得到广泛应用的协议之一。
-
RIP要求自治系统AS内的每一个路由器都要维护从它自己到AS内其他每一个网络的距离记录。这是一组距离,称为“距离向量D-V(Distance-Vector)”。
-
RIP使用跳数(Hop Count)作为度量(Metric)来衡量到达目的网络的距离。
-
路由器到直连网络的距离定义为1。
-
路由器到非直连网络的距离定义为所经过的路由器数加1。
-
允许一条路径最多只能包含15个路由器。“距离”等于16时相当于不可达。因此,RIP只适用于小型互联网。
-
-
RIP认为好的路由就是“距离短”的路由,也就是所通过路由器数量最少的路由。当到达同一目的网络有多条“距离相等”的路由时,可以进行等价负载均衡。
-
RIP包含以下三个要点:
-
和谁交换信息 仅和相连路由器交换信息
-
交换什么信息 自己的路由表
-
何时交换信息 周期性交换(比如30秒)
-
-
RIP基本工作过程:
-
路由器刚开始工作时,只知道自己到直连网络的距离为1。
-
每个路由器仅和相邻路由器周期性地交换并更新路由信息。
-
若干次交换和更新后,每个路由器都知道到达本AS内各网络的最短距离和下一跳地址,称为收敛
-
-
更新路由表的三种情况:
-
不同的下一跳,新路由优势(距离更短),更新
-
不同的下一跳,等价负载均衡(距离相同),添加
-
相同的下一跳,最新消息(距离变化),更新
-
-
RIP存在“坏消息传播的慢”的问题
也称为路由环路或距离无穷计数问题,这是距离矢量算法的一个固有问题。可以采取措施减少该问题出现的概率或带来的危害:
-
限制最大路径距离为15(16表示不可达)
-
让路由表发生变化时就立即发送更新报文(即“触发更新”),而不仅是周期性发送
-
让路由器记录收到某特定路由信息的接口,而不让同一路由信息再通过次接口反方向传送(即“水平分割”)。
-
开放最短路径优先OSPF(Open Shortest Path First)是为克服RIP的缺点而开发的。“开放”表明OSPF协议不是受某一家厂商控制,而是公开发表的;“最短路径优先”是因为使用了Dijkstra提出的最短路径算法SPF。
-
OSPF是基于链路状态的,而不像RIP那样是基于距离向量的。
-
OSPF采用SPF算法计算路由,从算法上保证了不会产生路由环路。
-
OSPF不限制网络规模,更新效率高,收敛速度快。
-
链路状态是指本路由器都和哪些路由器相邻,以及相应链路的“代价”(cost)。
-
“代价”用来表示费用、距离、时延、带宽,等。这些都由网络管理人员来决定。如:思科路由器中OSPF计算代价的方法:100Mbps/链路带宽,计算结果小于1的值记为1;大于1且有小数的,舍去小数。
-
-
OSPF相邻路由器之间通过交互问候(Hello)分组,建立和维护邻居关系。
-
Hello分组封装在IP数据报中,发往组播地址224.0.0.5;协议号为89
-
发送周期为10秒;
-
40秒未收到来自邻居路由器的Hello分组,则认为该邻居路由器不可达。设置“死亡倒计时”,初始值为40秒,每收到一次Hello分组就重置倒计时。
-
-
使用OSPF的每个路由器都会产生链路状态通告LSA(Link State Advertisement)。LSA中包含以下内容:
-
直连网络的链路状态信息
-
邻居路由器的链路状态信息
-
-
LSA被封装在链路状态更新分组LSU中,采用洪泛法发送。
-
使用OSPF的每个路由器都有一个链路状态数据库LSDB,用于存储LSA。通过各路由器洪泛发送封装有自己LSA的LSU分组,各路由器的LSDB最终将达到一致。
-
使用OSPF的各路由器基于LSDB进行最短路径优先SPF计算,构建出各自到达其他路由器的最短路径,即构建各自的路由表。
-
OSPF包含以下五种分组类型:
-
问候(Hello)分组,用来发现和维护邻居路由器的可达性。
-
数据库描述(Database Description)分组,向邻居路由器给出自己的链路状态数据库中的所有链路状态项目的摘要信息。
-
链路状态请求(Link State Request)分组,向邻居路由器请求发送某些链路状态项目的详细信息。
-
链路状态更新(Link State Update)分组,路由器使用这种分组将其链路状态进行洪泛发送,即用洪泛法对全网更新链路状态。
-
链路状态确认(Link State Acknowledgement)分组,这是对链路状态更新分组的确认分组。
-
-
OSPF在多点接入网络中路由器邻居关系的建立
-
选举指定路由器DR(Designated Router)和备用的指定路由器BDR(Backup Designated Router)
-
所有的非DR/BDR只与DR/BDR建立邻居关系
-
非DR/BDR之间通过DR/BDR交换信息
-
-
为了使OSPF能够用于规模很大的网络,OSPF把一个自治系统再划分为若干个更小的范围,叫做区域(Area)
-
区域内路由器IR:所有接口都在本区域内
-
区域边界路由器ABR:一个接口用于连接自身所在区域,另一个连接主干区域
-
主干路由器BBR:主干区域内的路由器。区域边界路由器可以看做是主干路由器
-
自治系统边界路由器ASBR:主干区域内的一个路由器,专门用于和自治系统外的其他自治系统交换路由信息
-
边界网关协议BGP(Border Gateway Protocol)
-
在配置BGP时,每个自治系统的管理员要选择至少一个路由器作为该自治系统的“BGP发言人”。
-
不同自治系统的BGP发言人要交换路由信息,首先必须建立TCP连接,端口号为179
-
在此TCP连接上交换BGP报文以建立BGP会话
-
利用BGP会话交换路由信息(例如,增加新的路由,或撤销过时的路由,以及报告出错的情况等)
-
使用TCP连接交换路由信息的两个BGP发言人,彼此称为对方的邻站(neighbor)或对等站(peer)
-
-
BGP发言人除了运行BGP外,还必须运行自己所在自治系统所使用的内部网关协议IGP,例如OSPF或RIP。
-
BGP发言人交换网络可达性的信息(要到达某个网络所要经过的一系列自治系统)
-
当BGP发言人互相交换了网络可达性的信息后,各BGP发言人就根据所采用的策略从收到的路由信息中找出到达各自治系统的较好的路由。也就是构造成树形结构、不存在回路的自治系统连通图。
-
BGP适用于多级结构的因特网
-
BGP-4有以下四种报文:
-
OPEN(打开)报文:用来与相邻的另一个BGP发言人建立关系,使通信初始化。
-
UPDATE(更新)报文:用来通告某一路由的信息,以及列出要撤销的多条路由。
-
KEEPALIVE(保活)报文:用来周期性的证实邻站的连通性。
-
NOTIFICATION(通知)报文:用来发送检测到的差错。
-
3.3 IPv4数据报的首部格式
-
版本:占4比特,表示IP协议的版本。通信双方使用的IP协议的版本必须一致。目前广泛使用的IP协议版本号为4(即IPv4)
-
首部长度:占4比特,表示IP数据报首部的长度。该字段的取值以4字节为单位。最小十进制取值为5,表示IP数据报首部只有20字节的固定部分;最大十进制取值为15,表示IP数据报首部包含20字节的固定部分和最大40字节的可变部分。
-
区分服务:占8比特,用来获得更好的服务。只有在使用区分服务时,该字段才起作用。一般不使用。
-
总长度:占16比特,表示IP数据报的总长度(首部+数据载荷)。最大取值为十进制的65535,以字节为单位。
-
标识、标志、片偏移:共同用于IP数据报分片。当IPv4数据报长度超过MTU(最大传输单元)时,无法封装,需要进行分片。
-
标识:占16比特,属于同一个数据报的各分片数据报应该具有相同的标识。IP软件维持一个计数器,每当产生一个数据报,计数器值加1,并将此值赋给标识字段。
-
标志:占3比特。最高位保留;中间为DF;最低位为MF
-
DF位:1表示不允许分片;0表示允许分片
-
MF位:1表示“后面还有分片”;0表示“这是最后一个分片
-
保留位:必须为0
-
-
片偏移:占13比特,指出分片数据报的数据载荷部分偏移其在原数据报的位置有多少个单位。以8字节为单位,即其数值为偏移长度/8。
-
-
生存时间TTL:占8比特,最初以秒为单位,最大生存周期为255秒;路由器转发IP数据报时,将IP数据报首部中的该字段的值减去IP数据报在本路由器上耗费的时间,若不为0就转发,否则丢弃;现在以“跳数”为单位,路由器转发IP数据报时,将IP数据报首部中的该字段的值减1,若不为0就转发,否则就丢弃。
-
协议:占8比特,指明IPv4数据报的数据部分是何种协议数据单元。常用的协议和相应的字段值如下:
协议名称 ICMP IGMP TCP UDP IPv6 OSPF 协议字段值 1 2 6 17 41 89 -
首部检验和:占16比特,用来检测首部在传输过程中是否出现差错。比CRC检验码简单,称为因特网检验和。每经过一个路由器,都要重新计算首部检验和。在IPv6中,路由器不再计算校验和,从而更快地转发IP数据报。
-
源IP地址和目的IP地址:各占32比特,用来填写发送该IP数据报的源主机的IP地址和接收该IP数据报的目的主机的IP地址。
-
可选字段:长度从1个字节到40字节不等。用来支持排错、测量及安全等措施。实际上很少被使用。
-
填充字段:用来确保首部长度为4字节的整数倍。用全0进行填充。
主机或路由器使用ICMP来发送差错报告报文和询问报文。ICMP报文被封装在IP数据报中发送。
-
ICMP差错报告报文共有以下五种:
-
终点不可达:当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。具体可再根据ICMP的代码字段细分为目的网络不可达、目的主机不可达、目的协议不可达、目的端口不可达、目的网络未知、目的主机未知等13种错误。
-
源点抑制:当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。
-
时间超过:当路由器收到一个目的IP地址不是自己的IP数据报,会将其生存时间TTL字段的值减1。若结果不为0,则将该IP数据报转发出去;若结果为0,除丢弃该IP数据报外,还要向源点发送时间超过报文。
另外,当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片全都丢弃,也会向源点发送时间超过报文。
-
参数问题:当路由器或目的主机收到IP数据报后,根据其首部的检验和字段发现首部在传输过程中出现了误码,就丢弃该数据报,并向源点发送参数问题报文。
-
改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。
-
-
以下情况不应发送ICMP差错报告报文:
-
对ICMP差错报告报文不再发送ICMP差错报告报文
-
对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文
-
对具有多播地址的数据报都不发送ICMP差错报告报文
-
对具有特殊地址(如120.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文
-
-
常见的ICMP询问报文有以下两种:
-
回送请求和回答
ICMP回送请求和回答报文是由主机或路由器向一个特定的目的主机发出的询问。收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。这种询问报文用来测试目的站是否可达及了解其有关状态。
-
时间戳请求和回答
ICMP时间戳请求报文是请某个主机或路由器回答当前的日期和时间。在ICMP时间戳回答报文中有一个32位的字段,其中写入的整数代表从1900年1月1日起到当前时刻一共有多少秒。这种询问报文用来进行时钟同步和测量时间。
-
-
ICMP应用举例
-
分组网间探测PING(Packet InterNet Groper):用来测试主机或路由器间的连通性。应用层直接使用网际层的ICMP(没有通过传输层的TCP或UDP)。使用ICMP回送请求和回答报文
-
跟踪路由(traceroute):用来测试IP数据报从源主机到达目的主机要经过哪些路由器。
-
Windows版本:tracert命令;应用层直接使用网际层的ICMP;使用ICMP回送请求和回答报文。
-
Unix版本:traceroute命令;在传输层使用UDP协议;仅使用ICMP差错报告报文。
-
-
3.4 虚拟专用网VPN与网络地址转换NAT
-
虚拟专用网VPN(Virtual Private Network):利用共用的因特网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网。虚拟专用网中的各主机所分配的地址应该是本机构可自由分配的专用地址,而不是需要申请的、在因特网上使用的公有地址。也称为IP隧道技术。
同一机构不同部门的内部网络所构成的虚拟专用网VPN又称为内联网VPN。有时一个机构的VPN需要有某些外部机构参加进来,这样的VPN称为外联网VPN。在外地工作的员工需要访问公司内部的专用网时,运行VPN软件,在员工的PC和公司主机之间建立VPN隧道,即可访问专用网络中的资源,这种VPN称为远程接入VPN。
-
网络地址转换NAT(Network Address Translation):使大量使用内部专用地址的专用网络用户共享少量外部全球地址来访问因特网上的主机和资源。装有NAT软件的路由器称为NAT路由器,至少有一个有效的外部全球IP地址。记录内部IP地址和外部因特网IP地址的对应关系。
可以利用传输层的端口号和IP地址一起进行转换,这样,用一个全球IP地址就可以使多个拥有本地地址的主机同时和因特网上的主机进行通信。这种将端口号和IP地址一起进行转换的技术叫做网络地址与端口号转换NAPT(Network Address and Port Translation)。
无法由外部网络首先发起向内部网络的通信。因此,使用私有地址的主机不能直接充当因特网服务器。
习题
-
下列IP地址中,只能作为IP分组的源IP地址但不能作为目的IP地址的是0.0.0.0(0.0.0.0,127.0.0.1,20.10.10.3,255.255.255.255)
地址0.0.0.0是一个特殊的IPv4地址,只能作为源地址使用,表示“在本网络上的本主机”。封装有DHCP Discovery报文的IP分组的源地址使用0.0.0.0。127.0.0.1既可以作为源地址,也可以作为目的地址使用,用于本地软件环回测试。255.255.255.255是一个特殊的IPv4地址,只能作为目的地址使用,表示“只在本网络上进行广播(各路由器均不转发)”。
-
某主机的IP地址为180.80.77.55,子网掩码为255.255.252.0,如该主机向其所在子网发送广播分组,其目的地址可以是180.80.79.255
这是一个B类网络地址,网络号为180.80,主机号为.77.55;子网掩码一共有16+6个连续的比特1,从主机号中借用6个比特作为子网号,题中IP地址的子网号为.010011(77的前6位),子网的网络地址为180.80.76.0,广播地址为180.80.79(01001111).255
-
在子网192.168.4.0/30中,能接收目的地址为192.168.4.3的IP分组的最大主机数是2
子网192.168.4.0/30中,最小地址为192.168.4.0即网络地址,最大地址为192.168.4.3即广播地址,可分配的地址只有两个:192.168.4.1和192.168.4.2。目的地址为192.168.4.3的IP分组是广播,所有主机(一共两台)都能接收。
-
某路由表中有转发接口相同的4条路由表项,其目的网络地址分别为35.230.32.0/21、35.230.40.0/21、35.230.48.0/21、35.230.56.0/21,将该4条路由聚合后的目的网络地址为35.230.32.0/19
最长的共同前缀为35.230.001,后面13个比特全取0,即为35.230.001 00000.00000000。
-
下列网络设备中,能够抑制广播风暴的是路由器(中继器、集线器、网桥、路由器)
中继器和集线器工作在物理层,既不隔离冲突域也不隔离广播域。
网桥和交换机(多端口网桥)工作在数据链路层,可以隔离冲突域,不能隔离广播域。
路由器工作在网络层,既隔离冲突域,也隔离广播域。
-
下列关于IP路由器概念的描述中,正确的是仅ⅠⅡⅣ(Ⅰ运行路由协议,设置路由表;Ⅱ监测到拥塞时,合理丢弃IP分组;Ⅲ对收到的IP分组头进行差错校验,确保传输的IP分组不丢失;Ⅳ根据收到的IP分组的目的IP地址,将其转发到合适的输出线路上)
IP路由器工作在TCP/IP体系结构的网际层(或称IP层),TCP/IP体系结构的网际层并不负责可靠传输,也就是不能确保传输的IP分组不丢失。
IP路由器对收到的IP分组头进行差错校验,当发现错误时会丢弃该IP分组并向源主机发送ICMP差错报告报文(类型为参数错误)。
-
-
某自治系统内采用RIP协议,若该自治系统内的路由器R1收到其邻居路由器R2的距离矢量,其中包含信息<net1, 16>,则能得出的结论是R1不能经过R2到达net1
在RIP协议中,距离16表明目的网络不可达。因此,R2无法到达net1,R1也无法通过R2到达net1。
-
假设R1、R2、R3采用RIP协议交换路由信息,且均已收敛,这三个路由器两两互连。若R3检测到网络net1不可达,并向R2通告一次新的距离向量,则R2更新后,其到达该网络的距离是3
根据“R3检测到网络net1不可达”可知,R3与net1是直连的。
根据“R1、R2、R3采用RIP协议交换路由信息,且均已收敛”可知,先前这三个路由器关于net1的路由条目分别是:
路由器 目的网络 下一跳 距离 R1 net1 R3 2 R2 net1 R3 2 R3 net1 直连 1 R3检测到与net1的直连网络出现故障时,将自己到达该网络的路由条目中的距离修改为16,表示该网络不可达,并向R2发送关于这条路由条目的通告。R2收到后,把自己的路由条目中的距离修改为16。但R1也会向R2发送更新报文,R2据此报文将距离修改为3。
-
使用边界网关协议BGP,报文封装在TCP报文段中进行传输。
-
直接封装RIP、OSPF、BGP报文的协议分别是UDP、IP、TCP
-
-
若路由器R因为拥塞丢弃IP分组,则此时R可向发出该IP分组的源主机发送的ICMP报文类型是源点抑制
4 传输层
实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程。传输层的任务是为运行在不同主机上的应用进程提供直接的通信服务,传输层协议又称为端到端协议。传输层向高层用户屏蔽了下面网络核心的细节,如网络拓扑、所采用的路由选择协议等,它使应用进程看见的就好像是在两个传输层实体之间有一条端到端的逻辑通信信道。
根据应用需求的不同,因特网的传输层为应用层提供了两种不同的传输协议,即面向连接的TCP和无连接的UDP。
4.1 端口号、复用与分用
运行在计算机上的进程使用进程标识符PID来标志。但因特网上不同的计算机并不是使用统一的操作系统,有不同格式的进程标识符。为了使运行不同操作系统的计算机的应用进程之间能够进行网络通信,就必须使用统一的方法对TCP/IP体系的应用进程进行标识。
-
TCP/IP体系的传输层使用端口号来区分应用层的不同应用进程。
-
端口号使用16比特表示,取值范围0~65535
-
熟知端口号:0~1023,IANA把这些端口号指派给了TCP/IP体系中最重要的一些应用协议,如:FTP使用21/20,HTTP使用80,DNS使用53。
-
登记端口号:1024~49151,为没有熟知端口号的应用程序使用。使用这类端口号必须在IANA按照规定的手续登记,以防止重复。
-
短暂端口号:49151~65535,留给客户进程选择短暂使用。当服务器进程收到客户进程的报文时,就知道了客户进程所使用的动态端口号。通信结束后,这个端口号可供其他客户进程以后使用。
-
-
端口号只具有本地意义,即端口号只是为了标识本计算机应用层的各进程,在因特网中,不同计算机中的相同端口号是没有联系的。
-
-
发送方的复用和接收方的分用
-
TCP/IP体系的应用层常用协议所使用的端口号
4.2 TCP
TCP和UDP是TCP/IP体系结构传输层中的两个重要协议。
用户数据报协议UDP(User Datagram Protocol) | 传输控制协议TCP(Transmission Control Protocol) |
---|---|
可以随时收发数据,即UDP是无连接的 | 在收发数据之前必须通过“三报文握手”建立连接,数据传输结束后必须使用“四报文挥手”释放连接,即TCP是面向连接的 |
支持单播、多播、广播 | 仅支持单播 |
UDP对应用进程交下来的报文既不合并也不拆分,而是保留这些报文的边界。即,UDP是面向应用报文的 | TCP把应用进程交下来的报文看做字节流,从中提取一定数量的字节构成TCP报文段并发送。TCP不保证接收方应用进程所收到的数据块与发送方所发出的具有对应大小的关系。即,TCP是面向字节流的 |
UDP向上层提供无连接不可靠传输服务(适用于IP电话、视频会议等实时应用) | TCP向上层提供面向连接的可靠传输服务(适用于要求可靠传输的应用,例如文件传输),使用流量控制和拥塞控制 |
UDP首部仅有8字节。共四个字段,每个字段2字节,从左往右依次为:源端口、目的端口、长度、校验和 | TCP首部复杂得多。最小20字节,最大60字节 |
流量控制
-
流量控制(flow control)就是让发送方的发送速率不要太快,让接收方来得及接收。
-
利用滑动窗口机制实现。
-
接收方的ACK中除了确认序号之外,还有接收窗口的大小。发送方根据接收方的ACK中的窗口值,调整自己的发送窗口大小
-
TCP为每个连接设置一个持续计时器,只要连接的一方收到对方的零窗口通知,就启动计时器。若计时器超时,就发送一个零窗口探测报文,对方在确认这个探测报文时,给出自己现在的接收窗口值,以便及时调整窗口。
-
TCP规定,即使接收窗口为0,也必须接收零窗口探测报文段。
-
零窗口探测报文段也有重传计时器。如果一直没有收到回复,会重新发送。
-
拥塞控制
-
在某短时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏。这种情况叫做拥塞(congestion)。
-
若出现拥塞而不进行控制,整个网络的吞吐量将随输入负荷的增大而下降。
-
发送方维护一个叫做拥塞窗口cwnd的状态变量,其值取决于网络的拥塞程度,并且动态变化。
-
拥塞窗口cwnd的维护原则:只要网络没有出现拥塞,就再增大一些;但只要出现拥塞,就减小一些。
-
判断出现网络拥塞的依据:没有按时收到应当到达的确认报文(即发生超时重传)。
-
发送方将拥塞窗口作为发送窗口swnd,即swnd=cwnd。
-
-
维护一个慢开始门限ssthresh状态变量:
-
当cwnd < ssthresh时,使用慢开始算法;
-
当cwnd > ssthresh时,改用拥塞避免算法;
-
当cwnd = ssthresh时,两种算法都可以使用。
-
-
四种拥塞控制算法:
-
慢开始(slow-start):传输轮次0时拥塞窗口值为1,并设置慢开始门限值。发送方每收到一个对新报文段的确认时,就把cwnd值乘2。cwnd增长到ssthresh的值时,就开始使用拥塞避免算法。
“慢开始”是指一开始向网络注入的报文段少,并不是指拥塞窗口cwnd增长速度慢。
-
拥塞避免(congestion avoidance):发送方每收到一个对新报文段的确认时,就把cwnd值加1。如果重传计时器超时,判断网络很可能出现了拥塞,进行以下工作:
-
将ssthresh的值更新为发生拥塞时cwnd值的一半;
-
将cwnd值减小为1,并重新执行慢开始算法。
”拥塞避免“并非指完全能够避免拥塞,而是指在拥塞避免阶段将拥塞窗口控制为按线性规律增长,使网络比较不容易出现拥塞。
-
-
快重传(fast retransmit):使发送方尽快进行重传,而不是等超时重传计时器超时再重传。可以让发送方尽早知道发生了个别报文段的丢失。
-
要求接收方不要等待自己发送数据时才进行捎带确认,而是要立即发送确认;
-
即使收到了失序的报文段也要立即发出对已收到的报文段的重复确认。这里的“已收到的报文段”是指上一个收到的、序号连续的报文。对失序的报文不做确认。
-
发送方一旦收到3个连续的重复确认,就将相应的报文段立即重传,而不是等该报文段的超时重传计时器超时再重传。
-
对于个别丢失的报文段,发送方不会出现超时重传,也就不会误认为出现了拥塞(进而降低拥塞窗口值为1)。
-
-
快恢复(fast recovery):发送方一旦收到3个重复确认,就知道现在只是丢失了个别的报文段。于是不启动慢开始算法,而执行快恢复算法。
-
发送方将慢开始门限ssthresh值和拥塞窗口cwnd值调整为当前窗口的一半;开始执行拥塞避免算法。
-
也有的快恢复实现是把恢复开始时的拥塞窗口cwnd值再增大一些,即等于新的ssthresh + 3。
-
-
超时重传时间的选择
-
超时重传时间的选择是TCP最复杂的问题之一。
-
超时重传时间RTO的值应略大于往返时间RTT。
-
若RTO小于RTT,会导致不必要的重传。
-
若RTO远大于RTT,会导致网络空闲时间增大,降低传输效率。
-
-
不能直接使用某次测量得到的RTT样本来计算超时重传时间RTO。
-
利用每次测量得到的RTT样本,计算加权平均往返时间RTT_s(又称为平滑的往返时间)。
在上式中,0 <= α < 1:α越接近1,则新RTT样本对RTT_s的影响越大。已成为建议标准的RFC6298推荐的α值为1/8,即0.125。
-
超时重传时间RTO的值应略大加权平均于往返时间RTT_s。
-
RFC6298建议使用下式计算超时重传时间RTO:
-
往返时间RTT的测量比较复杂。
-
针对出现超时重传时无法测准往返时间RTT的问题,Karn提出了一个算法:在计算加权平均往返时间RTT_s时,只要报文段重传了,就不采用其往返时间RTT样本。
-
对Karn算法进行修正:报文段每重传一次,就把超时重传时间RTO增大一些。典型的做法是将新RTO的值取为旧值的2倍。
可靠传输
-
TCP基于以字节为单位的滑动窗口来实现可靠传输
-
发送窗口后沿的移动情况有两种:
-
不动(没有收到新的确认)
-
前移(收到了新的确认)
-
-
发送窗口前沿的移动情况有三种:
-
通常是不断向前移动
-
不动
-
没有收到新的确认,对方通知的窗口大小也不变
-
收到新确认但对方通知的窗口缩小,使发送窗口前沿正好不动
-
-
向后收缩(对方通知的窗口缩小了)
-
-
使用三个指针P1,P2,P3分别指向相应的字节序号
-
小于P1的是已发送并已收到确认的部分
-
大于等于P3的是不允许发送的部分
-
P3 - P1 = 发送窗口的尺寸
-
P2 - P1 = 已发送但尚未收到确认的字节数
-
P3 - P2 = 允许发送但当前尚未发送的字节数(又称为可用窗口或有效窗口)
-
-
-
在同一时刻,发送方的发送窗口并不总是和接收方的接收窗口一样大。
-
网络传送窗口值需要经历一定的时间滞后
-
发送方还可能根据网络当时的拥塞情况适当减小自己的发送窗口
-
-
对于不按序到达的数据应如何处理,TCP并无明确规定
-
如果接收方把不按序到达的数据一律丢弃,对网络资源的利用率比较低
-
TCP通常对不按序到达的数据先临时存放在接收窗口中,等到字节流中缺少的字节收到后,再按序交付上层的应用进程。
-
-
TCP要求接收方必须有累计确认和捎带确认机制,这样可以减小传输开销。接收方可以在合适的时候发送确认,也可以在自己有数据要发送时把确认信息顺便捎带上。
-
接收方不应过分推迟发送确认,否则会导致发送方不必要的超时重传,浪费网络资源。
-
TCP规定确认推迟的时间不应超过0.5秒。若收到一连串具有最大长度的报文段,则必须每隔一个报文段就发送一个确认。
-
捎带确认实际上并不经常发生,因为大多数应用程序很少同时在两个方向上发送数据。
-
-
TCP的通信是全双工通信。通信中的每一方都在发送和接收报文段。因此,每一方都有自己的发送窗口和接收窗口。在谈到这些窗口时,一定要弄清楚是哪一方的窗口。
连接建立和释放
-
TCP是面向连接的协议,基于运输连接来传送报文段。
-
TCP运输连接的建立和释放是每一次面向连接的通信中必不可少的过程。
-
TCP运输连接有以下三个阶段:
-
建立TCP连接
-
数据传送
-
释放TCP连接
-
-
TCP的运输连接管理就是使运输连接的建立和释放都能正常的进行。
-
TCP的连接建立要解决以下三个问题:
-
使TCP双方能够确知对方的存在;
-
使TCP双方能够协商一些参数(如最大窗口值,是否使用窗口扩大选项和时间戳选项以及服务质量等);
-
使TCP双方能够对运输实体资源(如缓存大小、连接表中的项目等)进行分配。
-
-
TCP使用“三报文握手”建立连接
x和y的值分别由客户端和服务器自己指定。
-
SYN为1的TCP段不能携带数据,但需要消耗seq序号;普通TCP段只有携带数据时消耗序号。
-
TCP通过“四报文挥手”释放连接
u的值为客户进程之前已传送过的数据的最后一个字节的序号加1;v的值为客户进程之前已收到的(服务器进程发出的)数据的最后一个字节的序号加1。
-
FIN为1的TCP段即使不携带数据,也要消耗seq序号。
-
TCP服务器进程每收到一次TCP客户进程的数据,就重新设置并启动保活计时器(2小时定时)。
-
若保活计时器定时周期内未收到TCP客户进程发来的数据,则当保活计时器到时后,TCP服务器进程就向TCP客户进程发送一个探测报文段,以后每隔75秒钟发送一次。若一连发送10个探测报文段后仍无TCP客户进程的响应,TCP服务器进程就认为TCP客户进程所在主机出了故障,接着就关闭这个连接。
TCP报文段首部格式
-
TCP采用面向字节流的方式。
-
TCP在发送数据时,从发送缓存中取出一部分或全部字节并给其添加一个首部使之成为TCP报文段后进行发送。
-
一个TCP报文段由首部和数据载荷两部分构成。
-
-
首部格式:
源端口:占16比特,写入源端口号,用来标识发送该TCP报文段的应用进程。
目的端口:占16比特,写入目的端口号,用来标识接收该TCP报文段的应用进程。
序号:占32比特,取值范围0~2^32-1,指出本TCP报文段数据载荷第一个字节的序号。
确认号:占32比特,取值范围0~2^32-1,指出期望收到对方下一个TCP报文段的数据载荷的第一个字节的序号,同时也是对之前收到的所有数据的确认。
数据偏移:占4比特,以4字节为单位。用来指出TCP报文段的数据载荷部分的起始处距离TCP报文段的起始处有多远。实际上是指出了TCP报文段的首部长度。首部固定长度为20字节(20/4=5),最大长度为60字节(60/4=15),因此数据偏移字段的取值范围为0101~1111。
保留:占6比特,保留位今后使用,目前置为0
紧急标志位URG:取值为1时紧急指针有效。
确认标志位ACK:取值为1时确认号字段才有效。TCP规定,在连接建立后所有传送的TCP报文段都必须把ACK置1。
推送标志位PSH:接收方的TCP收到该标志位为1的报文段会尽快上交应用进程,而不必等到接收缓存都填满后再向上交付。
复位标志位RST:用来复位TCP连接。该位为1时,表明TCP连接出现了异常,必须释放并重新建立连接。RST置1还用来拒绝一个非法的报文段或拒绝打开一个TCP连接。
同步标志位SYN:在TCP连接建立时用来同步序号。
终止标志位FIN:用来释放TCP连接。
窗口:占16比特,以字节为单位。指出发送本报文段的一方的接收窗口。窗口值作为接收方让发送方设置其发送窗口的依据,即流量控制。
校验和:占16比特,检查范围包括TCP报文段首部和数据载荷两部分。在计算校验和时,要在TCP报文段的前面加上12字节的伪首部。
紧急指针:占16比特,以字节为单位,用来指明紧急数据的长度。当发送方有紧急数据时,可将紧急数据插队到发送缓存的最前面,并立刻封装到一个TCP报文段中进行发送。紧急指针会指出本报文段数据载荷部分包含了多长的紧急数据,紧急数据之后是普通数据。
选项:包含以下选项。
-
最大报文段长度MSS选项:TCP报文段中数据载荷部分的最大长度。
-
窗口扩大选项:为了扩大窗口(提高吞吐率)。
-
时间戳选项:
-
用来计算往返时间RTT
-
用于处理序号超范围的情况,又称为防止序号绕回PAWS。
-
-
选择确认选项
填充:确保报文段首部能被4整除。
-
习题
-
主机甲和主机乙之间建立了一个TCP连接,TCP最大段长度为1000字节。若主机甲的当前拥塞窗口为4000字节,在主机甲向主机乙连续发送两个最大段后,成功收到主机乙发送的第一个段的确认段,确认段中通告的接收窗口大小为2000字节,则此时主机甲还可以向主机乙发送的最大字节数是1000
TCP发送方的发送窗口 = min {自身拥塞窗口,TCP接收方的接收窗口}。题目未给出TCP发送方的发送窗口的初始值,则取拥塞窗口值作为发送窗口值。
-
一个TCP连接总是以1KB的最大段长发送TCP段,发送方有足够多的数据要发送。当拥塞窗口为16KB时发生了超时,如果接下来的4个RTT(往返时间)内的TCP报文段的传输都是成功的,那么当地4个RTT时间内发送的所有TCP段都得到肯定应答时,拥塞窗口大小是9KB
-
主机甲与主机乙之间建立一个TCP连接,主机甲向主机乙发送了两个连续的TCP段,分别包含300字节和500字节的有效载荷,第一个段的序号为200,主机乙正确接收到两个段后,发送给主机甲的确认序号是1000
-
主机甲与主机乙之间建立一个TCP连接,主机甲向主机乙发送了3个连续的TCP段,分别包含300字节、400字节和500字节的有效载荷,第3个段的序号为900,若主机乙仅正确接收到第1个段和第3个段,则主机乙发送给主机甲的确认序号是500
-
主机甲向主机乙发送一个(SYN = 1, seq = 11220)的TCP段,期望与主机乙建立TCP连接,若主机乙接受该连接请求,则主机乙向主机甲发送的正确的TCP段可能是(SYN = 1, ACK = 1, seq = 11221, ack = 11221)
5 应用层
应用层解决通过应用进程的交互来实现特定网络应用的问题。
-
应用层是计算机网络体系结构的最顶层,是设计和建立计算机网络的最终目的,也是计算机网络中发展最快的部分。
-
早期基于文本的应用(电子邮件、远程登录、文件传输、新闻组)
-
万维网www
-
当今流行的即时通信、P2P文件共享及各种音视频应用
5.1 C/S模式和P2P模式
-
开发一种新的网络应用首先要考虑的问题就是网络应用程序在各种端系统上的组织方式和它们之间的关系。目前流行的主要有以下两种:
-
客户/服务器 (Client/Server, C/S)方式
-
对等 (Peer-to-Peer, P2P)方式
-
-
客户/服务器 (Client/Server, C/S)方式
-
客户服务器是指通信中所涉及的两个应用进程
-
客户/服务器方式所描述的是进程之间服务和被服务的关系。
-
客户是服务请求方,服务器是服务提供方。
-
服务器总是处于运行状态,并等待客户的服务请求。服务器具有固定端口号(例如HTTP服务器的默认端口号为80),而运行服务器的主机也具有固定的IP地址。
-
-
C/S方式是因特网上传统的、同时也是最成熟的方式。包括万维网、电子邮件、文件传输等。
-
基于C/S方式的应用服务通常是服务集中型的,即应用集中在网络中比客户计算机少得多的服务器计算机上。
-
由于一台服务器计算机要为多个客户机提供服务,在C/S应用中,常会出现服务器计算机跟不上众多客户机请求的情况。
-
为此,在C/S应用中,常用计算机群集(或服务器场)构建一个强大的虚拟服务器。
-
-
对等 (Peer-to-Peer, P2P)方式
-
在P2P方式中,没有固定的服务请求者和服务提供者,分布在网络边缘各端系统中的应用进程是对等的,被称为对等方。对等方相互之间直接通信,每个对等方既是服务的请求者,又是服务的提供者。
-
-
目前的P2P应用主要包括P2P文件共享、即时通信、P2P流媒体、分布式存储等。
-
基于P2P的应用是服务分散型的,因为服务不是集中在少数几个服务器计算机中,而是分散在大量对等计算机中,这些计算机并不为服务提供商所有,而是为个人控制的桌面计算机和笔记本电脑,它们通常位于住宅、校园和办公室中。
-
P2P方式的最突出特性之一就是它的可扩展性。因为系统每增加一个对等方,不仅增加的是服务的请求者,同时也增加了服务的提供者,系统性能不会因规模的增大而降低。
-
具有成本上的优势。通常不需要庞大的服务器设施和服务器带宽。
5.2 动态主机配置协议DHCP
-
DHCP的作用:通过DHCP自动获取网络配置信息。
-
DHCP工作过程
-
DHCP中继代理:在一些没有配置DHCP服务器的网络上配置代理,作为各网络中计算机与DHCP服务器的桥梁。
5.3 域名系统DNS
域名系统DNS(Domain Name System)的作用:使用域名而不是IP地址来访问主机。DNS服务器有域名到IP地址映射的数据库。DNS使大多数域名都在本地解析,仅少量解析需要在因特网上通信,因此系统效率很高。DNS报文使用传输层的UDP协议进行封装,端口号为53。
-
因特网采用层次树状结构的域名结构。
-
域名的结构由若干个分量组成,各分量之间用“点”隔开,分别代表不同级别的域名。
··· .三级域名.二级域名.顶级域名
-
每一级的域名都由英文字母和数字组成,不超过63个字符,不区分大小写。
-
级别最低的域名在最左边。级别最高的在最右边。
-
完整的域名不超过255个字符。
-
-
域名系统既不规定一个域名需要包含多少个下级域名,也不规定每一级的域名代表什么意思。
-
各级域名由其上一级的域名管理机构管理,而最高的顶级域名则由因特网名称与数字地址分配机构ICANN进行管理。
-
顶级域名TLD(Top Level Domain)分为三类:
-
国家顶级域名NTLD cn中国,us美国,uk英国 等。
-
通用顶级域名GTLD com公司企业,net网络服务机构,org非营利性组织,int国际组织,edu美国教育机构,gov美国政府部门,mil美国军事部门。
-
反向域arpa 用于反向域名解析,即IP地址反向解析为域名。
-
-
在国家顶级域名下注册的二级域名均由该国家自行确定。
-
我国将二级域名划分为以下两类:
-
类别域名 共7个:ac科研机构,com工商金融等企业,edu教育机构,gov政府部门,net网络服务机构,mil军事机构,org非营利性组织。
-
行政区域名 共34个,适用于我国的各省、自治区、直辖市。bj北京市,sh上海市,js江苏省。
-
-
域名只是个逻辑概念,并不代表计算机所在的物理地点。
-
域名和IP地址的映射必须保存在域名服务器中,供所有其他应用查询。DNS使用分布在各地的域名服务器来实现域名到IP地址的转换。
-
域名服务器有以下四种:
-
根域名服务器:共有13个不同IP地址的根域名服务器。通常并不直接对域名进行解析,而是返回该域名所属顶级域名的顶级域名服务器的IP地址。
-
顶级域名服务器:负责管理在该顶级域名服务器注册的所有二级域名。
-
权限域名服务器:负责管理某个区的域名。
-
本地域名服务器:起代理的作用,会将该报文转发到上述的域名服务器的等级结构中。有时也称为默认域名服务器。本地域名服务器的IP地址需要直接配置在需要域名解析的主机中。
-
-
域名解析的过程:
-
递归查询
-
迭代查询:
-
由于递归查询对被查询的域名服务器负担太大,通常采用以下模式:从请求主机到本地域名服务器的查询是递归查询,而其余的查询是迭代查询。
-
-
使用高速缓存:存放最近查询过的域名以及从何处获得域名映射信息的记录。
-
由于域名到IP地址的映射关系并不是永久不变,为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器并删除超过合理时间的项(如两天)。
-
用户主机也需要维护自己的高速缓存。
5.4 文件传输协议FTP
-
文件传输协议FTP(File Transfer Protocol)是因特网上使用最广泛的文件传输协议。
-
FTP提供交互式的访问,允许客户指明文件的类型与格式(如指明是否使用ASCII码),并允许文件具有存取权限。
-
FTP屏蔽了各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件。
-
-
基本工作原理:
FTP客户和服务器之间建立以下两个并行的TCP连接:控制连接在整个会话期间一直保持打开,用于传送FTP相关控制命令;数据连接用于文件传输,在每次文件传输时才建立,传输结束就关闭。
5.5 电子邮件
-
电子邮件与邮政系统的寄信类似:
-
发件人将邮件发送到自己使用的邮件服务器;
-
发件人的邮件服务器将收到的邮件按其目的地址转发到收件人邮件服务器中的收件人邮箱;
-
收件人在方便的时候访问收件人邮件服务器中自己的邮箱,获取收到的电子邮件。
-
-
电子邮件系统采用客户/服务器方式。
-
电子邮件系统的三个主要组成构件:用户代理,邮件服务器,电子邮件所需的协议。
-
用户代理是用户与电子邮件系统的接口,又称为电子邮件客户端软件。
-
邮件服务器是电子邮件系统的基础设施。因特网上所有的ISP都有邮件服务器,其功能是发送和接收邮件,同时还要负责维护用户的邮箱。
-
协议包括邮件发送协议(例如SMTP)和邮件读取协议(例如POP3,IMAP)。
-
-
简单邮件传输协议SMTP(Simple Mail Transfer Protocol)的基本工作原理
(省略了认证过程;应答代码后面一般都跟有简单的描述信息;不同的SMTP服务器给出的相同应答代码的描述信息可能不同)
-
电子邮件的信息格式:有信封和内容两部分,而内容又由首部和主体两部分构成。
-
信封:邮件系统自动提取所需信息并填写。
-
内容:
-
首部:from;to;cc(抄送人的电子邮件地址);subject
-
主体:邮件信息。
-
-
-
SMTP协议只能传送ASCII码文本数据,不能传送可执行文件或其他的二进制对象。
-
为解决SMTP传送非ASCII码文本的问题,提出了多用途因特网邮件扩展MIME(Multipurpose Internet Mail Extensions)。发送方使用MIME将非ASCII码数据转换为ASCII码数据,再通过SMTP进行传送;接收方使用MIME对非ASCII码数据进行逆转换。
-
增加了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。
-
-
基于万维网的电子邮件
-
通过浏览器登录邮件服务器万维网网站就可以撰写、收发、阅读和管理电子邮件。
-
邮件服务器网站通常都提供非常强大和方便的邮件管理功能。
-
5.6 万维网WWW
-
万维网WWW(World Wide Web)并非某种特殊的计算机网络。它是一个大规模的、联机式的信息储藏所,是运行在因特网上的一个分布式应用。
-
万维网利用网页之间的超链接将不同网站的网页链接成一张逻辑上的信息网。
-
浏览器最重要的部分是渲染引擎,也就是浏览器内核,负责对网页内容进行解析和显示。
-
不同的浏览器内核对网页内容的解析也有不同,因此同一网页在不同内核的浏览器里的显示效果可能不同;
-
网页编写者需要在不同内核的浏览器中测试网页显示效果。
-
-
万维网使用统一资源定位符URL来指明因特网上任何种类“资源”的位置。
-
URL一般形式由以下四个部分组成:
<协议>://<主机>:<端口>/<路径>
-
万维网的文档
-
HTML:超文本标记语言(HyperText Markup Language),使用多种“标签”来描述网页的结构和内容
-
CSS:层叠样式表(Cascading Style Sheets),从审美的角度来描述网页的样式
-
JavaScript:一种脚本语言,控制网页的行为
-
-
超文本传输协议HTTP(HyperText Transfer Protocol)
HTTP定义了浏览器(即万维网客户进程)怎样向万维网服务器请求万维网文档,以及万维网服务器怎样把万维网文档传送给浏览器。
-
HTTP/1.0采用非持续连接方式。在该方式下,每次浏览器要请求一个文件都要与服务器建立TCP连接,当收到相应后就立即关闭连接。请求一个万维网文档所需的时间 = 2RTT + 文档的传输时延。
-
每请求一个文档就要有两倍的RTT的开销。
-
为了减小时延,浏览器通常会建立多个并行的TCP连接同时请求多个对象。但这会大量占用万维网服务器的资源,特别是万维网服务器往往要同时服务于大量客户的请求,这会使其负担很重。
-
-
HTTP/1.1采用持续连接方式。
-
为了进一步提高效率,HTTP/1.1的持续连接还可以使用流水线方式工作。
-
-
HTTP的报文格式
HTTP是面向文本的,其报文中的每一个字段都是一些ASCII码串,并且每个字段的长度都是不确定的。
-
使用cookie在服务器上记录用户信息
-
早期的万维网应用非常简单,因此HTTP被设计为一种无状态的协议。
-
现在的一些复杂应用往往需要万维网服务器能够识别用户。
-
cookie提供了一种机制使得万维网服务器能够“记住”用户,而无需用户主动提供用户标识信息。也就是说,cookie是一种对无状态的HTTP进行状态化的技术。
-
-
万维网缓存与代理服务器
-
使用缓存机制以提高万维网的效率。
-
万维网缓存又称为web缓存(Web Cache),可位于客户机,也可位于中间系统上,位于中间系统上的web缓存又称为代理服务器(Proxy Server)。
-
web缓存把最近的一些请求和响应暂存在本地磁盘中。当新请求到达时,若发现这个请求与暂时存放的请求相同,就返回暂存的响应,而不需要按URL的地址再次去因特网访问该资源。
-
习题
-
如果本地域名服务器无缓存,当采用递归方法解析另一网络某主机域名时,用户主机、本地域名服务器发送的域名请求消息数分别为一条、一条
-
假设所有域名服务器均采用迭代查询方式进行域名解析,当H4访问规范域名为www.abc.xyz.com的网站时,域名服务器201.1.1.1在完成该域名解析的过程中,可能发出DNS查询的最少和最多次数分别是0,4
如果H4的DNS高速缓存中有对应的域名信息,则不需要查询;否则,需要依次向以下域名服务器发出共4次DNS查询:
-
根域名服务器
-
顶级域名服务器 (.com)
-
权限域名服务器 (xyz.com)
-
权限域名服务器 (abc.xyz.com)
-
-
FTP客户和服务器间传递FTP命令时,使用的连接是建立在TCP之上的控制连接
-
下列关于FTP协议的叙述中,错误的是C(A.数据连接在每次数据传输完毕后就关闭 B.控制连接在整个会话期间保持打开状态 C.服务器与客户端的TCP 20端口建立数据连接 D.客户端与服务器的TCP 21端口建立控制连接)
默认情况下,FTP服务器使用TCP 21端口进行控制连接,TCP 20端口进行数据连接。是否使用TCP 20端口建立数据连接与传输模式有关,主动方式才会使用。
-
若用户1与用户2之间发送和接收电子邮件的过程如下图所示,则图中1、2、3阶段分别使用的应用层协议可以是D(A. SMTP、SMTP、SMTP B. POP3、SMTP、POP3 C. POP3、SMTP、SMTP D. SMTP、SMTP、POP3)
-
下列关于SMTP协议的叙述中,正确的是仅ⅠⅡⅢ(Ⅰ只支持传输7比特ASCII码内容 Ⅱ支持在邮件服务器之间发送邮件 Ⅲ支持从用户代理向邮件服务器发送邮件 Ⅳ支持从邮件服务器向用户代理发送邮件)
-
无需转换即可由SMTP协议直接传输的内容是ASCII文本
-
某浏览器发出的HTTP请求报文如下,下列叙述中,错误的是C(A. 该浏览器请求浏览index.html B. index.html存放在www.test.edu.cn上 C. 该浏览器请求持续连接 D. 该浏览器曾经浏览过www.test.edu.cn)
connection方法为close,表示服务器发送完请求的文档后就可释放连接。若是持续连接方式,取值应为keep-alive。
-
假设HTTP1.1协议以持续的非流水线方式工作,一次请求-响应的时间为RTT,rfc.html页面引用了2个JPEG小图像,则浏览器从开始建立TCP连接到收到全部内容为止,需要多少个RTT?4