0330
计算机网络就是一些互联的、自治的计算机系统的集合。
1.按分部范围分
2.按传输技术分
3.按拓扑结构分
4.按使用者分
5.按交换技术分
6.按传输介质分类
也叫数据率、数据传输率、比特率,单位是b/s(比特/秒),也可以写成bit/s,或者bps。
要区分下面的两个概念:
速率 | 存储容量 |
---|---|
1Kb/s = 1000b/s | 1KB = 1024B 1Byte = 8 bit 1字节=8位 |
1Mb/s = 1000Kb/s | 1MB = 1024KB |
1Gb/s = 1000Mb/s | 1GB = 1024MB |
1TB = 1024GB |
带宽是指理想状态下所能达到的最高的数据传输率,即最高速率,是个物理极限值。
单位时间内通过某个网络(信道、接口)的数据量。
数据(一个报文或者分组)从网络(或链路)的一端传送到另一端所需的时间,也叫延迟或迟延,单位是秒(s)。
时延由4部分构成:
要区分开传输时延和传播时延:
传输时延是发送时延,把要发送的数据推送信道上所需的时间;传播时延是走完信道所需的时间。
时延带宽积 = 传播时延(s) * 带宽(b/s),单位是比特(bit),所以时延带宽积又称为以比特为单位的链路长度,即“某段链路现在有多少比特”。
RTT(Round-Trip Time),发送方从发送数据开始,到发送方收到接收方的确认所经历的时延,RTT越大,在收到确认之前,可以发送的数据就越多。
信道利用率:有数据通过的时间/(有+无)数据通过时间,即某一信道有百分之多少的时间是有数据通过的;(下面的3.4流量控制有讲到具体计算方法)
网络利用率:信道利用率的加权平均值。
利用率越高,时延越大,可以类比堵车的例子。
1.实体:具体的某一层,同一层的实体叫对等实体;
2.协议:为对等实体进行数据交换而建立的规则、标准或约定,称为网络协议。(水平的
)
协议三要素:
3.接口:上层使用下层服务的入口,仅仅在相邻层间有接口。(垂直的
)
4.服务:下层为相邻上层提供的功能调用。(垂直的
)
上层通过接口使用相邻下层提供的服务,例如:第4层为第3层提供服务,第4层可以使用下层及下面所有层服务的总和,但第4层无法直接获取第2层提供的服务,第2层提供的服务是通过二三层间的接口传递上来的。
SDU服务数据单元:含金量高的数据;
PCI协议控制信息:控制信息;
PDU协议数据单元:对等层次之间传送的数据单元。
SDU + PCI = PDU,例如第3层的PDU作为第4层的SDU,再加上第4层的PCI,得到第4层的PDU,然后第4层的PDU又作为第5层的SDU,加上第5层的PCI,得到第5层的PDU,然后…
OSI参考模型(7层):物联网淑慧适用
前三层被称为通信子网;后三层被称为资源子网;传输层承上启下。
TCP/IP模型(4层):
信道速率提高,指的是传输速率(不是传播)提高了,即的单位时间内推送到链路上的比特数增多了。
数据:传送信息的实体;
信号:模拟信号(也叫宽带信号)、数字信号(也叫基带信号);
码元:固定时长的信号波形,一个码元可以携带多个比特的信息
信源、信道、信宿:
通信方式:
一条
信道两条
信道两条
信道码元传输速率:单位时间内传输的码元个数,单位是波特(Baud),1波特表示每秒传输一个码元,即1Baud = 1码元/s;
信息传输速率:单位时间内传输的二进制码元个数(即比特数),单位是比特/秒(b/s),也叫比特率,数据传输速率;
注意区分波特和比特:
1波特表示每秒传输一个码元,但一个码元可以携带多个比特的信息,所以对于一个携带n比特信息量的码元,M波特率的码元传输速率所对应的信息传输速率为M*n比特/s。
奈氏准则:在理想信道(带宽受限且没有噪声)中,极限码元传输速率为 2W Baud
,W是信道带宽,单位是Hz,极限数据传输速率为2*W*(log以2为底V的对数)
,V是V进制码元,即码元的离散状态种类。
奈氏准则限制了码元传输速率,但没有限制数据传输速率,所以要提高数据的传输速率,就要设法让每个码元携带更多个比特的信息量,即增大V的值,这就是多元制的调制方法。
奈氏准则限制了码元传输速率,但没有限制数据传输速率,但数据传输速率也不能无线增大,即一个码元对应的二进制位数(携带的比特数)是有限的,这就是
香农定理:在带宽受限且有噪声的信道中,极限数据传输率有上限值,上限值为 W * (log以2为底<1 + S/N>的对数)
,W是信道带宽,S/N是信噪比。
如果信噪比有单位,那么单位是分贝(DB
);
如果信噪比没单位,就是个比值,那就是S/N
的值,即S/N是没单位的信噪比;
没单位的信噪比 和 以DB为单位的信噪比 之间的转换关系是:
信噪比(DB) = 10 * log(以10为底S/N的对数)
例如,S/N = 10,信噪比是10DB;S/N = 1000,信噪比是30DB。
一般是已知信噪比(dB
)和带宽,求最大数据传输率:信噪比(dB)--> S/N --> W * (log以2为底<1 + S/N>的对数)
即为最大的数据传输率;
也有的题目是已知信噪比为127:1,那么就不需要做上述从DB到S/N的转换了,S/N直接就是127,带入公式 W * (log以2为底<1 + S/N>的对数)
即为最大的数据传输率。
问:为什么要用两种形式来表示信噪比?
答:首先二者在数值上是等价的,区别就是一个没单位,一个单位是dB。
采用分贝表示的原因是:很多时候信号要比噪声强得多,比如信号比噪声强10亿倍,如果用数值表示的话,1后面又9个0,容易写错;如果用分贝表示的话,直接写90dB即可,表示起来要简单的多,而且也不容易出错。分贝对于表示特别大或者特别小的数值极为有利,这种表示方式在电子通信领域用途很广。
奈氏准则支出,码元传输的速率是受限的;但奈氏准则并未限制信息传输速率,要提高信息传输速率,就要使每个码元能够携带更多比特的信息量,即公式中的V
;
香农定理给出了信息传输速率的极限,要提高信息的传输速率,要么提高传输线路的带宽
,要么提高所传信号的信噪比
,即公式中的W
和S/N
。
注意:两个定理中带宽W
的单位都是Hz
。
数据不论是数字的还是模拟的,传输时都要转换成信号。
调制:把数据变换为模拟信号的过程;
编码:把数据变换为数字信号的过程。
数字数据 编码为 数字信号:
常用的编码方式有:
(1)归零编码(RZ):码元之内高低电平全部归零
(2)非归零编码(NRZ):高电平为1,低电平为0
(3)反向非归零编码(NRZI):电平翻转为0,不翻转为1
(4)曼彻斯特编码(Manchester Encoding):前低后高为1,前高后低为0(或者反过来也行)
(5)差分曼彻斯特编码:同1异0
数字数据 调制为 模拟信号:
数字数据调制技术 在发送端将数字信号转换为模拟信号,而在接收端将模拟信号还原为数字信号,两个过程分别称为调制和解调,基本的调制方法有:
幅移键控(ASK):通过改变载波信号的振幅来表示数字信号1和0;
频移键控(FSK):通过改变载波信号的频率来表示数字信号1和0;
向移键控(PSK):通过改变载波信号的相位来表示数字信号1和0;
模拟数据 编码为 数字信号:
这个编码方式最典型的例子是常用于对音频信号进行编码的脉码调制(PCM),主要步骤有:采样、量化、编码。
采样:将模拟信号转换成数字信号时,采样频率必须大于等于最大频率的两倍,才能保证采样后的数字信号完整保留原始模拟信号的信息,采样定理又称奈奎斯特定理;
量化:把采样取得的电平幅值按照一定的分级标度转换为对应的数字值并取整数;
编码:把量化的结果转换为与之对应的二进制编码。
模拟数据 转换为 模拟信号:调制
电话机和本地局交换机就是采用模拟信号传输模拟数据的编码方式。
1.电路交换
进行数据传输前,两个节点之间必须先建立一条专用的物理通信路径,这一路径在数据传输期间一直被占,直到通信结束后才被释放。—类似于两个人打电话,就算不讲话,只要没挂断,这条通信路径就一直被占用。
电路交换技术的三个阶段:连接建立、数据传输、连接释放。
电路交换技术特点:
2.报文交换
报文携带目标地址、源地址等信息。
传输方式:报文交换在交换节点采用的是存储转发的传输方式
报文交换技术的特点:
3.分组交换
传输方式:也采用的是存储转发的传输方式,但解决了报文交换中大报文传输的问题:
分组交换限制了每次传送的数据块大小的上限,把大的数据化划分为合理的小数据块,再加上一些必要的控制信息(源地址、目的地址、编号信息等),构成分组(Packet)
。网络结点根据控制信息把分组送到下一个结点,下一个结点接收到分组后,暂存并排队等待传输,然后根据分组控制信息选择下一个结点,直到到达目的节点。
分组交换的特点:
虚电路服务
可以解决乱序问题))。数据报与虚电路是分组交换的两种方式。
数据报就是分组交换的普通方式:把大的数据化划分为合理的小数据块,再加上一些必要的控制信息(源地址、目的地址、编号信息等),构成分组(Packet)
。网络结点根据控制信息把分组送到下一个结点,下一个结点接收到分组后,暂存并排队等待传输,然后根据分组控制信息选择下一个结点,直到到达目的节点。
特点:不需要建立连接;对故障的适应能力强;分组有可能乱序、丢失、重复。
虚电路方式是把数据包方式与电路交换方式结合起来:在分组发送之前,在发送方与接收方建立一条逻辑上相连的虚电路,连接一旦建立,就固定了虚电路所对应的物理路径。与电路交换类似,整个过程分为三个阶段:虚电路建立、数据传输、虚电路释放。
特点:虚电路的建立和拆除需要时间开销,对于长时间、频繁的数据交换效率较高;分组不会乱序;对故障的适应能力差,这是虚电路致命的弱点。
比较:
数据报 | 虚电路 | |
---|---|---|
连接的建立 | 不需要 | 必须有 |
目的地址 | 每个分组都有完整的目的地址 | 仅在建立连接阶段使用,之后每个分组使用长度较短的虚电路号 |
路由选择 | 每个分组独立地进行路由选择和转发 | 属于同一条虚电路的分组按照同一路由转发 |
分组顺序 | 不保证有序到达 | 保证有序到达 |
对网络故障的适应性 | 出故障的节点丢失分组,其他分组路径选择发生变化时可以正常传输 | 所有经过故障结点的虚电路均不能正常工作 |
传输介质(传输媒体):发送设备和接收设备之间的物理通路。
注意:传输介质不是物理层,一般把传输介质称为第0层,因为传输介质传的是信号,但不知道信号是什么意思;而物理层规定了电气特性,能够识别传送的比特流。
传输介质分为 导向性~ 和 非导向性~,
导向性~ :双绞线、同轴电缆、光纤;
非导向性~ :无线电波、微波、红外线、激光。
中继器:对信号进行再生和还原,对衰减的信号进行放大,保持与原数据相同,以增加信号传输的距离。
5-4-3规则:网段为5,中继器为4,其中只能有3个网段可以连电脑。
如果一台集线器连接的机器数目较多,且多台机器经常需要同时通信,那么将导致信息碰撞,使得集线器的工作效率很低。例如,一个带宽为10Mb/s的集线器上连接了8台计算机,当这8台计算机同时工作时,每台计算机真正所拥有的带宽为10/8 = 1.25Mb/s。
集线器不能分割冲突域,所有的集线器端口都属于同一个冲突域。
1.为网络层提供服务
2.帧定界 帧同步 透明传输
数链层将网络层的分组
封装成帧
,以帧
的格式进行传送。给一段数据的前后分别添加首部和尾部,就构成了帧,首部和尾部的主要作用就是确定帧的界限,即帧定界。
帧同步就是接收方应该要能从接收到的二进制比特流中区分出帧的起始和终止。
透明传输:不管传的数据是什么样的比特组合,都应当能够在链路上传送。
3.链路管理
4.流量控制
5.差错控制:位错和帧错,,分别采用循环冗余校验(CRC)方式和自动重传请求(ARQ,Automatic Repeat reQuest)方式来解决。
发送方依据一定的规则把网络层递交的分组封装成帧,这个过程称为组帧。
组帧时既要加首部,又要加尾部。因为网络中信息是以帧为最终小单位进行传输的,所以接收端要正确的接收帧,必须要清楚该帧在一串比特流中从哪里开始到哪里结束(因为接收端收到的是一段比特流,没有首部和尾部是不能正确区分帧的)。
组帧(封装成帧/帧定界)的方式:
在帧头部用一个计数字段来表明帧内字符数。致命缺点是:一处错,后面全错。
使用特殊的字符来表示一帧的开始(SOH
)和结束(EOT
),如果在要传输的数据中也有SOH
和EOT
,那就给它们前面添加一个特殊的字符ESC
,如果传输的内容中也有ESC
,那就在ESC
前面也加个ESC
,最后再接收方把所有的ESC删掉,后面几跟着的就是真正要传输的内容。
发送时头文填充01111110
,要传输的内容中遇到5个连续的1就在其后插入一个0,接收时去掉头尾的01111110
,然后遇到连续的5个1就把后面的1个0删除。(5个1后面加1个0)
物理层进行比特编码时,通常采用违规编码法。例如,曼彻斯特编码方法将比特1编码为“左高右低”,将比特0编码为“左低右高”,而“左高右高”和“左低右低”对于曼彻斯特编码方法来说就是为违规的,所以就用这些违规编码序列来表示帧的起始和终止。
综上,目前较常用的组帧方法是比特填充法和违规编码法。
差错控制包括
在要发送的数据后面添加帧校验序列FCS,也叫冗余码。
计算冗余码:
本节将介绍的三种协议都属于自动重传请求(ARQ,Automatic Repeat reQuest),是通过接收方请求发送方重传出错的数据帧来恢复出错的帧。这三种协议分别是:停止-等待协议(Stop-and-Wait)ARQ、后退N帧协议(GBN)ARQ、选择重传协议(SR)ARQ,后两种协议是请求重发技术与滑动窗口技术的结合。
流量控制的基本方法是由接收方控制发送方发送数据的速率,常见的方式有两种:停止-等待协议 和 滑动窗口协议。
流量控制的方法 | 发送窗口大小 | 接收窗口大小 |
---|---|---|
停止-等待协议 | =1 | =1 |
滑动窗口协议之后退N帧协议(GBN) | 1 ≤ WT ≤ 2的n次方-1 | =1 |
滑动窗口协议之选择重传协议(SR) | 1 ≤ WT ≤ 2的(n-1)次方 | 1 ≤ WT ≤ 2的(n-1)次方 |
请注意:这里的窗口大小在传输过程中是固定不变的,和传输层的滑动窗口协议还不太一样。(5.3.5 传输层的流量控制 和 数链层的流量控制也有提及)
发送一帧(0号帧),等待接收方的应答信号(ACK0),之后才发送下一帧。
特点:传输效率很低;如果没收到ACK信号,就会一直等,如果某一帧数据在传输过程中丢失,那发送方也一直等。
此协议的确认帧不需要序号,因为是一发一收。
发送方:
2的n次方-1
个帧,然后等待接收接收方发来的ACKn
确认帧;接收方:按序接收,不按序的帧都丢弃,发送ACK确认帧,接收方无需缓存任何失序帧,只需维护一个信息:expected seq num
。
后退N帧协议的特点:
选择重传协议对后退N帧协议进行了改进,不再是批量重传,而是选择重传,先把收到的正确的帧缓存下来(缓存失序帧),等它前面的帧收到了再从缓存器中取出来。
(笔记本的3.4.2后面 书中是在3.4.4后面)
信道利用率,也叫信道效率,是对发送方而言的,是指发送方在一个发送周期内,有效发送数据所需要的时间
占整个发送周期
的比率。
一个发送周期:发送方从开始发送数据到收到第一个确认帧为止,假设用T
表示,再假设在整个T
内发送内共发送了L
比特的数据,发送方的数据传输率为C
,那么发送方用于发送有效数据的时间为L/C
,则信道的利用率为U = (L/C) / T
。
信道吞吐率 = 信道利用率 * 发送方的发送速率。
介质访问控制:采取一定的措施,使得两对节点之间的通信不会发生互相干扰的情况。
介质访问控制分为以下两种方式:
多路复用技术:把多个信号组合在一条物理信道上进行传输,即1条物理链路,划分为N个信道,这样就可以同时传多路信号,共享信道资源,提供信道利用率。
在随机访问协议中,不采用集中控制方式解决发送信息的次序问题,所有用户能根据自己的意愿随机地发送信息,占用信道全部速率。为了解决随即介入发生的碰撞,每个用户需要按照一定的规则反复地重传它的帧,直到该帧无碰撞地通过。这些规则就是随机访问介质访问控制协议,常用的协议有ALOHA
协议、CSMA
协议、CSMA/CD
协议和CSMA/CA
协议等,又称为争用型协议。
纯ALOHA协议:不监听信道,不按时间槽发送,随机时长后重发;
时隙ALOHA协议:不在随机发送,而是按照固定时间发送。
CSMA,Carrier Sense Multiple Access,载波监听多路访问;
CS:载波监听,每个站发送数据前,检测一下总线上是否有其他计算机在发数据;
MA:多点接入,多个计算机接在一根总线上。
监听结果:
综合比较 | 1-坚持CSMA | 非坚持CSMA | p-坚持CSMA |
---|---|---|---|
信道空闲 | 马上发 | 马上发 | p概率马上发; 1-p概率到下一个时间槽再发 |
信道忙 | 继续监听 | 随机时间后再监听 | 随机时间后再监听 |
举例:买奶茶 | 很想喝,排到我我就买,没到我就排队 | 不急喝,到我我就买,没到就一会再来 | 任性,到我了我看心情要不要买(概率P),没到我就一会再来 |
CSMA/CD,Carrier Sense Multiple Access / collision detection,载波监听多点接入/碰撞检测
CS:载波监听,每个站发送数据前,检测一下总线上是否有其他计算机在发数据;
MA:多点接入,多个计算机接在一根总线上;
CD:碰撞检测(冲突检测),“边发送,边监听”,确保只有一方在发,避免冲突。
问:为什么已经是先听后发,还是无法避免冲突?
答:因为电磁波的传播速度有限。
传播时延对载波监听的影响:
假设单程端到端的传播时延是τ
,总线端到端往返传播时延为2 * τ
,即站A在发送帧后,最多需要经过2 * τ
就能知道所发送的帧是否发生碰撞,因此2 * τ
被称为争用期(或者冲突窗口、碰撞窗口)。
那么发生碰撞后需要多久再重传?
CSMA/CD采用二进制指数退避算法来解决碰撞问题:发生碰撞后,经过2 * τ * r
之后再进行重传,其中
2 * τ
为争用期,r
为离散整数集合[0,1,...,2的k次方-1]
中的一个随机数,k
为重传次数,(当k≤10时,k就等于k;当k>10,k就等于10),k=16
时还没有成功发送,就说明网络太拥挤,认为此帧永远无法正确发出。帧的传输时延 至少要 两倍于 信号在总线中的传播时延,即≥ 2 * τ
;
帧的传输时延 = 帧长 / 数据传输速率 ;
故最小帧长
= 总线传播时延 * 2 * 数据传输速率
= 2 * τ * 数据传输速率
以太网规定最短帧长为64B
,故凡是长度小于64B的帧都是由于冲突而异常终止的无效帧。
(P135 第10题)
答:因为以太网采用的介质访问控制方法是CSMA/CD,即结点发送数据时,先侦听信道有没有载波,如果有,表示信道忙,就继续侦听,知道检测到空闲为止;一个数据帧在从结点A向最远的结点传输过程中,如果有其他结点也正在发送数据,那么此时就会发生冲突,冲突后的信号需要经过冲突窗口(2 * τ
)时间后传回结点A,结点A会检测到冲突,所以说如果有冲突,就一定发生在冲突窗口内。如果在冲突窗口内没发生冲突,之后如果其他结点想发送数据,会监听到信道忙,就会先不发送,继续监听,从而不会发生冲突。
CA:collision avoidance 碰撞避免
令牌传递协议:确保同一时刻只有一个结点独占信道,每个结点都可以在一定的时间内获得发送数据的权利,即可拥有一定的令牌持有时间,但不是无限制的持有。
因为只有一个令牌,所以不会发生冲突,只是会有维护令牌的开销。
LAN,Local Area Network,是指在一个较小的地理范围内,将各种计算机、外部设备和数据库系统等通过双绞线、同轴电缆等连接介质互相连接起来,组成资源和信息共享的计算机互联网络。
决定局域网的因素:拓扑结构、传输介质、介质访问控制方式。
网络拓扑:
传输介质:
介质访问控制方法:
CSMA/CD
:用于总线形局域网令牌环
:用于环形局域网,令牌环网CSMA/CA
:用于无线局域网以太网:逻辑拓扑是总线形; 物理拓扑是星形,采用IEEE802.3
标准;
无线局域网(WLAN):采用IEEE802.11
标准;
令牌环网:物理拓扑是星形;逻辑拓扑是环形,采用IEEE802.5
标准。
数链层被分为逻辑链路子层和介质访问控制子层:
以太网,也叫IEEE802.3
局域网;
以太网提供无连接、不可靠的服务,即以太网尽最大努力交付数据;
拓扑结构:逻辑上总线形;物理上星形;
介质访问控制方法:CSMA/CD
;
传输介质:粗同轴电缆、系统之电缆、双绞线、光纤。
每块网卡在出厂时都有一个唯一的代码,称为介质访问控制地址(MAC地址),这个地址用于控制主机和网络上的数据通信。
MAC地址用6个十六进制数表示,共6*2*4 = 48
位。
数链层设备(网桥、交换机等)都是用各个网卡的MAC地址;
网卡控制着主机对介质的访问,因此网卡也工作在物理层。
以太网的最短帧长为64B,其中目的地址、源地址各占6B,类型占2字节,最后的校验码(FCS)占4B,所以MAC帧中的数据长度最少是64-6-6-2-4=46B,这个数据是来自网络层的IP数据报
,规定这个数据的范围是46B~1500B
,所以最长帧长是1500+6+6+2+4=1518B
。
(书中的P108有MAC帧格式的图)
无线局域网使用IEEE802.11
标准。
介质访问控制方法:CSMA/CA
;
局域网使用的协议主要在数据链路层,还有少量在物理层;
广域网使用的协议主要在网络层。
广域网中的一个重要问题是路由选择和分组转发:
PPP协议
和 HDLC协议
目前最常使用的两种广域网数据链路层控制协议:PPP协议
和 HDLC协议
。
书中P118的3.7.2 和3.7.3 有详细讲解,P134中的第6题、第12题也有提到这两种协议。
多个以太网通过网桥
连接后,就成为一个覆盖范围更大的以太网,原来的每个以太网就成为一个网段
。
网桥也叫桥接器。
网桥工作在链路层的MAC子层,使得以太网各个网段成为隔离开的碰撞域(冲突域)。
注意:网桥处理数据的对象是帧,所以网桥是数链层的设备;
而中继器、放大器、集线器处理数据的对象是信号,所以它是工作在物理层的设备。
网桥的工作原理:
根据MAC帧的目的地址对帧进行转发和过滤,而不是向所有接口转发此帧。
“透明”是指以太网上的站点并不知道所发送的帧将经过哪几个网桥,是一种即插即用设备,拥有自学习算法
。
由自学习算法得到的路由并不是最佳路由。
答:网桥不知道网络上是否存在该设备,它只知道在其转发表中没有这个设备的MAC地址。因此,当网桥收到这个目的地址未知的帧时,它将扩散该帧,即把该帧发送到所连接的除输入网段外的所有其他网段。
在发送帧时,把详细的最佳路由信息放在帧的首部。
问:那么怎么找最佳路由呢?
答:源站以广播方式向目的站发送一个发现帧(Discovery Frame),途中的每个网桥都转发此帧,最终发现帧可能从多个途径到达目的站,目的站也将一一发送给应答帧,每个应答帧原路返回,把途径的网桥信息都记录在应答帧中,最终由源站选择出一个最佳路由。
透明网桥和源路由网桥中提到的最佳路由并不一定就是经过路由器最少的路由,而是发送帧往返时间最短的路由,这样才能真正地进行负载平衡,因为往返时间长说明中间某个路由器可能超载了,所以不走这条路,换个往返时间短的路走。
网桥的主要限制是在任一时刻通常只能执行一个帧的转发操作,于是出现了局域网交换机,也叫以太网交换机。
从本质上说,以太网交换机是一个多端口网桥,它也工作在数据链路层。
原理:
交换机检测从以太端口来的数据帧的源和目的地的MAC地址,然后与系统内部的动态查找表进行比较,若数据帧的MAC地址不在查找表中,则将该地址加入查找表,并将数据帧发送给相应的目的端口。
特点:
自学习算法
自动地逐渐建立起来的;交换机分类:直通式交换机、存储转发式交换机
利用以太网交换机可以方便的实现虚拟局域网(Virtual LAN),VLAN不仅可以隔离冲突域,还可以隔离广播域。
一块网卡发送消息时,只要有可能和另一块网卡冲突,那么这些可能冲突的网卡就构成冲突域;
一块网卡发出一个广播时,能收到这个广播的所有网卡的集合成为一个广播域;
一般来说,一个网段就是一个冲突域,一个局域网就是一个广播域。
设备名称 | 能否隔离冲突域 | 能否隔离广播域 |
---|---|---|
中继器、集线器 | 不能 | 不能 |
网桥、交换机 | 能 | 不能 |
利用交换机实现的虚拟局域网(VLAN) | 能 | 能 |
路由器 | 能 | 能 |
传统共享式局域网的核心设备是集线器,而交换式局域网的核心是以太网交换机。
在传统局域网中,任何时刻只能有一个结点能通过共享通信信道发送数据;
而在交换式局域网中,交换机可以在它的多个端口之间建立多个并发连接,从而实现结点之间数据的并发传输,有效地改善网络性能和服务质量。
中继器:
集线器(Hub):
网桥:
不同的物理层、不同的MAC子层及不同速率的
以太网;交换机:
所谓网络互联,就是将两个以上的计算机网络通过一定的方法,用一种或多种通信处理设备(即中间设备)相互连接起来,以构成更大的网络系统。
中间设备又称中间系统或者中继系统,根据所在的层次,中继系统分为以下4种:
手机、电脑、校园网等。
路由器主要完成两个功能:路由选择、分组转发。
路由选择算法 --> 路由表 --> 转发表
拥塞:在通信子网中,因出现过量的分组而引起网络性能下降的现象。
自治系统AS(Autonomous System):系统内外使用各自的协议,相互之间不知道。
路由选择协议:
RIP协议、OSPF协议
;BGP-4协议
。路由算法分为两大类:
先解释距离是什么?
距离:即跳数,指经过路由器的个数,与路由器直连的距离为1,即最小距离/跳数为1,最大距离为16,距离为16表示网络不可达,因此RIP协议适用于小型互联网。
原理:
多次更新后,每个路由器都会知道到达本**自治系统(AS)**中任何一个网络(目的网络)的最短距离和下一跳路由器的地址,即“收敛”。
距离向量算法的实践:
结果:
原理:
30min
刷新一次链路状态最后所有的路由器都能建立一个链路状态数据库,即每个路由器都知道全网的拓扑信息。
边界网关协议(Border Gateway Protocol)是不同自治系统的路由器之间交换路由信息的协议,是一种外部网关协议(EGP)。
边界网关协议只能力求寻找一条能够到达目的网络的且比较好的路由,而非寻找一条最佳路由。
BGP采用的是路径向量路由选择协议,它与RIP和OSPF还不一样。
BGP是应用层协议,它是基于TCP的。
协议 | RIP | OSPF | BGP |
---|---|---|---|
类型 | 内部网关协议 | 内部网关协议 | 外部网关协议 |
路由算法 | 距离-向量算法 | 链路状态算法 | 路径-向量算法 |
传递协议 | UDP | IP | TCP |
路径选择 | 跳数最少 | 代价最低 | 较好的路由,非最佳路由 |
交换节点 | 和本结点相邻的路由器交换 | 网络中的所有路由器 | 和本结点相邻的路由器交换 |
交换内容 | 当前本路由器知道的全部信息,即自己的路由表 | 与本路由器相邻的所有路由器的链路状态 | 首次是交换整个路由表;非首次交换有变化的部分 |
哪一层的协议 | 应用层 |
IPv4即现在普遍使用的IP(版本4)。
一个IP分组由两部分组成:首部 和 数据。
IP首部又由固定部分和可变部分组成,其中固定部分是20B,可变部分最多40B(是一些可选字段),因此IP首部最多60B;(下面会解释为什么首部最多是60B)
IP首部中固定部分的这20B中包含很多重要信息,下面详细介绍:
单位是4B
,所以最大值是60B = 15 * 4B。单位是1B
,又因为占16位,所以数据报的最大长度为(2的16次方-1),即65535B。但是以太网帧的最大传送单元(MTU)为1500B,即以太网规定IP分组的最大长度为1500。单位是8B
,它表示当一个数据报分片后,某个分片在原分组中的相对位置,每个分片的长度一定是8B的整数倍;单位: 1总8片首4
分片:用到上面的 4.标识 5.标志 6.片偏移
最大传送单元(MTU):指一个链路层数据报能承受的(来自网络层的)最大数据量,或者说数据链路层允许的最大IP包长,以太网的MTU是1500B
。
当IP数据报的总长度大于链路的MTU时,就要分片。这些分片在接收方的网络层被重新组装。目的主机使用IP首部中的 4.标识 5.标志 6.片偏移来完成对分片的重组。
看个例子就明白了:
分析:
首先原始的IP数据报是4000B,大于链路的MTU,所以要分片,这4000B中有20B是首部,所以真正要分片的数据部分是3980B,那么每个分片最多能分到多少数据呢?
例子中说的MTU为1500B的链路,表示这条链路的SDU最大是1500B,即IP数据报分片的话每片最大是1500B,但又因为每个分片中都有20B的首部,所以每个分片能分到的数据部分最大是1480B(分片的长度必须是8B的整数倍,1480正好是8B的整数倍)。因此3980B的数据被分成了1480B+1480B+1020B。
综上:
1.三个分片的标识为777,也可以说888,总之三个分片的标识是一致的,以便后面重组;
2.三个分片的标志:DF都是0,表示可以分片;MF之后最后一个分片是0,第一、二个分片都是1;
3.三个分片的片偏移分别是:0;(1480/8 = )185;370;
至此,就完成了IP数据报的分片工作,发送方发到链路上,接收方再进行组装。
SDU + PCI = PDU
IP数据报的长度=首部+数据,这个数据应该是传输层的PDU;
整个IP数据报是网络层的PDU;
传到数链层时整个IP数据报是数链层的SDU;
然后再加上头部和尾部,就组成了MAC帧,也即数链层的PDU;
直接交付
;否则是间接交付,执行步骤3;注意:得到下一跳路由器的IP地址(相当于目的IP地址)之后并不是直接将该地址填入待发送的数据报,而是通过ARP协议
将该IP地址转化能MAC地址(目的MAC地址),将其放到MAC帧首部中,然后根据这个MAC地址找到下一跳路由器。
在不同的网络中传送时,MAC帧中的源地址和目的地址要发生变化;—两台主机不在同一个网络中,即要跨网络
但是网桥在转发帧时,不改变帧的源地址;—两台主机在同一个网络中,即不需要跨网络
补充:
下面这些先不看:
以上的步骤是我们**只在网络层讨论**分组转发的原理,那么就可以屏蔽掉下层的具体实现细节,但下面要讲到ARP协议时,就不是只在网络层去讨论该问题了,而是要细究下面的数链层是怎么提供服务帮助网络层完成分组转发的操作。下面分3段先大概说一下底层原理,后面还会再细讲:
1.上述过程中
2.发送一个数据,就要找到目的主机:不论目的主机与源主机在不在一个网络,都是下面这样的一个过程。(下面的4.3.4 中还会再提到)
+ 要发送的数据报首部 中有 **目的IP地址**;
+ 通过 ARP协议 得到 **目的MAC地址**;
+ 通过 MAC地址 找到 **目的主机**;
3.总之就是主机A要给主机B发送**IP数据报**时,会在这个数据报的首部找到目的IP地址,然后转换成MAC地址,然后把这个IP数据报封装成帧(有了MAC地址才能封装成帧),然后把MAC帧发送到目的主机,目的主机再把这个MAC帧的头尾去掉,就得到了主机B想要收的**IP数据报**。
IP地址:
分类的IP地址:
D类是多播地址。
主机号全0:表示网络本身,即一个网络;
主机号全1:表示本网络的广播地址,又称直接广播地址,对特定网络进行广播;
127.0.0.0:表示任意主机本身,用来环路自检;
0.0.0.0:表示本网上的本主机;(路由表中的默认路由?)
255.255.255.255:表示整个TCP/IP网络的广播地址,又称受限广播地址。实际使用时,因为路由器对广播域的隔离,此地址等效为本网络的广播地址。
A类网络 | B类网络 | C类网络 | |
---|---|---|---|
网络号位数 | 8位 | 16位 | 24位 |
主机号位数 | 24位 | 16位 | 8位 |
最大可用网络数 | 2的7次方-2 8-1=7; -2表示减去全0全1 |
2的14次方-1 16-2=14; -1表示减去全0 |
2的21次方-1 14-3=21; -1表示减去全0 |
第一个可用的网络号 | 1(8位) | 128.1(16位) | 192.0.1(24位) |
最后一个可用的网络号 | 126(8位) | 191.255(16位) | 223.255.255(24位) |
前8位 | 1-126 | 128-191 | 192-223 |
每个网络中的最大主机数 | 2的24次方-2 -2表示减去全0全1 |
2的16次方-2 -2表示减去全0全1 |
2的8次方-2 -2表示减去全0全1 |
网络地址转换是指通过将专用网络地址转换为公用地址,从而对外隐藏内部管理的IP地址。它使得整个专用网只需要一个全球IP地址就可以与因特网连通,所以NAT大大节省了IP地址的消耗。
私有IP:
私有IP地址只能用于LAN,并且允许私有IP地址被LAN重复使用,这有效地解决了IP地址不足的问题。
如下:
NAT工作原理:
使用NAT时需要在专用网连接因特网的路由器上安装NAT软件,NAT路由器至少有一个有效的外部全球地址。使用本地地址的主机和外界通信时,NAT路由器使用NAT转换表将本地地址转换成全球地址,或将全球地址转换成本地地址。NAT转换表中存放着{本地IP地址:端口}
到{全球IP地址:端口}
的映射,通过{IP地址:端口}
这样的映射方式,可让多个私有IP地址映射到同一个全球IP地址。
注意:普通的路由器进工作在网络层,而NAT路由器转发数据报时需要查看和转换传输层
的端口号。
两级IP:网络号 + 主机号
三级IP:网络号 + 子网号 + 主机号
子网划分:是指从主机号借用若干比特作为子网号的做法。
问:那么怎么知道跟主机号借了几位呢?
答:使用子网掩码来表达对原网络中主机号的借位情况。
子网掩码的概念:
子网掩码是一个与IP地址相对应的、长32位的二进制串,它由一串1和一串0组成。其中,1
对应的是IP地址中的网络号+子网号;而0
对应主机号。
子网掩码的使用:
计算机只需将IP地址和其对应的子网掩码逐位进行“与”操作,就可得出相应子网的网络地址。
例如:
某主机IP地址为192.168.5.56,子网掩码为255.255.255.0,则该主机所在子网的网络号为192.168.5.0;
某主机IP地址为192.168.5.56,子网掩码为255.255.192.0,则该主机所在子网的网络号为192.168.0.0。
注意:同属于一个子网的所有主机及路由器的相应端口,必须设置相同的子网掩码。
默认子网掩码:
现在的因特网标准规定:所有的网络都必须使用子网掩码。如过一个网络未划分子网,那么就采用默认子网掩码。
无分类编址,也叫无分类域间路由选择,是在变长子网掩码的基础上提出的一种消除传统A、B、C类网络划分,并且可以在软件的支持下实现超网构造的一种IP地址的划分方法。
IP地址的无分类两级编址:IP地址 = 网络前缀 + 主机号;
CIDR还是用“斜线记法”(或者叫CIDR记法):IP地址/网络前缀所占比特数;例如:128.14.32.5/20,它的掩码是20个连续的1和12个连续的0。
CIDR地址块:网络前缀相同的所有IP地址。
地址块的表示:最小地址 + 网络前缀的位数
超网:
概念:将多个子网聚合成一个较大的子网,叫做构成超网或者路由聚合。
实现方法:将网络前缀缩短。
最长前缀匹配(最佳匹配):
使用CIDR时,查找路由表,可能得到几个匹配结果,应选择网络前缀最长的路由,因为网络前缀越长,主机号就越短,地址块也就越小,路由就越具体。
IP地址是网络层使用的地址;IP地址封装在IP数据报的首部;
硬件地址(MAC地址)是数据链路层使用的地址;MAC地址放在MAC帧的首部;
通过数据封装,把IP数据报分组封装为MAC帧后,数链层看不见数据报分组中的IP地址。
由于路由器会隔离冲突域和广播域,因此IP网络中无法通过广播的方式用MAC地址来完成跨网络的寻址,所以只能通过IP地址来完成跨网络,经过多次路由转发到达目标网络后,在目标网络中通过MAC地址以广播的方式寻址找到目的主机。
虽然IP数据报首部中有源IP地址和目的IP地址,但路由器只根据目的IP地址的网络号进行路由选择;
在局域网的链路层,只能看见MAC帧。而通过路由器转发IP分组时,此IP分组在每个网络中都被路由器解封装和重新封装。因此IP数据报在被路由器转发时,其数据链路层封装所使用的MAC地址是不断变化的,这也决定了无法使用MAC地址跨网络通信。
下面这些先不看:
那么这两个地址具体是怎么用的呢?或者说是用来作什么?
答:**IP地址是用来跨网络用的,MAC地址是用来找目的主机的**。具体解释如下:即:
**IP地址是用来跨网络的,利用路由器经过多次路由转发找目的主机所在的`目的网络`;
找到目的网络之后,再用MAC地址来找到`目的主机`**。
地址解析协议(ARP,Address Resolution Protocol),用来实现IP地址到MAC地址的映射。每台主机都有一个ARP高速缓存
,用来存放本局域网上各主机和路由器的IP地址到MAC地址的映射表,成为ARP表。
工作原理:
主机A欲向本局域网上的某台主机B发送IP数据报,先在主机A的ARP高速缓存
中查看有无主机B的IP地址:
如果有,就可以查出对应的硬件地址,再将此硬件地址写入MAC帧,然后发送过去;
如果没有,就向局域网内的所有主机发送一个广播,内容是ARP请求分组
,主机B收到该ARP请求之后,会向主机A单播发送一个响应ARP分组
,内容包含主机B的IP地址和MAC地址的映射关系,主机A收到后将此映射写入ARP缓存,然后按查询到的硬件地址发送MAC帧;
下一次主机A再向主机B发送数据的时候就可以直接在ARP缓存中查找到主机B的地址。
总结:
1.ARP协议就是用来寻找某个主机IP地址对应的MAC地址,即是一个寻址的协议。
2.ARP用于解决同一个局域网上的主机或路由器的IP 地址和硬件地址的映射问题。如果所要找的主机和源主机不在同一个局域网上,那么就要通过 ARP找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由 下一个网络来做,尽管 ARP 请求分组是广播发送的,但 ARP响应分组是普通的单播,即从一个源地址发送到一个目的地址。
ARP工作在网络层;
普通路由器工作在网络层;
NAT路由器工作在传输层;
ARP的4种典型情况:
发送方 | 接收方 | 如何找到目的主机的硬件地址(MAC地址) |
---|---|---|
主机 | 本网络上的另一台主机 | 用ARP找到目的主机的MAC地址 |
主机 | 另一个网络上的一台主机 | 用ARP找到本网络上的一个路由器的MAC地址(默认网关), 剩余的工作由这个路由器完成 |
路由器 | 本网络上的另一台主机 | 用ARP找到目的主机的MAC地址 |
路由器 | 另一个网络上的一台主机 | 用ARP找到本网络上的另一个路由器的MAC地址, 剩余的工作由找到的这个路由器完成 |
看一个例子,现在主机1发一个IP数据报给主机5,需要三次ARP协议来得到目的MAC地址,即MAC5。
先是MAC1–>MAC6;然后是MAC7–>MAC8;最后是MAC9–>MAC5。
这个过程中,源IP地址(IP1)和目的IP地址(IP5)一直没变,这里就体现出IP地址是用来跨网络用的,因为路由器是通过查找路由表,才知道目的IP地址要一直往右找,即目的网络在右边,最后找到目的网络,然后在目的网络中找到目的主机的MAC地址,这样就得到了目的主机IP地址和MAC地址的映射。一共用了三次ARP。
总结:
主机A要给主机B发送**IP数据报**时,会在这个数据报的首部找到**目的IP地址**,然后经过一次(同一网络内)或者多次ARP(需要跨网络寻址),得到**目的主机的MAC地址**,然后把这个IP数据报**封装成帧**(`有了MAC地址才能封装成帧`),然后把MAC帧发送到目的主机,目的主机再把这个MAC帧的头尾去掉,就得到了主机B想要收的**IP数据报**。
DHCP,Dynamic Host Configuration Protocol,常用于给主机动态地分配IP地址,它提供了即插即用联网的机制,这种机制允许一台计算机加入新的网络和获取IP地址而不用手工参与。
DHCP是应用层协议,它是基于UDP的。
工作原理:
使用客户/服务器方式,需要IP地址的主机在启动时就向DHCP服务器广播发送发现报文,这是该主机就称为DHCP客户。本地网络上所有主机都能收到此广播报文,但只有DHCP服务器才回答此广播报文。DHCP服务器先在其数据库中查找该计算机的配置信息,若找到,则返回找到的信息;若找不到,则从服务器的IP地址池
中取一个地址分配给该计算机。DHCP服务器的回答报文称为提供报文。
概念:
为了提高IP数据报交付成功的机会,在网络层使用了网际控制报文协议(Internet Control Message Protocol,ICMP),让主机或路由器报告差错和异常情况。
组成:
ICMP报文作为IP数据报的数据,加上IP数据报的首部,组成IP数据报发送出去。
ICMP是IP层协议。
分类:
ICMP报文的种类有两种,即ICMP差错报告报文和ICMP询问报文。
1.ICMP差错报告报文:
用于(目标主机或到目标主机路径上的路由器)向源主机报告差错和异常情况,一共有以下5种情况:
不应发送ICMP差错报告报文的几种情况:
2.ICMP询问报文:
有4种类型:
回送请求和回答报文、时间戳请求和回答报文、掩码地址请求和回答报文、路由器询问和通告报文。前两中最常用。
应用:
1.分组网间探测PING:用来测试两台主机之间的连通性,使用了ICMP回送求情和回答报文;
2.Traceroute(UNIX中的名字,在Windows中是Tracert):用来跟踪分组经过的路由,使用了ICMP时间超过报文。
注意:
PING工作在应用层,它直接使用网络层的ICMP,而未使用传输层的TCP或UDP;Traceroute/Tracert工作在网络层。
解决IP地址耗尽问题的措施有三种:
IPv6把地址中的每4位用一个十六进制数表示,并用冒号分隔每16位,如4BF5:AA12:0216:FEBC:BA5F:039A:BE9A:2170
。
通常可以把IPv6写成更紧凑的形式,当16位域的开头有一些0时,可以采用一种缩写表示法,但在域中必须至少有一个数字。例如,4BF5:0000:0000:0000:BA5F:039A:000A:2176
可以缩写成4BF5:0:0:0:BA5F:39A:A:2176
。
当有相继的0值域时,还可以进一步缩写。这些域可以用双冒号(::
)缩写,但是双冒号表示法在一个地之中只能出现一次,上述地址还可以写成:4BF5::BA5F:39A:A:2176
IPv4向IPv6过渡有两种方法:
比较IPv4和IPv6:
比较项目 | IPv4 | IPv6 |
---|---|---|
地址长度 | 32位 = 4B | 128位 = 16B |
组成 | 首部(4B的整数倍) + 数据 | 首部(8B的整数倍)= 基本首部(40B) + 有效载荷(扩展首部/数据) |
是否可以分片 | 可在路由器和主机处分片 | 只能在主机处分片 |
表示 | 点分十进制 | 冒号十六进制 |
IP地址的获取 | 通过DHCP协议来获取 | 自动配置 |
IP数据报的三种传播方式:
人们需要一种组播机制:让源计算机一次发送的单个分组可以抵达用一个组地址标识的若干目的主机,并被它们正确接收。
使用组播的缘由是,有的应用程序要把一个分组发送给多个目的主机,不是让源主机给每个目的主机都发送一个单独的分组,而是让源主机把单个分组发送给一个组播地址,该组播地址标识了一组地址,网络把这个分组的副本投递给该组中的每台主机。
单播和组播的示意图:
作用:
组播提高了数据传送效率,减少了主干网出现拥塞的可能性。
对于发送者而言,数据只需发送一次就可发送到所有接收者,大大减轻了网络的负载和发送者的负担。
IP组播使用D类地址格式,地址范围是224.0.0.1 - 239.255.255.255。
每个D类IP地址可以标识一个组播组。
要使路由器知道组播组成员的信息,需要利用因特网组管理协议IGMP(Internet Group Management Protocol)。IGMP协议让路由器知道本局域网上是否由主机参加或退出了某个组播组。
组播路由选择协议是为了找出以源主机为根结点的组播转发数,构造树可以避免在路由器之间兜圈子。
移动IP技术是指移动节点以固定的网络IP地址实现跨越不同网段的漫游功能,并保证基于网络IP的网络权限在漫游过程中不发生任何改变。
移动结点:移动设备;
归属代理/本地代理:在归属网络中代表移动结点
外部代理/外地代理:在外部网络中代表移动结点
永久地址/主地址/归属地址:移动结点在归属网络(本地)中的原始地址;
本地代理和外地代理统称为移动代理。
二者是完全不同的概念:
路由器的功能:分组转发、路由选择;
路由选择算法 --> 路由表 --> 转发表
1.“尽最大努力交付”的意思是什么?
2.可以用交换机来替代路由器吗?
二者功能不同:
路由器可以连接两个或多个同构的或异构的网络,在网络之间转发IP数据报;
而交换机不能连接两个异构的网络,所以不能用交换机来替代路由器。
3.链路层广播和IP广播有何区别?
链路层广播是对某个局域网上的所有主机进行广播MAC帧;
IP广播是对一个网络上的所有主机进行广播IP数据报。
4.计算机A广播了一个ARP请求分组,希望找到计算机B的硬件地址,请问是由谁来单播发送ARP响应分组将计算机B的硬件地址告诉计算机A?一定是计算机B吗?
5.路由器实现了物理层、数据链路层、网路层,这句话的含义是什么?
路由器有能力对这三层协议的控制信息进行识别、分析以及转换;
路由器有能力对数据“包装
”这三层协议或者“拆开
”这三层协议;
路由器就有能力互联这三层协议不同的两个网络,即异构网络。
1.传输层和网络层:
端到端的通信
;主机和路由器:
2.复用和分用
注意和网络层的复用分用功能区分开:
3.传输层对收到的报文进行差错检测(检测首部和数据部分);
而网络层只检查IP数据报的首部,不检验数据部分是否出错。
4.提供两种不同的传输协议:面向连接的TCP和无连接的UDP;
而网路层无法同时实现两种协议,即在网络层要么只提供面向连接的服务,如虚电路;要么只提供无联机服务,如数据报。而不可能同时出现这两种方式。
传输层向高层用户屏蔽了低层网络核心的细节(如网络拓扑、路由协议等),它使应用进程看见的是好像在两个传输层实体之间有一条端到端的逻辑通信信道,这条逻辑通信信道对上层的表现却因传输层协议不同而有很大的差别。
当传输层采用面向连接的TCP
时,尽管下面的网络是不可靠的,但这种逻辑通信信道就相当于一条全双工的可靠信道;
但当传输层采用无连接的UDP
时,这种逻辑通信信道仍然是一条不可靠信道。
端口是传输层的服务访问点SAP(Service Access Point),它在传输层的作用类似于IP地址在网络层的作用或MAC地址在数据链路层的作用,只不过IP地址和MAC地址标识的是主机,而端口标识的是主机中的应用进程。
数链层的SAP是MAC地址;
网络层的SAP是IP地址;
传输层的SAP是端口。
软件端口:应用层的各种协议进程与传输实体进行层间交互的一种地址;
硬件端口:不同硬件设备进行交互的接口。
注意:传输层实用的端口是软件端口。
应用进程通过端口号进行标识,端口号长度为16位,可表示65536个不同的端口号。
端口号只在本地有意义,端口号只标记本计算机应用层中的各进程,不同计算机的相同端口号是没有联系的。
根据端口号范围可将端口分为两类:
(0~49151)
49152~65535
)一些常用的熟知端口号:
应用程序 | FTP | TELNET | SMTP | DNS | TFTP | HTTP | SNMP | |
熟知端口号 | 21 | 23 | 25 | 53 | 69 | 80 | 161 | |
使用的传输协议 | TCP | TCP | UDP | UDP | TCP | UDP |
FTP:File Transfer Protocol,文件传输
TELNET:远程登录
SMTP:Simple Message Transfer Protocol,电子邮件
DNS:Domain Name Service(域名服务,域名解析)
TFTP:Trivial File Transfer Protocol,小文件传输
HTTP:超文本传输
SNMP:Simple Network Management Protocol 简单网络管理
在网络中用IP地址来标识和区别不同的主机;通过端口号来标识和区分一台主机中的不同应用进程。
在网络中采用发送方和接收方的套接字(Socket)组合来识别端点。所谓套接字,实际上就是一个通信端点(端到端通信),即
套接字 =(主机IP地址,端口号)
它能唯一地标识网络中的一台主机和其上的一个应用(进程)。
在网络通信中,主机A发给主机B的报文段包含目的端口号和源端口号,源端口号是“返回地址”的一部分,即当B需要发回一个报文段给A时,B到A的报文段中的目的端口号便是A到B的报文段中的源端口号(完全的返回地址是A的IP地址和源端口号)。
面向连接服务:通信双方通信前必须先建立连接,在通信过程中,整个链接的情况一指被实时监控和管理,通信结束后释放连接;
无连接服务:通信是不用建立连接,整个信息传输过程是尽力而为。
两个传输层协议:TCP和UDP
TCP:
UDP:
传输层向高层用户屏蔽了低层网络核心的细节(如网络拓扑、路由协议等),它使应用进程看见的是好像在两个传输层实体之间有一条端到端的逻辑通信信道,这条逻辑通信信道对上层的表现却因传输层协议不同而有很大的差别。
当传输层采用面向连接的TCP
时,尽管下面的网络是不可靠的,但这种逻辑通信信道就相当于一条全双工的可靠信道;
但当传输层采用无连接的UDP
时,这种逻辑通信信道仍然是一条不可靠信道。
IP数据报在网络层经过路由的存储转发;
而UDP数据报在传输层的端到端的逻辑信道中传输,封装成IP数据报在网络层传输时,UDP数据包的信息对路由是不可见的。
TCP报文段在传输层抽象的逻辑信道中传输,对路由器不可见;
虚电路所经过的交换结点都必须保存虚电路状态信息。
在网络层若采用虚电路方式,则无法提供无连接服务,即网路层无法同时实现两种协议;
而传输层采用TCP不影响网络层提供无连接服务。
UDP只是做了传输协议能做的最少工作,它仅在IP的数据报服务之上增加了两个最基本的服务:复用和分用 以及 差错检测。所以说如果选了UDP,那么应用程序几乎直接与IP打交道。
那么既然TCP提供可靠的服务,而UDP不提供,那么TCP总是首选吗?
答:不是,因为有很多应用更适合用UDP。
UDP的优点:
1.UDP无需建立连接;
2.也就不用维护连接状态;
3.分组首部开销小,TCP首部20B,而UDP首部8B;
4.应用层可以更好地控制要发送的数据和发送时间。由于UDP没有拥塞控制,因此网络中的拥塞不会影响主机的发送效率;而且某些实时应用要求以稳定的速度发送,能容忍一些数据的丢失,但不允许有较大的时延,UDP正好满足这些要求。
UDP是面向报文的,给应用层交下来的报文前面添加首部后就向下交付给IP层,既不合并,也不拆分,一次交付一个完整的报文而不可以分段。
报文
是UDP数据报处理的最小单元(注意,因为不能分割报文,不能分段,所以最小单位是报文而不是报文段)。
UDP数据报包含两部分:UDP首部 和 用户数据。
UDP首部有8B,由4个字段组成:
当接收方的传输层从IP层收到UDP数据报时,就根据首部中的目的端口,把UDP数据报通过相应的端口上交给应用进程。
如果接收方UDP发现收到的报文中的目的端口不正确(即不存在对应于端口号的应用进程),那么就丢弃该报文,并由ICMP发送“端口不可达”的差错报文给发送方。
在计算校验和时,要在UDP数据报之前增加12B的伪首部。
伪首部并不是UDP的真正首部,只是在计算校验和时,临时添加在UDP数据报的前面,得到一个临时的UDP数据报。
校验和就是按照这个临时的UDP数据报计算的。
伪首部既不向下传送,也不向上递交,而仅仅是为了计算校验和。
这样的校验和既检查了UDP数据报,又对IP数据报的源IP地址和目的IP地址进行了校验。
UDP校验和的计算方法和IP数据报首部校验和的计算方法相似,都使用二进制反码运算求和再取反。
不同的是,IP数据报的校验和只校验IP数据报的首部;而UDP的校验和检查首部和数据部分。
这种简单的检错检验方法的检测能力并不强,但它的好处是简单、处理速度快。
1.面向连接;
2.提供可靠的交付服务;
3.提供全双工通信;
4.面向字节流;即TCP传送时是逐个字节传送的,所以TCP连接传送的数据流中的每个字节都编上一个序号
TCP传送的数据单元是报文段(UDP传送的数据单元是整个报文,不允许分段)。
一个TCP报文段分为TCP首部和TCP数据两部分;是传输层的PDU
整个TCP报文段作为网络层的SDU封装在IP数据报中;是网络层的SDU
TCP报文段再加上IP首部,就组成了IP数据报,IP数据报是网络层的PDU。
TCP报文段首部由固定部分和可变部分组成,其中固定部分是20B,可变部分是4B的整数倍,最多40B(是一些可选字段),因此IP首部最多60B;(下面会解释为什么首部最多是60B),首部最短为20B,即可变部分为0。
下面详细介绍TCP首部(20B)中各字段的含义:
SYN=1,ACK=0
时,表明这是一个连接请求报文,对方若同意建立连接,则在响应报文中使用SYN=1,ACK=1
。TCP连接的三个阶段:
TCP连接的建立采用客户/服务器方式:客户机主动发起建立连接的请求;服务器端被动等待连接。
SYN = 1,seq = x
SYN = 1,ACK = 1,seq = y,ack = x + 1
ACK = 1,seq = x + 1,ack = y + 1
SYN—同步位
seq—序号字段
ACK—确认位
ack—确认号字段
注意:服务器端的资源时在完成第二次握手时分配的,而客户端的资源是在完成第三次握手时分配的,这就使得服务器易于收到SYN洪泛攻击:
即客户端发完连接请求报文段之后就不管了,而服务器会响应这个连接请求,并分配资源,然后等待客户端的第三次握手,但客户端迟迟不响应,使得这个TCP链接处于半连接状态,就会让服务器为其分配的资源一直这么挂着,就导致服务器资源的浪费,这就是SYN洪泛攻击。
一条TCP连接的双方都能终止该连接,连接结束后,主机中的缓存和变量将被释放。
FIN = 1,seq u
ACK = 1,seq = v,ack = u + 1
FIN = 1,ACK = 1,seq = w, ack = u + 1
ACK = 1,seq = u + 1,ack = w + 1
补充:2 * MSL
,也叫TIME_WAIT,面试中会问到。
MSL,Maximum Segment Lifetime
,最长分节生命,是指任何IP数据报能够在因特网中存活的最长时间。
参考链接:居然很少有人质疑: 2MSL的TIME_WAIT时间真的足够保证旧连接上的所有包都消失吗?
参考链接:为什么TIME_WAIT状态是2MSL?(2个原因)
参考链接:聊聊tcp四次挥手中的TIME_WAIT状态存在的理由
TIME_WAIT状态有两个存在的理由:
1.可靠地实现TCP全双工连接的终止(因为最后一个ACK可能丢失);
2.为了保证本连接持续的时间所产生的所有分组都从网络中消失,也就是保证新建立一个TCP连接时,来自该连接老的重复分组都已经在网络中消失了(因为新老连接可能会使用相通的四元组)。
举个栗子:
在tcp四次挥手中, B发FIN包(第三次挥手)后, A马上回应最后的ACK, 此时, A的socket让然不能立即进入CLOSED的状态, 为什么呢? 其实这就是在问TIME_WAIT状态存在的理由。
2MSL
比较合适, 我个人认为, 把TIME_WAIT定义为2MSL只是一个通用的经验方法而已, 无法从理论上百分之百论证。FIN—终止位
seq—序号字段
ACK—确认位
ack—确认号字段
TCP可靠传输的机制:校验、序号、确认、重传。
(1) 超时
TCP 每发送一个报文段,就对这个报文段设置一次计时器。计时器设置的重传时间到期但还未收到确认时,就要重传这一报文段。
为了计算超时计时器的重传时间,TCP 采用一种自适应算法,它记录一个报文段发出的时间,以及收到相应确认的时间,这两个时间之差称为报文段的往返时间(Round-Tip Time, RTT)。 TCP 保留了RTT 的一个加权平均往返时间 RTTs,它会随新测量 RTT 样本值的变化而变化。显然超时计时器设置的超时重传时间(Retransmission Time-Out,RTO)应略大于RTTs,但也不能大太多,否则当报文段丢失时,TCP不能很快重传,导致数据传输时延大。
(2) 冗余 ACK(冗余确认)
超时触发重传存在的一个问题是超时周期往往太长。所幸的是,发送方通常可在超时事件发生之前通过注意所谓的冗余 ACK 来较好地检测丢包情况。
冗余 ACK 就是再次确认某个报文段的ACK,而发送方先前已经收到过该报文段的确认。
例如,发送方 A 发送了序号为 1、2、3、4、5的TCP 报文段,其中2号报文段在链路中丢失,它无法到达接收方 B。因此3、4、5 号报文段对于B来说就成了失序报文段,于是B就发送了3个对1 号报文段的冗余 ACK,表示自己期望接收2 号报文段。
TCP 规定当发送方收到对同一个报文段的3个冗余 ACK 时,就可以认为跟在这个被确认报文段之后的报文段已经丢失。
就前面的例子而言,当A 收到对于 1号报文段的3个冗余 ACK时,它可以认为2号报文段已经丢失。这时发送方 A可以立即对2号报文执行重传,这种技术通常称为快速重传(快重传—下面拥塞控制算法中也有用到)。
流量控制是一个速度匹配服务,匹配发送方的发送速率与接收方的读取速率。
TCP提供一种基于滑动窗口协议的流量控制机制。
在通信过程中,接收方根据自己接收缓存的大小,动态地调整接收窗口rwnd;—流量控制
发送方根据其对当前网络拥塞程度的估计而确定的的窗口值,称为拥塞窗口cwnd;—拥塞控制
发送方的发送窗口取rwnd
和cwnd
的min
。
当rwnd=0时,表示接收方暂时不再接收发送方的数据,而是先处理自己缓存里的数据给上层。那么要等多久才可以再次发送呢?
答:TCP为每一个连接设有一个持续计时器,当rwnd=0时就启动它,时间到了发送方就向接收方发一个探测报文段,接收方会通过设置确认报文段首部的窗口字段值将此时的rwnd接收窗口值告诉发送方。如果rwnd不为0,那么发送方就可以继续发送数据;如果rwnd依然为0,就再次启动持续计时器,再等。
传输层定义端到端用户之间的流量控制;
数链层定义两个中间的相邻结点的流量控制。
数链层的滑动窗口协议的窗口大小不能动态变化;(3.4 流量控制 表格下面的一句话)
传输层的滑动窗口协议的窗口大小可以动态变化。
拥塞控制是指防止过多的数据注入网络,保证网络中的路由器或链路不致过载。
拥塞控制是全局性问题,发生拥塞时不知道是哪个或哪几个发送方的数据发的太快才导致的拥塞;
而流量控制是点对点的通信量的控制,即接收方控制发送方,抑制发送方发送数据的速率,以便接收方能来得及接收。
例如,某个链路的传输速率为 10Gb/s,某巨型机向一台 PC 以 1Gb/s 的速率传送文件,显然网络的带宽是足够大的,不存在拥塞问题,但如此高的发送速率将导致 PC 可能来不及接收,因此必须进行流量控制。
但若有100万合PC在此链路上以1Mb/s 的速率传送文件,则现在的问题就变为网络的负载是否超过了现有网络所能承受的范围,这就是拥塞问题。
在流量控制中,发送方发送数据的速度由接收方决定;–>接收窗口rwnd
而在拥塞控制中,发送方发送数据的速度由发送方自己通过检测网络状况来决定。–>拥塞窗口cwnd
发送方发送窗口的实际大小有流量控制和拥塞控制共同决定,当题目中同时出现接收窗口rwnd和拥塞窗口cwnd时,二者的较小值才是发送方发送窗口的实际大小。
慢开始、拥塞避免、快重传、快恢复。
1.慢开始和拥塞避免
注意:
2.快重传和快恢复
快重传和快恢复算法是对慢开始和拥塞避免算法的改进。
3.注意:这里说的cwnd = 1 * MSS指的是1个最大报文段长度,而不是1,因为如果MSS是2KB,那么慢开始算法的第一个轮次中拥塞窗口cwnd就是2KB,虽然说cwnd=1,但它的单位是2KB。
4.一句话总结四种拥塞控制算法:
慢开始:当cwnd < ssthresh
时,每收到一个报文段的确认cwnd加1,没经过一个传输轮次(即往返时延RTT),cwnd就会加倍;—指数增长
拥塞避免:当cwnd > ssthresh
时,每经过一个往返时延(传输轮次)cwnd加1;—加法增加/线性增长
拥塞处理(超时事件发生):ssthresh = cwnd / 2,cwnd = 1 * MSS
,执行慢开始算法;—乘法减少
快重传:当收到连续的3个重复的ACK,直接重传对方期待的报文;
快恢复:当收到连续的三个冗余ACK,令ssthresh = cwnd / 2,cwnd = ssthresh
,执行拥塞避免算法。
答:
首先解释MSS是什么?
MSS(Maxitum Segment Size)最大分段大小的缩写,是TCP协议里面的一个概念(UDP不能分段,所以MSS和UDP协议没关系)。
所在层次 | PDU | PCI | SDU | 备注 |
---|---|---|---|---|
应用层 | 数据 | |||
传输层 | TCP报文段 UDP报文 |
TCP首部(20B )UDP首部( 8B ) |
数据 | MSS 用来限制传输层的SDU ,给TCP报文段分段UDP不会分段 |
网络层 | IP数据报 | IP首部(20B ) |
数据 | MTU 用来限制网络层的PDU ,给IP数据报分片 |
数链层 | 帧 | 帧头帧尾 | 数据 |
如果选择较小的MSS值,网络的利用率就很低。假设一个TCP报文段中的数据只有1B,那么在 IP层传输的数据报的开销至少有40B,网络利用率就不会超过1/41,传输 n 字节的数据利用率就是 n/n+40,显然 TCP 报文段传输的数据如果越大,网络利用率就越高。到了数据链路层封装成帧还要加上一些开销,网络的利用率进一步降低。
但反过来,如果TCP报文段很长,那么在IP层传输时有可能要分解成多个短的数据报片(即IP数据报分片),在接收端还要把收到的个数据报分片装配成原来的TCP报文段,传输有差错时,还要进行重传,这些都会使开销增大。
总结:
1.MSS太小会导致网络利用率很低;
2.MSS太大到了网络差需要分片,会有很大的开销;
3.所以MSS应尽量大一些,只要在IP层传输时不要再分片就行,即MSS <= MTU - 40,最大不能超过MTU - 40的长度,否则在IP层就要分片。这个40指的是TCP首部的20B和IP首部的20B。
拿以太网来举例,我们希望IP数据报的大小不超过1500字节。除去IP数据报的首部20字节,也就是希望TCP报文段不超过1480字节。再减去TCP报文段首部20字节,也就是TCP携带的数据不超过1460字节,也即MSS最大不超过1460B。
补充:
TCP报文段的数据部分,至少要加上40B的首部(TCP首部至少20B和IP首部至少20B)才能组装成一个IP数据报。
几个参考链接:
1.TCP层的分段和IP层的分片之间的关系 & MTU和MSS之间的关系
2.TCP协议(MSS)
3.为什么IP层要分片而TCP层要分段? 这些和MTU/MSS又有什么关系?
所在层 | UDP | TCP | 依据 |
---|---|---|---|
传输层 | UDP不分段 | TCP分段 | 分段的依据是MSS(<=1460B) |
网络层 | 在IP层分片 | 在IP不分片 | 分片的依据是MTU(<=1500B) |
解释:MSS和MTU差的40B分别是TCP首部的20B和IP首部的20B。
简而言之:
1.IP分片产生的原因是网络层的MTU;TCP分段产生原因是MSS;
2.IP分片由网络层
完成,也在网络层进行重组;
TCP分段是在传输层
完成,并在传输层进行重组; //透明性
3.对于以太网,MSS为1460B
,MTU为1500B
。
4.采用TCP协议进行数据传输,是不会造成IP分片的,因为TCP使用了MSS来避免分片!若数据过大,超过了MSS,则在传输层会对TCP包进行分段,自然到了IP层就不用分片。
5.IP层的分片是针对传输层中使用UDP协议来说的,如果使用UDP发送数据,UDP并不知道如何分段,那么到了IP层就需要进行分片,分片的原则根据MTU,那么分UDP最大的数据负载就是1500-8=1492B
。
最后用两句话总结:
TCP协议在传输层用MSS分段,到了网络层就不用分片,因为MSS <= MTU - 40;
UDP协议在传输层不会分段,每次交付一整个报文,到了网络层如果超过MTU,就分片。
做两个实验:
实验1:
对于TCP来说,它是尽量避免分片的。假设我们这里要发送给TCP层的数据大小为2748个字节,这个大小是明显大于链路层的发送数据的大小的,在这个情况下我们来看,对于来自TCP层的数据,IP会不会进行分片。
应用层的2748个字节在TCP层就进行了分段,分层了两个TCP段,一个1460字节,一个1288字节。那么到IP层的时候,自然就不会在进行分片了。
在这两个TCP分段中,IP首部的标志字段的DF位(Don ’ t Fragment) 被置1,用于告诉IP层不要对该数据进行分片。
实验2:
我们发送给UDP层的数据包的大小为1600字节,在UDP层,长度为1608字节,这里的8个字节是UDP的头部字段的长度, 到了IP层,我们可以清楚的看到IP对UDP数据包进行了分片,一个大小为1480字节,一个为128字节。
2 * MSL
的时间呢?答:不采用“三次握手”释放连接是为了防止出现“已失效的连接请求报文段”。A在发送最后一个确认报文段后,再经过2 * MSL
可保证本连接持续的时间内所产生的所有报文段从网络中消失。造成错误的情形与下文第6点不采用“两次握手”建立连接所述的情形相同。
发送最后一次握手报文后要等待2 * MSL
的时间是保证A发送的最后一个确认报文段能够到达B。如果A不等待2 * MSL
,若A返回的最后确认报文段丢失,则B不能进入正常关闭状态,而A此时已经关闭,也不能再重传。
注意:服务器结束TCP连接的时间要比客户机早一些,因为客户机最后要等待2 * MSL
后才可以进入CLOSED状态。
由于对于一个重传报文的确认来说,很难分辨它是原报文的确认还是重传报文的确认,使用修正的Karn算法作为规则:在计算平均往返时间RTT时,只要报文段重传了,就不采用其往返时间样本,且报文段每重传一次,就把RTO增大一些。
TCP使用累积确认,正确收到但失序的报文并不会丢弃,而是缓存起来,并且发送冗余ACK指明期望收到的下一个报文段,这是TCP和GBN的显著区别。
TCP中提供一个SACK(Selective ACK)选项,即选择确认选项。使用选择确认选项时,TCP就和SR非常相似。
因此,TCP的差错恢复机制可视为GBN和RS协议的混合体。
可以这样考虑这个问题,超时事件发生和收到3个冗余ACK,哪个意味着网络拥塞程度更严重?
收到3个冗余ACK时,网络虽然拥塞,但至少还有ACK报文段能被正确交付。而当超时事件发生时,说明网络可能已经拥塞的连ACK报文段都传输不了,发送方只能等待超时后重传数据。
因此超时事件发生时,网络拥塞更严重,那么发送方就应该最大限度地抑制数据发送量,所以cwnd置为1;收到3个冗余ACK时,网络拥塞不是很严重,发生方稍微抑制一下发送的数量即可,所以cwnd减半。
主要是为了防止两次握手情况下已失效的连接请求报文段突然又传送到服务器而产生错误。例如下面这种情况:
客户 A 向服务器 B发出TCP 连接请求,第一个连接请求报文在网络的某个结点长时间滞留,A 超时后认为报文丢失,于是再重传一次连接请求,B收到后建立连接。数据传输完毕后双方断开连接。而此时,前一个滞留在网络中的连接请求到达服务器B,而B认为 A 又发来连接请求。
此时若使用 “三次握手”,则B向A返回确认报文段,由于是一个失效的请求,因此 A 不予理睬,建立连接失败。
若采用的是“两次握手”,则这种情况下 B认为传输连接已经建立,并一直等待A 传输数据,而A此时并无连接请求,因此不予理睬,这样就造成了B的资源白白浪费。
往返时间 RTT 仅对传输层TCP 协议才很重要,因为TCP 要根据 RTT 的值来设置超时计时器的超时时间。
UDP 没有确认和重传机制,因此 RTT 对 UDP 没有什么意义。
因此,不能笼统地说“往返时间 RTT 对传输层来说很重要”,因为只有TCP 才需要计算RTT而UDP不需要计算RTT。
假设主机A和主机B频繁地建立连接,传送一些TCP报文段后,再释放连接,然后又不断地建立新的连接、传送报文段和释放连接;
如果每次建立连接时,主机A都选择相同的、固定的初始序号,如选择1;
如果主机A发出的某些TCP报文段在网络中会滞留较长时间,导致主机A超时重传这些TCP报文段;
假定有一些在网络中滞留时间较长的TCP报文段最终终于到达主机B,但这时传送该报文段的那个连接早已释放,而此时的TCP连接是一条新的TCP连接;
这样工作在新的TVP连接的主机B就有可能会接受在旧的TCP连接传送的、已经没有意义的、过时的TCP报文段(因为这个TCP报文段的序号很可能正好处在当前新连接所有的序号范围之内),结果产生错误。
因此,必须使得迟到的TCP报文段的序号不处在新连接所用的序号范围之中。这样,TCP在建立新的连接时所选择初始序号一定要和前面的一些连接所用过的序号不同。所以不同的TCP不能使用相同的初始序号。
答:不是多余的。TCP的“可靠交付”功能在互联网中起着至关重要的作用。至少在以下的情况下,TCP 的“可靠交付”功能是必不可少的:
以上的问题都必须依靠TCP的“可靠交付”功能才能保证在目的主机的目的进程中接收到正确的报文。
服务器:提供服务的设备
客户机:请求服务的主机
常见的使用客户/服务器模型的应用包括Web、文件传输协议(FTP)、远程登录和电子邮件等。
注意:在C/S模型中,服务器性能的好坏决定了整个系统的性能,当大量用户请求服务时,服务器就必然成为系统的瓶颈。
P2P(Peer-to-Peer)模型,也叫对等模型。
域名-->IP地址
域名和ip是**多对多**的关系:
一个域名下也可以有多个ip, **负载均衡**就可以这么搞。
一个ip可以被多个域名同时索引。
一个域名可以对多个ip地址,一般为了服务器的**负载均衡**会这样做。
一个ip可以对多个域名,这样多个域名就可以访问**同一个主页**。
一个域名可以指向多个ip,用来做负载均衡嘛。
一个ip可以被多个域名指向,就是大家所购买的**虚拟主机**嘛。
域名系统(Domain Name System,DNS)是因特网使用的命名系统,用来把便于人们记忆的具有特定含义的主机名/域名(例如www.cskaoyan.com
)转换为便于机器处理的IP地址。相对于IP地址,人们更喜欢使用具有特定含义的字符串来表示因特网上的计算机。
DNS系统采用客户/服务器模型
,其协议运行在UDP
之上,使用53号端口
。
IP地址和域名之间的解析过程,把域名转换成IP地址,域名是字符形式的IP地址。
**域名是字符形式的IP地址**。
DNS分为3部分:域名(层次域名空间)、域名服务器、解析器。
域名到IP地址的解析过程是在域名服务区上进行的。
每个域名服务区不但能够进行一些域名到IP地址的解析,而且还必须具有连向其它域名服务器的信息:当自己不能进行域名到IP地址的转换时,能够知道到什么地方去找其他域名服务器。
主要有4种类型的域名服务器:
IP地址
,而是告诉本地域名服务器下一步应当找哪个顶级域名服务器进行查询。概念:
域名解析是指把域名映射成为IP地址或者把IP地址映射成域名的过程。前者称为前向解析,后者成为反向解析。
过程:
当客户端需要域名解析时,通过本机的DNS客户端构造一个DNS请求报文以UDP数据报方式发往本地域名服务器。
方式:
域名解析有两种:递归查询 和 递归与迭代相结合的查询。
由于递归查询方式给根域名服务造成的负载过大,所以在实际中几乎不用。具体过程如下:(见下图中的(a))
(主机把域名解析的任务全权交给本地域名服务器,本地域名服务器又把域名解析的任务全权交给根域名服务器,...
)
如果本地主机所询问的本地域名服务器不知道被查询域名的IP地址,那么本地域名服务器就以DNS客户的身份,向根域名服务器发出查询请求报文,即替该主机查询,而不是让主机自己进行下一步的查询。
在这种情况下,本地域名服务器只需向根域名服务器查询一次,后面的几次查询都是递归地在其他几个域名服务器之间进行的(步骤③~⑥);
在步骤⑦中,本地域名从根域名服务器得到了所需的IP地址;
最后在步骤⑧中,本地域名服务器把查询结果告诉主机。
常用递归与迭代相结合的查询方式,该方式分为两部分:
主机向本地域名服务器的查询采用的是递归查询
(主机把域名解析的任务全权交给本地域名服务器
)
如果本地主机所询问的本地域名服务器不知道被查询域名的IP地址,那么本地域名服务器就以DNS客户的身份,向根域名服务器发出查询请求报文,即替该主机查询,而不是让主机自己进行下一步的查询。
本地域名服务器向根域名服务器的查询采用迭代查询
(本地域名服务器从上到下挨个去询问所要解析的域名的IP地址
)
当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器:“你下一步应当向哪个顶级域名服务器进行查询",然后让本地域名服务器向这个顶级域名服务器进行后续的查询;
同样,项级域名服务器收到查询报文后要么给出所要查询的IP 地址,要么告诉本地城名服务器下一步应向哪个权限域名服务器查询;
最后,知道所要解析的域名的IP地址后,把这个结果返回给发起查询的主机。
假定某客户机想获知域名为 y.abc.com 主机的 IP地址,域名解析的过程(共使用 8个 UDP报文)如下:
.com
域,将对应的顶级域名服务器 dns.com
的IP 地址返回给本地域名服务器;dns.com
发出解析请求报文;abc.com
域,因此将对应的授权域名服务器dns.abc.com
的IP 地址返回给本地域名服务器;dns.abc.com
发起解析请求报文;dns.abc.com
收到请求后,将查询结果返回给本地域名服务器;为了提高DNS的查询效率,并减少因特网上的DNS查询报文数量,在域名服务器中广泛地使用了高速缓存。当一个DNS服务器收到DNS查询结果时,它能将该DNS信息缓存在高速缓存中。这样,当另一个相同的域名查询到达该DNS服务器时,该服务器就能够直接提供所要求的IP地址,而不需要再去向其他DNS服务器询问。
因为主机名和IP地址之间的映射不是永久的,所以DNS服务器将在一段时间后丢弃高速缓存中的信息。
本地域名服务器和主机中都会有这个高速缓存。
文件传输协议(File Transfer Protocol,FTP),提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。它屏蔽了各计算机系统的细节,所以适合在异构网络中的任意计算机之间传送文件。
FTP采用客户/服务器
的工作方式,端口号是21
,采用TCP
可靠的传输服务。
一个FTP服务器进程可同时为客户进程提供服务。
FTP的服务器进程由两大部分组成:
工作步骤如下:
21
(控制端口),使客户进程能够连接上;FTP在工作中是使用两个并行的TCP连接:一个是控制连接(端口号21
),一个是数据连接(端口号20
)。使用两个不同的端口号可使协议更加简单和更容易实现。
控制进程和数据传送进程都属于从属进程,不是主进程。
服务器监听 21号
端口,等待客户连接,建立在这个端口上的连接称为控制连接,控制连接用来传输控制信息(如连接请求、传送请求等)。
FTP客户发出的传送请求通过控制连接发送给服务器端的控制进程,但控制连接并不用来传送文件;
在传输文件时还可以使用控制连接 (如客户在传输中途发一个中止传输的命令);
因此控制连接在整个会话期间一直保持打开状态。
服务器端的控制进程在接收到FTP客户发来的文件传输请求后,就创建 “数据传送进程”和“数据连接〞。
数据连接用来连接客戶端和服务器端的数据传送进程;
数据传送进程实际完成文件的传送,在传送完毕后关闭 “数据传送连接〞并结束运行。
因为 FTP 使用了一个分离的控制连接,所以也称 FTP 的控制信息是带外 (Out-of-band)传送的。使用 FTP 时,若要修改服务器上的文件,则需要先特此文件传送到本地主机,然后再将修改后的文件副本传送到原服务器。网络文件系统(NFS)允许进程打开一个远程文件,并在该文件的某个特定位置开始读写数据。这样,NFS 可使用户复制一个大文件中的一个很小的片段,而不需要复制整个大文件。
电子邮件是一种异步通信方式,通信是不需要双方同时在场。电子邮件把邮件发送到收件人使用的邮件服务器,并放在其中的收件人邮箱中,收件人可以随时上网到自己使用的邮件服务器进行读取。
一个电子邮件系统具有三个最主要的组成构件:
注意:
SMTP采用的是“推”(Push
)的通信方式,即在上面的①和②中,SMTP客户端主动将邮件“推”送到SMTP服务器端;
而POP3采用的是“拉”(Pull
)的通信方式,即用户读取邮件时,用户代理向邮件服务器发出请求,“拉”取用户邮箱中的邮件。
这个好像有点类似于GitHub的上传和下载,linux安装git并配置GitHub账号,本地与GitHub之间进行文件的上传(push)、下载(克隆)、更新中
SMTP
把邮件传送给发送POP3
(或IMAP)协议将自己的邮件从接收方简单邮件传输协议(Simple Message Transfer Protocol,SMTP)是一种提供可靠且有效的电子邮件传输的协议。使用客户/服务器
方式,用的是TCP连接
,端口号是25
。
SMTP通信有以下三个阶段:
连接建立:
发件人的邮件发送到发送方邮件服务器的邮件缓存中后,SMTP客户就每隔一定时间对邮件缓存扫描一次,如果发现有邮件,就使用SMTP的熟知端口号(25)与接收方邮件服务器的SMTP服务器建立TCP连接。连接建立后,接收方SMTP服务器发出220 Service ready(服务就绪)
,然后SMTP客户向SMTP服务器发送HELLo命令,附上发送方的主机名。
注意:SMTP不使用中间邮件服务器,TCP连接总是在发送方和接收方这两个邮件服务器之间直接建立,而不管它们相隔多远。接收方的邮件服务器因故障不能建立连接时,发送方的邮件服务器只能等打一段时间后再次尝试连接。
邮件传送
连接建立后,就可以开始传送邮件。…(书的P265)
连接释放
邮件发送完毕后,SMTP客户发送QUIT命令,SMTP服务器返回的信息是221(服务关闭)
,表示SMTP同意释放TCP连接。
邮件传送的全部过程就此结束。
SMTP协议的缺点:
SMTP协议只能传送一定长度的ASCII码,不能传送可执行文件或其他二进制对象,也不能传送其他非英语国家的文字(如中文、俄文),因此就提出了多用途网络邮件扩充(Multipurpose Internet Mail Extensions, MIME)。
MIME:把非ASCII码转换成7位ASCII码再传输,使得传输内容更加多样化。
邮局协议(Post Office Protocol,POP)是一个非常简单但功能有限的邮件读取协议,现在使用的是它的第3个版本POP3
。使用客户/服务器
方式,用的是TCP连接
,端口号是110
。
接收方的用户代理上必须运行POP客户程序;
接收方的邮件服务器上则运行POP服务器程序。
工作方式:
另一个邮件接收协议是因特网报文存取协议(IMAP),用户可以看到邮箱的首部,若用户想打开某个邮件,邮件才上传到用户的计算机上。
HTTP SMTP HTTP
发送方------>发送方邮件服务器------>接收方邮件服务器------>接收方
万维网(World Wide Web,WWW)是一个大规模的信息储藏所,是无数个网站和网页的集合,是一个资源空间,包括文字、视频、音频…
统一资源定位符URL
:唯一标识万维网中的各种文档,并且每个文档具有唯一的标识符URL;
<协议>://<主机>:<端口>/<路径>
,其中http、ftp
等;超文本传输协议HTTP
:一个应用层协议,端口号是80
,
超文本标记语言HTML
:一种文档结构的标记语言,
万维网以客户/服务器方式工作:
工作流程如下:
URL
)与Web服务器建立连接,并发送浏览请求;URL
转换为文件路径
,并返回信息给Web浏览器;HTTP定义了浏览器(万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。
在浏览器和服务器之间的请求与响应的交互,必须遵循规定的格式和规则,这些格式和规则就是HTTP
。因此HTTP有两类报文:请求报文和响应报文。
请求报文:Web客户端向Web服务器发送的请求;
响应报文:Web服务器对Web客户端的请求的回答。
用户获取资源的具体过程:
HTTP的特点:
HTTP 是无状态的,即无记忆的,同一个客户第二次访问同一个服务器上的页面时,服务器并不记得曾经访问过的这个客户。
在实际应用中,通常使用Cookie + 数据库的方式来跟踪用户的活动(如记录用户在淘宝上最近浏览的商品)。Cookie是一个存储在用户主机中的文本文件,里面含有一串“识别码”,如“123456”,用于Web服务识别用户。Web服务器根据Cookie就能从数据库中查询到该用户的活动记录,进而提供个性化服务,如根据用户之前浏览过的商品向其推荐新产品等。
计算机网络的通信面临两大类威胁,即被动攻击和主动攻击。
被动攻击:
主动攻击:
恶意程序包括:
信息传输过程中可能存在的4种攻击类型:
概念:加密和解密都使用相同的密钥(DES),即加密方和解秘方必须使用同一种加密算法和相同的密钥。
对称加密技术存在通信双方之间需要确保密钥安全交换的问题,即密钥传递的安全性。
概念:对信息的加密和解密使用不同的密钥,
(用来加密的秘钥可以公开,即公钥;用来解密的秘钥是需要保密的,即私钥)
原理:
当发送端希望用非对称加密的方法,要将明文加密后发送给接收端时,它首先需要得到接收端的密钥产生器所产生的一对密钥中的公钥,发送端用公钥加密后的密文可以通过网络发送到接收端,接收端使用一对密钥中的私钥去解密,将密文还原成明文。
特点:
非对称加密技术不需要共享通用的密钥,用于解密的私钥不需要发往任何地方,缺点是加密算法复杂,加密与解密的速度比较慢。
使用两层加密体制:
在内层利用了对称加密技术,每次传送信息都可以重新生成新的密钥,保证信息的安全性;
在外层利用非对称加密技术,加密(动词)(在内层传送信息时生成的)对称密钥,保证了密钥传递的安全性,实现身份认证。
数字签名:类似日常生活中的亲笔签名,数字签名将信息发送人的身份与信息传送结合起来,可以保证信息在传输过程中的完整性,并实现对发送者的身份认证,以防止信息发送者抵赖行为的发生。
数字签名的工作原理:
(1)发送方使用单向散列函数对要发送的信息进行运算,生成信息摘要;
(2)发送方使用自己的私钥,利用非对称加密算法,对生成的信息摘要进行数字签名;
(3)发送方通过网络将信息本身和已进行数字签名的信息摘要发送给接收方;
(4)接收方使用与发送方相同的单向散列函数,对收到的信息进行运算,重新生成信息摘要;
(5)接收方使用发送方的公钥对接收的信息摘要解密;
(6)将解密的信息摘要与重新生成的信息摘要进行比较,以判断信息在发送过程中是否被篡改过。
单向散列函数
明文 -----------------> 摘要(唯一对应,简化信息长度)
MD5
概念:在网络之间执行控制策略的系统,包括硬件和软件;
目的:保护内部网络资源不被外部非授权用户使用;防止内部遭到外部非法用户的攻击。
两个基本部件:包过滤路由器(packet filtering router)和应用级网关(application gateway)。
参考链接:点这里
HTTPS,即 HTTP + Secure
本文简述了 HTTPS 通讯过程的基本原理,涉及到了对称加密、非对称加密、信息摘要、签名、密钥交换等技术基础,以及发行机构、数字证书等概念。
Hz
, 学过"信号与系统"的人都知道。bps
), 其实叫比特率更合适。很多人装了1M的宽带网,结果网速有时还不到100K,为此在网上大骂上当受骗。我来说一下,宽带的学名叫“带宽”,说带宽1M
实际上是说比特率为1000000b/s
,那么对应的速度就是1000000/(1024*8)KB/s=122KB/s
, 也就是说,从理论上来讲,1M的带宽对应的速度极限为122K
. (请注意,通信中的K和计算机中的K不一样)。 但是, 但是, 但是, 在这里, 业界普遍把1M的带宽中的M认为是1024*1024, 真的乱得有点让人哭笑不得, 按照这样计算, 1M带宽就等于128KB/s了, 和122KB/s的差别不大。
即1M的带宽指的是1000000 bit/s,100K指的是100 KB/s = 100 * 1024 * 8 bit/s = 819200 bit/s,和1百万差点,但不至于差的太多。