您的位置:首页 > 理论基础 > 计算机网络

计算机网络基础

2015-08-03 16:11 232 查看
计算机网络常见面试题

1. OSI , TCP/IP ,五层协议的体系结构

OSI分层(7层)
物理层:提供数据传输的物理介质。传输单位比特(bit)
数据链路层:保证在不可靠的物理介质上的可靠传输,作用包括:物理地址寻址、数据的成帧、流量控制、数据校验,重发。(传输单位帧 frame)
网络层:对子网间的数据包进行路由选择,也实现拥塞控制和网际互连。传输单位数据包(package)
传输层:传输层是第一个端到端,即主机到主机的层次。传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输。此外,传输层还要处理端到端的差错控制和流量控制问题,传输单位数据段(segment)
会话层、表示层;
应用层为操作系统或网络应用程序提供访问网络服务的接口。
TCP/IP(5层) :物理层、数据链路层、网络层(ARP
RARP)、运输层(TCP UDP)、应用层(FTP Telnet HTTP)。
应用层 :为操作系统或网络应用程序提供访问网络服务的接口。

2. IP 地址的分类(32位)

A类地址:以0开头,第一个字节范围:0~127;
0000 0000~0111 1111
默认子网掩码255,0,0,0
B类地址:以10开头,第一个字节范围:128~191;
1000 0000~1011 1111
默认子网掩码 255,255,0,0
C类地址:以110开头,第一个字节范围:192~223;
1100 0000~1101 1111
默认子网掩码 255,255,255,0
D类地址:以1110开头,第一个字节范围为224~239;
11100000~1110 1111

3. ARP 协议的工作原理

