软件测试面试题_计算机网络问题总结

图片[1]-软件测试面试题_计算机网络问题总结-软件测试圈

OSI七层网络结构是如何分层的

OSI 七层网络协议自底向上可以分为:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。

作用分别为:

应用层:提供用户接口,供应用程序使用,具有代表性的协议有:

  • HTTP(用于实现WWW服务)
  • FTP(用于实现交互式文件传输功能)
  • SMTP(用于实现电子邮箱传送功能)
  • POP3(离线邮件处理)
  • DNS(用于实现网络设备名字到IP地址映射的网络服务)。

表示层:用于进行数据表示、转换、压缩和加密等。

会话层: 建立起两端之间的会话关系,并负责数据的传送。

传输层:提供端对端的接口,确保传输的质量。常见的协议有:

  • TCP(传输控制协议,这是一种面向连接的、可靠的、基于字节流的传输层通信协议)
  • UDP(用户数据报,UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法)

网络层:为数据包进行路由和寻址,这一层的代表性协议是:

  • IP协议(网际互连协议,提供端对端连接解决方案,为主机提供一种无连接、不可靠的、尽力而为的数据包传输服务)

数据链路层:将由物理层传来的未经处理的位数据包装成数据帧,并提供错误检测功能。

物理层:以二进制数据的形式,传输比特流,对应网线、网卡、集线器、中继器等物理设备。

TCP/IP四层模型,每一层的作用分别为:

应用层:顶层是应用层,负责处理特定的应用程序消息,常见的协议有:HTTP、FTP、SMTP等等。四层和七层的区别在于,TCP/IP 四层模型把 OSI 七层模型中提到的应用层、表示层和会话层进行了合并。

传输层 主要为两台主机上的应用程序提供端到端的通信。在 TCP/IP 协议族中,常见的有两种传输协议:TCP(传输控制协议)和UDP(用户数据报协议)。

网络层:处理分组在网络中的活动,例如分组的选路。在TCP/IP协议族中,网络层协议包括 IP 协议(网际互联协议) ,ICMP 协议(Internet互联网控制报文协议) ,以及 IGMP 协议(Internet组管理协议)。

链路层 也称作数据链路层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。这一层大约相当于OSI模型中的物理层和链路层的总和。

