计算机网络-面试题汇总

目录

分层

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

物理层有什么作用?

数据链路层有什么作用?

网络层有什么作用?

传输层有什么作用?

会话层有什么作用?

表示层有什么作用?

应用层有什么作用?

网络层

解释下PING命令?

传输层

TCP三次握手过程?

为什么三次握手?

TCP四次挥手过程?

为什么四次挥手?

四次挥手为什么等待2MSL?

四次挥手期间的状态?

TCP和UDP的区别?

TCP如何保证可靠传输?

TCP是大端序还是小端序?

TCP 粘包问题?

冗余确认为什么是三次冗余ACK而不是两次?

应用层

浏览器中输入url到显示的过程?

uri和url的区别?

Cookie的作用是什么?和Session有什么区别?

Http的状态码分为哪几类?

HTTP 1.0和HTTP 1.1的主要区别是什么?

http与https的区别

HTTPS建立期间有几个随机数?

其他

一台主机网络出了问题怎么去排查?

参考


分层

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

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

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

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

物理层有什么作用?

解决了物理机之间的通信,通过二进制比特流的传输来实现,二进制数据表现为电流电压上的强弱,到达目的地再转化为二进制机器码。网卡、集线器工作在这一层。

数据链路层有什么作用?

在不可靠的物理介质上提供可靠的传输,接收来自物理层的位流形式的数据,并封装成帧,传送到上一层;同样,也将来自上层的数据帧,拆装为比特流形式的数据转发到物理层。这一层在物理层提供的比特流的基础上,通过差错控制、流量控制方法,使有差错的物理线路变为无差错的数据链路。提供物理地址寻址功能。交换机工作在这一层。

网络层有什么作用?

网络地址翻译成对应的物理地址,并决定如何将数据从发送方路由到接收方,通过路由选择算法为分组通过通信子网选择最佳路径。路由器工作在这一层。

传输层有什么作用?

传输层提供了进程间的通信,传输层向高层用户屏蔽了下面网络层的核心细节,使应用程序看起来像是在两个传输层实体之间有一条端到端的逻辑通信信道。

会话层有什么作用?

  • 建立会话:身份验证,权限鉴定等;
  • 保持会话:对该会话进行维护,在会话维持期间两者可以随时使用这条会话传输局;
  • 断开会话:当应用程序或应用层规定的超时时间到期后,OSI会话层才会释放这条会话。

表示层有什么作用?

  • 网络的安全和保密管理;
  • 文本的压缩与打包;
  • 虚拟终端协议(VTP)。

应用层有什么作用?

提供应用层协议,如HTTP协议,FTP协议等等,方便应用程序之间进行通信。

网络层

解释下PING命令?

Ping域名、Ping ip

主机A ping 主机B ---> 构建 ICMP 包 ----> 构建 IP 分组 ----> 解析硬件地址封装成帧 ----> 物理层发送 ----> 网络层传输 ----> 到达主机B ----> 提取IP数据包交给IP层协议 ----> 提取信息交给ICMP协议,构建ICMP应答包 ----> 发送给主机A

ICMP 请求发送和应答报文 type是 8和0

传输层

TCP三次握手过程?

查看:网络-TCP协议详解自学笔记(例题、代码、实战),有图片,更方便

为什么三次握手?

client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求。于是就向client发出确认报文段,同意建立连接。假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了。由于现在client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送数据。但server却以为新的运输连接已经建立,并一直等待client发来数据。这样,server的很多资源就白白浪费掉了。采用“三次握手”的办法可以防止上述现象发生。例如刚才那种情况,client不会向server的确认发出确认。server由于收不到确认,就知道client并没有要求建立连接。”。主要目的防止server端一直等待,浪费资源。

另外一个原因,第三次握手,服务器可以确认自己发送能力和接收能力正常,对方发送能力和接收能力正常。

TCP四次挥手过程?

查看:网络-TCP协议详解自学笔记(例题、代码、实战),有图片,更方便

为什么四次挥手?

因为TCP是一个全双工协议,必须单独拆除每一条信道。4次挥手的目的是终止数据传输,并回收资源,此时两个端点两个方向的序列号已经没有了任何关系,必须等待两方向都没有数据传输时才能拆除虚链路,不像初始化时那么简单。因此必须单独分别在一个方向上终止该方向的数据传输。

如果是三次挥手,会怎么样?三次的话,被动关闭端在收到FIN消息之后,需要同时回复ACK和Server端的FIN消息。如果Server端在该连接上面还有数据要处理,那么Server端还需要等待一段时间才可以关闭另外一个方向的连接,那么这样的三次挥手就不能满足条件。

