计算机网络面试问题总结

       作为一名Java后台开发工程师,计算机网络知识是我们必须要去了解的,面试中也会经常被问到,所以在网络方面算是小白的我,借着这篇博文和大家一起来学习了解一下~

1.TCP和UDP有什么区别?

       TCP是传输控制协议,提供的是面向连接、可靠的字节流服务。通信双方彼此交换数据前,必须先通过三次握手协议建立连接,之后才能传输数据。TCP提供超时重传,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。UDP是用户数据报协议,是一个简单的面向无连接的协议。UDP不提供可靠的服务。在传输数据前不用建立连接故而传输速度很快。UDP主要用户流媒体传输,IP电话等对数据可靠性要求不是很高的场合。

2.TCP/IP的流量控制是什么?

       利用滑动窗口实现流量控制,如果发送方把数据发送得过快,接收方可能会来不及接收,这就会造成数据的丢失。所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。TCP为每一个连接设有一个持续计时器(persistence timer)。只要TCP连接的一方收到对方的零窗口通知,就启动持续计时器。若持续计时器设置的时间到期,就发送一个零窗口控测报文段(携1字节的数据),那么收到这个报文段的一方就重新设置持续计时器。

3.交换机与路由器有什么区别?

       工作所处的OSI层次不一样,交换机工作在OSI第二层数据链路层,路由器工作在OSI第三层网络层;寻址方式不同:交换机根据MAC地址寻址,路由器根据IP地址寻址;转发速度不同:交换机的转发速度快,路由器转发速度相对较慢。

4.ICMP协议是什么?

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

5.OSI有哪几层和它们各自的作用?

   OSI七层协议体系结构:物理层、数据链路层、网络层、运输层、会话层、表示层、应用层。

       1)物理层:提供为建立、维护和拆除物理链路所需要的机械的、电气的、功能的和规程的特性;有关的物理链路上传输非结构的位流以及故障检测指示。

  2)数据链路层:在网络层实体间提供数据发送和接收的功能和过程;提供数据链路的流控。
  3)网络层:控制分组传送系统的操作、路由选择、拥护控制、网络互连等功能,它的作用是将具体的物理传送对高层透明。
  4)传输层:提供建立、维护和拆除传送连接的功能;选择网络层提供最合适的服务;在系统之间提供可靠的透明的数据传送,提供端到端的错误恢复和流量控制。
  5)会话层:提供两进程之间建立、维护和结束会话连接的功能;提供交互会话的管理功能,如三种数据流方向的控制,即一路交互、两路交替和两路同时会话模式 。
  6)表示层:代表应用进程协商数据表示;完成数据转换、格式化和文本压缩。
  7)应用层:提供OSI用户服务,例如事务处理程序、文件传送协议和网络管理等。

6.硬件(MAC)地址的概念及作用

       概念:MAC地址就是在媒体接入层上使用的地址,也叫物理地址或硬件地址,其被固化在适配器的ROM中。可见MAC地址实际上就是适配器地址或适配器标识符。当某台计算机使用某块适配器后,适配器的标识符就成为该计算机的MAC地址。MAC地址长度为6字节(48比特),由IEEE的注册管理结构RA进行管理分配。

       作用:MAC地址是计算机的唯一标识,在数据链路层中,交换机通过识别MAC地址进行数据包的传输。

7.ARP协议的工作原理

       1)每台主机都会根据以往在网络中与其他节点的通信,在自己的ARP缓存区(ARP Cache)中建立一个ARP列表,以表示网络中节点IP地址和MAC地址的对应关系。

       2)当源节点需要将一个数据包发送到目标节点时,会首先检查自己ARP列表中是否存在该包中所包含的目标节点IP地址对应的MAC地址。如果有,则直接将数据包发送到这个MAC地址节点上;如果没有,就向本地网段发起一个ARP请求的广播包,查询此IP地址目标节点对应的MAC地址。此ARP请求数据包里包括源节点的IP地址、硬件地址,以及目标节点的IP地址。

       3)网络中所有的节点在收到这个ARP请求后,会检查数据包中的目标IP地址是否和自己的IP地址一致。如果不相同就忽略此数据包;如果相同,该节点首先将源端的MAC地址和IP地址的对应表项添加到自己的ARP列表中。如果发现ARP表中已经存在该IP地址所对应的MAC地址表项信息,则将其覆盖,然后给源节点发送一个ARP响应数据包,告诉对方自己是它需要查找的MAC地址节点。

       4)源节点在收到这个ARP响应数据包后,将得到的目标节点的IP地址和MAC地址对应表项添加到自己的ARP列表中,并利用此信息开始数据的传输。如果源节点一直没有收到ARP响应数据包,则表示ARP查询失败。

8.TCP三次握手的过程

1)客户端 发起握手,目的端点是 服务端 的端点 post_server

        a.生成一个随机数作为它的初始化发送序号 x

        b.发出一个同步报文段,SYN=1,发送序号 seq=x

        c.并进入SYN_SEND状态,等待服务器确认

