zoukankan      html  css  js  c++  java
  • 计算机网络常考面试题总结

    这里先将搜集到的题目列出来,日后一一精细得写完。

    https://blog.csdn.net/u013408431/article/details/62442670

    https://blog.csdn.net/tzs_1041218129/article/details/52134226

    https://blog.csdn.net/GitChat/article/details/78546898

    <.................................正文..................................>

    Q1.TCP 和 UDP 的区别

    A1:TCP是传输控制协议,提供的是面向连接、可靠的字节流服务。通信双方彼此交换数据前,必须先通过三次握手协议建立连接,之后才能传输数据。TCP提供超时重传,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。

         UDP是用户数据报协议,是一个简单的面向无连接的协议。UDP不提供可靠的服务。在数据数据前不用建立连接故而传输速度很快。UDP主要用于流媒体传输,IP电话等对数据可靠性要求不是很高的场合。

    Q2.TCP的三次握手过程。为什么需要三次握手(而不是两次握手)?TCP的四次挥手。为什么需要四次挥手?

     A2:

    三次握手:

    第一次握手客户端发送syn包(syn=x)到服务器,并进入SYN_SEND状态,等待服务器确认;

    第二次握手服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;

    第三次握手客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

    如图所示:

         三次握手的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误”。 假设现在是两次握手,client发送了syn,但这个包在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server,在client看来,这个包已经无效了(因为超时没有收到ack),但在server端看来不是这样,server突然收到了一个syn,就回复一个ack,并且认为这个连接已经建立了,但实际上client早不鸟它了,这样就浪费了服务器资源。那如果是三次握手呢?服务器突然收到了一个syn,则回复一个syn+ack,之后就在那等呀等呀,因为client已经不鸟它了,所以在定时情况下server收不到ack,因此连接没有建立。(博主自己的理解,不对的地方望指正)

    四次挥手

    与建立连接的“三次握手”类似,断开一个TCP连接则需要“四次握手”。

    第一次挥手主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不 会再给你发数据了(当然,在fin包之前发送出去的数据,如果没有收到对应的ack确认报文,主动关闭方依然会重发这些数据),但是,此时主动关闭方还可 以接受数据。

    第二次挥手被动关闭方收到FIN包后,发送一个ACK给对方,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号)。

    第三次挥手被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发数据了。

    第四次挥手主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序号为收到序号+1,至此,完成四次挥手。

    如图所示:

    为什么需要四次挥手?因为TCP是全双工模式,接收到FIN时意味将没有数据再发来,但是还是可以继续发送数据。考虑在UNP中的shutdown函数来进行半关闭。TCP有个半关闭状态,假设A.B要释放连接,那么A发送一个释放连接报文给B,B收到后发送确认,这个时候A不发数据,但是B如果发数据A还是要接受,这叫半关闭。然后B还要发给A连接释放报文,然后A发确认,所以是4次。

        

    Q3.为什么需要TCP的TIME_WAIT状态?为什么其持续时间是2MSL?

    (1)可靠地实现TCP全双工连接的终止,确保最终的ACK丢失后仍可以重传ACK

       假设最终的ACK丢失了,服务器将重传FIN,客户必须维护状态信息以重新发送ACK。假设客户不维护状态信息(即不处于TIME_WAIT状态),则会响应一个RST,这被服务器解释为一种错误。

    (2)防止来自某个连接的老的重复分组在该连接已终止后再现。TIME_WAIT的持续时间为2MSL,这足以让某个方向上的分组最多存活MSL秒即被抛弃

        假设存在老的重复分组,并假设断开连接后又建立了新的连接,如果没有TIME_WAIT状态,则老的重复分组可能被解释为新的连接的分组。TCP不会给处于TIME_WAIT的连接发起新的连接。(还是不懂的话看UNP的37页)

    Q4.什么是TCP的流量控制和拥塞控制?

     拥塞控制:https://www.cnblogs.com/wuchanming/p/4422779.html

     流量控制:暂时没找到好的   可以看之前在eventnote上留的笔记

    Q5.交换机与路由器有什么区别?(可以大概看看交换机、路由器、网关概念)

    ①工作所处的OSI层次不一样,交换机工作在第二层数据链路层,路由器工作在第三层网络层

    ②寻址方式不同:交换机根据MAC地址寻址,路由器根据IP地址寻址

    ③转发速不同:交换机的转发速度快,路由器转发速度相对较慢

    Q6.解释一下ARP协议的工作原理。

    (1)首先,每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系

    (2)当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送ARP数据包,该数据包包括的内容有:源主机IP地址,源主机MAC地址,目的主机的IP地址

    (3)当本网络的所有主机收到该ARP数据包时,首先检查数据包中的IP地址是否是自己的IP地址,如果不是,则忽略该数据包,如果是,则首先从数据包中取出源主机的IP和MAC地址写入到ARP列表中,如果已经存在,则覆盖,然后将自己的MAC地址写入ARP响应包中,告诉源主机自己是它想要找的MAC地址。

    (4)源主机收到ARP响应包后,将目的主机的IP和MAC地址写入ARP列表,并利用此信息发送数据。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败

    广播发送ARP请求,单播发送ARP响应。

    Q7.什么是ICMP协议?什么是DHCP协议?

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

    DHCP协议是Dynamic Host Configuration Protocol 动态主机配置协议,是一种让系统得以连接到网络上,并获取所需要的配置参数手段。通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。

    Q8.请简述IP地址的分类。

     A类网络的IP地址范围为:1.0.0.0     -127.255.255.255;
     B类网络的IP地址范围为:128.0.0.0 -191.255.255.255;
     C类网络的IP地址范围为:192.0.0.0 -223.255.255.255;

     

    Q9.什么是RARP协议?

     逆地址解析协议,作用是完成硬件地址到IP地址的映射,主要用于无盘工作站,因为给无盘工作站配置的IP地址不能保存。

    Q10.简述DNS域名系统工作原理。

     当DNS客户机需要在程序中使用名称时,它会查询DNS服务器来解析名称。客户机发送的每条查询信息包括:指定的DNS域名,指定的查询类型,DNS域名的指定类别。基于UDP服务,端口53. 该应用一般不直接为用户使用,而是为其他应用服务,如HTTP,SMTP等在其中需要完成主机名到IP地址的转换。

    Q11.HTTP协议工作过程。在浏览器中输入www.baidu.com后执行的全部过程。HTTP的长连接和短连接?

    HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议.

     

    短连接:浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接

     长连接:当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的 TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接要客户端和服务端都支持长连接。

    TCP短连接: client向server发起连接请求,server接到请求,然后双方建立连接。client向server发送消息,server回应client,然后一次读写就完成了,这时候双方任何一个都可以发起close操作,不过一般都是client先发起 close操作.

                        短连接一般只会在 client/server间传递一次读写操作

     TCP长连接: client向server发起连接,server接受client连接,双方建立连接。Client与server完成一次读写之后,它们之间的连接并不会主动关闭后续的读写操作会继续使用这个连接

    1、客户端浏览器通过DNS解析到www.baidu.com的IP地址220.181.27.48,通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个HTTP会话到220.161.27.48,然后通过TCP进行封装数据包,输入到网络层。

    2、在客户端的传输层,把HTTP会话请求分成报文段,添加源和目的端口,如服务器使用80端口监听客户端的请求,客户端由系统随机选择一个端口如5000,与服务器进行交换,服务器把相应的请求返回给客户端的5000端口。然后使用IP层的IP地址查找目的端。

    3、客户端的网络层不用关心应用层或者传输层的东西,主要做的是通过查找路由表确定如何到达服务器,期间可能经过多个路由器,这些都是由路由器来完成的工作,通过查找路由表决定通过那个路径到达服务器。

    4、客户端的链路层,包通过链路层发送到路由器,通过邻居协议(IPV6,NDP)查找给定IP地址的MAC地址,然后发送ARP请求查找目的地址,如果得到回应后就可以使用ARP的请求应答交换的IP数据包现在就可以传输了,然后发送IP数据包到达服务器的地址。

    Q12.OSI,TCP/IP,五层协议的体系结构,以及各层协议

    OSI分层 (7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

    TCP/IP分层(4层):网络接口层、 网际层、运输层、 应用层。

    五层协议 (5层):物理层、数据链路层、网络层、运输层、 应用层

    每一层的协议如下:
    物理层:RJ45、CLOCK、IEEE802.3 (中继器,集线器)

    数据链路:PPP、FR、HDLC、VLAN、MAC (网桥,交换机)

    网络层:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP、 (路由器)

    传输层:TCP、UDP、SPX

    会话层:NFS、SQL、NETBIOS、RPC

    表示层:JPEG、MPEG、ASII

    应用层:FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS

    每一层的作用如下:
    物理层:通过媒介传输比特,确定机械及电气规范(比特Bit)

    数据链路层:将比特组装成帧和点到点的传递(Frame)

    网络层:负责数据包从源到宿的传递和网际互连(PackeT)

    传输层:提供端到端的可靠报文传递和错误恢复(Segment)

    会话层:建立、管理和终止会话(会话协议数据单元SPDU)

    表示层:对数据进行翻译、加密和压缩(表示协议数据单元PPDU)

    应用层:允许访问OSI环境的手段(应用协议数据单元APDU

    Q13.单播,广播,组播概念

     https://blog.csdn.net/a595364628/article/details/64123565

    Q14.一些琐碎的问题,见博客

    https://blog.csdn.net/u013408431/article/details/62442670

    Q15. Select(),poll()和epoll()的使用

    select(),poll():    https://www.cnblogs.com/dzy521/p/9394746.html

    epoll():               http://www.cnblogs.com/Anker/archive/2013/08/17/3263780.html

  • 相关阅读:
    [置顶] 利用CXF发布webService的小demo
    【转】VirtualBox下Ubuntu共享文件
    【转】你应该知道的十个VirtualBox技巧与高级特性
    【转】ubuntu 12.04英文版设置成中文版
    【转】Ubuntu安装基础教程
    【转】Ubuntu更改语言环境设置
    【转】【教程】实现Virtualbox中的XP虚拟机和主机Win7之间的共享文件夹
    【转】VIRTUALBOX导入已有.VDI文件步骤
    winhex的使用
    【转】VC MFC 如何删除文件,目录,文件夹
  • 原文地址:https://www.cnblogs.com/dzy521/p/9401546.html
Copyright © 2011-2022 走看看