fix: fix all format in Computer Network Exps

This commit is contained in:
KirisameVanilla 2025-09-11 12:56:29 +08:00
parent 18a6d9eaf7
commit a31ce767b4
No known key found for this signature in database
GPG Key ID: 7FC750F817277AC5
10 changed files with 176 additions and 455 deletions

View File

@ -5,11 +5,9 @@ title: 计算机网络
!!! warning "施工中" !!! warning "施工中"
# 计算机网络
## 实验报告 ## 实验报告
- [lab1](./lab/lab1/lab1) - [lab1](./lab/lab1/lab1.md)
- [lab2 Ethernet](./lab/lab2/lib2) - [lab2 Ethernet](./lab/lab2/lib2)
- [lab3 IPV4](./lab/lab3/lib3) - [lab3 IPV4](./lab/lab3/lib3)
- [lab4 ARP](./lab/lab4/lib4) - [lab4 ARP](./lab/lab4/lib4)

View File

@ -1,6 +1,10 @@
**华东师范大学软件学院实验报告** ---
title: Lab1
---
**一、实验目的** # 华东师范大学软件学院实验报告
## 一、实验目的
1. 学会使用curl与wget指令 1. 学会使用curl与wget指令
@ -10,113 +14,86 @@
4. 学会计算并分析协议开销 4. 学会计算并分析协议开销
**二、实验内容与实验步骤** ## 二、实验内容与实验步骤
1. 在控制台中输入"curl <http://1st.moe/"并观察到"200> OK" 1. 在控制台中输入`curl http://1st.moe/`,并观察到`200 OK`
2. 启动Wireshark选择监听以太网并将捕获过滤器设置为tcp port 2. 启动Wireshark选择监听以太网并将捕获过滤器设置为tcp port 80关闭混杂模式并启用"enable network name resolution"选项
> 80关闭混杂模式并启用"enable network name resolution"选项
3. 关闭所有浏览器窗口后开始捕获 3. 关闭所有浏览器窗口后开始捕获
4. 重新在控制台输入"curl [**http://1st.moe/**](http://1st.moe/)" 4. 重新在控制台输入 `curl http://1st.moe/`
5. 停止Wireshark捕获 5. 停止Wireshark捕获
**三、实验环境** ## 三、实验环境
> B226机房电脑 B226机房电脑
**四、实验过程与分析** ## 四、实验过程与分析
1. 实验过程 1. 实验过程
1) 捕获内容如图所示 捕获内容如图所示
> ![](./Pictures/100000010000094B000002EADEAFEA2E.png){width="17.007cm" ![捕获内容](./Pictures/100000010000094B000002EADEAFEA2E.png)
> height="5.3cm"}
2. 1) 分析协议包的内容 2.
分析协议包的内容
> ![](./Pictures/10000001000003320000015C8A9E98EE.png){width="8.504cm" ![协议包内容1](./Pictures/10000001000003320000015C8A9E98EE.png)
> height="3.6cm"}![](./Pictures/100000010000032800000154F3640027.png){width="8.504cm" ![协议包内容2](./Pictures/100000010000032800000154F3640027.png)
> height="3.579cm"}![](./Pictures/100000010000032900000152B123680E.png){width="8.504cm" ![协议包内容3](./Pictures/100000010000032900000152B123680E.png)
> height="3.556cm"}![](./Pictures/100000010000033300000151977B0DF0.png){width="8.504cm" ![协议包内容4](./Pictures/100000010000033300000151977B0DF0.png)
> height="3.489cm"}
> 根据如上四张图片,可以发现各个协议所占的字节数为 根据如上四张图片,可以发现各个协议所占的字节数为
+---------------------------------------+-------------+ | 协议 | 字节数 |
| > 协议 | > 字节数 | |-------------------------------------|-----------|
+---------------------------------------+-------------+ | Ethernet (eth) | 14 bytes |
| > Ethernet (eth) | > 14 bytes | | Internet Protocol Version 6 (ipv6) | 40 bytes |
+---------------------------------------+-------------+ | Transmission Control Protocol (tcp) | 20 bytes |
| > Internet Protocol Version 6 (ipv6) | > 40 bytes | | Hypertext Transfer Protocol (http) | 128 bytes |
+---------------------------------------+-------------+
| > Transmission Control Protocol (tcp) | > 20 bytes |
+---------------------------------------+-------------+
| > Hypertext Transfer Protocol (http) | > 128 bytes |
+---------------------------------------+-------------+
> 则包的结构大致如下 则包的结构大致如下
+-------------------+--------------------+------------+-------------+ | eth | ip | tcp | http |
| > eth | > ip | > tcp | > http | |-----------------|------------------|----------|-----------|
+-------------------+--------------------+------------+-------------+ | 14 bytes | 40 bytes | 20 bytes | 128 bytes |
| > 14 bytes | > 40 bytes | > 20 bytes | > 128 bytes | | Ethernet Header | Ethernet Payload | | |
+-------------------+--------------------+------------+-------------+ | IP Header | IP Payload | | |
| > Ethernet Header | > Ethernet Payload | | |
+-------------------+--------------------+------------+-------------+
| > IP Header | > IP Payload | | |
+-------------------+--------------------+------------+-------------+
3. 问题 3. 问题
1) 分析协议开销 1. 分析协议开销
> 一个GET本身的大小为128 一个GET本身的大小为128
> bytes而其相应产生的SYN、ACK请求也应算入其开销中。根据图片 bytes而其相应产生的SYN、ACK请求也应算入其开销中。根据图片
![alt](./Pictures/10000001000004EE0000005E50C8B369.png)
可以计算得出由于协议产生的总开销为86+74+(202-128)+74=308
bytes从而计算得出比值约为0.4156,考虑到信息传输的稳定性,协议开销是值得的。
> ![](./Pictures/10000001000004EE0000005E50C8B369.png){width="17.096cm" 2. 以太网头部中哪一部分是解复用键并且告知它的下一个高层指的是IP在这一包内哪一个值可以表示IP
> height="1.281cm"}
> 可以计算得出由于协议产生的总开销为86+74+(202-128)+74=308 根据图片
> bytes从而计算得出比值约为0.4156,考虑到信息传输的稳定性,协议开销是值得的。 ![alt](./Pictures/10000001000004000000007864293250.png)
![alt](./Pictures/1000000100000470000000F4B4E41AC7.png)
可以直观看出ipv6对应的分解键为0x86ddtcp对应的分解键为6
4. 1) 以太网头部中哪一部分是解复用键并且告知它的下一个高层指的是IP在这一包内哪一个值可以表示IP 4. 故障分析
> 根据图片 在实验过程中出现了控制台有反馈但Wireshark没有捕获的情况经排查后发现是由于控制台指令输入错误误将http输入为https所致。
> ![](./Pictures/10000001000004000000007864293250.png){width="17.096cm" ## 五、实验结果总结
> height="2.009cm"}
> ![](./Pictures/1000000100000470000000F4B4E41AC7.png){width="17.096cm"
> height="3.667cm"}
> 可以直观看出ipv6对应的分解键为0x86ddtcp对应的分解键为6
5. 故障分析
> 在实验过程中出现了控制台有反馈但Wireshark没有捕获的情况经排查后发现是由于控制台指令输入错误误将http输入为https所致。
**五、实验结果总结**
1. 实验完成了对一个HTTP包的拆解与分析其大体结构大致如下 1. 实验完成了对一个HTTP包的拆解与分析其大体结构大致如下
+-------------------+--------------------+------------+-------------+ |th|ip|tcp|http|
| > Eth | > ip | > tcp | > http | |-|-|--|-|
+-------------------+--------------------+------------+-------------+ | 14 bytes | 40 bytes | 20 bytes | 128 bytes |
| > 14 bytes | > 40 bytes | > 20 bytes | > 128 bytes | | Ethernet Header | Ethernet Payload | | |
+-------------------+--------------------+------------+-------------+ | IP Header | IP Payload | | |
| > Ethernet Header | > Ethernet Payload | | |
+-------------------+--------------------+------------+-------------+
| > IP Header | > IP Payload | | |
+-------------------+--------------------+------------+-------------+
2. 实验通过curl指令与Wireshark软件完成在其中熟悉网络工具的使用并体会到其强大之处 2. 实验通过curl指令与Wireshark软件完成在其中熟悉网络工具的使用并体会到其强大之处
3. 通过查询相关资料,了解开销、分解键等概念 3. 通过查询相关资料,了解开销、分解键等概念
**六、附录**
**无**

