常见的计算机网络面试题(问题+答案)

  1. C/S B/S 的含义

    C/S 是客户端/服务器模式(client sserver);B/S 是浏览器/服务器(Browser/Server)结构

  2. 什么是互联网的OSI模型

    OSIopen System interconnection)是指开放系统互联参考模型。OSI 的体层为:物理层,数据链路层,网络层,传输层, 会话层, 表示层和应用层。

  3. 在各层之间,数据以什么单位进行传输的?

    物理层的是比特(bit; 数据链路层,数据的单位是帧(frame);网络层,数据单位是数据包(package), 传输层,数据的单位称为数据段segment

 

  1. 三次握手和四次挥手?

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

说明: http://blog.chinaunix.net/attachment/201304/8/22312037_1365405910EROI.png
TCP三次握手

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

3)第三次握手:Client收到确认后,检查ack是否为J+1ACK是否为1,如果正确则将标志位ACK置为1ack=K+1,并将该数据包发送给ServerServer检查ack是否为K+1ACK是否为1,如果正确则连接建立成功,ClientServer进入ESTABLISHED状态,完成三次握手,随后ClientServer之间可以开始传输数据了。
        SYN
攻击:  在三次握手过程中,Server发送SYN-ACK之后,收到ClientACK之前的TCP连接称为半连接(half-openconnect),此时Server处于SYN_RCVD状态,当收到ACK后,Server转入ESTABLISHED状态。SYN攻击就是Client在短时间内伪造大量不存在的IP地址,并向Server不断地发送SYN包,Server回复确认包,并等待Client的确认,由于源地址是不存在的,因此,Server需要不断重发直至超时,这些伪造的SYN包将产时间占用未连接队列,导致正常的SYN请求因为队列满而被丢弃,从而引起网络堵塞甚至系统瘫痪。SYN攻击时一种典型的DDOS攻击,检测SYN攻击的方式非常简单,即当Server上有大量半连接状态且源IP地址是随机的,则可以断定遭到SYN攻击了,使用如下命令可以让之现行:  #netstat -nap |grep SYN_RECV

四次挥手

         
三次握手耳熟能详,四次挥手估计就
说明: http://blog.chinaunix.net/kindeditor/plugins/emoticons/images/20.gif,所谓四次挥手(Four-Way Wavehand)即终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。在socket编程中,这一过程由客户端或服务端任一方执行close来触发,整个流程如下图所示:

说明: http://blog.chinaunix.net/attachment/201304/9/22312037_1365503104wDR0.png
3 TCP四次挥手

  由于TCP连接时全双工的,因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接,收到一个FIN只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭,上图描述的即是如此。
        
1)第一次挥手:Client发送一个FIN,用来关闭ClientServer的数据传送,Client进入FIN_WAIT_1状态。
       
2)第二次挥手:Server收到FIN后,发送一个ACKClient,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
        
3)第三次挥手:Server发送一个FIN,用来关闭ServerClient的数据传送,Server进入LAST_ACK状态。
       
4)第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACKServer,确认序号为收到序号+1Server进入CLOSED状态,完成四次挥手。
       
上面是一方主动关闭,另一方被动关闭的情况,实际中还会出现同时发起主动关闭的情况,具体流程如下图:

说明: http://blog.chinaunix.net/attachment/201304/10/22312037_13655617062cGr.png

 

  1. 交换机和路由器各自的实现原理是什么?分别在哪个层次上面实现的?

  1. 路由器可以进行路由转发,就是连接两个不同的网段, 为两段做翻译。

  2. 因为以上路由器不可以转广播包, 可以隔离广播域。

  3. 交换机工作在数据链路层, 路由器工作在网络层。集线器工作在物理层, 网卡工作在物理层。

  1. APR和其工作原理

    地址解析协议,即ARPAddress Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议

    工作原理:

首先,每台主机都会在自己的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查询失败。

例如:


A
的地址为:IP
192.168.10.1 MAC: AA-AA-AA-AA-AA-AA
B
的地址为:IP
192.168.10.2 MAC: BB-BB-BB-BB-BB-BB

根据上面的所讲的原理,我们简单说明这个过程:A要和B通讯,A就需要知道B的以太网地址,于是A发送一个ARP请求广播(谁是192.168.10.2 ,请告诉192.168.10.1),当B收到该广播,就检查自己,结果发现和自己的一致,然后就向A发送一个ARP单播应答(192.168.10.2 BB-BB-BB-BB-BB-BB)。

你可能感兴趣的:(Linux,知识)