目录
常见面试题 1: TCP 建立连接为什么要三次握手而不是两次?
点对点协议(Point-to-Point Protocol)
常用的协议:
概念
计算机网络是一个互联、自治的计算机集合
计算机网络的功能:数据共享
kb KB
最高频率与最低频率之差
吞吐量:单位时间内通过某个网络(通道或接口)的数据量
发送时延是:发生在主机上,发送到信道上所需要的时间。
传播时延:从一个主机传播到另外一个主机的时间,单位m/s
排队时延和处理时延:可以想象成机场安检的过程,发生在路由器上。
协议:对等实体之间数据交换的规则
接口:上层使用下层服务的入口(把酒装箱的服务)
OSI 7层参考模型
物数网传会表应
TCP/IP参考模型:网网传应
常见面试题 1: TCP 建立连接为什么要三次握手而不是两次?
答:网上大多数资料对这个问题的回答只有简单的一句:防止已过期的连接请求报文突然又传送到服务器,因而产生错误,这既不够全面也不够具体。下面给出比较详细而全面的回答:
- 防止已过期的连接请求报文突然又传送到服务器,因而产生错误
在双方两次握手即可建立连接的情况下,假设客户端发送 A 报文段请求建立连接,由于网络原因造成 A 暂时无法到达服务器,服务器接收不到请求报文段就不会返回确认报文段,客户端在长时间得不到应答的情况下重新发送请求报文段 B,这次 B 顺利到达服务器,服务器随即返回确认报文并进入 ESTABLISHED 状态,客户端在收到 确认报文后也进入 ESTABLISHED 状态,双方建立连接并传输数据,之后正常断开连接。此时姗姗来迟的 A 报文段才到达服务器,服务器随即返回确认报文并进入 ESTABLISHED 状态,但是已经进入 CLOSED 状态的客户端无法再接受确认报文段,更无法进入 ESTABLISHED 状态,这将导致服务器长时间单方面等待,造成资源浪费。
- 三次握手才能让双方均确认自己和对方的发送和接收能力都正常
第一次握手:客户端只是发送处请求报文段,什么都无法确认,而服务器可以确认自己的接收能力和对方的发送能力正常;
第二次握手:客户端可以确认自己发送能力和接收能力正常,对方发送能力和接收能力正常;
第三次握手:服务器可以确认自己发送能力和接收能力正常,对方发送能力和接收能力正常;
可见三次握手才能让双方都确认自己和对方的发送和接收能力全部正常,这样就可以愉快地进行通信了。
数据通信:从信源输入信息,转为数字信号,通过调制调解器将数字信号转为模拟信号,广域网,左右对称。
奈氏准则与香奈定理
码间串扰:信号频率过快,导致码元间界限不明显,无法区分信号,奈氏准则可以解决。
例题:
如何选择“Nice”和“香浓”
距离近使用基带信号(发出去了就直接表达出来,比如声波),距离远使用宽带信号(衰减到了很低的频率,通过调制到高的信号)
编码与调制
一.数字数据编码为数字信号
1.非归零编码【NRZ】
高1低0,最普通的编码方式
编码容易实现,但没有检错功能,且无法判断一个码元的开始和结束,以至于双方难以保持同步
2.曼彻斯特编码:
将一个码元分成两个相等的间隔,前一个间隔为低电平后一个间隔为高电平表示码元1;码元0则正好相反。也可以采用相反的规定。该编码的特点是在每一个码元的中间出现电平跳动,位中间的跳变即作时钟信号(可用于同步),又坐数据信号,但它所占的频带宽度是原始数据的基带宽度的两倍。
每一个码元都被调成两个电平,所以数据传输速率只有调制速率的1/2。
3.差分曼彻斯特编码
同1异0
常用于局域网传输,其规则是:若码元为1,则前半个码元的电平与上一个码元的后半个码元的电平相同,若为0,则相反。该编码的特点是,在每个码元的中间,都有一次电平的跳转,可以实现自同步,且抗干扰性强于曼彻斯特编码。
4.归零编码【RZ】
信号电平在一个码元之内都要恢复到零的这种编码成编码方式。
(不推荐使用)因为处于低电频比较多比较久。
5.反向不归零编码【NRZI】**
信号电平翻转表示0,信号电平不变表示1. 与归零编码主要区别:一个码元内不会跳变。
综合以上的编码方式产生:
(6)4B/5B 编码
比特流中插入额外的比特以打破一连串的0或1,就是用5个比特来编码4个比特的数据,之后再传送给接收方,因此称为4B/5B。编码效率为80%。
只采用16种对应的64种不同的4为码,其他的16种作为控制码(帧的开始和结束,线路的状态信息等)或保留。
二.数字数据调制为模拟信号
数字数据调制技术在发送端将数字信号转换为模拟信号,而在接收端将模拟信号还原为数字信号,分别对应于调制解调器的调制和解调过程。
三.模拟数据编码为数字信号
四、编码与调制的综述:
数据链路层
数据链路层在传输数据的时候,添加首和尾,
称为数据链路层协议首部和尾部,简称帧头和帧尾。这个动作叫做封装成帧。
帧定界:
如果传输数据里面正好包含了帧定界符,数据链路层会在不是帧定界符加上转义字符,防止出现误判,认为数据传输结束了。
差错检测:奇偶校验(计组)。
可靠传输的基本概念
首先直到有两种服务:不可靠服务(丢弃误码的帧)和可靠服务(不会丢弃)。
可靠传输的开销比较大,要根据需求选择。
SW协议:Stop and Wait(停止等待协议)
ACK是正确无误的收到发送方的全部数据之后接收方的回应,则NAK是出现误码的回应,丢弃该数据。
特殊情况:每次的数据传输,发送方都会启动一个超时计数器,如果DATA在传输过程中出现丢失,等待时间操过了重传时间,发送方就会重新发送,这就叫做超时重传。解决接收方收不到分组的情况:设置一个超时计数器,如果超过了最大的重传时间,发送方重传(超时重传),如下图所示:
为了克服停止等待协议的信道利用率低的缺点,就产生了另外两种协议:后退N帧协议、选择重传协议
总结:各种可能出现的问题的描述与解决。
回退N帧协议:GBN协议
如果发送方在收到ACK之前,可以连续发送多个DATA,则可以大大提高信道利用率,这是一种流水线式的传输。这个协议利用传输窗口,来限制发送方和连续发送分组个数。
采用的是累计确认的方式:接收方不一定要对收到的数据分组逐个发送确认,而是可以在收到几个数据分组后,对按序到达的最后一个数据分组发送确认,ACKn表示序号为n及以前的所有数据分组都已经正确接收。
在有差错的情况下:接收方利用检错码发现这个数据分组中有数据出错了,就丢弃这个数据,这样就会让接下来接受的数据序号与接受窗口的序号不匹配,这样就要把这一组的其他数据也丢弃(回退N帧的由来),全部重新发送。重新发送可以等超时计数器超时也可以根据回传的重复信号ACKn。
总结:累计确认。接收方发送ACKN代表前面N(包括N)个帧都收到了,但是如果中间出现了丢失,重传了,就会把发送窗口内的都丢弃重传。
选择重传协议:SR协议
回退N帧协议的接受窗口尺寸只能等于1,因此接收方只能按序接受正确到达的DATA。
为了进一步提升性能,可设法只重传出现误码的数据分组,因此,接收窗口的尺寸不应该再等于1,而应该大于1,以便接收方收下失序到达但无误码并且序号落在接收窗口内的DATA,等到所缺分组收齐后再一起送交上层,这就是选择重传协议(Selective Request)。
注意:由于只重传出现误码的数据分组,接收方不能采用累计确认,要采用逐一确认。
发送窗口尺寸必须满足:
其中n是构成分组序号的比特数量
- 如果 :就是停止-等待协议
- 如果 :造成接收方无法分辨新旧DATA的问题
接收窗口的尺寸必须满足:
- 如果
:与回退N帧协议相同
- 如果
:无意义
点对点协议(Point-to-Point Protocol)
工作在数据链路层,
PPP协议的组成
- 建立、配置数据链路连接的LCP(Link Control Protocol)
- 网络控制协议NCP(Network Control Protocol)
- 将IP数据报封装到串行链路的方法
跟其他协议一样,也要解决数据链路层的三个基本问题:封装成帧,透明传输,差错检测。
媒体接入控制
介质访问控制
介质访问控制就是采取一定的措施,使得两对节点之间的通信不会发生互相干扰的情况。
介质访问控制(就是媒体接入控制)可以分为静态划分信道和动态分配信道。
(1)静态划分信道:也叫信道划分介质访问控制,有四种控制的方法,1、频分多路复用FDM;2、时分多路复用TDM;3、波分多路复用WDM;4、码分多路复用CDM。
(2)动态分配信道,可以分为轮询访问控制 令牌传递协议;随机访问介质访问控制 ALOHA协议、CSMA协议、CSMA/CD协议、CSMA/CA协议。
1、频分多路复用FDM
多路复用器接受来自多个源的模拟信号,每个信号有自己独立的带宽,信号在通信的过程中自始自终都占用这个频带,在同样的时间占用不同的带宽频率,信号被组合成一个具有更大带宽的信号
2、时分多路复用TDM
时分多路复用TDM,信道分割的方法是信号占用的时间,将使用复用的各路信号在时间上互不重叠,在传输时把时间分成小的时隙,每一时隙由复用的一个信号占用。
3、波分多路复用WDM
4、码分多路复用CDM
它既共享信道的频率,也共享时间,是一种真正的动态复用技术
CSMA/CD 协议
总线局域网使用的协议:CSMA/CD协议为带有冲突检测的载波监听多路访问技术,数据链路层,协议的实质是“载波监听”和“碰撞检测”。
载波监听就是利用电子技术检测总线上有没有其他计算机也在发送。载波监听实际上就是检测信道。在发送前,每个站不停地检测信道,是为了获得发送权;在发送中检测信道,是为了及时发现有没有其他站的发送和本站发送的碰撞,这就是碰撞检测。总之,载波监听是全程都在进行的。
碰撞检测就是边发送边监听。就是网卡边发送数据边检测新岛上的信号电压的变化情况,以便判断自己在发送数据的时候其他站是否也在发送数据。当几个站同时在总线上发送数据时,总线上的信号电压变化幅度将会增大(互相叠加),当网卡检测到的信号电压超过一定的门限值时,说明总线上至少有两个站同时在发送数据,表明产生了碰撞(冲突),所以也称为冲突检测。这时,由于接收的信号已经识别不出来,所以任何一个正在发送的站就会立即停止发送数据,然后等待一段随机事件以后再次发送。
CSMA/CD 算法如下
- 当帧准备好时,发送站检查信道是空闲还是忙碌。
- 如果信道拥塞,该站将等待直到它变得可用。
- 如果信道是空的,则站开始传输并观察信道是否发生冲突
- 如果检测到冲突,该站启动冲突解决程序。
站点重置重传计数器并完成帧传输。
尽管 CSMA/CS 检测到冲突,但它没有减少冲突数量的机制。因此,它不适用于大型网络,因为当添加更多站点时性能会呈指数级下降。
CSMA/CA协议
载波监听多点接入 / 碰撞避免协议(Carrier Sense Multiple Access With Collision Avoidance)
CSMA/CA 的算法如下:
- 当帧准备好时,发送站检查信道是空闲还是忙碌。
- 如果通道不畅通,则节点开始等待随机时间量,然后再检查是否畅通。
这个等待时间被称为“退避因子”,它由退避计数器倒计时。
- 如果信道空闲,则站等待帧间间隙 (IFG) 时间,然后发送帧。
- 它在发送帧后设置一个计时器。
- 然后该站等待接收器的确认。
如果在定时器超时前收到确认,则表示发送成功。
- 否则,它会等待一个回退时间段并重新启动算法。
CMSA/CA 防止冲突。当它等待确认时,数据不会不必要地丢失,并且避免了浪费的传输。CSMA/CA 非常适合无线传输。
Mac地址 IP地址 Arp协议
Mac地址又称为物理地址,MAC 地址由六组两位字符组成,由冒号分隔。比如00:1B:44:11:3A:B7,就是一个 MAC 地址。固化在网卡的EEPROM中,所以叫做硬件地址。
IP地址:完整的 IP 寻址范围从 0.0.0.0 到 255.255.255.255。
数据包的转发:数据包在转发过程中,源IP地址和目的IP地址始终保持不变,而数据在数据链路层通过ARP协议找到一条去往目的地的路,即路上要经过的路由器的MAC地址,经过一个或多个路由器(一次只能够找到下一步的MAC地址,不能一次性的把路上所有的MAC都找到),最终交付给目的地。
集线器、交换机、路由器
集线器以广播方式发送,交换机单独发送
集线器对接收到的信号放大、转发,交换机根据MAC地址对帧进行转发。
以太网交换机的自学习和转发帧的流程
以太网交换机的生成树协议
虚拟局域网VLAN的实现机制
对以太网的MAC帧进行了扩展,插入了四个字节的VLAN标记。当交换机收到普通的以太网帧时,插入四字节的VLAN标记,转变为802.1Q帧,“打标签”。当交换机转发802.1Q帧时,会删除标签,“去标签”。
交换机的Access端口:PVID与VID相等时才会转发,用于连接用户计算机。
Trunk端口:用于连接交换机之间或者交换机与路由器之间。
Hybird端口:发送时查看该帧是否在端口的去标签列表中,存在则去标签转发,否则直接转发;接受时
虚拟局域网VLAN的实现机制
对以太网的MAC帧进行了扩展,插入了四个字节的VLAN标记。当交换机收到普通的以太网帧时,插入四字节的VLAN标记,转变为802.1Q帧,“打标签”。当交换机转发802.1Q帧时,会删除标签,“去标签”。
交换机的Access端口:PVID与VID相等时才会转发,用于连接用户计算机。
Trunk端口:用于连接交换机之间或者交换机与路由器之间。
Hybird端口:发送时查看该帧是否在端口的去标签列表中,存在则去标签转发,否则直接转发;接受时
IPv4地址的格式
点分十进制表示方法:
辨别ABC类地址
分类编制的IPv4地址
小结:主机号全零是网络地址,全一是广播地址,注意ABC类地址的范围
划分子网的IPv4地址
子网掩码:使用连续的1来代表网络号和子网号,0对应主机号,与原来的网络地址相与就可以得到网络地址。
划分细节:全零的和全一的要忽略掉
小结:
无分类编址的划分子网CIDR
在IPv4地址后面加上斜线,表示网络前缀所占的比特数量。
最长前缀匹配:
举例说明:
例题2:
小结:
IP数据报的发送与转发过程
如果在同一个网络中,直接交付;不在,间接交付。
如何判断目的主机与自己是否在同一个网络中?
将本机IP地址与本机子网掩码相与得到网络地址,将目的主机IP地址与本机子网掩码相与得到另外一个网络地址,看看两个网络地址是否相同。同,在一个网络;不同在不同的网络。
静态路由配置以及可能产生的路由环路问题
网络管理员自己手动配置路由表。
外部 BGP 与内部 BGP 有什么区别?
在互联网上,路由交换和流量传输是通过外部 BGP(eBGP)进行的。自治系统也可使用 BGP 的内部版本来路由内部网络上的数据,也就是 iBGP(internal)。应该指出的是,使用内部 BGP 并非使用外部 BGP 的前提条件。自治系统可从多种内部协议中选择,来连接内部网络上的路由器。
外部 BGP 就像国际运输。在国际上运送邮件时,需要遵循特定的标准和规则。邮件到达目的地国家后,必须通过目的地国家的本地邮政服务才能达到其最终目的地。每个国家都有自己的内部邮政服务,不必遵循其他国家的相同规则。同样,每个自治系统都可以有自己的内部路由协议,用于路由自身网络内部的数据。
内部网关协议:路由选择协议RIP的基本工作原理
RIP的路由条目的更新规则,先加1,然后逐渐更新
使用跳数来衡量到达目的网络的距离,next hop,下一跳
广播域与冲突域
一个集线器(中继器)连接的网络成为冲突域,因为每台主机都连接在了同一条线路上,所以传送信息时会冲突。 冲突域是基于第一层(物理层)
而交换机的本质是一个多借口网桥,就是说由交换机组成的网络中,任意两台主机通信都是通过一条专有线路,故不会冲突。所以交换机出来的每个接口都是一个冲突域。 广播域是基于第二层(链路层)
通常一个局域网VLAN算一个广播域,故路由器的每个端口产生一个广播域。
开放最短路径OSPF的基本工作原理
在自治系统AS中可以通过OSPF将其划分成更小的区域。
小结
边界网关协议BGP
BGP是找到有路径就可以,不用去找最佳的路由。
例题:
小结:
IPVv4数据报的格式
TTL字段的作用:防止IP数据报在网络中永久兜圈。
如下图将R2的静态路由表配置错了,导致要转发给R3的转发给了R1,造成路由环路。
当IP数据报经过一个路由器的时候:TTL字段减一,首部检验和需要更改,如果IP数据报过大,大于MTU(最大数据报单元),则要重新分片,标志字段、总长度字段、片位移字段都要修改。
网际控制报文协议ICMP
通过ICMP来发送差错报告报文和询问报文,ICMP报文被封装在IP数据报中发送出去,有五种差错报文。
ICMP的应用:PING、traceroute(TTL从1开始,到了一个中间的站点,发送一个时间超过报文)
网络地址转换NAT和虚拟专用网VPN
利用端口号和IP地址一起放入转换表中,这样可以极大程度的利用一个分配IP地址路由器与多个主机的多个服务之间通信、转发,减缓IP地址的使用。
两个私有的网通过公有的因特网进行通信,这个时候会将原始的数据进行加密处理,然后将其封装,保证数据安全。
外地员工连内网,利用专有的软件,远程接入VPN
运输层简介
通过这一层的封装,两个计算机之间的通信好像变成了它们之间两个进程之间的直接通信,端口号代表了进程的标识符(0-65535,0-2^16-1)。
运输层端口号、分用、复用的概念
应用层协议的常用熟知端口号。
端口号只具有本地意义,不同计算机之间的相同端口号是没有联系的。
UDP和TCP的对比
UDP支持单播、多播以及广播,TCP仅支持1对1的服务。
UDP适用于视频通话
UDP面向报文,TCP面向字节流。
UDP首部只有8个字节,TCP首部最少20字节,最多60字节。
小结:
TCP的流量控制
解决死锁情况的计时器:在接收方将窗口修改为0时启动,
零窗口探测报文在rwnd=0时也可以接收。
大写的ACK是确认信号,返回给client,小写的ack是累计确认,表示ack号字节以前的数据都收到了。
例题:注意通高的接受窗口的大小是2000字节
小结:流量控制是为了让发送方的发送速度不要过快,利用的是滑动窗口的机制。接收方发送零窗口通知后,发送方收到后会启动持续计时器。接收方是通过rwnd的值来设置窗口大小,从而实现流量控制。
TCP的拥塞控制
慢开始,拥塞避免:
维护三个变量:拥塞窗口cwnd、发送窗口swnd,慢开始门限ssthresh。
快重传算法:不等待超时重传计时器的超时,而是收到了三个连续的重复确认就将报文段立即重传。
快恢复算法:收到三个重复确认就知道了只是丢失了个别的报文段,这个时候不启动慢开始算法,而是执行快恢复算法。
慢开始,拥塞控制,快重传,快恢复
TCP超时重传时间的计算
RTO=RTTs+4*RTT D;
出现超时重传,新RTO=2*旧的RTO。
TCP可靠传输的实现
返送窗口的前沿和后沿的移动情况,
小结:以字节为单位的滑动窗口来实现可靠传输。而对于没有按序到达的数据的处理,没有明确规定,通常是将这些数据临时保存在接收窗口中。
TCP的连接建立:三握手
三报文握手来建立连接。
两次握手不可行的示意图:失效的TCP连接请求在一段时间后到达服务端,服务端也会认为是一个请求,错误的进入ESTABLISHED状态,会浪费资源。
所以第三次握手不是多余的;
例题:SYN=1 ACK=1 seq=11221 ack=11221
小结:SYN=1的报文段不能携带数据。
TCP连接的释放:四挥手
4报文挥手,客户端最后还要经过2MSL的时间才会进入关闭状态,确保返回给服务器的ACK到达服务端,以及清理掉此次连接中的所有报文段。
使用2*MSL时间的原因:当出现最后的确认报文段丢失的情况时,还可以收到服务端的FIN信号,否则服务器就会一直重传FIN报文段,一直收不到确认信号。
保活计时器
TCP报文段的首部格式
都有20字节的固定首部
B/S和PtoP方式
PtP方式是两边对等的,没有固定的服务端和客户端,
动态主机配置协议DHCP
DHCP的工作过程:主要有四步,DHCP DISCOVER、DHCP OFFER、DHCP REQUEST、DHCP ACK。
DHCP中继代理:在主机发送广播的DHCP DISCOVER时,将路由器当成中继代理,让它给服务器发送单播DHCP DISCOVER,这样主机就可以获取到IP地址分配。如果不这样配置,路由器会直接丢弃广播的DHCP DISCOVER。
小结:
域名系统DNS
域名的层次结构:树根没有域名,顶级、二级、三级、四级域名。
域名的解析有两种:递归查询和迭代查询。
文件传输协议FTP
三条命令,可以传输文件
fpt ip; //连接FTP服务器
get [name]//下载文件
put [name]//上传文件
电子邮件
简单邮件传送协议SMTP:simple mail transfer protocol,基于TCP连接,使用熟知端口号25,只能发送ASCII文本。
电子邮件的格式:信封和内容
小结:常见的邮件读取协议有POP3、IMAP。邮件读取协议是指邮件服务器读取邮件内容的时候要遵循的协议。
万维网WWW
HTTP的报文格式:包含请求报文和响应报文
万维网缓存与代理服务器:提高万维网的效率,减轻原始服务器的压力。
小结:
万维网使用统一资源定位符URL来指定英特网上的资源的位置:
<协议>://<主机>:<端口>/<路径>,如:https://www.baidu.com/
HTTP是超文本传输协议,1.0采用无连接的方式,1.1采用持续连接的方式
(keep-alive),