1.哪个 UDP 字段用于检测数据报损坏?
- a. 总长度
- b. 目的端口
- c. 校验和
- d. 源端口
正确答案是:
c. 校验和(Checksum)
在UDP(用户数据报协议)中,校验和(Checksum)字段用于检测数据报文的完整性。当发送端创建UDP数据报文时,它会计算数据报文的校验和,并将其放置在UDP头部的校验和字段中。接收端在收到数据报文时,也会计算一个校验和,然后与头部中的校验和进行比较。如果两者不一致,那么可以认为在传输过程中数据报文发生了损坏,接收端通常会丢弃这样的数据报文。校验和是网络通信中用于检测错误的一种常见机制。
2.以下哪种协议仅在 UDP 上运行?
- a. DHCP
- b. HTTP
- c. SSH
- d. DNS
正确答案是:
a. DHCP
DHCP(动态主机配置协议)是一个客户端/服务器协议,它只使用UDP协议运行。它的主要功能是自动分配IP地址给网络中的设备,确保设备可以无缝接入网络。由于DHCP的设计目标是轻量级和高效性,它通常使用UDP端口67和68进行通信。UDP作为一种无连接的协议,适合用于不需要可靠传输的应用,例如IP地址的快速分配。
而其他的选项:
b. HTTP(超文本传输协议)通常运行在TCP上,使用端口80或443(在HTTPS加密连接的情况下)。
c. SSH(安全壳协议)也是基于TCP的,通常运行在端口22上,提供加密的网络通信服务。
d. DNS(域名系统)虽然在多数情况下使用UDP端口53,但也可以在某些情况下使用TCP,比如当响应数据大小超过UDP数据报文的大小限制时,或者进行区域传输时。因此,DNS并不是只在UDP上运行。
3.TCP确保以下哪些属性?
- a. 检测丢失或重复的数据包
- b. 按顺序发送数据包
- c. 服务器的公钥认证
- d. 拥塞控制
正确答案是:
a. 检测丢失或重复的数据包(Detection of lost or duplicated packets)
b. 按顺序发送数据包(In-order packet-delivery)
d. 拥塞控制(Congestion control)
这三个选项都是TCP(传输控制协议)确保的属性:
a. 检测丢失或重复的数据包:TCP使用序列号标记每个数据包,使得接收方可以检测到丢失的数据包,并可以请求重新传输。同样,序列号也可以防止数据包的重复,接收方能识别并丢弃重复的数据包。
b. 按序数据包传递:TCP协议确保数据包按照发送的顺序到达接收方。如果数据包到达顺序错误,TCP将在接收方重新排序,保证数据的正确顺序。
d. 拥塞控制:TCP实现了多种拥塞控制机制,如慢启动、拥塞避免、快速重传和快速恢复,这些机制可以动态调整数据的发送速率,防止网络过载。
而选项c:
c. 公钥认证服务器:这不是TCP协议提供的功能。公钥认证通常是由较高层的协议,如TLS(传输层安全协议)来实现的,它在传输层之上为网络通信提供安全性保障。
4.为什么 TCP 比 UDP 更难欺骗?
- a. 源端口是随机选择的
- b. TCP 数据包包含校验和
- c. 响应必须包含有效的序列号才能被接受
- d.TCP 允许添加选项
正确答案是:
c. 响应必须包含有效的序列号才能被接受(Responses must include a valid sequence number to be accepted)
这是因为TCP协议是一种面向连接的协议,它通过使用序列号来确认数据包是否已被接收,以及是否以正确的顺序接收。在TCP连接过程中,序列号用于建立和维护每个会话的状态,使得接收方能够识别和确认每个特定的数据包。
当TCP客户端发送一个数据包时,它会包含一个序列号,服务器在回复时必须使用对应的确认号(acknowledgment number),该确认号是收到的数据包序列号加一。这种机制要求攻击者在尝试欺骗时,必须能够准确地预测或知道当前的序列号,这在实际操作中是非常困难的,因此大大提高了TCP协议的安全性,减少了欺骗的可能性。
而UDP是无连接的,不使用序列号,因此更容易受到欺骗攻击。UDP数据包不需要建立连接,也不确认数据包,攻击者可以较容易地伪造伪装的UDP数据包。
5.哪个 TCP 标志表示连接正常关闭?
- a. PSH
- b. RST
- c. URG
- d. FIN
正确答案是:
d. FIN
在TCP协议中,FIN标志用来指示一方想要结束(即关闭)一个TCP连接。当一个TCP连接的一方完成数据的发送后,它会发送一个FIN标志的数据包给另一方,表示没有更多的数据要发送。接收到FIN标志的一方知道发送方没有更多的数据传输,并将开始关闭连接的过程。这是一个有序的过程,允许双方确保所有的数据都已经被正确传输和确认,因此称之为"优雅地"或"温和地"关闭连接。
其他选项的含义是:
a. PSH(Push):这个标志告诉TCP层立即将数据发送出去,而不是等到缓冲区满。
b. RST(Reset):这个标志用于突然终止一个连接,如在错误情况下。它不是温和关闭连接的方式,而是强制和立即的。
c. URG(Urgent):当设置了这个标志,表示数据包中有紧急的数据,应当被优先处理。
6.为什么 TCP 初始序列号不是完全随机生成的?
- a. 确保数据包不会被解释为错误的连接
- b. 避免计算成本高昂的随机数生成
- c. 为了更容易调试连接
- d. 使猜测序列号变得更加困难
正确答案是:
a. 确保数据包不会被解释为错误的连接(o ensure packets do not get interpreted as being for the wrong connection)
TCP协议中的初始序列号(ISN)不是完全随机生成的一个原因是为了确保数据包不会被错误地解释为属于错误的连接。当TCP连接建立时,客户端和服务器各自选择一个初始序列号,然后在连接期间的数据传输中使用这个序列号加上数据字节的数量来标记后续数据包。如果初始序列号是完全随机的,并且在很短的时间内有可能重复,那么就可能出现一个新的连接偶然使用了与之前旧连接相同的序列号,这可能导致网络中延迟的数据包被错误地归属到新的连接。
因此,TCP使用了一个叫做ISN生成器的算法,该算法会考虑时间和其他因素来生成序列号,以减少序列号冲突的可能性。这种方法帮助防止了所谓的"旧数据包"问题,即网络中迟到的数据包被错误地视为新连接中的有效数据。这样,即使在高速和频繁建立连接的网络环境中,TCP连接也能维持其数据包的一致性和正确性。
7.闲置扫描的目的是?
- a. 检查 IP ID 分配模式
- b. 缓慢地进行扫描
- c. 在不泄露目标 IP 地址的情况下检查端口是否打开
- d. 在不泄露源 IP 地址的情况下检查端口是否打开
正确答案是:
d. 在不泄露源 IP 地址的情况下检查端口是否打开(To check if a port is open without disclosing the IP address of the source)
闲置扫描(idle scanning)是一种高级的网络扫描技术,攻击者使用它来探测目标主机上哪些端口是开放的,而不暴露自己的IP地址。这种技术通过利用一个被动态和未被使用的主机(称为"僵尸"主机)来发送扫描数据包,而不是直接从攻击者的真实IP地址发送。这样做的结果是,所有的探测似乎都来自于"僵尸"主机,而不是真正的攻击者。
在进行闲置扫描时,攻击者首先确定一个"僵尸"主机,并且确保这个主机目前是处于闲置状态,也就是说,它不会产生自己的网络流量。然后攻击者会仔细监视这个主机的IP ID值(一个计数器,通常对于发出的每个数据包递增)。通过观察响应目标主机端口扫描时这个计数器的变化,攻击者可以推断出端口是否开放。如果端口开放,目标系统会回应,导致僵尸主机发送一个RST包,从而增加IP ID计数器。如果端口关闭,目标不会回应,僵尸主机的IP ID计数器不会变化。通过这种方法,攻击者可以避免直接与目标系统通信,从而隐藏自己的位置和活动。
8.DNS 的以下哪些属性使响应欺骗变得复杂?
- a. 随机源端口
- b. DNS 生存时间
- c. DNS 请求 ID
- d. 0x20编码
正确答案是:
a. 随机源端口(Randomised source port)
c. DNS 请求 ID(DNS request ID)
d. 0x20编码(0x20 encoding)
这3个属性增加了DNS响应欺骗的难度,原因如下:
a. 随机化源端口:当DNS请求从随机的源端口发送时,攻击者需要猜测这个端口号才能成功发送假冒的响应。每次请求使用不同的源端口可以显著增加攻击者成功伪造响应的难度。
c. DNS请求ID:每个DNS请求都有一个唯一的标识符,称为请求ID。响应必须包含与请求相匹配的ID,以便被接受为有效。攻击者必须猜测或知道正确的请求ID才能成功进行欺骗。
d. 0x20编码: 是DNS协议的一个安全功能,用于提高DNS查询的随机性和复杂性,以防止DNS欺骗。在DNS查询中,域名可以是大小写不敏感的,这就意味着无论是大写字母还是小写字母,域名的解析结果应该是相同的。0x20编码利用了这一特点,通过在域名的大小写字母中混入随机性,来增加对DNS响应的预测难度。
具体来说,0x20编码会随机改变域名请求中的字母大小写。例如,域名"example.com"可能被发送为"ExaMple.cOm"或"exAMPle.CoM"。由于DNS响应必须在大小写上与请求匹配,这就要求攻击者不仅要猜测正确的请求ID和源端口,还要准确预测原始请求中的大小写编码。这显著增加了欺骗DNS响应的难度,因为攻击者必须同时猜对多个不同的值。
因此,0x20编码通过增加额外的随机性,使得攻击者更难以进行DNS缓存投毒攻击,从而是一个复杂化DNS欺骗攻击的有效手段。
其他选项的解释:
b. DNS TTL(生存时间):DNS记录的TTL指示了该记录在DNS缓存中的存活时间。它不直接与防止DNS欺骗相关,但可以影响缓存的DNS记录的持续时间。
9.在 TLS 中,应用程序数据使用以下方式加密:
- a. 对称密码
- b. ephemeral Diffie-Hellman
- c. 公钥证书
- d. 哈希函数
正确答案是:
a. 对称密码(a symmetric cipher)
在TLS(传输层安全)协议中,应用数据是使用对称密码(symmetric cipher)加密的。对称加密意味着加密和解密数据使用的是相同的密钥。这种方法在实际通信中是高效的,因为对称密钥加密算法(如AES、DES、ChaCha20等)在执行时比非对称加密算法更快。
其他选项的解释:
b. ephemeral Diffie-Hellman:这是一种用于在TLS握手过程中安全交换密钥的方法,而不是用于加密应用数据本身。它允许两个通信方在不安全的通道上建立一个共享的秘密密钥。
c. 公钥证书:公钥证书在TLS中用于验证身份,证书中包含了公钥,而非用于加密数据。
d. 哈希函数:哈希函数在TLS中用于保证数据的完整性,通过创建消息摘要来进行,而不是用于加密数据。