ARP即地址解析协议(AddressResolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议.
IP((32位)) MAC(48位)

首先,每台主机都会在自己的ARP缓冲区中建立一个 ARP列表,以表示IP地址和MAC地址的对应关系。当源主机需要将一个数据包要发送到目的主机时,会首先检查自己
ARP列表中是否存在该 IP地址对应的MAC地址,如果有,就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。此ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址。网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此数据包;如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个
ARP响应数据包,告诉对方自己是它需要查找的MAC地址;源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。

4. 路由设备与相关层

物理层 :中继器(Repeater,也叫放大器/转发器),集线器。
数据链路层 :网桥(或桥接器),交换机。
网络层 :路由器。
网关 :网络层以上的设备。

5. 常见的路由选择协议,以及它们的区别

常见的路由选择协议有:RIP协议、OSPF协议。
RIP协议(路由信息协议 RoutingInformation Protocal) :是同一自治系统内路由器之间传送路由的最常用协议,基于距离向量路由选择协议。它选择路由的度量标准(metric)是跳数,最大跳数是15跳,如果大于15跳,它就会丢弃数据包。
RIP只维护到目的地的最佳路由,即度量值最小的路由。路由器更新其路由表后,将立刻开始传输路由选择更新,将变化情况告知其他的网络路由器。
特点:
1、适用于小型网络,因为最大跳数15,所经过的最多路由器为15
2、基于距离向量路由选择协议,不能保证选择的是最快的路径。
3、定期更新路由表,缺省情况下,每30秒广播一次路由更新信息。

OSPF协议 (开放最短路径优先协议 Open Shortest Path First):基于开放标准的链路状态路由选择协议,它选择路由的度量标准是带宽,延迟。
特点:

1、公开发布了各种规范,是一个开放的标准。

2、支持多播

3、属于无类别路由选择协议

4、OSPF收敛速度快:能够在最短的时间内将路由变化传递到整个自治系统。

5、将协议自身的开销控制到最小

链路状态路由协议(也可以说OSPF)工作原理:

每台路由器通过使用Hello报文与它的邻居之间建立邻接关系。每台路由器向每个邻居发送链路状态通告(LSA),有时叫链路状态报文(LSP)。 每个邻居在收到LSP之后要依次向它的邻居转发这些LSP(泛洪)
每台路由器要在数据库中保存一份它所收到的LSA的备份,所有路由器的数据库应该相同
依照拓扑数据库每台路由器使用Dijkstra算法(SPF算法)计算出到每个网络的最短路径,并将结果输出到路由选择表中
OSPF的简化原理:发Hello报文——建立邻接关系——形成链路状态数据库——SPF算法——形成路由表。

6. TCP UDP 的区别

UDP(用户数据报协议 User Datagram Protocal)是面向无连接的,不可靠的数据报服务;如:DNS系统
(1) UDP是一个无连接协议,传输数据之前源端和终端不建立连接,当他想传数据的时候简单的去抓取来自应用程序的数据,并尽可能快的将它扔到网上去。
(2)由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,因此一台服务机可同时向多个客户机传输相同的消息。
(3) UDP信息包的标题很短,只有8个字节,相对于TCP的20个字节信息包的额外开销很小。
(4)UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态表(这里面有许多参数)。
(6)UDP是面向报文的。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付给IP层。既不拆分,也不合并,而是保留这些报文的边界,因此,应用程序需要选择合适的报文大小。

TCP(传输控制协议 Transmission ControlProtocal)是面向连接的,可靠的、字节流服务。
TCP通过下列方式来提供可靠性:[1]
1.应用数据被分割成TCP认为最适合发送的数据块。这和UDP完全不同,应用程序产生的数据长度将保持不变。由TCP传递给IP的信息单位称为报文段(segment)。
2.当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。当TCP收到发自TCP连接另一端的数据,它将发送一个确认。TCP有延迟确认的功能,在此功能没有打开,则是立即确认。功能打开,则由定时器触发确认时间点。
3.TCP将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段(希望发端超时并重发)。
4.既然TCP报文段作为IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。如果必要,TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。
5.既然IP数据报会发生重复,TCP的接收端必须丢弃重复的数据。[2]
6.TCP还能提供流量控制。TCP连接的每一方都有固定大小的缓冲空间。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机的缓冲区溢出。

7. TCP 三次握手和四次挥手的全过程(重要)

Sequence number(序列号码) Acknowledge number(确认号码)
ACK : TCP协议规定,只有ACK=1时有效,也规定连接建立后所有发送的报文的ACK必须为1
SYN(SYNchronization) : 在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文。对方若同意建立连接,则应在响应报文中使SYN=1和ACK=1. 因此, SYN置1就表示这是一个连接请求或连接接受报文。

FIN (finis)即完,终结的意思, 用来释放一个连接。当 FIN = 1 时,表明此报文段的发送方的数据已经发送完毕,并要求释放连接。

所谓三次握手(Three-Way Handshake)即建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。在socket编程中,这一过程由客户端执行connect来触发,整个流程如下图所示:

图2 TCP三次握手
(1)第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。

(2)第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。

(3)第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。
SYN攻击:

在三次握手过程中,Server发送SYN-ACK之后,收到Client的ACK之前的TCP连接称为半连接(half-open connect),此时Server处于SYN_RCVD状态,当收到ACK后,Server转入ESTABLISHED状态。SYN攻击就是Client在短时间内伪造大量不存在的IP地址,并向Server不断地发送SYN包,Server回复确认包,并等待Client的确认,由于源地址是不存在的,因此,Server需要不断重发直至超时,这些伪造的SYN包将产时间占用未连接队列,导致正常的SYN请求因为队列满而被丢弃,从而引起网络堵塞甚至系统瘫痪。SYN攻击时一种典型的DDOS攻击,检测SYN攻击的方式非常简单,即当Server上有大量半连接状态且源IP地址是随机的,则可以断定遭到SYN攻击了,

建立一个连接需要三次握手,而终止一个连接要经过四次握手,这是由TCP的半关闭(half-close)造成的。具体过程如下图所示。

图3 TCP四次挥手
由于TCP连接时全双工的,因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接,收到一个FIN只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭,上图描述的即是如此。

(1)第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。

(2)第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。

(3)第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。

(4)第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。

【问题1】为什么连接的时候是三次握手,关闭的时候却是四次握手?

答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。
【问题2】为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?
答:虽然按道理,四个报文都发送完毕,我们可以直接进入CLOSE状态了,但是我们必须假象网络是不可靠的,有可以最后一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACK报文。

8、 DNS ( Domain Name System )域名系统,简单描述其工作原理。

DNS是域名系统(DomainName System)的缩写,是一种组织域层次结构的计算机和网络服务命名系统。当用户在应用程序中输入DNS名称时,DNS服务可以将此名称解析为与此名称相关的IP
地址信息。

9、网关的作用?

网关即Gateway,它是连接基于不同通信协议的网络的设备,使文件可以在这些网络之间传输。网关除传输信息外,还将这些信息转化为接收网络所用协议认可的形式。它同路由器有密切关系

网关(Gateway)就是一个网络连接到另一个网络的“关口”。网关实质上是一个网络通向其他网络的IP地址。只有设置好网关的IP地址,TCP/IP协议才能实现不同网络之间的相互通信。

网关(Gateway)又叫协议转换器,是一种复杂的网络连接设备,可以支持不同协议之间的转换,实现不同协议网络之间的互连。网关具有对不兼容的高层协议进行转换的能力,为了实现异构设备之间的通信,网关需要对不同的链路层、专用会话层、表示层和应用层协议进行翻译和转换。

所以说,网关是一个智能超群的路由器,一个智能超群的网桥,一个智能超群的中继器。

10 、 ICMP 协议?

答: ICMP 是 Internet Control Message Protocol ,因特网控制报文协议。它是 TCP/IP 协议族的一个子协议,用于在 IP 主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由器是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。 ICMP 报文有两种:差错报告报文和询问报文。

11、 HTTP 协议?

答: HTTP 超文本传输协议,是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。

12 、 DHCP 协议?

DHCP(Dynamic HostConfiguration Protocol,动态主机配置协议)是一个局域网网络协议,使用UDP协议工作,主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段

13、请问交换机和路由器分别的实现原理是什么?分别在哪个层次上面实现的?

交换机用于局域网,利用主机的MAC地址进行数据传输,而不需要关心IP数据包中的IP地址,它工作于数据链路层。

路由器识别网络是通过IP数据包中IP地址的网络号进行的,所以为了保证数据包路由的正确性,每个网络都必须有一个唯一的网络号。路由器通过IP数据包的IP地址进行路由的(将数据包递交给哪个下一跳路由器)。

路由器工作于网络层路由器是连接不同网络的(就象是连接两个不同网络的桥梁),而交换机是连接不同设备(也就是计算机之类的东西)的。
建立局域网首要的就是把局域网里面的所有终端设备都连接在一起,也就是说必须要有交换机,当你的局域网需要与外部的其他网络进行通信的时候(比如说单位上Internet)就需要路由器来连接外部网络与局域网了。


14 、网桥的作用

网桥是一个局域网与另一个局域网之间建立连接的桥梁。类似于交换机但连接方式不同。

15 、防火墙的端口防护是指?

指通过对防火墙的端口开关的设置,关闭一些非必需端口,达到一定安全防护目的的行为。

16 、以太网帧的格式

答:
目的地址
源地址
类型
数据
FCS

17、电路交换、报文交换分组交换的比较?

答:电路交换:公共电话网( PSTN 网)和移动网(包括 GSM 和 CDMA 网) 采用的都是电路交换技术,它的基本特点是采用面向连接的方式,在双方进行通信之前,需要为通信双方分配一条具有固定宽带的通信电路,通信双方在通信过程中一直占用所分配的资源,直到通信结束,并且在电路的建立和释放过程中都需要利用相关的信令协议。这种方式的优点是在通信过程中可以保证为用户提供足够的带 宽,并且实时性强,时延小,交换设备成本低,但同时带来的缺点是网络带宽利用率不高,一旦电路被建立不管通信双方是否处于通话状态分配的电路一直被占用。连接建立——数据传输——释放链接
报 文交换:报文交换和分组交换类似,也采用存储转发机制,但报文交换是以报文作为传送单元,由于报文长度差异很大,长报文可能导致很大的时延,并且对每个节点来说缓冲区的分配也比较困难,为了满足各种长度报文的需要并且达到高效的目的,节点需要分配不同大小的缓冲区,否则就有可能造成数据传送的失败。在实际 应用中报文交换主要用于传输报文较短,实时性要求较低的通信业务,如公用电报网,报文交换比分组交换出现的要早一些,分组交换是在报文交换的基础上,将报文分割成分组进行传输,在传输时延和传输效率上进行了平衡。另外一个缺点是出错时,整个报文都将重传。
分 组交换:电路交换技术主要适用于传送话音相关的业务,这种网络交换方式对于数据业务而言,有着很大的局限性。首先是数据通信具有较强的突发性,峰值比特率和平均比特率相差较大,如果采用电路交换技术,若按峰值比特率分配电路带宽会造成资源的极大浪费,如果按平均比特率分配带宽,则会造成数据的大量丢失,其 次是和语音业务比较,数据业务对时延没有严格的要求,但是需要进行无差错的传输,而语音信号可以有一定程序的失真但实时性要高。分组交换技术就是针对数据通信业务的特点而提出的一种交换方式,它的基本特点是面向无连接而采用存储转发的方式,将需要传送的数据按照一定长度分割成许多小段数据,并在数据之前增
加相应的用于对数据进行选路和校验等功能的头部字段,作为数据传送的基本单元,即分组。采用分组交换技术,在通信之前不需要建立连接,每个节点首先将前一节点送来的分组收下并保存在缓冲区中,然后根据分组头部中的地址信息选择适当的链路将其发送至下一个节点,这样在通信过程中可以根据用户的要求和网络的能 力来动态分配带宽。分组交换比电路交换的电路利用率高,但时延较大。分组转发的带来的问题:带来排队时延以及增加头部带来的开销。

18 、电信网络分类

电信网络
电路交换网络
分组交换网络
FDM
TDM
虚电路网络
数据报网络

19 、网络按地域范围分类?

答:局域网、城域网、广域网。

20 、网络按使用者分类为:

公共网和专用网。

21、网络的拓扑结构主要有:星形、总线型、环形以及树型、全连接、不规则网状。

22、数据链路层协议可能提供的服务?

答:成帧、链路访问、透明传输、可靠交付、流量控制、差错检测、差错纠正、半双工和全双工。最重要的是帧定界(成帧)、透明传输以及差错检测。

23、帧定界?

答:帧定界就是确定帧的界限,其方法有:字节计数法、字符填充法、零比特填充法。

24、运输层协议与网络层协议的区别?

答:网络层协议负责的是提供主机间的逻辑通信
运输层协议负责的是提供进程间的逻辑通信

25、与 IP 协议配套的其他协议?

答: ARP :地址解析协议 RARP :逆地址解析协议
ICMP :因特网控制报文协议 IGMP :因特网组管理协议
其关系为:

26 、两台笔记本电脑连起来后 ping 不同,你觉得可能存在哪些问题?

答:( 1 )首先考虑是否是网络的问题
( 2 )局域网设置问题,电脑互联是要设置的。看是否安装了必要的网络协议,最重要的是 IP 地址是否设置正确。
( 3 )网卡驱动未安装正确
( 4 )防火墙设置有问题
( 5 )是否有什么软件阻止了 ping 包

27、 EGP , IGP ?

答:( 1 ) IGP :内部网关协议,即在一个自治系统内部使用的路由选择协议,如 RIP 和 OSPF 。
( 11 ) RIP 是一种分布式的基于距离向量的路由选择协议,要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离向量。距离即是跳数,路由器与直接相连的网络跳数为 1 ,以后每经过一个路由器跳数加 1 。 RIP 允许一条路径最多包含 15 个路由器,因此当距离为 16 时认为不可达,这因为如此限制了网络的规模,说明 RIP 只能工作在规模较小的网络中。 RIP 的三个要点:仅和相邻路由器交换信息;交换的信息是当前路由器知道的全部信息,即路由表;按固定的时间间隔交换路由信息,如 30 秒。 RIP 协议使用运输层的用户数据报 UDP 进行传送,因此 RIP 协议的位置位于应用层,但是转发 IP 数据报的过程是在网络层完成的。 RIP 是好消息传播的快,坏消息传播的慢。
( 12 ) OSPF :最短路径优先,三个要点:采用洪泛法向本自治系统的路由器发送信息;发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息;只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息。 OSPF 直接使用 IP数据包传送,因此 OSPF 位于网络层。
EGP :外部网关协议,若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中,如 EGP 。

28、 CSMA/CD ?

答:是指载波监听多点接入 / 碰撞检测
( 1 )多点接入是指多台计算机以多点接入的方式连接在一条总线上
( 2 )载波监听是指每一个站在发送数据之前首先要检查一下总线上是否已经有其他计算机在发送数据,如果有,则暂时不要发送,避免碰撞
( 3 )实际在总线上并没有什么载波,实际是采用电子技术检测总线上是否有其他计算机发送的数据信号
( 4 )碰撞检测就是计算机边发送数据边检测信道上的信号电压大小,当发生了碰撞即产生了冲突,碰撞检测也叫做“冲突检测”
( 5 )当发生了碰撞时,总线上传输的信号就产生了失真,无法恢复出有用的信息,因此为了不浪费网络资源,一旦检测到碰撞发生时,就停止数据发送。然后再等待一段随机时间后在发送。
( 6 )强化碰撞,当检测到碰撞后,不仅立即停止发送数据外,还要人为的发送一些干扰信息,让其他站也知道此时碰撞发生了。
( 7 )由于信号在总线上的传输也是需要一定的时间的,所以当一个站检测到总线是空闲的时候,也可能并非是真正的空闲,因为会存在其他站发送了数据,只是还没有传送到该站能检测的范围内。这种情况下,发送数据最终也会导致碰撞发生。
( 8 )工作原理
( 81 )发送前先监听信道是否空闲,若空闲则立即发送;
( 82 )如果信道忙,则继续监听,一旦空闲就立即发送;
( 83 )在发送过程中,仍需继续监听。若监听到冲突,则立即停止发送数据,然后发送一串干扰信号( Jam );
( 84 )发送 Jam 信号的目的是强化冲突,以便使所有的站点都能检测到发生了冲突。等待一段随机时间(称为退避)以后,再重新尝试。
总结为四句话:发前先听,空闲即发送,边发边听,冲突时退避。

29 、网络接口卡(网卡)的功能?

答:( 1 )进行串行 / 并行转换。
( 2 )对数据进行缓存。
( 3 )在计算机的操作系统安装设备驱动程序。
( 4 )实现以太网协议。

30、路由表是做什么用的?在Linux环境中怎么配置一条默认路由?

答:路由表是用来决定如何将一个数据包从一个子网传送到另一个子网的,换句话说就是用来决定从一个网卡接收到的包应该送到哪一个网卡上去。路由表的每一行至少有目标网络号、子网掩码、到这个子网应该使用的网卡这三条信息。当路由器从一个网卡接收到一个包时,它扫描路由表的每一行,用里面的子网掩码与数据包中的目标IP地址做逻辑与运算(&)找出目标网络号。如果得出的结果网络号与这一行的网络号相同,就将这条路由表六下来作为备用路由。如果已经有备用路由了,就载这两条路由里将网络号最长的留下来,另一条丢掉(这是用无分类编址CIDR的情况才是匹配网络号最长的,其他的情况是找到第一条匹配的行时就可以进行转发了)。如此接着扫描下一行直到结束。如果扫描结束仍没有找到任何路由,就用默认路由。确定路由后,直接将数据包送到对应的网卡上去。在具体的实现中,路由表可能包含更多的信息为选路由算法的细节所用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: