network-E4

网原第三次小实验

郭高旭 2021010803 ggx21@mails.tsinghua.edu.cn

抓包实验 1:

1.UDP 数据包在 IP 层的类型编号是17

image-20230522233420722

2.UDP 数据包头字段依次是

image-20230522233509382

1
2
3
4
5
6
7
8
9
 0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Port | Destination Port |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Length | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

源端口号(16bit),目的端口号(16bit), UDP 包总长(16bit),校验和(16bit)

抓包实验2:

1.TCP 数据包在 IP 层的类型编号是 6

image-20230522234307449

2. TCP 数据包头字段依次是?

image-20230522234759931

源端口号(16bit),目的端口号(16bit),报文序列号(32bit),报文确认序列号(32bit),包头长度(4bit),保留位和标记位(12bit),窗口大小(16bit),校验和(16bit),紧急指针(16bit),选项

以下是一个使用RFC标准格式的TCP头的示例代码块:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Port | Destination Port |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Acknowledgment Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data | |U|A|P|R|S|F| |
| Offset| Reserved |R|C|S|S|Y|I| Window |
| | |G|K|H|T|N|N| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Checksum | Urgent Pointer |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

在上述代码块中,我们可以看到TCP头的结构,具体字段如下:

  • Source Port:16位字段,表示源端口号,标识发送方的应用程序或进程。

  • Destination Port:16位字段,表示目标端口号,标识接收方的应用程序或进程。

  • Sequence Number:32位字段,用于对TCP数据流中的字节进行编号,用于排序和重组数据。

  • Acknowledgment Number:32位字段,表示期望接收方接收到的下一个字节的编号。用于确认已经成功接收到的数据。

  • Data Offset:4位字段,表示TCP头的长度,以32位字(4字节)为单位。

  • Reserved:6位字段,保留位,未使用,必须为0。

  • Control Flags:6位字段,包括URG(紧急数据标志)、ACK(确认标志)、PSH(推送标志)、RST(重置标志)、SYN(同步标志)和FIN(结束标志)。

  • Window:16位字段,表示接收窗口大小,用于流量控制。

  • Checksum:16位字段,用于校验TCP头和数据的完整性。校验和的计算涉及TCP头、TCP数据以及伪首部的部分。

  • Urgent Pointer:16位字段,指示紧急数据的位置,仅在URG标志被设置时有效。

  • Options:可变长度字段,用于携带可选的TCP选项,如最大段大小(MSS)、窗口扩大因子等。

  • Padding:可变长度字段,用于填充,以保证TCP头长度是32位字的倍数。

3.TCP 三次握手过程使用三个数据包

image-20230522235654303

第一次(A->B,SYN,SEQ=X,ACK=0) 此处X=0

image-20230522235805183

第二次 (B->A,SYN||ACK,SEQ=Y,ACK=X+1) 这里Y=0,X=0

image-20230522235908626

第三次(A->B,ACK,SEQ=X+1,ACK=Y+1) 这里Y=0,X=0

image-20230523000024878

协商options:Maximum segement size等等

4.序列号增长和包长关系是什么?

image-20230523000445206

由图可知,next sequence number = sequence number + TCP segment len\TCP 序列号的增长差值与前一个包的 TCP 段长度(TCP 数据字段)相等;

image-20230523000720575

观察这组数据与对应确认包,数据包对应确认包中,确认序列号与(原包序列号+段长)相等

简答

1.TCP 选项还支持什么特殊的功能?

  1. 窗口扩大(Window Scale):允许发送方和接收方扩大TCP窗口的大小,以适应更高的带宽延迟乘积(BDP)和更大的网络拥塞窗口。

  2. 时间戳(Timestamps):用于测量和估计网络往返时间(RTT),从而改善拥塞控制算法的性能和精度。

  3. 选择确认(Selective Acknowledgment,SACK):允许接收方向发送方报告丢失和乱序的数据段的具体位置,以便发送方只重传丢失的数据段,而不是整个窗口的数据。

  4. 最大报文段长度(Maximum Segment Size,MSS):用于协商TCP报文段的最大有效载荷大小,以便在网络中避免分片和重组。

  5. 无延迟确认(No Delayed Acknowledgment):用于在接收方立即发送确认,而不等待延迟确认定时器的到期。

  6. 紧急数据指针(Urgent Pointer):用于指示TCP报文段中的紧急数据的起始位置,以便在应用层处理紧急数据。

什么此反射 DoS 攻击大多使用基于 UDP 的公共 服务,而不是基于 TCP 呢

  • **UDP 协议是无连接的,不需要握手过程,也不验证源 IP 地址,因此更容易进行 IP 欺骗。**TCP 协议则需要三次握手才能建立连接,如果源 IP 地址被伪造,攻击者无法收到目标服务器的 SYN-ACK 包,也就无法完成连接。

  • **UDP 协议有一些服务可以产生放大效应,即请求包的大小远小于响应包的大小,从而增加攻击的效力。**例如,NTP、DNS、SSDP、Memcached 等服务都可以被用作放大器,将请求包的大小放大数十倍甚至数百倍。TCP 协议则没有这样的放大效应,因为它有拥塞控制和流量控制机制,会根据网络状况和接收方能力调整发送速率和窗口大小。

  • **UDP 协议有更多的公共服务可以被利用,而且这些服务往往没有安全配置或认证机制。**互联网上存在大量的开放的 UDP 服务,如 NTP、DNS、SSDP、Memcached 等,这些服务通常会响应所有 IP 的请求,而不进行任何过滤或限制。TCP 协议则有较少的公共服务可以被利用,而且这些服务往往有更好的安全配置或认证机制,如 HTTP、SMTP、FTP 等。




本文总阅读量