首页 > 其他分享 >99%网工都会遇到的经典面试问题

99%网工都会遇到的经典面试问题

时间:2023-10-30 15:33:03浏览次数:32  
标签:发送 ACK 报文 SYN TCP 99% 面试 网工 连接

①问题:介绍TCP连接的三次握手?追问:为什么TCP需要握手三次?

三次握手:

第一步:A向B发送一个SYN报文表示希望建立连接

第二步:B收到A发过来的数据包后,通过SYN得知这是一个建立连接的请求,于是发送ACK确认,由于TCP的全双工模式,故B向A还应该发送一个SYN报文,表示希望和A建立连接第三步:A收到B发送来的SYN报文后,A向B发送ACK表示A收到了B的SYN。

追问:

1、保证双方都具有接受和发送报文的能力

2、防止请求超时导致脏连接

因为报文生存时间可能会超过TCP请求超时时间,假如两次握手就可以建立连接,A的报文由于一些问题滞留在网络中,当报文超时但被释放连接后,此超时连接传输到B,B以为是A创建连接的新请求,然后确认连接。但是A知道这是超时连接的,所以直接丢弃了B的确认数据,导致只是B单方面建立了连接。并一直等待A发送数据,B的资源也就浪费了。

②问题:介绍TCP断开的四次挥手?追问:为什么TCP的挥手需要四次?


四次挥手:

第一步:A向B发送FIN和ACK报文表示希望断开连接

第二步:B收到A发送的请求后会发送ACK表示确认断开。

第三步:此时B处于半连接状态,B会发送FIN和ACK请求断开与A之间的连接

第四步:A收到B发送的断开请求会发送ACK表示确认断开


追问:

确保数据能够全部传输完成

四次才能保证所有的连接全部断

③问题:TCP的syn攻击的过程?追问:怎么防御?

攻击原理:

B收到SYN报文后,会将相应的半连接记录添加到队列中,之后等待接收握手包,如果握手成功就会将此半连接记录从队列中删除;或者当B未收到A的确认包,会重新发送请求包,直到超时才会将此条记录从半连接队列删除。

服务器的TCP协议栈中存储的半连接记录是有限的,当服务器接收到S YN型的DOS攻击后,队列会很快充满,客户端在短时间内伪造大量的不存在的IP地址,向服务器不断发送SYN报文,服务器回复确认包,并等待客户的确认,由于源地址是不存在的,服务器需要不断的重发直至超时,这些伪造的SYN包将长时间占用未连接队列,正常的SYN请求被丢弃,目标系统运行缓慢严重者引起网络堵塞甚至系统瘫痪,服务器随后就不再接受新的网络连接,从而造成正常的客户端无法访问服务器的情况发生。

防御:

1、增大队列SYN最大半连接数,linux中最大连接数为256

2、减少半连接时的超时时间

3、过滤可疑地址

4、利用SYN cookie防御DOS攻击

④问题:什么是滑动窗口? 追问:为什么会出现滑动窗口?

滑动窗口:

用来告诉发送端可以发送数据的大小或者说是窗口标记了接收端缓冲区的大小。窗口指一次批量发送多少数据。

为何会出现滑动窗口:

在确认应答的策略中,每发送一次数据段都需要一个ACK确认应答,收到ACK后再发送下一个数据段,这样每次都需要确认,性能较差。采用滑动窗口的机制就会一次发送多条数据,提高传输性能


⑤问题:TCP是如何通过滑动窗口协议实现流量控制和拥塞控制的?

通过设置滑动窗口的大小,用ACK告知发送端自己缓存区的大小,从而使发送端以合适的速度发送,实现流量控制;

发送端根据网络拥塞情况确定的窗口值。发送端在真正确定发送窗口时,应该取“通知窗口”和“拥塞窗口”的最小值。


⑥问题:什么是CDN,CDN是如何工作的?

一问:

CDN是内容分发网络

CDN是在用户和服务器之间增加高速缓存层,通过接管DNS实现,将用户的请求引导到高速缓存服务器上获取源服务器的数据

⑦问题:什么是DNS ? 说说DNS解析过程?

一问:

DNS为域名系统,是因特网上作为域名和IP地址相互映射的分布式数据库


二问:

1.浏览器检查缓存中有没有这个域名对应的解析过的ip地址,如果有该解析过程将会结束。

2.检查本地的hosts文件是否有这个网址映射关系

3.如果hosts种没有这个域名映射,查找本地DNS解析器缓存,如果有直接返回

4.通过首选DNS服务器(本地域名服务器),以递归或循环的方式查询域名对应的IP地址并返回。(顶级域,二级域,三级域)


⑧问题:为什么连接的时候是三次,挥手的时候是四次?

一问:

1、假设连接的时候是两次,那么A滞留在网络中的报文经过一段时间传输到B,B会确认此连接。B单方面建立了连接,A会丢弃B的确认数据报文。B会一直等待A发送数据,造成B资源的浪费。