TCP协议是如何保证可靠传输的

  1. 应用数据被分割成 TCP 认为最适合发送的数据块。

  2. TCP 给发送的每一个包进行编号,接收方对数据包进行排序,把有序数据传送给应用层。

  3. 校验和: TCP 将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP 将丢弃这个报文段和不确认收到此报文段。

  4. TCP 的接收端会丢弃重复的数据。

  5. 流量控制: TCP 连接的每一方都有固定大小的缓冲空间,TCP的接收端只允许发送端发送接收端缓冲区能接纳的数据。当接收方来不及处理发送方的数据,能提示发送方降低发送的速率,防止包丢失。TCP 使用的流量控制协议是可变大小的滑动窗口协议:

  • 接收方每次收到数据包,可以在发送确定报文的时候,同时告诉发送方自己的缓存区还剩余多少是空闲的,我们也把缓存区的剩余大小称之为接收窗口大小,用变量win来表示接收窗口的大小。

  • 发送方收到之后,便会调整自己的发送速率,也就是调整自己发送窗口的大小,当发送方收到接收窗口的大小为0时,发送方就会停止发送数据,防止出现大量丢包情况的发生。

  1. 拥塞控制: 当网络发生拥堵时,如果继续发送大量数据包,可能会导致数据包时延和丢失,这个时候就会触发TCP的重传机制,但是重传又会使得网络负担更重,将会导致更大的延迟和更多的丢包。拥塞控制就是为了解决网络繁忙时的数据传输问题,避免“发送方”的数据填满整个网络。
  • TCP的拥塞控制算法包括了慢开始(slow start)、拥塞避免(congestion avoidance)、快速重传(fast retransmit)和快速恢复(fast recovery)四种。

  • 慢开始:发送方维持一个叫做拥塞窗口cwnd(congestion window)的状态变量。拥塞窗口的 大小取决于网络的拥塞程度,并且动态地在变化。慢开始算法的思路是:不要一开始就发送大量的数据,先探测一下网络的拥塞程度,也就是说由小到大逐渐增加拥塞窗口的大小,发送方每收到一个ACK,拥塞窗口cwnd的大小就会加1,cwnd的窗口大小呈现指数性增长。

  • 拥塞避免:当拥塞窗口 cwnd 超过慢开始的门限(ssthresh)时,拥塞窗口的大小由指数增长变成线性增长。

  • 快速重传:随着拥塞窗口逐渐变大,慢慢的就会开始出现丢包状况,如果此时触发了重传机制,则会触发“拥塞发生算法”,而拥塞发生算法比较常见的是快速重传,当接收方发现丢了一个中间包的时候,发送三次前一个包的ACK,于是发送端就会快速重传,不用等待超时时间再重传。

  • 快速恢复:快速恢复算法一般结合快速重传使用,当发送方连续收到三个重复确认时,就执行“乘法减小”算法,把ssthresh门限减半(为了预防网络发生拥塞)。但是接下去并不执行慢开始算法 考虑到如果网络出现拥塞的话就不会收到好几个重复的确认,所以发送方现在认为网络可能没有出现拥塞。所以此时不执行慢开始算法,而是将cwnd设置为ssthresh减半后的值,然后执行拥塞避免算法,使cwnd缓慢增大。

  1. ARQ协议: 也是为了实现可靠传输的,它的基本原理就是每发完一个分组就停止发送,等待对方确认。在收到确认后再发下一个分组。

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

Cookie和Session的区别是什么

位置不同:cookie在客户端浏览器,session在服务器上

容量不同:单cookie<=4kb,一个站点最多保存20个。session没有限制,不过为了性能考虑,有session删除机制

存储方式不同:cookie中只能保管ASCII字符串,并需要通过编码方式存储为Unicode字符或者二进制数据;session中能够存储任何类型的数据,包括且不限于string,int,list,map等。

隐私策略不同:cookie对客户端是可见的,别有用心的人可以分析存放在本地的cookie并进行cookie欺骗,所以它是不安全的;session存储在服务器上,客户端无法获取,不存在敏感信息泄漏的风险。

服务器压力不同:cookie保管在客户端,不占用服务器资源;为了获得更高的存取速度,服务器一般把Session放在内存里。每个用户都会有一个独立的Session。如果Session内容过于复杂,当大量客户访问服务器时可能会导致内存溢出。

TCP协议和UDP协议的区别是什么

UDP 是一种无状态服务,在传送数据之前不需要先建立连接,远地主机在收到 UDP 报文后,不需要给出任何确认,是一种不可靠的传输方式虽然 UDP 不提供可靠交付,但在某些情况下 UDP 确是一种最有效的工作方式(一般用于即时通信),比如: QQ 语音、 QQ 视频 、直播等等。

TCP 提供面向连接的服务。在传送数据之前必须先建立连接,数据传送结束后要释放连接。 TCP 不提供广播或多播服务。由于 TCP 要提供可靠的,面向连接的传输服务(TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源),这一难以避免增加了许多开销,如确认,流量控制,计时器以及连接管理等。这不仅使协议数据单元的首部增大很多,还要占用许多处理机资源。TCP 一般用于文件传输、发送和接收邮件、远程登录等场景。

HTTP网络抓包的原理,能讲一下吗

HTTP抓包主要就是利用一些网络封包截取工具,在客户端和服务端之间建立HTTP请求代理(中间人),从而截取到客户端向服务端发起的请求以及拦截服务端向客户端发送的响应数据。

聊一聊 HTTP 1.0、HTTP 1.1 和 HTTP 2.0 有哪些区别