2)服务端监听到端口 post_server 上有连接请求,响应

        a.生成一个随机数作为它的初始发送序号 seq = y

        b.发出同步报文字段并对主机 A 端口1的连接请求进行确认,发送ack=x+1

        c.即发送 SYN+ACK 包,此时服务器进入SYN_RECV状态

3)主机 A

        a.发出对 服务端 端口 post_server 的确认,确认序号 ack=y+1,还有seq=x+1

        b.客户端和服务器进入ESTABLISHED状态,完成三次握手

9.为什么是三次握手而不是两次握手?

  • 第一次握手客户端发,服务端知道客户端可以发消息
  • 第二次握手服务端收和发,客户端知道服务端可以接收消息和发消息
  • 第三次握手客户端收和发,服务端知道客户端可以接收消息和发消息

       三次是双向通信的最小值,也就是 SYN, SYN ACK, ACK ,两个发送、两个接收 ,其中第二次把接收和发送合在一起了,如果两次握手的话,客户端有可能因为网络阻塞等原因会发送多个请求报文,这时服务器就会建立连接,浪费掉许多服务器的资源。所以要增加第三次握手。

10.四次挥手关闭连接

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

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

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

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

11.为什么连接的时候是三次握手,关闭的时候是四次挥手?

       TCP是全双工模式,关闭连接时,当 主机 B收到主机A的FIN报文时,仅仅表示主机 A不再发送数据了但是还能接收数据。主机 B也未必全部数据都发送给A了,所以B可以立即close;也可以发送一些数据给A后,再发送FIN报文给对方来表示同意现在关闭连接,因此, 主机 BACK和FIN一般都会分开发送。

12.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响应。

13.在浏览器中输入www.baidu.com后执行的全部过程

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

14.简单描述DNS工作原理

       DNS服务器所提供的服务是完成将主机名或域名转换为IP地址的工作。为什么需要将主机名或域名转换为IP地址的工作呢?这是因为,当网络上的一台客户机访问某一服务器上的资源时,用户在浏览器地址栏中输入的是便于识记的主机名或域名。而网络上的计算机之间实现连接却是通过每台计算机在网络中拥有的唯一的IP地址来完成的,这样就需要在用户需要容易记忆的地址和计算机能够识别的地址之间有一个解析,DNS服务器便充当了地址解析的重要角色。

15.简单描述RARP

       RARP是逆地址解析协议,作用是完成硬件地址到IP地址的映射,主要用于无盘工作站,因为给无盘工作站配置的IP地址不能保存。工作流程:在网络中配置一台RARP服务器,里面保存着IP地址和MAC地址的映射关系,当无盘工作站启动后,就封装一个RARP数据包,里面有其MAC地址,然后广播到网络上去,当服务器收到请求包后,就查找对应的MAC地址的IP地址装入响应报文中发回给请求者。因为需要广播请求报文,因此RARP只能用于具有广播能力的网络。

16.运输层协议与网络层协议的区别?

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

17.http协议包括哪些请求?

    1)GET:对服务器资源的简单请求,GET用于信息获取,而且应该是安全和幂等的。
    2)POST:用于发送包含用户提交数据的请求,POST请求表示可能修改服务器上资源的请求。
    3)HEAD:类似于GET请求,不过返回的响应中没有具体内容,用于获取报头
    4)PUT:传说中请求文档的一个版本
    5)DELETE:发出一个删除指定文档的请求
    6)TRACE:发送一个请求副本,以跟踪其处理进程
    7)OPTIONS:返回所有可用的方法,检查服务器支持哪些方法
    8)CONNECT:用于ssl隧道的基于代理的请求
18.HTTP1.0/1.1区别

  HTTP1.1中才有cache-control响应头,主要用于控制信息在浏览器的缓存
  1. HTTP 1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。
  缺陷:访问一个包含有许多图像的网页文件的整个过程包含了多次请求和响应,每次请求和响应都需要建立一个单独的连接,每次连接只是传输一个文档和图像,器端每次建立和关闭连接却是一个相对比较费时的过程,并且会严重影响客户机和服务器的性能。
  2. HTTP 1.1支持持久连接,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。HTTP 1.1还允许客户端不用等待上一次请求结果返回,就可以发出下一次请求,但服务器端必须按照接收到客户端请求的先后顺序依次回送响应结果。
  HTTP 1.1还提供了Host、身份认证、状态管理和Cache缓存等机制相关的请求头和响应头。

19.DHCP协议是什么?

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

20.网络接口卡(网卡)的作用有哪些?

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

       至此计算机网络的常规问题大概都被涉及到了,当然计算机网络博大精深,只知道这些肯定是不够的哈,但我们可以先试着迈出第一步,掌握了这些就可以进行深度学习啦~

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值