一、介绍TCP 连接的三次握手?追问:为什么 TCP 握手需要三次?
TCP是面向连接的可靠传输协议
面向连接:三次握手
可靠传输:确认、重传、排序、流控(滑动窗口)
传输层的协议
其协议头部有20个字节 分为五个四字节
第一行四字节是 源目端口 各占两字节 16bit
第二行是*** 占四字节 32bit
第三行是确认*** 占四字节 32bit
第四行是 4bit的头部长度 6位保留 6位标志位 16位窗口大小
第五行是16位校验和 16位紧急指针
TCP会话建立图解如下,可以很明显的看出来,客户端的SYN请求需要服务器的ACK确认,而服务器的SYN请求需要客户端的确认,所以握手需要三次
ACK : TCP协议规定,只有ACK=1时有效,也规定连接建立后所有发送的报文的ACK必须为1
SYN(SYNchronization) : 在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文。对方若同意建立连接,则应在响应报文中使SYN=1和ACK=1. 因此, SYN置1就表示这是一个连接请求或连接接受报文。
二、介绍 TCP 断开的四次挥手,追问:为什么 TCP 的挥手需要四次?
四次挥手的图解如下,可以明显的看出来,客户端的FIN(请求释放连接)需要服务器的ACK确认,而服务器的FIN需要客户端的ACK
三、TCP 的 syn 攻击的过程?追问:怎么防御?
过程
攻击者伪造不存在的主机IP 向服务器发送大量的SYN包 ,使服务器的缓存造成溢出,即不能处理正常的SYN请求,这属于DDOS攻击
防御
四、为什么连接的时候是三次握手,关闭的时候却是四次握手?
连接时,每次的SYN请求需要ACK确认,所以是三次
关闭时,需要客户端与服务器端的都发送FIN并且进行确认,所以是四次
五、TCP 是如何通过滑动窗口协议实现流量控制和拥塞控制的?
流量控制
拥塞控制
六、描述 TCP 和 UDP 的区别?
共同点:
同处于TCP/IP协议栈的传输层
不同点:
协议层面:
TCP是面向连接的可靠传输协议 协议号为6
报文层面:
封装的报文头大小不同 TCP 20byte UDP 8byte
七、TCP 有哪些定时器?
八、什么是 CDN?CDN 是如何工作的?
九、什么是 DNS?说说 DNS 的解析过程?
解析过程:
- 首先查找本地浏览器的DNS缓存
- 查找本地的hosts文件是否有网址的映射关系
- 查找本地DNS服务器
至此如果没有找到映射关系的话,就继续向更高级的DNS服务器进行查找
迭代查询
- 找13台DNS根服务器(根肯定知道要找的位置属于哪个顶级域名下),将结果返回给本地DNS服务器
- 找DNS顶级服务器(顶级肯定知道具体的域名位置),返回给本地DNS服务器
- 本地DNS服务器直接去目标然后返回
- 本地DNS服务器将结果给到请求的客户端
递归查询:
- 找13台DNS根服务器
- 根据根DNS服务器端返回的结果直接去顶级DNS服务器
- 根据顶级DNS服务器的提示直接去权限域名服务器(具体的域名映射)
- 逐级递归返回,至根DNS服务器,然后给到本地DNS服务器一个结果
- 本地DNS服务器将结果给到请求的客户端
以上这种DNS的解析过程是
客户端到本地DNS递归查询
本地DNS服务器与其他高级的DNS服务器的交互是迭代查询
十、什么是 DHCP?描述工作过程?DHCP 有什么安全问题?如何防范?
手段
DHCP耗尽攻击---伪造大量的DHCP请求包来耗尽DHCP的地址池资源
DHCP伪造攻击---伪造dhcp服务器来给发出DHCP请求的主机回包(dhcp会提供网关,DNS)
防御
DHCP Snooping(嗅探技术)
- 中继设备上设置信任接口 将真实的DHCP服务器连接中继设备的接口设置为信任接口
- 中继设备上限制非信任端口的接收DHCP 数据包的频率