二问:

1、确保数据能够全部传输完成

A发送FIN后,B有可能正在向A传输数据,所以不会马上关闭,当数据全部传输完成后再发送ACK表示确认断开。


⑨问题:描述TCP和UDP的区别?

UDP:

无连接的,即发送数据之前不需要建立连接不保证可靠的交付,同时不使用拥塞控制

U支持一对一、一对多、多对一、多对多的交互通信首部只有8字节


TCP:

面向连接的传输层协议提供可靠的交付能力仅支持一对一通信

支持全双工通信(允许数据在两个方向上同时传输)首部最低有20字节

问题:如何用UDP实现可好传输?

引入序列号保证数据的顺序、确认机制保证数据能到达对端、重传机制保证超时引起的数据丢弃。


关注公众号↑↑↑:IT运维大本营,获取《网工大礼包》


标签:发送,ACK,报文,SYN,TCP,99%,面试,网工,连接
From: https://blog.51cto.com/atomguo/8089648

相关文章

  • 前端面试题整理(2.0)
    Watch与计算属性的选择在某些情况下,watch和计算属性可以达到相同的效果。如果需要在数据变化时执行异步操作或有副作用时,应该使用watch。而如果进需要根据数据进行简单的变换和计算,则更适合使用计算属性。什么是路由:前端路由指的是一种将浏览器URL与特定页面或视图关联起来的技术。......
  • 定时器相关面试问题
    非活动连接,定时器怎么实现的,最小堆和升序链表(会不会修改,有点忘了,应该是会改的,我记得有umap,就说了)怎么设计分布式定时器(单实例定时器挂了怎么处理),主节点和从节点逻辑不一样假设LRU缓存的数据,需要过期时间,怎么设计(答:和webserver的定时器差不多,每个缓存开启一个定时器,使用时间堆......
  • 面试必刷TOP101:16、删除有序链表中重复的元素-II
    一、题目二、题解importjava.util.*;publicclassSolution{publicListNodedeleteDuplicates(ListNodehead){//空链表if(head==null)returnnull;ListNoderes=newListNode(0);//在链表前加一个表头......
  • Java面试题小练(一)
    java面向对象的三大特征封装,继承,多态封装说明一个类行为和属性与其他类的关系,低耦合,高内聚;继承是父类和子类的关系,多态说的是类与类的关系封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据。外界对他的内部细节是隐藏的,暴露在外界的只是它......
  • 多年没有遇到如此流畅的面试了
    美东一公司的面试,有多年没有遇到如此流畅的面试了。本来说的面试时间是30分钟,这个还是第一轮处于电话面试那种,但是不知道为什么最后面试整个时间都延长到了快一个小时,貌似双方都还继续沟通下,有点意犹未尽的感觉。互相了解通常第一轮面试的过程都是互相了解。这个公司本身有自己......
  • 计算机网络面试常问问题--保研及考研复试
    前言:Hello大家好,我是Dream。今年保研上岸山东大学人工智能专业(经验贴),现在将我自己的专业课备考知识点整理出来,分享给大家,希望可以帮助到大家!这是重点知识总结,如果你想看全部的内容的话,这里我给大家都已经打包好了,需要自取:保研复试全套材料+408专业课知识总结及思维导图(点击即可......
  • 面试题:MySQL事务的ACID如何实现?
    大家好,我是【码老思】,事务是一个数据库绕不开的话题,今天和大家一起聊聊。事务是什么?事务(Transaction)是并发控制的基本单位。所谓的事务呢,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。在介绍事务的特性之前,我们先看下MySQL的逻辑架构,如......
  • 超全面!23年秋招1000+道Android中大厂面试题集锦(含答案)
    前言整理这些面试题源于在微信群和几个刚入职的小伙伴们的一次讨论,很多小伙伴谈了自己的面试经历和体会,很多人最初鄙视刷题党,觉得开发技能最重要,但在短暂的面试过程中很挫败。转而去看面试题,但是网上面试题太多但又不全,查找很不方便,多是看过的又看,看十道才能看到面试的题目,极大的浪......
  • 为啥面试完都说「回去等通知」?
    1一切皆可能因为确实还不知道确切结果,不到最后一刻,一切皆可能。大部分招聘即使进行到最后一面,也没法当场就有最终结论:有的还需别的领导和专家再讨论判断,有的则需要再走一系列冗长的臭流程就算那些当场就被认为不合适,没通过面试的人,也不能马上就给结论为啥呢?有些企业不会......
  • 代码随想录第四天 | 24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题
    question1:SwapNodesinPairshttps://leetcode.cn/problems/swap-nodes-in-pairs/IwasalittleconfusedatfirstbecauseI'mthinkingwhethershouldIcreatanewhead,butsoonIcameupwiththeideaofcreatpre=Noneandwithan'if-els......