四次挥手为什么等待2MSL?

客户端等待两倍的MSL(Maximum Segment Lifetime,报文段最长寿命)时间后关闭连接,因为如果服务器端没有收到客户端回复的确认报文段会再次发出连接释放报文段,2MSL后没有收到服务器端再次发出的连接释放报文段,说明服务器端已关闭

四次挥手期间的状态?

CLOSE_WAIT、FIN_WAIT_1、FIN_WAIT_2、TIME_WAIT、LAST_ACK、CLOSED。详细描述见:网络-TCP协议详解自学笔记(例题、代码、实战)

TCP和UDP的区别?

TCP和UDP的区别
比较项 TCP UDP
面向连接
可靠/安全
速度
面向 字节流 报文
应用范围 大量数据 少量数据

TCP如何保证可靠传输?

  • 校验和: TCP 将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP 将丢弃这个报文段和不确认收到此报文段。
  • TCP 的接收端会丢弃重复的数据。
  • 确认应答与序列号:序列号:TCP传输时将每个字节的数据都进行了编号,这就是序列号。确认应答:TCP传输的过程中,每次接收方收到数据后,都会对传输方进行确认应答。也就是发送ACK报文。这个ACK报文当中带有对应的确认序列号,告诉发送方,接收到了哪些数据,下一次的数据从哪里发。序列号的作用不仅仅是应答的作用,有了序列号能够将接收到的数据根据序列号排序,并且去掉重复序列号的数据。这也是TCP传输可靠性的保证之一。

  • 超时重传: 当 TCP 发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。

  • 流量控制: TCP 连接的每一方都有固定大小的缓冲空间,TCP的接收端只允许发送端发送接收端缓冲区能接纳的数据。当接收方来不及处理发送方的数据,能提示发送方降低发送的速率,防止包丢失。TCP 使用的流量控制协议是可变大小的滑动窗口协议
  • 拥塞控制: 当网络拥塞时,减少数据的发送。
  • ARQ协议: 也是为了实现可靠传输的,它的基本原理就是每发完一个分组就停止发送,等待对方确认。在收到确认后再发下一个分组。

TCP是大端序还是小端序?

所有网络协议都是采用大端的方式来传输数据的,所以大端方式又称为网络字节序。

TCP 粘包问题?

TCP粘包指发送方发送的若干包数据到达接收方时粘成了一包,从接收缓冲区来看,后一包数据的头紧接着前一包数据的尾,出现粘包的原因是多方面的,可能是来自发送方,也可能是来自接收方。

解决办法:

1.设置TCP_NODELAY屏蔽Nagle算法

2.添加规定,应用层按规定接受

格式化数据:每条数据有固定的格式(开始符,结束符),这种方法简单易行,但是选择开始符和结束符时一定要确保每条数据的内部不包含开始符和结束符。
发送长度:发送每条数据时,将数据的长度一并发送,例如规定数据的前4位是数据的长度,应用层在处理时可以根据长度来判断每个分组的开始和结束位置。

冗余确认为什么是三次冗余ACK而不是两次?

冗余确认是原因可能是乱序到达和丢包,两次的话可能是乱序到达造成的,三次的话绝大部分是丢包了,需要快速重传。

应用层

浏览器中输入url到显示的过程?

1、查询DNS,获取域名对应的IP。
(1)检查浏览器缓存、检查本地hosts文件是否有这个网址的映射,如果有,就调用这个IP地址映射,解析完成。
(2)如果没有,则查找本地DNS解析器缓存是否有这个网址的映射,如果有,返回映射,解析完成。
(3)如果没有,则查找填写或分配的首选DNS服务器,称为本地DNS服务器。服务器接收到查询时:
如果要查询的域名包含在本地配置区域资源中,返回解析结果,查询结束,此解析具有权威性。
如果要查询的域名不由本地DNS服务器区域解析,但服务器缓存了此网址的映射关系,返回解析结果,查询结束,此解析不具有权威性。
(4)如果本地DNS服务器也失效:
如果未采用转发模式(迭代),本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后,会判断这个域名(如.com)是谁来授权管理,并返回一个负责该顶级域名服务器的IP,本地DNS服务器收到顶级域名服务器IP信息后,继续向该顶级域名服务器IP发送请求,该服务器如果无法解析,则会找到负责这个域名的下一级DNS服务器(如百度一下,你就知道)的IP给本地DNS服务器,循环往复直至查询到映射,将解析结果返回本地DNS服务器,再由本地DNS服务器返回解析结果,查询完成。
如果采用转发模式(递归),则此DNS服务器就会把请求转发至上一级DNS服务器,如果上一级DNS服务器不能解析,则继续向上请求。最终将解析结果依次返回本地DNS服务器,本地DNS服务器再返回给客户机,查询完成。
2、得到目标服务器的IP地址及端口号(http 80端口,https 443端口),会调用系统库函数socket,请求一个TCP套接字。客户端向服务器发送HTTP请求报文
(1)应用层:客户端发送HTTP请求报文。
(2)传输层:(加入源端口、目的端口)建立连接。实际发送数据之前,三次握手客户端和服务器建立起一个TCP连接。
(3)网络层:(加入IP头)路由寻址。
(4)数据链路层:(加入frame头)传输数据。
(5)物理层:物理传输bit。
3、服务器端经过物理层→数据链路层→网络层→传输层→应用层,解析请求报文,发送HTTP响应报文
4、关闭连接,TCP四次挥手。
5、客户端解析HTTP响应报文,浏览器开始显示HTML