感觉东西还是有点多 问问老师哪些比较重要

  • 缓存处理
  • 带宽优化及网络连接的使用
  • 错误通知的管理
  • Host头处理
  • 长连接

HTTP和HTTPS的区别在哪里

端口:http默认80、https默认443

安全性(理解图,说出发送请求过程):

  • http运行在TCP上,传递明文,客户端和服务端都无法验证对方身份

  • https是运行在SSL/TSL之上的http协议,SSL/TSL运行在TCP上,传输内容加密,数据内容采用对称加密

    但是对称加密的密钥用服务器下发数字证书(公钥)进行了非对称加密。https资源开销大

请谈谈 GET 请求和 POST 请求的差别

  • get请求,post提交,一般创建或者修改
  • 请求参数拼接到url,post放在报文请求体(body)里
  • get会受url长度限制
  • get请求一般不会改变服务器上的资源,post会(rest规范,幂等)
  • 接上条get请求的资源能够缓存,post是必须要从服务器那获取更新的资源

不同版本的http协议请求方法有差异,了解一下

post和get请求都不安全,因为本身http协议传送的就是明文,post请求靠抓包也能找到信息

安全由SSL协议来保证

url有长度限制,是说的浏览器对url有长度限制,http对此并无限制,post则是看服务器对传输数据是否限制大小,不过受影响小些

URL 和 URI 的区别是什么

URI:统一资源标识符 URL:统一资源定位符 URN:统一资源名称

URL是一种URI,它标识一个互联网资源,并指定对其进行操作或获取该资源的方法。

URN定义某事物的身份,而URL提供查找该事物的方法。URN仅用于命名,而不指定地址。

在浏览器中输入url地址到最终显示网页,中间经历了哪些过程

  • 当一个浏览器访问一个URL时,浏览器搜索框输入网址,域名转换为IP地址进行访问,

    首先请求本地的DNS解析器

  • 本地DNS解析器先查缓存,没有就访问本地DNS服务器(部署在局部网络或所处的运营商的网络中)

    本地DNS服务器也会检查是否有缓存

  • 假如本地DNS服务器也没有缓存,则会去请求各大域名服务器,去获取真实要访问的IP地址。

  • 当客户端拿到服务器的IP地址之后,就可以对服务器进行访问,一般请求会先走到服务器集群的接入网关,也就是反向代理服务器(例如:Nginx)。

  • Nginx根据域名再把请求路由到相应的后端服务上面(例如:图中是后端服务2)。后端服务接收到请求之后,根据请求方式、Header以及请求参数,开始处理请求。

  • 后端服务器根据请求参数对数据库进行查询,并将查询到的数据进行封装,封装成响应包。

  • 响应包原路返回,最终返回给浏览器,有些静态资源是部署在CDN上,也是通过反向代理服务器去获取到相应的静态资源

  • 浏览器获取到数据以及资源后,对数据进行模版渲染,并最终呈现给客户端完整的网页。

了解CDN么?请简单介绍一下CDN是什么

CDN的全称是Content Delivery Network,即内容分发网络。

CDN的关键技术主要有内容存储和分发技术。

CDN 可以进行缓存的内容有很多种, 最擅长的是缓存静态数据,除此之外还可以缓存流媒体数据(需要注意防盗链)。它也支持动态数据的缓存,一种是边缘计算模式,既然数据是动态生成的,所以数据的逻辑计算和存储,也相应的放在边缘的节点。定时从源数据那里同步存储的数据,然后在边缘进行计算得到结果;另一种是链路优化模式。数据不是在边缘计算生成的,而是在源站生成的,但是数据的下发则可以通过 CDN 的网络,对路径进行优化。因为 CDN 节点较多,能够找到离源站很近的边缘节点,也能找到离用户很近的边缘节点。中间的链路完全由 CDN 来规划,选择一个更加可靠的路径,使用类似专线的方式进行访问。

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
相关推荐
  • 暂无相关文章
  • 评论 抢沙发

    请登录后发表评论