View File

@ -1,250 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>&lt;center&gt;&#x534e;&#x4e1c;&#x5e08;&#x8303;&#x5927;&#x5b66;&#x8f6f;&#x4ef6;&#x5b66;&#x9662;&#x5b9e;&#x9a8c;&#x62a5;&#x544a;&lt;&sol;center&gt;</title>
<style>
/* From extension vscode.github */
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
.vscode-dark img[src$=\#gh-light-mode-only],
.vscode-light img[src$=\#gh-dark-mode-only],
.vscode-high-contrast:not(.vscode-high-contrast-light) img[src$=\#gh-light-mode-only],
.vscode-high-contrast-light img[src$=\#gh-dark-mode-only] {
display: none;
}
</style>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/Microsoft/vscode/extensions/markdown-language-features/media/markdown.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/Microsoft/vscode/extensions/markdown-language-features/media/highlight.css">
<style>
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe WPC', 'Segoe UI', system-ui, 'Ubuntu', 'Droid Sans', sans-serif;
font-size: 14px;
line-height: 1.6;
}
</style>
<style>
.task-list-item {
list-style-type: none;
}
.task-list-item-checkbox {
margin-left: -20px;
vertical-align: middle;
pointer-events: none;
}
</style>
<style>
:root {
--color-note: #0969da;
--color-tip: #1a7f37;
--color-warning: #9a6700;
--color-severe: #bc4c00;
--color-caution: #d1242f;
--color-important: #8250df;
}
</style>
<style>
@media (prefers-color-scheme: dark) {
:root {
--color-note: #2f81f7;
--color-tip: #3fb950;
--color-warning: #d29922;
--color-severe: #db6d28;
--color-caution: #f85149;
--color-important: #a371f7;
}
}
</style>
<style>
.markdown-alert {
padding: 0.5rem 1rem;
margin-bottom: 16px;
color: inherit;
border-left: .25em solid #888;
}
.markdown-alert>:first-child {
margin-top: 0
}
.markdown-alert>:last-child {
margin-bottom: 0
}
.markdown-alert .markdown-alert-title {
display: flex;
font-weight: 500;
align-items: center;
line-height: 1
}
.markdown-alert .markdown-alert-title .octicon {
margin-right: 0.5rem;
display: inline-block;
overflow: visible !important;
vertical-align: text-bottom;
fill: currentColor;
}
.markdown-alert.markdown-alert-note {
border-left-color: var(--color-note);
}
.markdown-alert.markdown-alert-note .markdown-alert-title {
color: var(--color-note);
}
.markdown-alert.markdown-alert-important {
border-left-color: var(--color-important);
}
.markdown-alert.markdown-alert-important .markdown-alert-title {
color: var(--color-important);
}
.markdown-alert.markdown-alert-warning {
border-left-color: var(--color-warning);
}
.markdown-alert.markdown-alert-warning .markdown-alert-title {
color: var(--color-warning);
}
.markdown-alert.markdown-alert-tip {
border-left-color: var(--color-tip);
}
.markdown-alert.markdown-alert-tip .markdown-alert-title {
color: var(--color-tip);
}
.markdown-alert.markdown-alert-caution {
border-left-color: var(--color-caution);
}
.markdown-alert.markdown-alert-caution .markdown-alert-title {
color: var(--color-caution);
}
</style>
</head>
<body class="vscode-body vscode-light">
<h1 id="华东师范大学软件学院实验报告"><center>华东师范大学软件学院实验报告</center></h1>
<table align="center">
<thead>
<tr>
<th style="text-align:left"><strong>实验课程:</strong> 计算机网络</th>
<th style="text-align:left"><strong>年级:</strong> 2024</th>
<th style="text-align:left"><strong>实验成绩:</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left"><strong>实验名称:</strong> Ethernet</td>
<td style="text-align:left"><strong>姓名:</strong> 张春晓</td>
<td style="text-align:left"><strong>实验日期:</strong> 2024.11.29</td>
</tr>
<tr>
<td style="text-align:left"><strong>实验编号:</strong> 2</td>
<td style="text-align:left"><strong>学号:</strong> 10234507025</td>
<td style="text-align:left"><strong>实验时间:</strong> 2学时</td>
</tr>
</tbody>
</table>
<hr>
<h2 id="一实验目的">一、实验目的</h2>
<p>学习以太网帧的组成</p>
<h2 id="二使用内容与实验步骤">二、使用内容与实验步骤</h2>
<ol>
<li>捕获帧
<ol>
<li>对一个远程服务器使用 ping 指令发送信息,并检查是否有回复;</li>
<li>启动 Wireshark ,选择过滤 icmp ,开启“启用 MAC 名称解析”选项,开始捕获以太网帧;</li>
<li>重复第一步;</li>
<li>终止 ping 指令,返回 Wireshark 并停止捕获。</li>
</ol>
</li>
<li>检查捕获到的数据
<ol>
<li>选择捕获到的任意数据包,查看其结构与组成数据包字节的详细信息;</li>
<li>展开以太网报头字段并查看详细信息。</li>
</ol>
</li>
<li>以太网帧结构
绘制一个显示以太网头字段位置与大小的 ping 报文图。</li>
<li>以太网地址范围
绘制一张图,显示电脑、路由器、远程服务器的相对位置。<br>
用以太网地址标注计算机与路由器IP 地址标注计算机与远程服务器。<br>
并显示以太网和互联网其他部分在图中的位置。</li>
<li>广播帧
启动 Wireshark ,选择过滤 ether multicast ,等待一段时间,捕获广播与组播以太网帧,并根据结果完成以下两个任务:<br>
<ol>
<li>找到广播以太网地址</li>
<li>找到以太网地址的哪一位确认是单播还是组播</li>
</ol>
</li>
</ol>
<h2 id="三实验环境">三、实验环境</h2>
<ul>
<li>实验仪器ThinkPad X230i</li>
<li>操作系统Arch GNU/Linux x86_64</li>
<li>以太网控制器Intel Corporation 82575LM Gigabit Network Connection</li>
<li>网络控制器Realtek Semiconductor Co., Ltd. RTL8188CE 820.11b/g/n WiFi Adapter</li>
<li>网络连接校园网ECNU-1X</li>
</ul>
<h2 id="四实验过程与分析">四、实验过程与分析</h2>
<ol>
<li>捕获帧<br>
<img src="file:////home/chiyoyuki/homework/conputer_network/lib3-1.png" alt="ping"><br>
<img src="file:////home/chiyoyuki/homework/conputer_network/lib3-2.png" alt="Wireshark"></li>
<li>检查捕获到的数据<br><br>
<img src="file:////home/chiyoyuki/homework/conputer_network/lib3-3.png" alt="ping"></li>
<li>以太网帧结构<br> <table align="center">
<tr>
<td align="center" colspan=3>Ethernet II</td>
<td align="center">IP&ICMP</td>
</tr>
<tr>
<td align="center">Destination</td>
<td align="center">Source</td>
<td align="center">Type</td>
<td align="center" rowspan=2>60 Bytes</td>
</tr>
<tr>
<td align="center">6 Bytes</td>
<td align="center">6 Bytes</td>
<td align="center">2 Bytes</td>
</tr>
<tr>
<td align="center" colspan=3>Ethernet Header</td>
<td align="center">Ethernet Payload</td>
<tr>
</table>
</li>
<li>以太网地址范围<br>
<img src="file:////home/chiyoyuki/homework/conputer_network/lib2-5.png" alt="mermaid"></li>
<li>广播帧
捕获内容如图:<br>
<img src="file:////home/chiyoyuki/homework/conputer_network/lib3-4.png" alt="broadcast"><br>
<ol>
<li>以太网地址为 ff:ff:ff:ff:ff:ff在 Wireshark 中标注为 Broadcast</li>
<li>第一个字节的末位为1是组播反之则是单播所有比特均为1则是广播</li>
</ol>
</li>
</ol>
<h2 id="五试验结果总结">五、试验结果总结</h2>
<p>在本次实验中,我顺利地完成了各项任务,了解并学习到了以太网传输的各项细节</p>
</body>
</html>

View File

@ -1,10 +1,8 @@
# <center>华东师范大学软件学院实验报告</center>
| **实验课程:** 计算机网络 | **年级:** 2024 | **实验成绩:** |
| :------------------------ | :--------------------- | :------------------------ |
| **实验名称:** Ethernet | **姓名:** | **实验日期:** 2024.11.29 |
| **实验编号:** 2 | **学号:** | **实验时间:** 2学时 |
--- ---
title: Lab2 - Ethernet
---
# 华东师范大学软件学院实验报告
## 一、实验目的 ## 一、实验目的
@ -23,11 +21,11 @@
3. 以太网帧结构 3. 以太网帧结构
绘制一个显示以太网头字段位置与大小的 ping 报文图。 绘制一个显示以太网头字段位置与大小的 ping 报文图。
4. 以太网地址范围 4. 以太网地址范围
绘制一张图,显示电脑、路由器、远程服务器的相对位置。<br> 绘制一张图,显示电脑、路由器、远程服务器的相对位置。
用以太网地址标注计算机与路由器IP 地址标注计算机与远程服务器。<br> 用以太网地址标注计算机与路由器IP 地址标注计算机与远程服务器。
并显示以太网和互联网其他部分在图中的位置。 并显示以太网和互联网其他部分在图中的位置。
5. 广播帧 5. 广播帧
启动 Wireshark ,选择过滤 ether multicast ,等待一段时间,捕获广播与组播以太网帧,并根据结果完成以下两个任务:<br> 启动 Wireshark ,选择过滤 ether multicast ,等待一段时间,捕获广播与组播以太网帧,并根据结果完成以下两个任务:
1. 找到广播以太网地址 1. 找到广播以太网地址
2. 找到以太网地址的哪一位确认是单播还是组播 2. 找到以太网地址的哪一位确认是单播还是组播
@ -41,22 +39,22 @@
## 四、实验过程与分析 ## 四、实验过程与分析
1. 捕获帧<br> 1. 捕获帧
![ping](./lib3-1.png)<br> ![ping](./lib2-1.png)
![Wireshark](./lib3-2.png) ![Wireshark](./lib2-2.png)
2. 检查捕获到的数据<br> 2. 检查捕获到的数据
![ping](./lib3-3.png) ![ping](./lib2-3.png)
3. 以太网帧结构<br> 3. 以太网帧结构
<table align="center"> <table>
<tr> <tr>
<td align="center" colspan=3>Ethernet II</td> <td align="center" colspan='3'>Ethernet II</td>
<td align="center">IP&ICMP</td> <td align="center">IP&ICMP</td>
</tr> </tr>
<tr> <tr>
<td align="center">Destination</td> <td align="center">Destination</td>
<td align="center">Source</td> <td align="center">Source</td>
<td align="center">Type</td> <td align="center">Type</td>
<td align="center" rowspan=2>60 Bytes</td> <td align="center" rowspan='2'>60 Bytes</td>
</tr> </tr>
<tr> <tr>
<td align="center">6 Bytes</td> <td align="center">6 Bytes</td>
@ -64,15 +62,15 @@
<td align="center">2 Bytes</td> <td align="center">2 Bytes</td>
</tr> </tr>
<tr> <tr>
<td align="center" colspan=3>Ethernet Header</td> <td align="center" colspan='3'>Ethernet Header</td>
<td align="center">Ethernet Payload</td> <td align="center">Ethernet Payload</td>
<tr> </tr>
</table> </table>
4. 以太网地址范围<br> 4. 以太网地址范围
![mermaid](./lib2-5.png) ![mermaid](./lib2-5.png)
5. 广播帧 5. 广播帧
捕获内容如图:<br> 捕获内容如图:
![broadcast](./lib3-4.png)<br> ![broadcast](./lib2-4.png)
1. 以太网地址为 ff:ff:ff:ff:ff:ff在 Wireshark 中标注为 Broadcast 1. 以太网地址为 ff:ff:ff:ff:ff:ff在 Wireshark 中标注为 Broadcast
2. 第一个字节的末位为1是组播反之则是单播所有比特均为1则是广播 2. 第一个字节的末位为1是组播反之则是单播所有比特均为1则是广播

View File

@ -1,9 +0,0 @@
#include<bits/stdc++.h>
using namespace std;
int main()
{
printf("%x",0x4500+0x0034+0xd124+0x4000+0x2606+0xe0f4+0x344a+0xe83b+0xda06+0xac1e);
return 0;
}

View File

@ -1,9 +1,8 @@
---
title: Lab3 - IPv4
---
# <center>华东师范大学软件学院实验报告</center> # 华东师范大学软件学院实验报告
| **实验课程:** 计算机网络 | **年级:** 2024 | **实验成绩:** |
| :------------------------ | :--------------------- | :------------------------ |
| **实验名称:** IPV4 | **姓名:** | **实验日期:** 2024.12.08 |
| **实验编号:** 3 | **学号:** | **实验时间:** 2学时 |
## 一、实验目的 ## 一、实验目的
@ -38,7 +37,6 @@
3. 将得到的和分为两段,使得其中的一段为最右边的 4 位 16 进制数,计算两段之和; 3. 将得到的和分为两段,使得其中的一段为最右边的 4 位 16 进制数,计算两段之和;
4. 检查结果是否为 0xffff 。 4. 检查结果是否为 0xffff 。
## 三、实验环境 ## 三、实验环境
- 实验仪器ThinkPad X230i - 实验仪器ThinkPad X230i
@ -50,9 +48,10 @@
## 四、实验过程与分析 ## 四、实验过程与分析
1. 捕获轨迹 1. 捕获轨迹
![wget](./lib3/lib3-2.png) ![wget](./lib3-2.png)
traceroute 获取到的信息如下: traceroute 获取到的信息如下:
```
``` bash
traceroute to 1st.moe (52.74.232.59), 30 hops max, 60 byte packets traceroute to 1st.moe (52.74.232.59), 30 hops max, 60 byte packets
1 * * * 1 * * *
2 10.100.5.1 (10.100.5.1) 8.795 ms 8.962 ms 9.096 ms 2 10.100.5.1 (10.100.5.1) 8.795 ms 8.962 ms 9.096 ms
@ -85,20 +84,20 @@
29 * * * 29 * * *
30 * * * 30 * * *
``` ```
2.
![wget](./lib3/lib3-2.png) 2. ![wget](./lib3-2.png)
3. 3.
1. IP结构 1. IP结构
<table align="center"> <table align="center">
<tr> <tr>
<td align="center" colspan=12>IP</td> <td align="center" colspan='12'>IP</td>
<td align="center">TCP</td> <td align="center">TCP</td>
</tr> </tr>
<tr> <tr>
<td align="center">Version</td> <td align="center">Version</td>
<td align="center">Header Length</td> <td align="center">Header Length</td>
<td align="center">Differentiated <td align="center">Differentiated Services Field</td>
Services Field</td>
<td align="center">Total Length</td> <td align="center">Total Length</td>
<td align="center">Identification</td> <td align="center">Identification</td>
<td align="center">Flags</td> <td align="center">Flags</td>
@ -108,7 +107,7 @@
<td align="center">Header Checksum</td> <td align="center">Header Checksum</td>
<td align="center">Source Address</td> <td align="center">Source Address</td>
<td align="center">Destinatoin Address</td> <td align="center">Destinatoin Address</td>
<td align="center" rowspan=2>32 Bytes</td> <td align="center" rowspan='2'>32 Bytes</td>
</tr> </tr>
<tr> <tr>
<td align="center">4 bits</td> <td align="center">4 bits</td>
@ -125,21 +124,22 @@
<td align="center">4 Bytes</td> <td align="center">4 Bytes</td>
</tr> </tr>
<tr> <tr>
<td align="center" colspan=12>Ethernet Header</td> <td align="center" colspan='12'>Ethernet Header</td>
<td align="center">Ethernet Payload</td> <td align="center">Ethernet Payload</td>
<tr> </tr>
</table> </table>
2. 2.
1. 服务端 IP 地址为 52.74.232.59;电脑 IP 地址为 172.30.218.6 1. 服务端 IP 地址为 52.74.232.59;电脑 IP 地址为 172.30.218.6
2. 总长字段为 52 = 20 + 32 ,所以计算时包含 IP 报头与 IP 负载 2. 总长字段为 52 = 20 + 32 ,所以计算时包含 IP 报头与 IP 负载
3. 不同 3. 不同
4. 电脑发送的 TTL 值为 38 ,是一个较小的值 4. 电脑发送的 TTL 值为 38 ,是一个较小的值
5. 通过查看 Flags 字段 5. 通过查看 Flags 字段
6. 长度为 20 Bytes ,编码在 IP 报头第一个字节的 4~8 位 6. 长度为 20 Bytes ,编码在 IP 报头第一个字节的 4~8 位
4. 4.
![wget](./lib3/lib3-3.png) ![wget](./lib3-3.png)
5. 执行如下代码: 5. 执行如下代码:
```
``` c
#include<bits/stdc++.h> #include<bits/stdc++.h>
using namespace std; using namespace std;
@ -150,4 +150,5 @@
return 0; return 0;
} }
``` ```
其结果为0x4fffb计算4+fffb=ffff故正确。 其结果为0x4fffb计算4+fffb=ffff故正确。

