diff --git a/docs/undergraduate/软件工程学院/计算机网络/README.md b/docs/undergraduate/软件工程学院/计算机网络/README.md
index 7de6443..a01f742 100644
--- a/docs/undergraduate/软件工程学院/计算机网络/README.md
+++ b/docs/undergraduate/软件工程学院/计算机网络/README.md
@@ -4,3 +4,5 @@ title: 计算机网络
!!! warning "施工中"
+
+
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/README.md b/docs/undergraduate/软件工程学院/计算机网络实践/README.md
new file mode 100644
index 0000000..5da538e
--- /dev/null
+++ b/docs/undergraduate/软件工程学院/计算机网络实践/README.md
@@ -0,0 +1,30 @@
+---
+title: 计算机网络实践
+---
+
+## 2023-2024学年上学期
+
+### 刘献忠
+
+- 实验比较简单, 要求也比隔壁班低, 最后一个 socket lab 作业要求也比隔壁低
+- [SOCKET_LAB](https://github.com/KirisameVanilla/SOCKET_LAB)
+
+### 王廷
+
+- 听我同学说实验比较难
+
+## 2024-2025学年上学期
+
+### 王廷
+
+#### 实验报告
+
+除第一个实验外,其余实验所用到的 `.pcapng` 文件均附在对应文件夹下
+
+- [lab1](./lab/lab1/lab1.md)
+- [lab2 Ethernet](./lab/lab2/lib2)
+- [lab3 IPV4](./lab/lab3/lib3)
+- [lab4 ARP](./lab/lab4/lib4)
+- [lab5 UDP](./lab/lab5/lib5)
+- [lab6 TCP](./lab/lab6/lib6)
+- [lab7 Socket Programming](./lab/lab7/lib7)
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab1/Pictures/100000010000032800000154F3640027.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab1/Pictures/100000010000032800000154F3640027.png
new file mode 100644
index 0000000..403bb59
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab1/Pictures/100000010000032800000154F3640027.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab1/Pictures/100000010000032900000152B123680E.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab1/Pictures/100000010000032900000152B123680E.png
new file mode 100644
index 0000000..aa7ab10
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab1/Pictures/100000010000032900000152B123680E.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab1/Pictures/10000001000003320000015C8A9E98EE.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab1/Pictures/10000001000003320000015C8A9E98EE.png
new file mode 100644
index 0000000..b9bd396
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab1/Pictures/10000001000003320000015C8A9E98EE.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab1/Pictures/100000010000033300000151977B0DF0.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab1/Pictures/100000010000033300000151977B0DF0.png
new file mode 100644
index 0000000..70365f3
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab1/Pictures/100000010000033300000151977B0DF0.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab1/Pictures/10000001000004000000007864293250.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab1/Pictures/10000001000004000000007864293250.png
new file mode 100644
index 0000000..e6743ea
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab1/Pictures/10000001000004000000007864293250.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab1/Pictures/1000000100000470000000F4B4E41AC7.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab1/Pictures/1000000100000470000000F4B4E41AC7.png
new file mode 100644
index 0000000..d985765
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab1/Pictures/1000000100000470000000F4B4E41AC7.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab1/Pictures/10000001000004EE0000005E50C8B369.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab1/Pictures/10000001000004EE0000005E50C8B369.png
new file mode 100644
index 0000000..e9b2e07
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab1/Pictures/10000001000004EE0000005E50C8B369.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab1/Pictures/100000010000094B000002EADEAFEA2E.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab1/Pictures/100000010000094B000002EADEAFEA2E.png
new file mode 100644
index 0000000..5ebf16b
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab1/Pictures/100000010000094B000002EADEAFEA2E.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab1/lab1.md b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab1/lab1.md
new file mode 100644
index 0000000..c85bf5d
--- /dev/null
+++ b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab1/lab1.md
@@ -0,0 +1,99 @@
+---
+title: Lab1
+---
+
+# 华东师范大学软件学院实验报告
+
+## 一、实验目的
+
+1. 学会使用curl与wget指令
+
+2. 学会通过Wireshark获取数据包
+
+3. 了解协议层数据包的结构
+
+4. 学会计算并分析协议开销
+
+## 二、实验内容与实验步骤
+
+1. 在控制台中输入`curl http://1st.moe/`,并观察到`200 OK`
+
+2. 启动Wireshark,选择监听以太网,并将捕获过滤器设置为tcp port 80,关闭混杂模式,并启用"enable network name resolution"选项
+
+3. 关闭所有浏览器窗口后开始捕获
+
+4. 重新在控制台输入 `curl http://1st.moe/`
+
+5. 停止Wireshark捕获
+
+## 三、实验环境
+
+B226机房电脑
+
+## 四、实验过程与分析
+
+1. 实验过程
+
+ 捕获内容如图所示
+
+ 
+
+2.
+ 分析协议包的内容
+
+ 
+ 
+ 
+ 
+
+ 根据如上四张图片,可以发现各个协议所占的字节数为
+
+ | 协议 | 字节数 |
+ |-------------------------------------|-----------|
+ | Ethernet (eth) | 14 bytes |
+ | Internet Protocol Version 6 (ipv6) | 40 bytes |
+ | Transmission Control Protocol (tcp) | 20 bytes |
+ | Hypertext Transfer Protocol (http) | 128 bytes |
+
+ 则包的结构大致如下
+
+ | eth | ip | tcp | http |
+ |-----------------|------------------|----------|-----------|
+ | 14 bytes | 40 bytes | 20 bytes | 128 bytes |
+ | Ethernet Header | Ethernet Payload | | |
+ | IP Header | IP Payload | | |
+
+3. 问题
+
+ 1. 分析协议开销
+
+ 一个GET本身的大小为128
+ bytes,而其相应产生的SYN、ACK请求也应算入其开销中。根据图片
+ 
+ 可以计算得出由于协议产生的总开销为86+74+(202-128)+74=308
+ bytes,从而计算得出比值约为0.4156,考虑到信息传输的稳定性,协议开销是值得的。
+
+ 2. 以太网头部中哪一部分是解复用键并且告知它的下一个高层指的是IP,在这一包内哪一个值可以表示IP
+
+ 根据图片
+ 
+ 
+ 可以直观看出ipv6对应的分解键为0x86dd,tcp对应的分解键为6
+
+4. 故障分析
+
+ 在实验过程中出现了控制台有反馈但Wireshark没有捕获的情况,经排查后发现是由于控制台指令输入错误:误将http输入为https所致。
+
+## 五、实验结果总结
+
+1. 实验完成了对一个HTTP包的拆解与分析,其大体结构大致如下
+
+ |th|ip|tcp|http|
+ |-|-|--|-|
+ | 14 bytes | 40 bytes | 20 bytes | 128 bytes |
+ | Ethernet Header | Ethernet Payload | | |
+ | IP Header | IP Payload | | |
+
+2. 实验通过curl指令与Wireshark软件完成,在其中熟悉网络工具的使用,并体会到其强大之处
+
+3. 通过查询相关资料,了解开销、分解键等概念
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab2/lab2-2.pcapng b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab2/lab2-2.pcapng
new file mode 100644
index 0000000..bd54834
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab2/lab2-2.pcapng differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab2/lab2.pcapng b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab2/lab2.pcapng
new file mode 100644
index 0000000..34abe32
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab2/lab2.pcapng differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab2/lib2-1.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab2/lib2-1.png
new file mode 100644
index 0000000..9e1af72
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab2/lib2-1.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab2/lib2-2.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab2/lib2-2.png
new file mode 100644
index 0000000..49711f3
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab2/lib2-2.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab2/lib2-3.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab2/lib2-3.png
new file mode 100644
index 0000000..9ea382a
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab2/lib2-3.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab2/lib2-4.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab2/lib2-4.png
new file mode 100644
index 0000000..9da7fba
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab2/lib2-4.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab2/lib2-5.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab2/lib2-5.png
new file mode 100644
index 0000000..d41c99d
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab2/lib2-5.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab2/lib2.md b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab2/lib2.md
new file mode 100644
index 0000000..3410af5
--- /dev/null
+++ b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab2/lib2.md
@@ -0,0 +1,79 @@
+---
+title: Lab2 - Ethernet
+---
+
+# 华东师范大学软件学院实验报告
+
+## 一、实验目的
+
+学习以太网帧的组成
+
+## 二、使用内容与实验步骤
+
+1. 捕获帧
+ 1. 对一个远程服务器使用 ping 指令发送信息,并检查是否有回复;
+ 2. 启动 Wireshark ,选择过滤 icmp ,开启“启用 MAC 名称解析”选项,开始捕获以太网帧;
+ 3. 重复第一步;
+ 4. 终止 ping 指令,返回 Wireshark 并停止捕获。
+2. 检查捕获到的数据
+ 1. 选择捕获到的任意数据包,查看其结构与组成数据包字节的详细信息;
+ 2. 展开以太网报头字段并查看详细信息。
+3. 以太网帧结构
+ 绘制一个显示以太网头字段位置与大小的 ping 报文图。
+4. 以太网地址范围
+ 绘制一张图,显示电脑、路由器、远程服务器的相对位置。
+ 用以太网地址标注计算机与路由器,IP 地址标注计算机与远程服务器。
+ 并显示以太网和互联网其他部分在图中的位置。
+5. 广播帧
+ 启动 Wireshark ,选择过滤 ether multicast ,等待一段时间,捕获广播与组播以太网帧,并根据结果完成以下两个任务:
+ 1. 找到广播以太网地址
+ 2. 找到以太网地址的哪一位确认是单播还是组播
+
+## 三、实验环境
+
+- 实验仪器:ThinkPad X230i
+- 操作系统:Arch GNU/Linux x86\_64
+- 以太网控制器:Intel Corporation 82575LM Gigabit Network Connection
+- 网络控制器:Realtek Semiconductor Co., Ltd. RTL8188CE 820.11b/g/n WiFi Adapter
+- 网络连接:校园网ECNU-1X
+
+## 四、实验过程与分析
+
+1. 捕获帧
+ 
+ 
+2. 检查捕获到的数据
+ 
+3. 以太网帧结构
+
+
+ | Ethernet II |
+ IP&ICMP |
+
+
+ | Destination |
+ Source |
+ Type |
+ 60 Bytes |
+
+
+ | 6 Bytes |
+ 6 Bytes |
+ 2 Bytes |
+
+
+ | Ethernet Header |
+ Ethernet Payload |
+
+
+4. 以太网地址范围
+ 
+5. 广播帧
+ 捕获内容如图:
+ 
+ 1. 以太网地址为 ff:ff:ff:ff:ff:ff,在 Wireshark 中标注为 Broadcast
+ 2. 第一个字节的末位为1是组播,反之则是单播,所有比特均为1则是广播
+
+## 五、试验结果总结
+
+在本次实验中,我顺利地完成了各项任务,了解并学习到了以太网传输的各项细节
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab3/lib3-1.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab3/lib3-1.png
new file mode 100644
index 0000000..790068a
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab3/lib3-1.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab3/lib3-2.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab3/lib3-2.png
new file mode 100644
index 0000000..4ecd671
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab3/lib3-2.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab3/lib3-3.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab3/lib3-3.png
new file mode 100644
index 0000000..f40c57b
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab3/lib3-3.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab3/lib3-path.txt b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab3/lib3-path.txt
new file mode 100644
index 0000000..eaa9789
--- /dev/null
+++ b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab3/lib3-path.txt
@@ -0,0 +1,31 @@
+traceroute to 1st.moe (52.74.232.59), 30 hops max, 60 byte packets
+ 1 * * *
+ 2 10.100.5.1 (10.100.5.1) 8.795 ms 8.962 ms 9.096 ms
+ 3 202.120.95.246 (202.120.95.246) 9.451 ms 9.092 ms 9.243 ms
+ 4 202.120.95.254 (202.120.95.254) 12.480 ms 12.777 ms 13.331 ms
+ 5 10.255.16.1 (10.255.16.1) 12.974 ms 13.249 ms 12.734 ms
+ 6 10.255.249.253 (10.255.249.253) 12.382 ms 11.127 ms 11.127 ms
+ 7 10.255.38.254 (10.255.38.254) 10.087 ms 9.632 ms 9.452 ms
+ 8 202.112.27.13 (202.112.27.13) 9.268 ms 6.546 ms 6.331 ms
+ 9 101.4.117.58 (101.4.117.58) 6.248 ms 9.316 ms 9.147 ms
+10 * * *
+11 101.4.115.250 (101.4.115.250) 37.316 ms 37.288 ms 36.908 ms
+12 * * *
+13 * * 101.4.114.194 (101.4.114.194) 33.724 ms
+14 101.4.114.170 (101.4.114.170) 38.219 ms 101.4.117.102 (101.4.117.102) 44.767 ms 44.589 ms
+15 101.4.114.222 (101.4.114.222) 67.753 ms 67.658 ms 63.246 ms
+16 203.131.254.213 (203.131.254.213) 85.750 ms 85.593 ms 85.431 ms
+17 203.131.242.222 (203.131.242.222) 67.546 ms 67.933 ms 67.157 ms
+18 52.93.157.242 (52.93.157.242) 67.671 ms 52.93.157.226 (52.93.157.226) 67.991 ms 68.002 ms
+19 52.93.35.125 (52.93.35.125) 67.392 ms 52.93.35.109 (52.93.35.109) 68.086 ms 52.93.35.35 (52.93.35.35) 68.009 ms
+20 * * *
+21 * * *
+22 * * *
+23 * * *
+24 * * *
+25 * * *
+26 * * *
+27 * * *
+28 * * *
+29 * * *
+30 * * *
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab3/lib3.md b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab3/lib3.md
new file mode 100644
index 0000000..1f78642
--- /dev/null
+++ b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab3/lib3.md
@@ -0,0 +1,154 @@
+---
+title: Lab3 - IPv4
+---
+
+# 华东师范大学软件学院实验报告
+
+## 一、实验目的
+
+学习 IP 协议的相关内容
+
+## 二、使用内容与实验步骤
+
+1. 捕获轨迹
+ 1. 对一个远程服务器使用 wget/curl 指令,并检查是否成功;
+ 2. 对同一远程服务器使用 traceroute 指令,查看访问的路径;
+ 3. 启动 Wireshark ,选择过滤 tcp port 80 ,并勾选“启用网络名称检查”
+ 4. 重复第一步
+ 5. 返回 Wireshark ,停止捕获。
+2. 检查捕获到的数据
+ 1. 选择任意捕获到的数据包,查看其结构与组成数据包字节的详细信息;
+ 2. 展开 IP 报头字段并查看详细信息。
+3. IP 结构
+ 1. 绘制一个 IP 字段位置与大小的报文图
+ 2. 回答下列问题
+ 1. 电脑与远程服务端的 IP 地址分别是多少?
+ 2. 总长字段包括 IP 报头与 IP 负载还是仅计算 IP 负载?
+ 3. 对于不同数据包,标识字段的值是不同还是相同?
+ 4. 电脑发送的数据包的 TTL 字段的初始值是什么?是最大可能值还是一个较小的值?
+ 5. 如何通过查看数据包确认其是否被分段?
+ 6. IP 报头长度是多少,它如何在报头字段中编码?
+4. IP 路径
+ 绘制 1.2 步骤中访问的路径
+5. IP 报头校验
+ 通过如下步骤检验 IP 报头校验和是否正确
+ 1. 将报头划分为等长的 10 段,每段长度为 2 个字节,将其视为 10 个十六进制数字;
+ 2. 将 10 个 16 进制数字相加,计算他们的和;
+ 3. 将得到的和分为两段,使得其中的一段为最右边的 4 位 16 进制数,计算两段之和;
+ 4. 检查结果是否为 0xffff 。
+
+## 三、实验环境
+
+- 实验仪器:ThinkPad X230i
+- 操作系统:Arch GNU/Linux x86\_64
+- 以太网控制器:Intel Corporation 82575LM Gigabit Network Connection
+- 网络控制器:Realtek Semiconductor Co., Ltd. RTL8188CE 820.11b/g/n WiFi Adapter
+- 网络连接:校园网ECNU-1X
+
+## 四、实验过程与分析
+
+1. 捕获轨迹
+ 
+ traceroute 获取到的信息如下:
+
+ ``` bash
+ traceroute to 1st.moe (52.74.232.59), 30 hops max, 60 byte packets
+ 1 * * *
+ 2 10.100.5.1 (10.100.5.1) 8.795 ms 8.962 ms 9.096 ms
+ 3 202.120.95.246 (202.120.95.246) 9.451 ms 9.092 ms 9.243 ms
+ 4 202.120.95.254 (202.120.95.254) 12.480 ms 12.777 ms 13.331 ms
+ 5 10.255.16.1 (10.255.16.1) 12.974 ms 13.249 ms 12.734 ms
+ 6 10.255.249.253 (10.255.249.253) 12.382 ms 11.127 ms 11.127 ms
+ 7 10.255.38.254 (10.255.38.254) 10.087 ms 9.632 ms 9.452 ms
+ 8 202.112.27.13 (202.112.27.13) 9.268 ms 6.546 ms 6.331 ms
+ 9 101.4.117.58 (101.4.117.58) 6.248 ms 9.316 ms 9.147 ms
+ 10 * * *
+ 11 101.4.115.250 (101.4.115.250) 37.316 ms 37.288 ms 36.908 ms
+ 12 * * *
+ 13 * * 101.4.114.194 (101.4.114.194) 33.724 ms
+ 14 101.4.114.170 (101.4.114.170) 38.219 ms 101.4.117.102 (101.4.117.102) 44.767 ms 44.589 ms
+ 15 101.4.114.222 (101.4.114.222) 67.753 ms 67.658 ms 63.246 ms
+ 16 203.131.254.213 (203.131.254.213) 85.750 ms 85.593 ms 85.431 ms
+ 17 203.131.242.222 (203.131.242.222) 67.546 ms 67.933 ms 67.157 ms
+ 18 52.93.157.242 (52.93.157.242) 67.671 ms 52.93.157.226 (52.93.157.226) 67.991 ms 68.002 ms
+ 19 52.93.35.125 (52.93.35.125) 67.392 ms 52.93.35.109 (52.93.35.109) 68.086 ms 52.93.35.35 (52.93.35.35) 68.009 ms
+ 20 * * *
+ 21 * * *
+ 22 * * *
+ 23 * * *
+ 24 * * *
+ 25 * * *
+ 26 * * *
+ 27 * * *
+ 28 * * *
+ 29 * * *
+ 30 * * *
+ ```
+
+2. 
+
+3.
+ 1. IP结构
+
+
+ | IP |
+ TCP |
+
+
+ | Version |
+ Header Length |
+ Differentiated Services Field |
+ Total Length |
+ Identification |
+ Flags |
+ Fragment Offset |
+ TTL |
+ Protocal |
+ Header Checksum |
+ Source Address |
+ Destinatoin Address |
+ 32 Bytes |
+
+
+ | 4 bits |
+ 4 bits |
+ 1 Byte |
+ 2 Bytes |
+ 2 Bytes |
+ 3 bits |
+ 13 Bits |
+ 1 Byte |
+ 1 Byte |
+ 2 Bytes |
+ 4 Bytes |
+ 4 Bytes |
+
+
+ | Ethernet Header |
+ Ethernet Payload |
+
+
+ 2.
+ 1. 服务端 IP 地址为 52.74.232.59;电脑 IP 地址为 172.30.218.6
+ 2. 总长字段为 52 = 20 + 32 ,所以计算时包含 IP 报头与 IP 负载
+ 3. 不同
+ 4. 电脑发送的 TTL 值为 38 ,是一个较小的值
+ 5. 通过查看 Flags 字段
+ 6. 长度为 20 Bytes ,编码在 IP 报头第一个字节的 4~8 位
+4.
+ 
+5. 执行如下代码:
+
+ ``` c
+ #include
+
+ using namespace std;
+
+ int main()
+ {
+ printf("%x",0x4500+0x0034+0xd124+0x4000+0x2606+0xe0f4+0x344a+0xe83b+0xda06+0xac1e);
+ return 0;
+ }
+ ```
+
+ 其结果为0x4fffb,计算4+fffb=ffff,故正确。
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab3/lib3.pcapng b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab3/lib3.pcapng
new file mode 100644
index 0000000..1b0978d
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab3/lib3.pcapng differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab4/arp.pcapng b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab4/arp.pcapng
new file mode 100644
index 0000000..bdee7e7
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab4/arp.pcapng differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab4/arpa.txt b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab4/arpa.txt
new file mode 100644
index 0000000..ff3d3df
--- /dev/null
+++ b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab4/arpa.txt
@@ -0,0 +1 @@
+_gateway (172.31.0.1) at 54:c6:ff:7b:38:02 [ether] on wlan0
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab4/arpd b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab4/arpd
new file mode 100644
index 0000000..1366416
--- /dev/null
+++ b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab4/arpd
@@ -0,0 +1 @@
+No ARP entry for 172.31.0.1
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab4/ifconfig.txt b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab4/ifconfig.txt
new file mode 100644
index 0000000..fb25400
--- /dev/null
+++ b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab4/ifconfig.txt
@@ -0,0 +1,26 @@
+enp0s25: flags=4099 mtu 1500
+ ether 3c:97:0e:27:a3:96 txqueuelen 1000 (Ethernet)
+ RX packets 0 bytes 0 (0.0 B)
+ RX errors 0 dropped 0 overruns 0 frame 0
+ TX packets 0 bytes 0 (0.0 B)
+ TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
+ device interrupt 20 memory 0xf2500000-f2520000
+
+lo: flags=73 mtu 65536
+ inet 127.0.0.1 netmask 255.0.0.0
+ inet6 ::1 prefixlen 128 scopeid 0x10
+ loop txqueuelen 1000 (Local Loopback)
+ RX packets 1511 bytes 158325 (154.6 KiB)
+ RX errors 0 dropped 0 overruns 0 frame 0
+ TX packets 1511 bytes 158325 (154.6 KiB)
+ TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
+
+wlan0: flags=4163 mtu 1500
+ inet 172.31.215.159 netmask 255.255.0.0 broadcast 172.31.255.255
+ inet6 fe80::eb67:d196:62b:626a prefixlen 64 scopeid 0x20
+ ether e0:06:e6:c4:be:04 txqueuelen 1000 (Ethernet)
+ RX packets 4206 bytes 2310892 (2.2 MiB)
+ RX errors 0 dropped 0 overruns 0 frame 0
+ TX packets 4771 bytes 2531632 (2.4 MiB)
+ TX errors 0 dropped 76 overruns 0 carrier 0 collisions 0
+
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab4/lib4-1.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab4/lib4-1.png
new file mode 100644
index 0000000..8c1fd59
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab4/lib4-1.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab4/lib4-2.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab4/lib4-2.png
new file mode 100644
index 0000000..5503ad4
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab4/lib4-2.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab4/lib4-3.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab4/lib4-3.png
new file mode 100644
index 0000000..05fb7cf
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab4/lib4-3.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab4/lib4.md b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab4/lib4.md
new file mode 100644
index 0000000..527125c
--- /dev/null
+++ b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab4/lib4.md
@@ -0,0 +1,111 @@
+---
+title: Lab4 - ARP
+---
+
+# 华东师范大学软件学院实验报告
+
+## 一、实验目的
+
+了解 ARP 的工作原理。
+
+## 二、使用内容与实验步骤
+
+1. 捕获
+ 1. 使用`ifconfig`指令查找电脑的以太网地址。
+ 2. 使用`route`指令查看默认网关 ip 地址。
+ 3. 启动 Wireshark ,将过滤器设置为`arp`,开始捕获。
+ 4. 使用`arp -a`指令查看 ARP 缓存,并使用`sudo arp -d 网关ip地址`从缓存中清除默认网关。
+ 5. 使用浏览器浏览网页一段时间。
+ 6. 在捕获到 arp 流量后停止捕获。
+2. 检查捕获
+ 1. 将页面内的过滤器设置为`eth.addr == 电脑以太网地址`。
+ 2. 查看捕获到的内容
+3. ARP 请求与应答
+ 绘制计算机与默认网关之间发送 ARP 请求与回复数据包的图解。
+4. 以太网上的 ARP 详细信息
+ 回答以下问题
+ 1. 什么操作码用于请求,什么操作码用于回复。
+ 2. 请求的 ARP 报头有多大?回复的 ARP 报头有多大?
+ 3. 对于未知目标 MAC 地址的请求中携带什么值?
+ 4. 什么以太网类型值表明 ARP 是更高级协议?
+ 5. ARP 回复是否为广播?
+
+## 三、实验环境
+
+- 实验仪器:ThinkPad X230i
+- 操作系统:Arch GNU/Linux x86\_64
+- 以太网控制器:Intel Corporation 82575LM Gigabit Network Connection
+- 网络控制器:Realtek Semiconductor Co., Ltd. RTL8188CE 820.11b/g/n WiFi Adapter
+- 网络连接:校园网ECNU-1X
+
+## 四、实验过程与分析
+
+1. 捕获
+ 1. 执行`ifconfig`指令,得到的输出如下:
+
+ ``` bash
+ enp0s25: flags=4099 mtu 1500
+ ether 3c:97:0e:27:a3:96 txqueuelen 1000 (Ethernet)
+ RX packets 0 bytes 0 (0.0 B)
+ RX errors 0 dropped 0 overruns 0 frame 0
+ TX packets 0 bytes 0 (0.0 B)
+ TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
+ device interrupt 20 memory 0xf2500000-f2520000
+
+ lo: flags=73 mtu 65536
+ inet 127.0.0.1 netmask 255.0.0.0
+ inet6 ::1 prefixlen 128 scopeid 0x10
+ loop txqueuelen 1000 (Local Loopback)
+ RX packets 1511 bytes 158325 (154.6 KiB)
+ RX errors 0 dropped 0 overruns 0 frame 0
+ TX packets 1511 bytes 158325 (154.6 KiB)
+ TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
+
+ wlan0: flags=4163 mtu 1500
+ inet 172.31.215.159 netmask 255.255.0.0 broadcast 172.31.255.255
+ inet6 fe80::eb67:d196:62b:626a prefixlen 64 scopeid 0x20
+ ether e0:06:e6:c4:be:04 txqueuelen 1000 (Ethernet)
+ RX packets 4206 bytes 2310892 (2.2 MiB)
+ RX errors 0 dropped 0 overruns 0 frame 0
+ TX packets 4771 bytes 2531632 (2.4 MiB)
+ TX errors 0 dropped 76 overruns 0 carrier 0 collisions 0
+ ```
+
+ 在 `wlan0` 下的 `ether` 一行可以得知计算机以太网地址为 `e0:06:e6:c4:be:04` 。
+ 2. 执行 `route` 指令,得到的输出如下:
+
+ ```
+ Kernel IP routing table
+ Destination Gateway Genmask Flags Metric Ref Use Iface
+ default _gateway 0.0.0.0 UG 600 0 0 wlan0
+ 172.31.0.0 0.0.0.0 255.255.0.0 U 600 0 0 wlan0
+ ```
+
+ 可以得知默认网关的 ip 地址为 `172.31.0.0` 。
+ 3. 启动捕获。
+ 4. 执行 `arp -a` 指令,得到输出 `_gateway (172.31.0.1) at 54:c6:ff:7b:38:02 [ether] on wlan0` 。随后执行 `sudo arp -d 172.31.0.1` 指令清除缓存,该指令没有输出,若重复执行,则会得到 `No ARP entry for 172.31.0.1` 输出。
+ 5. 在观察到已经捕获 7 个 ARP 流量包后停止捕获,其界面如图:
+ 
+2. 检查捕获
+ *因为捕获到的包数量较少,故不设置过滤器。*
+ 请求包:
+ 
+ 回复包:
+ 
+3. ARP 请求与回复
+ 其图例如下
+
+ ```mermaid
+ flowchart LR
+ computer[计算机
MAC e0:06:e6:c4:be:04
IP 172.31.215.159]
+ gateway[网关
MAC 54:c6:ff:7b:38:02
IP 172.31.0.1]
+ computer--request
Who has 172.31.0.1? Tell 172.31.215.159-->gateway
+ gateway--reply
172.31.0.1 is at 54:c6:ff:7b:38:02-->computer
+ ```
+
+4. 以太网上的 ARP 详细信息
+ 1. 请求的操作码为 `0x0001` ,回复的操作码为 `0x0002` 。
+ 2. 请求与回复的的 ARP 报头均为 28 bytes,对于报文,请求的报文为 42 bytes,回复的报文为60 bytes。
+ 3. 目标 MAC 地址为 `00:00:00_00:00:00` 。
+ 4. 以太网报头中的 `type` 字段为 `0x0806` 。
+ 5. ARP 回复为单播而非广播。
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab4/route.txt b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab4/route.txt
new file mode 100644
index 0000000..c6b155a
--- /dev/null
+++ b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab4/route.txt
@@ -0,0 +1,4 @@
+Kernel IP routing table
+Destination Gateway Genmask Flags Metric Ref Use Iface
+default _gateway 0.0.0.0 UG 600 0 0 wlan0
+172.31.0.0 0.0.0.0 255.255.0.0 U 600 0 0 wlan0
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab5/lib5-1.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab5/lib5-1.png
new file mode 100644
index 0000000..8bbcaf1
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab5/lib5-1.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab5/lib5-2.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab5/lib5-2.png
new file mode 100644
index 0000000..e5980ca
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab5/lib5-2.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab5/lib5-3.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab5/lib5-3.png
new file mode 100644
index 0000000..ba66e09
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab5/lib5-3.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab5/lib5-4.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab5/lib5-4.png
new file mode 100644
index 0000000..87a5a65
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab5/lib5-4.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab5/lib5.md b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab5/lib5.md
new file mode 100644
index 0000000..546d038
--- /dev/null
+++ b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab5/lib5.md
@@ -0,0 +1,80 @@
+---
+title: Lab5 - UDP
+---
+# 华东师范大学软件学院实验报告
+
+## 一、实验目的
+
+学习 UDP 的构成等详细信息。
+
+## 二、使用内容与实验步骤
+
+1. 捕获
+ 1. 启动 Wireshark ,关闭混杂,将过滤器设置为“udp”,开始捕获。
+ 2. 浏览网页以产生 UDP 流量。
+ 3. 停止浏览,等待一分钟左右观察背景 UDP 流量。
+ 4. 停止捕获。
+2. 检查捕获到的数据
+ 观察所捕获到的流量包,UDP 协议包包括如下字段:源端口、目标端口、长度、校验和。
+ **注意:协议列所列出的协议可能是 UDP 之上的应用程序协议名称而非 UDP**
+3. UDP 消息结构
+ 制作一份 UDP 报文图例并回答如下问题:
+ 1. 长度字段包含什么?
+ 1. UDP 有效负载
+ 2. UDP 有效负载与 UDP 报头
+ 3. UDP 有效负载、UDP 报头与底层报头
+ 2. UDP 校验和的长度为多少?(以位为单位)
+ 3. UDP 报头的长度为多少字节?
+4. UDP 使用
+ 回答如下问题:
+ 1. 给出标识上层协议为 UDP 的 IP 协议字段的值
+ 2. 检查 UDP 消息并提供**当电脑既不是源IP地址也不是目标IP地址时**使用的目标 IP 地址
+ 3. 捕获到的 UDP 消息的典型大小为多少
+
+## 三、实验环境
+
+- 实验仪器:ThinkPad X230i
+- 操作系统:Arch GNU/Linux x86\_64
+- 以太网控制器:Intel Corporation 82575LM Gigabit Network Connection
+- 网络控制器:Realtek Semiconductor Co., Ltd. RTL8188CE 820.11b/g/n WiFi Adapter
+- 网络连接:校园网ECNU-1X
+
+## 四、实验过程与分析
+
+1. 捕获
+ 本步骤采用老师所提供的捕获文件
+2. 检查捕获到的数据
+ 捕获包如图所示
+ 
+3. UDP 消息结构
+ 观察下图所列出的包
+ 
+ 1. UDP 报头为 8 bytes,负载为 143 bytes,二者之和恰为 UDP 长度字段所标注的 151 bytes,故 UDP 长度字段包括 **UDP 有效负载与 UDP 报头**。
+ 2. UDP 校验和的长度为 2 bytes,即 16 位。
+ 3. UDP 报头的长度为 8 bytes。
+ UDP 报文结构如下表所示:
+
+
+ | UDP Header |
+ UDP Payload |
+
+
+ | Source Port |
+ Destination Port |
+ Length |
+ Checksum |
+ many bytes |
+
+
+ | 2 bytes |
+ 2 bytes |
+ 2 bytes |
+ 2 bytes |
+
+
+4. UDP 使用
+ 1. 如图所示,IP 协议字段的值为 0x11 ,即 17
+ 
+ 2. 如图所示,目标 IP 地址为 239.255.255.250
+ 
+ 3. 捕获到的 UDP 消息大小大多在 100 bytes 与 300 bytes 之间。
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab6/lib6-1.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab6/lib6-1.png
new file mode 100644
index 0000000..57642b4
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab6/lib6-1.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab6/lib6-2.pcapng b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab6/lib6-2.pcapng
new file mode 100644
index 0000000..c7c87c6
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab6/lib6-2.pcapng differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab6/lib6-2.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab6/lib6-2.png
new file mode 100644
index 0000000..5c90da1
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab6/lib6-2.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab6/lib6-3.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab6/lib6-3.png
new file mode 100644
index 0000000..765d119
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab6/lib6-3.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab6/lib6-4.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab6/lib6-4.png
new file mode 100644
index 0000000..71c0ee7
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab6/lib6-4.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab6/lib6-5.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab6/lib6-5.png
new file mode 100644
index 0000000..a399e99
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab6/lib6-5.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab6/lib6-6.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab6/lib6-6.png
new file mode 100644
index 0000000..15ba767
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab6/lib6-6.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab6/lib6.md b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab6/lib6.md
new file mode 100644
index 0000000..7e37973
--- /dev/null
+++ b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab6/lib6.md
@@ -0,0 +1,234 @@
+---
+title: Lab6 - TCP
+---
+
+# 华东师范大学软件学院实验报告
+
+## 一、实验目的
+
+学习了解 TCP 的相关内容。
+
+## 二、使用内容与实验步骤
+
+1. 捕获
+
+ 1. 找到一个可以使用 HTTP 下载的中等大小单一资源。
+
+ 2. 使用 wget 或 curl 命令尝试下载,确保可以在几秒内下载至少 500 KB 的内容。
+
+ 3. 启用 Wireshark ,将过滤器设置为 "tcp and host $DOMAIN" ,其中 $DOMAIN 为远程服务器的域名,并开始捕获。
+
+ 4. 重复 1.2 中的命令。
+
+ 5. 返回 Wireshark 并停止捕获。
+
+2. 检查捕获到的内容
+
+ 选择一个协议列为 TCP 的数据包,展开 TCP 协议部分。捕获到的内容中协议列除了初始 HTTP GET 和末尾的 HTTP 相应包之外均为 TCP 。在一个 TCP 包中,大致可以看到如下内容:
+
+ 1. 源端口(可能为 80)与目标端口。
+
+ 2. 序列号字段,告知第一个有效负载字节在字节流中的位置。
+
+ 3. 确认字段,告知反向字节流中最后接收的位置。
+
+ 4. 报头长度,TCP 报头的长度。
+
+ 5. 标志字段。
+
+ 6. 校验和,用于检查传输错误。
+
+ 7. 选项字段。(可能不存在)
+
+ 8. TCP 有效负载,表示正在传输的内容.(可能不存在)
+
+3. TCP 段结构
+
+ 绘制一个 TCP 段结构图。
+
+4. TCP 建立与拆除。
+
+ - 三次握手
+
+ 查找带有 SYN 标志的 TCP 段以及其后的数据包的详细信息。绘制三次握手的时间序列图,序列图应包括如下内容:
+
+ - 每个段上的序列号与 ACK 号(如果存在)
+
+ - 以毫秒为单位的时间
+
+ - 到服务器的往返时间估计,即 SYN 和 SYN-ACK 段之间的差值
+
+ - 连接选项
+
+ SYN 数据包中携带了哪些 TCP 选项。
+
+ - FIN/RST 拆除
+
+ 查找带有 FIN 或 RES 标志的 TCP 段及其之后的数据包的详细信息。并绘制时间序列图,要求同三次握手的时间序列图。
+
+5. TCP 数据传输
+
+ 在统计菜单下,选择“IO图表”,观察并回答以下问题:
+
+ 1. TCP 连接运行良好后,下载方向的大致数据速率是多少(分别计算 packets/s 与 bits/s)
+
+ 2. 查看下载数据包,通过观察包的大小与 TCP 有效负载的大小,计算下载率中有多少百分比是内容?
+
+ 3. 传输方向的大致数据速率是多少?
+
+ 4. 如果最近从服务器接收的 TCP 段的序列号为 x ,那么下一个传输的 TCP 段携带什么 ACK 号?
+
+ 检查捕获到的下载数据包是否具有如下特征:
+
+ - 延迟 ACK。
+
+ - 接受到的段的序列号增加,后续传输的段的 ACK 号也相应增加。
+
+ - 在初始获取之后,传输的段的序列号不增加,接收段上的 ACK 编号也不增加。
+
+ - 每个段都带有大于等于 0 的窗口信息。
+
+## 三、实验环境
+
+- 实验仪器:ThinkPad X230i
+- 操作系统:Arch GNU/Linux x86\_64
+- 以太网控制器:Intel Corporation 82575LM Gigabit Network Connection
+- 网络控制器:Realtek Semiconductor Co., Ltd. RTL8188CE 820.11b/g/n WiFi Adapter
+- 网络连接:校园网 ECNU-1X
+
+## 四、实验过程与分析
+
+1. 捕获
+
+2. 检查捕获到的内容
+
+ 捕获到的内容如图所示:
+
+ 
+
+3. TCP 段结构
+
+
+
+ | TCP 报头 |
+ TCP 负载 |
+
+
+ | 源端口 |
+ 目标端口 |
+ 序列号 |
+ 确认号 |
+ 报头长度 |
+ Flags |
+ 窗口 |
+ 校验和 |
+ 紧急指针 |
+ Options |
+ TCP Payloads |
+
+
+ | 2 bytes |
+ 2 bytes |
+ 4 bytes |
+ 4 bytes |
+ 4 bits |
+ 12 bits |
+ 2 bytes |
+ 2 bytes |
+ 2 bytes |
+ 12 bytes |
+ Many bytes |
+
+
+
+4. TCP 建立与拆除。
+
+ - 三次握手
+
+ SYN及其之后包的信息如图所示:
+
+ 
+
+ 根据所得到的信息画图:
+
+ ```mermaid
+ sequenceDiagram
+ autonumber
+ participant Client
+ participant Server
+ Client->>Server: 0th ms, SYN, 序列号: 0
+ Note left of Client: Δ = 96ms
+ Server->>Client: 96th ms, SYN-ACK, 序列号: 0, ACK号: 1
+ Client->>Server: 96th ms, ACK, 序列号: 1, ACK号: 1
+ ```
+
+ - 连接选项
+
+ SYN 包具体信息如图所示:
+
+ 
+
+ 故可以观察到 SYN 包携带的选项有:
+
+ - Maximum segment size(最大段大小)
+ - SACK permitted(SACK 许可)
+ - Timestamps(时间戳)
+ - NOP(无操作)
+ - Window sacle(窗口比例)
+
+ - FIN/RST 拆除
+
+ FIN及其之后包的信息如图所示:
+
+ 
+
+ 根据所得到的信息画图:
+
+ ```mermaid
+ sequenceDiagram
+ autonumber
+ participant Client
+ participant Server
+ Client->>Server: 844th ms, FIN-ACK, 序列号: 237, ACK号: 256850
+ Note left of Client: Δ = 45ms
+ Server->>Client: 889th ms, FIN-ACK, 序列号: 256850, ACK号: 238
+ Client->>Server: 889th ms, ACK, 序列号: 238, ACK号: 256851
+ ```
+
+5. TCP 数据传输
+
+ IO 图表如图:
+
+ 
+
+ 
+
+ 1. 下载方向的大致数据速率是
+
+ $$
+ \frac{\frac{1}{8}(18+35+13+8+46+23+28+21) packets}{0.1 s} = 240\ packets/s
+ $$
+
+ $$
+ \frac{\frac{1}{8}(185300+401500+149100+91780+527700+263900+321200+226600) bits}{0.1 s} =2708850\ bits/s
+ $$
+
+ 2. 查看下载数据包,通过观察包的大小与 TCP 有效负载的大小,计算下载率中有多少百分比是内容?
+
+ $$
+ \frac{1368 bytes}{1434 bytes}=\frac{228}{239} \approx 95.40\%
+ $$
+
+ 3. 传输方向的大致数据速率是
+
+ $$
+ \frac{\frac{1}{8}(16+29+13+8+32+10+23+22) packets}{0.1 s} = 191.25\ packets/s
+ $$
+
+ $$
+ \frac{\frac{1}{8}(8448+15310+6864+4224+16990+5280+12140+11620) bits}{0.1 s} =101095\ bits/s
+ $$
+
+ 4. 如果最近从服务器接收的 TCP 段的序列号为 x ,那么下一个传输的 TCP 段携带什么 ACK 号?
+
+ **x+TCP 负载字节数**
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab6/lib6.pcapng b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab6/lib6.pcapng
new file mode 100644
index 0000000..97a5713
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab6/lib6.pcapng differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/F.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/F.png
new file mode 100644
index 0000000..28eabb4
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/F.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/client b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/client
new file mode 100644
index 0000000..4ed3417
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/client differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/client0.txt b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/client0.txt
new file mode 100644
index 0000000..8dadb9e
--- /dev/null
+++ b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/client0.txt
@@ -0,0 +1,20 @@
+❯ ./client localhost
+text0:hello, world
+text1: !"#$%&'()*+,-./0123456789:;<=>?`ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_@abcdefghijklmnopqrstuvwxyz{|}~
+text2:\t \t
+text3:你好,世界
+text4:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
+client0 stop
+^C
+❯ ./client localhost
+client0 restart
+server stop
+a text from client
+server restart
+❯ ./client localhost
+simplex-talk: connect: Connection refused
+❯ ./client localhost
+client0
+text from client0
+client0 stop
+^C
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/client1.txt b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/client1.txt
new file mode 100644
index 0000000..adb996c
--- /dev/null
+++ b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/client1.txt
@@ -0,0 +1,7 @@
+❯ ./client localhost
+client1
+text from client1
+client1 stop
+^C
+./client
+usage: simplex-talk host
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-1.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-1.png
new file mode 100644
index 0000000..2b62c47
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-1.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-10.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-10.png
new file mode 100644
index 0000000..3d65107
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-10.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-11.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-11.png
new file mode 100644
index 0000000..2e6f3e1
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-11.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-12.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-12.png
new file mode 100644
index 0000000..5d14f26
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-12.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-13.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-13.png
new file mode 100644
index 0000000..d0ad1bc
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-13.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-14.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-14.png
new file mode 100644
index 0000000..5b18b4d
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-14.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-15.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-15.png
new file mode 100644
index 0000000..f56dc26
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-15.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-17.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-17.png
new file mode 100644
index 0000000..0976db7
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-17.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-18.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-18.png
new file mode 100644
index 0000000..21a70a0
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-18.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-2.pcapng b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-2.pcapng
new file mode 100644
index 0000000..ab80e25
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-2.pcapng differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-2.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-2.png
new file mode 100644
index 0000000..1c8c5a5
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-2.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-3.pcapng b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-3.pcapng
new file mode 100644
index 0000000..a503232
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-3.pcapng differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-3.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-3.png
new file mode 100644
index 0000000..1a18b66
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-3.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-4.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-4.png
new file mode 100644
index 0000000..6c26260
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-4.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-5.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-5.png
new file mode 100644
index 0000000..a1f230f
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-5.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-7.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-7.png
new file mode 100644
index 0000000..d239baf
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-7.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-8.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-8.png
new file mode 100644
index 0000000..12635b1
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-8.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-9.png b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-9.png
new file mode 100644
index 0000000..4524aaa
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7-9.png differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7.md b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7.md
new file mode 100644
index 0000000..9d4129c
--- /dev/null
+++ b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7.md
@@ -0,0 +1,286 @@
+---
+title: Lab7 - Socket Programming
+---
+
+# 华东师范大学软件学院实验报告
+
+## 一、实验目的
+
+了解套接字编程相关内容。
+
+## 二、使用内容与实验步骤
+
+使用实验手册中所给出的示例代码,并进行相关测试。
+
+## 三、实验环境
+
+- 实验仪器1:ThinkPad X230i
+ - 操作系统:6.12.9-arch1-1 x86_64 GNU/Linux
+ - 以太网控制器:Intel Corporation 82575LM Gigabit Network Connection
+ - 网络控制器:Realtek Semiconductor Co., Ltd. RTL8188CE 820.11b/g/n WiFi Adapter
+
+- 实验仪器2:raspberrypi 4B
+ - 操作系统:6.6.47+rpt-rpi-v8 aarch64 GNU/Linux
+
+- 网络连接:宿舍 Wifi
+
+## 四、实验过程与分析
+
+本地测试记录如下图:
+
+
+
+实验步骤
+
+1. 启动 Wireshark,根据代码中常量定义,将过滤选项设置为`tcp.port==7701`,对 `Loopback: lo` 进行捕获
+
+2. 启动服务端
+
+3. 启动0号客户端,此时 Wireshark 捕获到三次握手包,观察到0号客户端采用44514端口:
+
+ 
+
+4. 发送文本测试
+
+ 1. 0号客户端发送测试文本0(测试短文本):`text0:hello, world`,服务端显示:`text0:hello, world`,正常发送,Wireshark 捕获到的包信息如下。
+
+ 
+
+ 2. 0号客户端发送测试文本1(测试ACSII可显示字符):text1: ``!"#\$%&'()*+,-./0123456789:;<=>?`ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_@abcdefghijklmnopqrstuvwxyz{|}~``,服务端显示:text1: ``!"#\$%&'()*+,-./0123456789:;<=>?`ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_@abcdefghijklmnopqrstuvwxyz{|}~``,正常发送,Wireshark 捕获到的包信息如下。
+
+ 
+
+ 3. 0号客户端发送测试文本2(测试tab字符):`text2:\t \t`,服务端显示:`text2:\t \t`,正常发送,Wireshark 捕获到的包信息如下。
+
+ 
+
+ 可以观察到 tab 以正常形式(ACSII码为9)发出
+
+ 4. 0号客户端发送测试文本3(测试中文文本):`text3:你好,世界`,服务端显示:`text3:你好,世界`,正常发送,Wireshark 捕获到的包信息如下。
+
+ 
+
+ 5. 0号客户端发送测试文本4(测试长文本):`text4:0123456789abcdef...0123456789abcdef`(共计32774字节),服务端显示:`text4:0123456789abcdef...012345678`(共计4096字节),文本发送不正常,仅发送前 4096 字节,检查 Wireshark ,可以发现0号客户端共发送16个包,前15个包中每个包携带255字节的文本,最后一个包携带16字节的文本,捕获到的第一个与最后一个客户端包信息如下。
+
+ 
+
+ 可以观察到 IP 协议头中 DF 为 1 ,故数据未经 IP 分片,数据的分段发生在 TCP 加工阶段。
+
+5. 断连测试
+
+ 1. 断开0号客户端连接,捕获到由0号客户端发出的结束请求
+
+ 
+
+ 2. 重新恢复0号客户端连接
+
+ 3. 断开服务端连接,捕获到由服务端发出的结束请求(FIN),0号客户端发送ACK确认,但未得到服务端的ACK确认,于是0号客户端将在等待2MSL后自动断开连接,捕获到的包信息如下:
+
+ 
+
+ 4. 0号客户端发送文本`a text from client`, Wireshark 捕获到的内容如下
+
+ 
+
+ 0号客户端发送了带有 PSH 的信息包,端口收到后优先处理该数据包,由于服务端已经关闭,7701端口空闲,故返回带有RST的数据报。
+
+ 5. 0号客户端发送文本`server restart`,按下回车后客户端自动退出,Wireshark 没有捕获到消息
+
+ 6. 执行指令`./client localhost`,尝试重新启动客户端,收到报错`simplex-talk: connect: Connection refused`,捕获到的包信息如下
+
+ 
+
+ 0号客户端发送了带有 SYN 的信息包,由于服务端已经关闭,7701端口空闲,故返回带有RST的数据报,0号客户端收到后报告错误并退出
+
+ 7. 执行指令`./client`,不指定地址,报错`usage: simplex-talk host`
+
+6. 多客户端测试
+
+ 1. 重新启动服务端
+ 2. 启动0号客户端,观察 Wireshark ,可以发现0号客户端使用端口为53092
+ 3. 0号客户端发送文本`client0`,服务端显示:`client0`,正常发送。
+ 4. 启动1号客户端,观察 Wireshark ,可以发现1号客户端使用端口为43676,Wireshark 捕获包信息如下:
+
+ 
+
+ 5. 1号客户端发送文本`client1`,服务端没有显示,但 Wireshark 捕获到信息包。
+ 6. 0号客户端发送文本`text from client0`,服务端显示`text from client0`,正常发送。
+ 7. 1号客户端发送文本`text from client1`,服务端没有显示,但 Wireshark 捕获到信息包。
+ 8. 0号客户端发送文本`client0 stop`,服务端显示`client0 stop`,正常发送。
+ 9. 0号客户端断开连接,服务端显示`client1`
+ 10. 0号客户端发送文本`client1 stop`,服务端显示`client1 stop`,正常发送。
+ 11. 断开服务端连接。
+
+ 1 号客户端发送的三个携带文本的信息包如下:
+
+ 
+
+7. 端口占用测试
+
+ 1. 启动服务端,Wireshark 未捕获到内容
+ 2. 启动第二个服务端,报错`simplex-talk: bind: Address already in use`,Wireshark 未捕获到内容
+ 3. 启动客户端
+ 4. 关闭服务端
+ 5. 尝试重新启动服务端,报错`simplex-talk: bind: Address already in use`,Wireshark 未捕获到内容
+ 6. 客户端退出
+ 7. 尝试重新启动服务端,服务端正常运行
+
+ 测试截图如下:
+
+ 
+
+8. 局域网通信测试
+
+ 1. 通过 ssh 连接并控制同一局域网下的另一设备
+
+ 2. 通过 ftp 上传源代码server.c与client.c
+
+ 3. 在 ssh 所控制设备上编译
+
+ 4. 启动 Wireshark ,将过滤器设置为`tcp.port == 7701`,对wlan0进行捕获
+
+ 5. 在远程主机上执行`./server`,在电脑上执行`./client 192.168.31.135`,成功连接
+
+ 6. 在客户端上发送信息,远程服务端成功收到
+
+ 7. 交换客户端与服务端,仍能成功通信
+
+ 通信记录与 Wireshark 捕获截图如下:
+
+ 
+
+ 
+
+## 五、附录
+
+客户端代码如下:
+
+```c
+/* Source: Peterson & Davie (2007), Computer Networks, a Systems Approach,
+ * 4th ed., Morgan Kaufmann, p. 34-35.
+ * Included stdlib.h, string.h, and strings.h so it compiles on Linux.
+ * Changed port from 5432 (postgresql) to 7701 (unassigned).
+ * - JLND Feb 7 2009
+ */
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#define SERVER_PORT 7701
+#define MAX_LINE 256
+
+int main(int argc, char * argv[])
+{
+ FILE *fp;
+ struct hostent *hp;
+ struct sockaddr_in sin;
+ char *host;
+ char buf[MAX_LINE];
+ int s;
+ int len;
+
+ if (argc==2) {
+ host = argv[1];
+ }
+ else {
+ fprintf(stderr, "usage: simplex-talk host\n");
+ exit(1);
+ }
+
+ /* translate host name into peer’s IP address */
+ hp = gethostbyname(host);
+ if (!hp) {
+ fprintf(stderr, "simplex-talk: unknown host: %s\n", host);
+ exit(1);
+ }
+
+ /* build address data structure */
+ bzero((char *)&sin, sizeof(sin));
+ sin.sin_family = AF_INET;
+ bcopy(hp->h_addr, (char *)&sin.sin_addr, hp->h_length);
+ sin.sin_port = htons(SERVER_PORT);
+
+ /* active open */
+ if ((s = socket(PF_INET, SOCK_STREAM, 0)) < 0) {
+ perror("simplex-talk: socket");
+ exit(1);
+ }
+ if (connect(s, (struct sockaddr *)&sin, sizeof(sin)) < 0) {
+ perror("simplex-talk: connect");
+ close(s);
+ exit(1);
+ }
+
+ /* main loop: get and send lines of text */
+ while (fgets(buf, sizeof(buf), stdin)) {
+ buf[MAX_LINE-1] = '\0';
+ len = strlen(buf) + 1;
+ send(s, buf, len, 0);
+ }
+}
+```
+
+服务端代码如下:
+
+```c
+/* Source: Peterson & Davie (2007), Computer Networks, a Systems Approach,
+ * 4th ed., Morgan Kaufmann, p. 35-36.
+ * Included stdlib.h, string.h, and strings.h so it compiles on Linux.
+ * Changed port from 5432 (postgresql) to 7701 (unassigned).
+ * - JLND Feb 7 2009
+ */
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#define SERVER_PORT 7701
+#define MAX_PENDING 5
+#define MAX_LINE 256
+
+int main()
+{
+ struct sockaddr_in sin;
+ char buf[MAX_LINE];
+ int len;
+ int s, new_s;
+
+ /* build address data structure */
+ bzero((char *)&sin, sizeof(sin));
+ sin.sin_family = AF_INET;
+ sin.sin_addr.s_addr = INADDR_ANY;
+ sin.sin_port = htons(SERVER_PORT);
+
+ /* setup passive open */
+ if ((s = socket(PF_INET, SOCK_STREAM, 0)) < 0) {
+ perror("simplex-talk: socket");
+ exit(1);
+ }
+ if ((bind(s, (struct sockaddr *)&sin, sizeof(sin))) < 0) {
+ perror("simplex-talk: bind");
+ exit(1);
+ }
+ listen(s, MAX_PENDING);
+
+ /* wait for connection, then receive and print text */
+ while(1) {
+ if ((new_s = accept(s, (struct sockaddr *)&sin, &len)) < 0) {
+ perror("simplex-talk: accept");
+ exit(1);
+ }
+ while (len = recv(new_s, buf, sizeof(buf), 0))
+ fputs(buf, stdout);
+ close(new_s);
+ }
+}
+```
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7.pcapng b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7.pcapng
new file mode 100644
index 0000000..fe67e2d
Binary files /dev/null and b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/lib7.pcapng differ
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/server.txt b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/server.txt
new file mode 100644
index 0000000..a61efb5
--- /dev/null
+++ b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/server.txt
@@ -0,0 +1,17 @@
+❯ ./server
+text0:hello, world
+text1: !"#$%&'()*+,-./0123456789:;<=>?`ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_@abcdefghijklmnopqrstuvwxyz{|}~
+text2:\t \t
+text3:你好,世界
+text4:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef012345678
+client0 stop
+client0 restart
+server stop
+^C
+❯ ./server
+client0
+text from client0
+client0 stop
+client1
+client1 stop
+^C
diff --git a/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/test.txt b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/test.txt
new file mode 100644
index 0000000..b37a902
--- /dev/null
+++ b/docs/undergraduate/软件工程学院/计算机网络实践/lab/王廷/2024-2025学年上学期/lab7/test.txt
@@ -0,0 +1 @@
+0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
\ No newline at end of file