网原第三次小实验
郭高旭 2021010803 ggx21@mails.tsinghua.edu.cn
抓包实验 1:
1.UDP 数据包在 IP 层的类型编号是17
2.UDP 数据包头字段依次是
1 | 0 1 2 3 |
源端口号(16bit),目的端口号(16bit), UDP 包总长(16bit),校验和(16bit)
抓包实验2:
1.TCP 数据包在 IP 层的类型编号是 6
2. TCP 数据包头字段依次是?
源端口号(16bit),目的端口号(16bit),报文序列号(32bit),报文确认序列号(32bit),包头长度(4bit),保留位和标记位(12bit),窗口大小(16bit),校验和(16bit),紧急指针(16bit),选项
以下是一个使用RFC标准格式的TCP头的示例代码块:
1 | 0 1 2 3 |
在上述代码块中,我们可以看到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 三次握手过程使用三个数据包
第一次(A->B,SYN,SEQ=X,ACK=0) 此处X=0
第二次 (B->A,SYN||ACK,SEQ=Y,ACK=X+1) 这里Y=0,X=0
第三次(A->B,ACK,SEQ=X+1,ACK=Y+1) 这里Y=0,X=0
协商options:Maximum segement size等等
4.序列号增长和包长关系是什么?
由图可知,next sequence number = sequence number + TCP segment len\TCP 序列号的增长差值与前一个包的 TCP 段长度(TCP 数据字段)相等;
观察这组数据与对应确认包,数据包对应确认包中,确认序列号与(原包序列号+段长)相等
简答
1.TCP 选项还支持什么特殊的功能?
-
窗口扩大(Window Scale):允许发送方和接收方扩大TCP窗口的大小,以适应更高的带宽延迟乘积(BDP)和更大的网络拥塞窗口。
-
时间戳(Timestamps):用于测量和估计网络往返时间(RTT),从而改善拥塞控制算法的性能和精度。
-
选择确认(Selective Acknowledgment,SACK):允许接收方向发送方报告丢失和乱序的数据段的具体位置,以便发送方只重传丢失的数据段,而不是整个窗口的数据。
-
最大报文段长度(Maximum Segment Size,MSS):用于协商TCP报文段的最大有效载荷大小,以便在网络中避免分片和重组。
-
无延迟确认(No Delayed Acknowledgment):用于在接收方立即发送确认,而不等待延迟确认定时器的到期。
-
紧急数据指针(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 等。