深信服软件测试面经

深信服软件测试面试总结

  • 一面
  • 二面
    • 总结
    • 关于简历的心得
    • 问题答案总结(一点一点积累吧)
      • TCP与UDP区别总结:
      • TCP的流量控制与拥塞控制
        • 流量控制(滑动窗口)
        • 拥塞控制
      • linux
        • linux防火墙iptables与firewall

一面

  1. 计算机网络五层协议
  2. 有过什么实践经历
  3. wireshark的过滤语句
  4. 一直在强调有无工程性的项目
  5. 写了streamcopy函数
  6. 栈和堆的区别
  7. tcp与udp

二面

  • 问了arp中间人攻击
    • 追问如何检测中间人攻击
  • 问了什么是xss
  • 问了tcp的重传和拥塞算法
  • 问了Linux的指令
  • 是否了解Linux的防火墙
    • 追问iptables的模块与工作流程

总结

知识掌握的不扎实,都是只懂一些表面的东西,没有深入的了解,问了arp攻击一开始是很开心的,因为做过相关的实验,结果对方突然开始往下询问如何检测,答可以根据网关的mac地址检查,又问如何检测是哪台机器进行中间人攻击,慌张的想了想说,可以根据对方发来的mac地址,去查对方的ip地址,又问了如果不在同一个局域网内怎么办,欸,彻底慌了,想了想没有什么办法

关于简历的心得

  1. 现象:面试官的问题一般是看着你的简历来问
    对策:简历上一定要写自己熟悉的东西,来引导面试官,或者面试官就会随便问,你就很被动
  2. 现象:面试官的问题有时候会追问深的东西
    对策:看书一定要看的深入,对于不了解的东西也不能慌,可以说我不了解底层,我觉得应该是这样的。

问题答案总结(一点一点积累吧)

TCP与UDP区别总结:

  1. TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
  2. TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
  3. TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的
    UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
  4. 每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
  5. TCP首部开销20字节;UDP的首部开销小,只有8个字节
  6. TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道。
    TCP应用场景:当对网络通讯质量有要求的时候,整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,TCP 一般用于文件传输、发送和接收邮件、远程登录等场景。
    UDP应用场景:当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,这时就可以使用UDP。比如:QQ 语音、QQ 视频 、直播等等

TCP的流量控制与拥塞控制

流量控制(滑动窗口)

  1. 流量控制概念

    接收端处理数据的速度是有限的,如果发送方的速度太快,就会把缓冲区u打满。这个时候如果继续发送数据,就会导致丢包等一系列连锁反应。

    所以TCP支持根据接收端能力来决定发送端的发送速度。这个机制叫做流控制。

  2. TCP的流量控制是通过滑动窗口的形式实现的
    首先tcp的传输是有序传输,可以想象一把尺子,tcp的传输过程是从1到17依次传输
    深信服软件测试面经_第1张图片而滑动窗口就是尺子上的游标,尺子上的绿色代表已经发送并接受到ack包,黄色代表已经发送但未接受到ack确认包,灰色就表示还未发送的
    深信服软件测试面经_第2张图片滑动窗口的大小,由接收端B给出,发送端A可以发送在滑动窗口中的灰色数据包,同时等待黄色的ack确认包,如果此时收到4的确认包,就把滑动窗口右移一格(这个叫窗口扩大因子M),此时13就可以发送,重点滑动窗口左侧的所有包都必须是绿色的

  3. 机理

  • 接收端将自己可以接收的缓冲区大小放入 TCP 首部中的 “窗口大小” 字段, 通过ACK端通知发送端;窗口大小字段越大, 说明网络的吞吐量越高;

  • 接收端一旦发现自己的缓冲区快满了, 就会将窗口大小设置成一个更小的值通知给发送端;发送端接受到这个窗口之后, 就会减慢自己的发送速度;

  • 如果接收端缓冲区满了, 就会将窗口置为0; 这时发送方不再发送数据, 但是需要定期发送一个窗口探测数据段, 使接收端把窗口大小告诉发送端

拥塞控制

  • 拥塞:在某段时间,如果对网络中的某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要发生变化,这种情况叫阻塞

  • 拥塞控制:防止过多的数据注入到网络当中,这样可以使网络中的路由器或链路不致过载。(通过拥塞窗口处理网络拥塞现象的一种机制)

  • 4种机制

    • 慢启动
    • 拥塞避免
    • 快重传
    • 快恢复
  1. 慢启动
    当主机开始放松数据包的时候,并不知道网络的情况,此时一口气全部发送出去就可能里面导致网络拥塞,最好的办法就是试探一下
    1.cwnd拥塞控制窗口,先把cwnd设为1,没有发生拥塞,在把令cwnd=2cwnd,指数扩张
    2.指数扩张有个问题,比如说上限是800,在512的时候直接扩张为1024,幅度太大,所以设置一个慢开始门限ssthresh
    • cwnd
    • cwnd>=ssthresh使用拥塞避免算法
  2. 拥塞避免
    拥塞避免就是为了避免cwnd增长太快,所以每次发送成功后不再是cwnd=2*cnwd而是cwnd=cnwd+1

无论是慢启动还是拥塞避免一旦发生拥塞时就把慢启动门限ssthresh设为发送窗口的一半,再把cwnd设为1,重新开始

  1. 快重传算法
    • 背景:一条TCP连接有时会因为等待重传计时的超时而空闲较长时间,慢开始和拥塞避免无法解决这类问题,因此提出了快重传和快恢复的拥塞控制方法。
    • 算法:当接收方收到4号包,但是没收到3号包时,此时4号包是失序包,证明3号包应该是丢失了
    • 在收到失序包时候,原本的方案是什么也不做,等发送方在重传计时结束之后,因没有收到3号包的确认ack而重新发送
    • 快重传算法,当确认3号包丢失后,立马发送3次重复的3号包确认ack告知接受方,立马重新发一份,不要等了
  2. 快恢复
    快恢复算法是对应与快重传算法,当接收方收到三个重复的ack确认包是,得知有包丢失,判断可能是网络拥塞导致的,为避免网络拥塞,就执行慢启动和拥塞避免的流程,成分减小,慢启动门限设为发送窗口一半,如何执行慢启动算法
    但是只是一个包的丢失也不一定是网络拥塞,此时客户机就可以不执行慢启动的过程,而是直接把cwnd设为慢启动门限,然后执行拥塞避免算法

linux

linux防火墙iptables与firewall

别人总结的,有时间一定要自己写一遍

你可能感兴趣的:(面试的那些泪水)