【面试】计算机网络

本文详细探讨了计算机网络的面试重点,包括TCP三次握手与四次挥手的过程及其原因,TCP与UDP的区别,TCP可靠传输的机制,以及HTTP的基础概念。还涉及到SYN攻击的防范和DNS解析流程,是准备网络技术面试的宝贵资料。
摘要由CSDN通过智能技术生成

问题大纲

一、计网基础

1、OSI七层网络模型(*4)

OSI七层 作用 对应网络协议 TCP/IP四层 对应软硬件
应用层(Application) 为应用程序提供网络服务 HTTP、TFTP、FTP、NFS、WAIS、SMTP 应用层 应用程序
表示层(Presentation) 数据格式化,加密、解密 Talnet、Rlogin、SNMP、Gopher
会话层(Session) 建立、维护、管理会话连接 DNS
传输层(Transport) 建立、维护、管理端到端连接 TCP、UDP 传输层 操作系统
网络层(Network) IP寻址和路由选择 IP、ICMP、ARP、RARP、AKP、UUCP 网络层
数据链路层(Data Link) 控制网络层和物理层之间通信 FDDI、Ethernet、Arpanet、PDN、SLIP、PPP 数据链路层(可不合并物理层) 设备驱动程序与网络接口
物理层(Physical) 比特流传输 IEEE 802.1A、IEEE 802.2到IEEE 802.11

追问1:为什么有了七层还有五层的概念?

统一网络需要一个统一标准,ISO开始制定了OSI模型,清晰易懂,大家觉得OSI 会成为统一标准,于是用OSI结构理论作为术语交流。但后来TCP/IP协议诞生发展繁荣,而OSI迟迟没有成熟产品推出,妨碍第三方厂家开发软硬件,从而影响至今。

二、TCP三次握手与四次挥手

1、三次握手(Three-way Handshake)过程

  • 注意:下图要达到熟练默写程度。
    1
补充:x = client_isn; y = server_isn; z = client_isn+1

1

追问1-1:为什么两次握手不行?

三次握手是为了让双方验证各自接收能力和发送能力。

  • 1st:A发送SYN给B,B接收到。这里B能确认A的发送能力和B的接收能力
  • 2nd:B发送SYNACK给A,A收到。这里A能确认A的接收能力和B的发送能力。此外,A收到SYNACK,说明前面A的SYN成功到达B,也能确认A自己的发送能力和B的接收能力。至此,A已经确认双方各自发送能力和接收能力OK,因此转为ESTABLISHED状态。
  • 3rd:A发送ACK到B,B接收。这里B能确认A的发送能力和B的接收能力。由于B能收到ACK,说明前面发送的SYNACK已经被接受了,说明A的接收能力和B的发送能力正常。

若使用两次握手,就不能确认上述四种能力,可能有问题。

  • 假定A发的SYN报文没消失,而是在某网络节点长时间滞留了,以至于到连接释放后的某个时间才到达B。

  • 本来这是一个早已失效的报文段,但B收到此失效连接请求报文段后,却误以为是A又发出一次新的连接请求,于是A就发出确认报文段,同时建立连接

  • 由于现在A并没有发出建立连接请求,因此不理睬B的SYNACK报文,也不会向B发送数据,但B却以为新连接已经建立,并一直等待A发来的数据,B的许多资源被白白浪费。

追问1-2:三次握手过程中可以携带数据吗?为什么?

前两次不行,第三次可以携带。

假如第一次可以,如果有人恶意攻击服务器,那他在第一次SYN 报文中放入大量数据。因为攻击者根本不理会服务器的接收、发送能力是否正常,只是疯狂重复发 SYN 报文,这会让服务器花费很多内存与时间来接收这些报文。
也就是说,第一次握手不能放数据,1个简单原因服务器会更容易受到攻击。而对于第三次,此时客户端处于 ESTABLISHED 状态,已经建立起连接,知道服务器接收与发送能力正常,所以携带数据也没毛病。

追问1-3:第三次握手失败了怎么办?

  1. 在第2次握手中,serverclient发送SYN+ACK报文后,就会启动一个定时器,等待client返回的ACK报文。
  2. 如果第三次失败,clientserver返回了ACK报文server并不能收到这个ACK报文。那server就会启动超时重传机制,超过规定时间会重新发起第2次握手,向client发送SYNACK。重传次数默认5次。
  3. 如果到重传指定次数,仍未收到ACK应答,那一段时间后server会关闭这个连接。但client认为这个连接已建立,如果它向server写数据,server将回应RST包、强制关闭TCP连接,以防止SYN攻击

追问2-1:握手过程中除了序号的同步,还会同步什么信息?

补充:发数据时应注意TCP连接哪些信息,如客户端怎么知道该给服务端发送1个还是10个报文?
  • 1)序号;
  • 2)标志位:SYN(发起一个连接)、ACK(确认序号有效);
  • 3)窗口(流量控制中的接收?)。
    26

追问2-2:ISN(Initial Sequence Number)是固定的吗?

不固定,client_isn是随机生成的,而server_isn则需要根据SYN报文中的源、IP和端口,加上服务器本身密码数进行相同散列得到,显然也不固定。

追问2-3:服务器为什么使用特殊的初始序号server_isn?

服务器使用特定初始序列号server_isn(从源和目的地IP和端口的散列中获取) 可以用来抵御SYN洪水攻击

追问3-1:什么是SYN攻击?如何防范?

在三次握手过程中,服务器发送SYN-ACK之后,收到客户端ACK之前的TCP连接称为半连接half-open connect)。此时服务器处于SYN-RECV。当收到ACK后,服务器转入ESTABLISHED状态。

SYN攻击就是攻击客户端,在短时间内伪造大量不存在的IP地址,向服务器不断发送SYN包,服务器回复确认包,并等待客户确认。 由于源地址不存在,服务器需要不断重发直至超时,这些伪造SYN包将长时间占用未连接队列,正常SYN请求被丢弃,目标系统运行缓慢,严重者引起网络堵塞甚至系统瘫痪

SYN攻击是一种典型的DoSe/DDoS攻击。

追问3-2:如何检测SYN攻击?

检测SYN攻击非常方便,当你在服务器上看到大量半连接状态时,特别是IP地址是随机的,基本可以断定这是一次SYN攻击,在Linux/Unix可用netstat命令检测。

追问3-3:如何防御SYN攻击?

SYN攻击不能完全被阻止,除非重新设计TCP协议。能做的就是就是尽可能减轻SYN攻击危害,常见防御方法有:缩短超时(SYN Timeout)时间、增大最大半连接数、过滤网关防护、SYN cookies技术

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值