安全服务/渗透测试工程师_面试题之基础网络知识

本篇面试题是关于常规的基础网络知识

0x00 TCP/UDP 三次握手 SYN攻击

TCP的优点:
可靠,稳定
TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,
在数据传完之后,还会断开连接用来节约系统资源。

TCP的缺点:
慢,效率低,占用系统资源高,易被攻击
TCP在传递数据之前,要先建立连接,而这个会消耗时间,而且在数据传递时,确认机制,重传机制、拥塞控制机制等都会小号大量的时间,而且要在每台设备上维护所有的传输连接,事实上,每个连接都会占用系统的CPU、内存等硬件资源。
而且,因为TCP有确认机制、三次握手机制,这也导致TCP容易被人利用,实现DOS、DDOS、CC等攻击。


UDP的优点:
快,比TCP稍微安全
UDP没有TCP的握手,确认、窗口、重传、拥塞控制等机制。UDP是一个无状态的传输协议,所以它在传递数据时非常快。没有TCP的这些机制,UDP相较于TCP被攻击者利用的漏洞就较少一些。但UDP也是无法避免攻击的。比如: UDP Flood攻击

UDP的缺点:
不可靠性,不稳定性
因为UDP没有TCP的那些可靠的机制,在数据传递时,如果说网络质量不好,会很容易丢包。


基于上面的介绍
什么时候使用TCP:
当对网络通讯质量有严格要求时,比如:整个数据要准确无误的发送给对方,这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件的协议,POP、SMTP等邮件传输的协议。

日常中我们常见使用TCP协议的是:
浏览器:HTTP/(S)
Outlook:POP、SMTP
Putty:TELNET SSH

日常中我们常见使用UDP协议的是:
当对网络通讯质量要求不高时,要求网络通讯速度能尽快,这就可以使用UDP了。
比如:
QQ语音、视频
TFTP

0x01 TCP握手协议

在TCP/IP协议中,TCP协议提供可靠地连接服务,采用三次握手建立一次连接
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也要发送一个SYN包(syn=k),即是SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN_ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入established状态,完成三次握手。

完成三次握手,客户端与服务器开始传送数据,在上述的过程中,还有一些重要概念:
未连接队列:在三次握手协议中,服务器维护一个未连接队列,该队列为每一个客户端的SYN包(syn=j)开设一个条目
该条目表明服务器已经收到SYN包,并且向客户端发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于SYN_RECV状态,当服务器收到客户的确认包时候,删除该条目,服务器进入established状态。
backlog参数:表示未连接队列的最大容纳数目。
SYN-ACK重传次数: 服务器发送完SYN-ACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果说重传次数超过系统规定的最大重传次数,系统将该连接信息从半连接队列中删除。注意,每次重传等待的时间不一定相同。
半连接存货时间:是指半连接队列的条目存活的最长时间,也即服务从收到SYN包到确认这个报文无效的最长时间,该时间值是所有重传请求包的最长等待时间总和。

0x02 SYN攻击原理

SYN攻击属于DOS攻击的一种,它利用TCP协议缺陷,通过发送大量的半连接请求,耗费CPU和内存资源。
SYN攻击除了能影响主机外,还可以危害路由器,防火墙等网络设备,事实上SYN攻击并不管目标是什么系统,只要这些系统打开TCP服务即可实施。
服务器接收到连接请求(syn=j),将此信息加入未连接队列,并发送请求给客户(syn=k,ack=j+1),此时进入SYN_RECV状态。当服务器未收到客户端的确认包时,重发请求包,一直到超时,才将此条目从未连接队列删除。
配合IP欺骗,SYN攻击能达到很好的效果,通常,客户端在短时间内伪造大量的不存在的IP地址,向服务器不断地发送syn包,服务器回复确认包,并等待客户地确认,由于源地址是不存在地,服务器需要不断地重发直至超时,这些伪造地syn包将长时间占用未连接队列,正常地SYN请求被丢弃,目标系统运行缓慢,严重者引起网络堵塞甚至系统瘫痪。

你可能感兴趣的:(面试题,面试,安全,网络安全,网络传输,网络协议)