View File

@ -1,8 +1,8 @@
# <center>华东师范大学软件学院实验报告</center> ---
| **实验课程:** 计算机网络 | **年级:** 2024 | **实验成绩:** | title: Lab4 - ARP
| :------------------------ | :--------------------- | :------------------------ | ---
| **实验名称:** ARP | **姓名:** | **实验日期:** 2024.12.13 |
| **实验编号:** 4 | **学号:** | **实验时间:** 2学时 | # 华东师范大学软件学院实验报告
## 一、实验目的 ## 一、实验目的
@ -42,7 +42,8 @@
1. 捕获 1. 捕获
1. 执行`ifconfig`指令,得到的输出如下: 1. 执行`ifconfig`指令,得到的输出如下:
```
``` bash
enp0s25: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 enp0s25: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 3c:97:0e:27:a3:96 txqueuelen 1000 (Ethernet) ether 3c:97:0e:27:a3:96 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B) RX packets 0 bytes 0 (0.0 B)
@ -69,27 +70,31 @@
TX packets 4771 bytes 2531632 (2.4 MiB) TX packets 4771 bytes 2531632 (2.4 MiB)
TX errors 0 dropped 76 overruns 0 carrier 0 collisions 0 TX errors 0 dropped 76 overruns 0 carrier 0 collisions 0
``` ```
`wlan0` 下的 `ether` 一行可以得知计算机以太网地址为 `e0:06:e6:c4:be:04` `wlan0` 下的 `ether` 一行可以得知计算机以太网地址为 `e0:06:e6:c4:be:04`
2. 执行 `route` 指令,得到的输出如下: 2. 执行 `route` 指令,得到的输出如下:
``` ```
Kernel IP routing table Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface Destination Gateway Genmask Flags Metric Ref Use Iface
default _gateway 0.0.0.0 UG 600 0 0 wlan0 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 172.31.0.0 0.0.0.0 255.255.0.0 U 600 0 0 wlan0
``` ```
可以得知默认网关的 ip 地址为 `172.31.0.0` 可以得知默认网关的 ip 地址为 `172.31.0.0`
3. 启动捕获。 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` 输出。 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 流量包后停止捕获,其界面如图:<br> 5. 在观察到已经捕获 7 个 ARP 流量包后停止捕获,其界面如图:
![arp](./lib4-1.png) ![arp](./lib4-1.png)
2. 检查捕获<br> 2. 检查捕获
*因为捕获到的包数量较少,故不设置过滤器。*<br> *因为捕获到的包数量较少,故不设置过滤器。*
请求包:<br> 请求包:
![request](./lib4-2.png) ![request](./lib4-2.png)
回复包:<br> 回复包:
![reply](./lib4-3.png) ![reply](./lib4-3.png)
3. ARP 请求与回复 3. ARP 请求与回复
其图例如下 其图例如下
```mermaid ```mermaid
flowchart LR flowchart LR
computer[计算机<br>MAC e0:06:e6:c4:be:04<br>IP 172.31.215.159] computer[计算机<br>MAC e0:06:e6:c4:be:04<br>IP 172.31.215.159]
@ -97,6 +102,7 @@
computer--request<br>Who has 172.31.0.1? Tell 172.31.215.159-->gateway computer--request<br>Who has 172.31.0.1? Tell 172.31.215.159-->gateway
gateway--reply<br>172.31.0.1 is at <font color="red"><b>54:c6:ff:7b:38:02</b></font>-->computer gateway--reply<br>172.31.0.1 is at <font color="red"><b>54:c6:ff:7b:38:02</b></font>-->computer
``` ```
4. 以太网上的 ARP 详细信息 4. 以太网上的 ARP 详细信息
1. 请求的操作码为 `0x0001` ,回复的操作码为 `0x0002` 1. 请求的操作码为 `0x0001` ,回复的操作码为 `0x0002`
2. 请求与回复的的 ARP 报头均为 28 bytes对于报文请求的报文为 42 bytes回复的报文为60 bytes。 2. 请求与回复的的 ARP 报头均为 28 bytes对于报文请求的报文为 42 bytes回复的报文为60 bytes。

View File

@ -1,8 +1,7 @@
# <center>华东师范大学软件学院实验报告</center> ---
| **实验课程:** 计算机网络 | **年级:** 2024 | **实验成绩:** | title: Lab5 - UDP
| :------------------------ | :--------------------- | :------------------------ | ---
| **实验名称:** UDP | **姓名:** | **实验日期:** 2024.12.20 | # 华东师范大学软件学院实验报告
| **实验编号:** 5 | **学号:** | **实验时间:** 2学时 |
## 一、实验目的 ## 一、实验目的
@ -15,19 +14,19 @@
2. 浏览网页以产生 UDP 流量。 2. 浏览网页以产生 UDP 流量。
3. 停止浏览,等待一分钟左右观察背景 UDP 流量。 3. 停止浏览,等待一分钟左右观察背景 UDP 流量。
4. 停止捕获。 4. 停止捕获。
2. 检查捕获到的数据<br> 2. 检查捕获到的数据
观察所捕获到的流量包UDP 协议包包括如下字段:源端口、目标端口、长度、校验和。<br> 观察所捕获到的流量包UDP 协议包包括如下字段:源端口、目标端口、长度、校验和。
**注意:协议列所列出的协议可能是 UDP 之上的应用程序协议名称而非 UDP** **注意:协议列所列出的协议可能是 UDP 之上的应用程序协议名称而非 UDP**
3. UDP 消息结构<br> 3. UDP 消息结构
制作一份 UDP 报文图例并回答如下问题:<br> 制作一份 UDP 报文图例并回答如下问题:
1. 长度字段包含什么? 1. 长度字段包含什么?
1. UDP 有效负载 1. UDP 有效负载
2. UDP 有效负载与 UDP 报头 2. UDP 有效负载与 UDP 报头
3. UDP 有效负载、UDP 报头与底层报头 3. UDP 有效负载、UDP 报头与底层报头
2. UDP 校验和的长度为多少?(以位为单位) 2. UDP 校验和的长度为多少?(以位为单位)
3. UDP 报头的长度为多少字节? 3. UDP 报头的长度为多少字节?
4. UDP 使用<br> 4. UDP 使用
回答如下问题:<br> 回答如下问题:
1. 给出标识上层协议为 UDP 的 IP 协议字段的值 1. 给出标识上层协议为 UDP 的 IP 协议字段的值
2. 检查 UDP 消息并提供**当电脑既不是源IP地址也不是目标IP地址时**使用的目标 IP 地址 2. 检查 UDP 消息并提供**当电脑既不是源IP地址也不是目标IP地址时**使用的目标 IP 地址
3. 捕获到的 UDP 消息的典型大小为多少 3. 捕获到的 UDP 消息的典型大小为多少
@ -42,21 +41,21 @@
## 四、实验过程与分析 ## 四、实验过程与分析
1. 捕获 1. 捕获
本步骤采用老师所提供的捕获文件 本步骤采用老师所提供的捕获文件
2. 检查捕获到的数据 2. 检查捕获到的数据
捕获包如图所示<br> 捕获包如图所示
![package](./lib5-1.png) ![package](./lib5-1.png)
3. UDP 消息结构<br> 3. UDP 消息结构
观察下图所列出的包<br> 观察下图所列出的包
![struct](./lib5-2.png) ![struct](./lib5-2.png)
1. UDP 报头为 8 bytes负载为 143 bytes二者之和恰为 UDP 长度字段所标注的 151 bytes故 UDP 长度字段包括 **UDP 有效负载与 UDP 报头** 1. UDP 报头为 8 bytes负载为 143 bytes二者之和恰为 UDP 长度字段所标注的 151 bytes故 UDP 长度字段包括 **UDP 有效负载与 UDP 报头**
2. UDP 校验和的长度为 2 bytes即 16 位。 2. UDP 校验和的长度为 2 bytes即 16 位。
3. UDP 报头的长度为 8 bytes。 3. UDP 报头的长度为 8 bytes。
UDP 报文结构如下表所示:<br> UDP 报文结构如下表所示:
<table align="center"> <table align="center">
<tr> <tr>
<td align="center" colspan=4>UDP Header</td> <td align="center" colspan='4'>UDP Header</td>
<td align="center">UDP Payload</td> <td align="center">UDP Payload</td>
</tr> </tr>
<tr> <tr>
@ -64,7 +63,7 @@
<td align="center"> Destination Port</td> <td align="center"> Destination Port</td>
<td align="center">Length</td> <td align="center">Length</td>
<td align="center">Checksum</td> <td align="center">Checksum</td>
<td align="center" rowspan=2> many bytes</td> <td align="center" rowspan='2'> many bytes</td>
</tr> </tr>
<tr> <tr>
<td align="center">2 bytes</td> <td align="center">2 bytes</td>
@ -74,8 +73,8 @@
</tr> </tr>
</table> </table>
4. UDP 使用 4. UDP 使用
1. 如图所示IP 协议字段的值为 0x11 ,即 17<br> 1. 如图所示IP 协议字段的值为 0x11 ,即 17
![IP](lib5-3.png) ![IP](lib5-3.png)
2. 如图所示,目标 IP 地址为 239.255.255.250<br> 2. 如图所示,目标 IP 地址为 239.255.255.250
![des](lib5-4.png) ![des](lib5-4.png)
3. 捕获到的 UDP 消息大小大多在 100 bytes 与 300 bytes 之间。 3. 捕获到的 UDP 消息大小大多在 100 bytes 与 300 bytes 之间。

View File

@ -1,8 +1,8 @@
# <center>华东师范大学软件学院实验报告</center> ---
| **实验课程:** 计算机网络 | **年级:** 2024 | **实验成绩:** | title: Lab6 - TCP
| :------------------------ | :--------------------- | :------------------------------------------ | ---
| **实验名称:** TCP | **姓名:** | **实验日期:** <br>2024.12.27<br>2025.01.03 |
| **实验编号:** 6 | **学号:** | **实验时间:** 2学时 | # 华东师范大学软件学院实验报告
## 一、实验目的 ## 一、实验目的
@ -110,33 +110,33 @@
<table align="center"> <table align="center">
<tr> <tr>
<td align="center" colspan=20>TCP 报头</td> <td align="center" colspan='20'>TCP 报头</td>
<td align="center">TCP 负载</td> <td align="center">TCP 负载</td>
</tr> </tr>
<tr> <tr>
<td align="center">源端口<td> <td align="center">源端口</td>
<td align="center">目标端口<td> <td align="center">目标端口</td>
<td align="center">序列号<td> <td align="center">序列号</td>
<td align="center">确认号<td> <td align="center">确认号</td>
<td align="center">报头长度<td> <td align="center">报头长度</td>
<td align="center">Flags<td> <td align="center">Flags</td>
<td align="center">窗口<td> <td align="center">窗口</td>
<td align="center">校验和<td> <td align="center">校验和</td>
<td align="center">紧急指针<td> <td align="center">紧急指针</td>
<td align="center">Options<td> <td align="center">Options</td>
<td a序列号: 0, ACK号: 1lign="center">TCP Payloads</td> <td align="center">TCP Payloads</td>
</tr> </tr>
<tr> <tr>
<td align="center">2 bytes<td> <td align="center">2 bytes</td>
<td align="center">2 bytes<td> <td align="center">2 bytes</td>
<td align="center">4 bytes<td> <td align="center">4 bytes</td>
<td align="center">4 bytes<td> <td align="center">4 bytes</td>
<td align="center">4 bits<td> <td align="center">4 bits</td>
<td align="center">12 bits<td> <td align="center">12 bits</td>
<td align="center">2 bytes<td> <td align="center">2 bytes</td>
<td align="center">2 bytes<td> <td align="center">2 bytes</td>
<td align="center">2 bytes<td> <td align="center">2 bytes</td>
<td align="center">12 bytes<td> <td align="center">12 bytes</td>
<td align="center">Many bytes</td> <td align="center">Many bytes</td>
</tr> </tr>
</table> </table>
@ -196,7 +196,7 @@
``` ```
5. TCP 数据传输 5. TCP 数据传输
IO 图表如图: IO 图表如图:
![IO](lib6-5.png) ![IO](lib6-5.png)
@ -204,11 +204,11 @@
![IO](lib6-6.png) ![IO](lib6-6.png)
1. 下载方向的大致数据速率是 1. 下载方向的大致数据速率是
$$ $$
\frac{\frac{1}{8}(18+35+13+8+46+23+28+21) packets}{0.1 s} = 240\ packets/s \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 \frac{\frac{1}{8}(185300+401500+149100+91780+527700+263900+321200+226600) bits}{0.1 s} =2708850\ bits/s
$$ $$
@ -224,7 +224,7 @@
$$ $$
\frac{\frac{1}{8}(16+29+13+8+32+10+23+22) packets}{0.1 s} = 191.25\ packets/s \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 \frac{\frac{1}{8}(8448+15310+6864+4224+16990+5280+12140+11620) bits}{0.1 s} =101095\ bits/s
$$ $$

View File

@ -1,4 +1,5 @@
# <center>华东师范大学软件学院实验报告</center> # <center>华东师范大学软件学院实验报告</center>
| **实验课程:** 计算机网络 | **年级:** 2024 | **实验成绩:** | | **实验课程:** 计算机网络 | **年级:** 2024 | **实验成绩:** |
| :-------------------------------- | :--------------------- | :------------------------ | | :-------------------------------- | :--------------------- | :------------------------ |
| **实验名称:** Socket Programming | **姓名:** | **实验日期:** 2025.01.03 | | **实验名称:** Socket Programming | **姓名:** | **实验日期:** 2025.01.03 |
@ -44,9 +45,9 @@
1. 0号客户端发送测试文本0测试短文本)`text0:hello, world`,服务端显示:`text0:hello, world`正常发送Wireshark 捕获到的包信息如下。 1. 0号客户端发送测试文本0测试短文本)`text0:hello, world`,服务端显示:`text0:hello, world`正常发送Wireshark 捕获到的包信息如下。
![png3](./lib7-3.png) ![png3](./lib7-3.png)
2. 0号客户端发送测试文本1测试ACSII可显示字符)text1: !"#\$%&'()\*+,-./0123456789:;<=>?\`ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^\_@abcdefghijklmnopqrstuvwxyz{|}~服务端显示text1: !"#\$%&'()\*+,-./0123456789:;<=>?\`ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^\_@abcdefghijklmnopqrstuvwxyz{|}~正常发送Wireshark 捕获到的包信息如下。 2. 0号客户端发送测试文本1测试ACSII可显示字符)text1: ``!"#\$%&'()*+,-./0123456789:;<=>?`ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_@abcdefghijklmnopqrstuvwxyz{|}~``服务端显示text1: ``!"#\$%&'()*+,-./0123456789:;<=>?`ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_@abcdefghijklmnopqrstuvwxyz{|}~``正常发送Wireshark 捕获到的包信息如下。
![png4](./lib7-4.png) ![png4](./lib7-4.png)
@ -59,7 +60,7 @@
4. 0号客户端发送测试文本3测试中文文本)`text3:你好,世界`,服务端显示:`text3:你好,世界`正常发送Wireshark 捕获到的包信息如下。 4. 0号客户端发送测试文本3测试中文文本)`text3:你好,世界`,服务端显示:`text3:你好,世界`正常发送Wireshark 捕获到的包信息如下。
![png7](./lib7-7.png) ![png7](./lib7-7.png)
5. 0号客户端发送测试文本4测试长文本)`text4:0123456789abcdef...0123456789abcdef`共计32774字节服务端显示`text4:0123456789abcdef...012345678`共计4096字节文本发送不正常仅发送前 4096 字节,检查 Wireshark 可以发现0号客户端共发送16个包前15个包中每个包携带255字节的文本最后一个包携带16字节的文本捕获到的第一个与最后一个客户端包信息如下。 5. 0号客户端发送测试文本4测试长文本)`text4:0123456789abcdef...0123456789abcdef`共计32774字节服务端显示`text4:0123456789abcdef...012345678`共计4096字节文本发送不正常仅发送前 4096 字节,检查 Wireshark 可以发现0号客户端共发送16个包前15个包中每个包携带255字节的文本最后一个包携带16字节的文本捕获到的第一个与最后一个客户端包信息如下。
![png](./lib7-8.png) ![png](./lib7-8.png)
@ -91,17 +92,17 @@
![png12](./lib7-12.png) ![png12](./lib7-12.png)
0号客户端发送了带有 SYN 的信息包由于服务端已经关闭7701端口空闲故返回带有RST的数据报0号客户端收到后报告错误并退出 0号客户端发送了带有 SYN 的信息包由于服务端已经关闭7701端口空闲故返回带有RST的数据报0号客户端收到后报告错误并退出
7. 执行指令`./client`,不指定地址,报错`usage: simplex-talk host` 7. 执行指令`./client`,不指定地址,报错`usage: simplex-talk host`
6. 多客户端测试 6. 多客户端测试
1. 重新启动服务端 1. 重新启动服务端
2. 启动0号客户端观察 Wireshark 可以发现0号客户端使用端口为53092 2. 启动0号客户端观察 Wireshark 可以发现0号客户端使用端口为53092
3. 0号客户端发送文本`client0`,服务端显示:`client0`,正常发送。 3. 0号客户端发送文本`client0`,服务端显示:`client0`,正常发送。
4. 启动1号客户端观察 Wireshark 可以发现1号客户端使用端口为43676Wireshark 捕获包信息如下: 4. 启动1号客户端观察 Wireshark 可以发现1号客户端使用端口为43676Wireshark 捕获包信息如下:
![png13](./lib7-13.png) ![png13](./lib7-13.png)
5. 1号客户端发送文本`client1`,服务端没有显示,但 Wireshark 捕获到信息包。 5. 1号客户端发送文本`client1`,服务端没有显示,但 Wireshark 捕获到信息包。
6. 0号客户端发送文本`text from client0`,服务端显示`text from client0`,正常发送。 6. 0号客户端发送文本`text from client0`,服务端显示`text from client0`,正常发送。
@ -124,9 +125,9 @@
5. 尝试重新启动服务端,报错`simplex-talk: bind: Address already in use`Wireshark 未捕获到内容 5. 尝试重新启动服务端,报错`simplex-talk: bind: Address already in use`Wireshark 未捕获到内容
6. 客户端退出 6. 客户端退出
7. 尝试重新启动服务端,服务端正常运行 7. 尝试重新启动服务端,服务端正常运行
测试截图如下: 测试截图如下:
![png15](./lib7-15.png) ![png15](./lib7-15.png)
8. 局域网通信测试 8. 局域网通信测试
@ -281,7 +282,7 @@ main()
exit(1); exit(1);
} }
while (len = recv(new_s, buf, sizeof(buf), 0)) while (len = recv(new_s, buf, sizeof(buf), 0))
fputs(buf, stdout); fputs(buf, stdout);
close(new_s); close(new_s);
} }
} }