uri和url的区别?

Cookie的作用是什么?和Session有什么区别?

Cookie 和 Session都是用来跟踪浏览器用户身份的会话方式,但是两者的应用场景不太一样。
Cookie一般用来保存用户信息

  1. 我们在 Cookie 中保存已经登录过得用户信息,下次访问网站的时候页面可以自动帮你填写登录的一些基本信息;
  2. 一般的网站都会有保持登录也就是说下次你再访问网站的时候就不需要重新登录了,这是因为用户登录的时候我们可以存放了一个 Token 在 Cookie 中,下次登录的时候只需要根据 Token 值来查找用户即可(为了安全考虑,重新登录一般要将 Token 重写);
  3. 登录一次网站后访问网站其他页面不需要重新登录。

Session 的主要作用就是通过服务端记录用户的状态。典型的场景是购物车,当你要添加商品到购物车的时候,系统不知道是哪个用户操作的,因为 HTTP 协议是无状态的。服务端给特定的用户创建特定的 Session 之后就可以标识这个用户并且跟踪这个用户了。
区别

  1. cookie数据存放在客户的浏览器上,session数据放在服务器上。
  2. cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗考虑到安全应当使用session。
  3. session会在一定时间内保存在服务器上。当访问增多,会比较占用服务器的性能考虑到减轻服务器性能方面,应当使用COOKIE。
  4. 单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
  5. 建议:将登陆信息等重要信息存放为SESSION  其他信息如果需要保留,可以放在COOKIE中

Http的状态码分为哪几类?

  • 1**     信息,服务器收到请求,需要请求者继续执行操作
  • 2**     成功,操作被成功接收并处理
  • 3**     重定向,需要进一步的操作以完成请求
  • 4**     客户端错误,请求包含语法错误或无法完成请求
  • 5**     服务器错误,服务器在处理请求的过程中发生了错误

详见:网络-http协议学习笔记(消息结构、请求方法、状态码等)

HTTP 1.0和HTTP 1.1的主要区别是什么?

http1.0

  • 规定了请求头和请求尾,响应头和响应尾(get post)
  • 每一个请求都是一个单独的连接,做不到连接的复用

http1.1的改进

  • HTTP1.1默认开启长连接,在一个TCP连接上可以传送多个HTTP请求和响应。使用 TCP 长连接的方式改善了 HTTP/1.0 短连接造成的性能开销。
  • 支持管道(pipeline)网络传输,只要第一个请求发出去了,不必等其回来,就可以发第二个请求出去,可以减少整体的响应时间。
  • 服务端无法主动push

简述http2.0的改进?

  • 提出多路复用。多路复用前,文件是串行传输的,请求a文件,b文件只能等待,并且连接数过多。引入多路复用,a文件、b文件可以同时传输。
  • 引入了二进制数据帧。其中帧对数据进行顺序标识,有了序列id,服务器就可以进行并行传输数据。

http与https的区别

  • http所有传输的内容都是明文,并且客户端和服务器端都无法验证对方的身份。
  • https具有安全性的ssl加密传输协议,加密采用对称加密, https协议需要到CA申请证书,一般免费证书很少,需要交费。

HTTPS建立期间有几个随机数?

3个

其他

一台主机网络出了问题怎么去排查?

物理方面,检查电源,查看网线是否插好

登录路由器查看同网段其他主机,可能遭到其他主机arp中毒攻击

查看网络配置,检查网关,子网掩码等

应用方面,切换浏览器,查看是否开启了代理

参考

常见面试题整理--计算机网络篇(每位开发者必备)

计算机网络常见面试题

计算机网络之面试常考

SSL/TLS协议运行机制的概述

《计算机网络第七版 谢希仁》

你可能感兴趣的:(大厂面试,网络,面试)