网络面试100问(一)

本文详细探讨了网络面试中的核心问题,包括TCP的三次握手和四次挥手过程,TCP的SYN攻击及其防御策略,以及连接建立和关闭的差异。此外,还涉及TCP的流量控制、拥塞控制机制,TCP与UDP的区别,TCP的各种定时器,CDN的工作原理,DNS解析流程,以及DHCP的工作过程。内容深入浅出,是网络面试准备的宝贵资料。
摘要由CSDN通过智能技术生成

目录

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

2、介绍TCP断开的四次挥手,追问:为什么TCP的挥手需要四次?

3、TCP的SYN攻击的过程?追问:怎么防御?

4、为什么连接的时候是三次,关闭的时候却是四次?

5、TCP是如何实现流量控制和拥塞控制的?

6、描述TCP和UDP的区别?

7、TCP有哪些定时器?

8、什么是CDN?CDN是如何工作的?

9、什么是DNS?说说DNS的解析过程?

10、什么是DHCP?描述工作过程?


 

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

第一次握手:客户端向服务端发送一个SYN同步标志位置1的数据包来,表明希望建立TCP连接;初始序列号为X,保存在包头的序列号字段里。

第二次握手:服务端收到数据包后,通过SYN的置位得知,这是一个建立TCP的请求;服务端会返回确认包(ACK),再次基础上,并将SYN同步标志位和ACK标志位均置1;确认序列号为X+1,表示收到了客户端的请求;而这个包的序列号为Y。

第三次握手:客户端收到服务端的回包,会再返回一个确认包,SYN标志位置0,ACK标志位置1,确认序列号为Y+1,表示已经收到服务器的回包。

原因:

从信息对等角度来看:通信双方只有确认4类信息才能建立连接,即我方的收和发能力与对端的收和发能力均正常。如果只有两次握手,站在客户端角度没有什么,但是服务端无法确定,自己的发送能力和对端的接收能力是否正常。因此需要第三次的确认。

从防止超时角度来看:如果只有两次握手,服务端发出的应答包,客户端到底收到没有,如果收到服务端也无从得知,如果没收到,服务端就需要重发,这就需要这个第三次握手来解决这个问题。

2、介绍TCP断开的四次挥手,追问:为什么TCP的挥手需要四次?

第一次断开:作为主动关闭连接的一方,客户端会发送一个FIN置位的数据包(其中头部的FIN位置为1,序列号为U)。

第二次断开:服务端收到客户端的断开请求,会回复一个ACK包,序列号为V,ACK确认号为U+1,其中ACK位置为1。

第三次断开:当服务端准备好断开后,会再次向客户端发送一个FIN置位的数据包,其中FIN位置为1,序列号为W。

第四次断开:客户端收到服务端的FIN置位的数据包后,会回复一个确认包(ACK包),其中确认号为W+1,序列号为U+1。

经过2MSL时间后关闭连接;被动关闭方收到主动关闭方的ACK后,关闭连接。

原因:

有了三次握手的基础,我们对四次挥手就不难理解,因为TCP要实现可靠的连接关闭,这里客户和服务器分别向对方发送了一个FIN包用来断链,但是为了告知对方本端顺利的收到了FIN包,会分别对这个FIN报文进行ACK的确认,这就需要四次断开来实现,少一次都不行。

3、TCP的SYN攻击的过程?追问:怎么防御?

利用TCP协议缺陷,攻击者向被攻击者的主机大量伪造的TCP请求连接,从而使被攻击者的服务器资源耗尽的攻击方式。也就是我们所熟知的DOS攻击。

防御:

网络终端对策:

1、增加TCP backlog队列

2、减少SYN-RECEIVED的时间

3、SYN 缓存

4、SYN cookie机制

基于网络的对策:

1、防火墙与代理

一个有防火墙或者代理的设备在网络中就能够通过两种方法缓冲SYN洪泛攻击,一种是对连接发起人伪装SYN-ACK包,另一种是对服务器伪装ACK包

如果连接发起人是合法的,防火墙/代理就会收到ACK,然后在它自己和服务器之间建立连接并伪装连接发起人的地址。防火墙/代理将连接双方分割开。这种分割能够抵御SYN洪泛攻击,因为服务器方根本没接受收过攻击者的SYN。只要防火墙/代理实现了一些基于TCP的防御策略,比如SYN cookies或SYN 缓存,他就能够保护所有在其后面的服务器免于SYN洪泛攻击。

另一种是响应SYN-ACK的伪装ACK包通过防火墙/代理到达服务器。这种伪装防止服务器的TCB一直停留在SYN-RECEIVED状态,因此保证了backlog队列中的空余空间。防火墙/代理将会停留等待一段时间,如果连接发起人正确的ACK没有被检测到,它将会通过伪装的TCP RET报文使服务器释放TCB。对合法的连接,数据包流能够在没有防火墙/代理的影响下继续进行。这种方法相比于上面伪装SYN-ACK的方法更具吸引力,因为当合法连接建立以后防火墙/代理不需要直接参与到连接中去。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值