# 《计算机网络》实验
> 本项目为哈尔滨工业大学《计算机网络》实验的代码。使用Python语言进行编写。
请在使用前用pip安装包依赖。
(sudo) pip install -r requirements.txt
## 目录
- [《计算机网络》实验](#计算机网络实验)
- [目录](#目录)
- [代理服务器](#代理服务器)
- [基本功能](#基本功能)
- [项目说明](#项目说明)
- [可靠传输协议的实现](#可靠传输协议的实现)
- [基本功能](#基本功能-1)
- [项目说明](#项目说明-1)
- [改进空间](#改进空间)
- [使用Wireshark分析网络协议](#使用wireshark分析网络协议)
- [基本功能](#基本功能-2)
- [项目说明](#项目说明-2)
- [简单网络组件与配置](#简单网络组件与配置)
- [基本功能](#基本功能-3)
- [项目说明](#项目说明-3)
## <a name="代理服务器"/>代理服务器
### 基本功能
- 代理服务器的基本功能
- ~~缓存机制的实现~~(待完善)
- 屏蔽特定用户、特定网站以及钓鱼功能
### 项目说明
本项目在`proxy`文件夹下。
运行`main.py`脚本打开代理服务器,默认端口为`5000`。其中`filter.json`为屏蔽&钓鱼功能的配置文件。`cache`目录为缓存的数据。
## <a name="可靠传输协议的实现"/>可靠传输协议的实现
### 基本功能
- GBN协议的实现
- 实现数据的双向传输
- SR协议的实现
### 项目说明
本项目在`gbn`文件夹下。
其中`util.py`脚本为gbn协议和sr协议的基本实现。而`client.py`和`server.py`则为服务器和客户端的测试脚本。
基于20%的数据丢包率进行测试,采用双向传输,C->S和S->C分别使用GBN协议和SR协议进行测试。
### 改进空间
目前双向通信的实现一共使用了四个端口,实际上双向通信两个`socket`各自只需要一个端口即可。
## <a name="使用Wireshark分析网络协议"/>使用Wireshark分析网络协议
### 基本功能
- 使用Wireshark分析HTTP、TCP、IP协议
- 使用Wireshark分析DNS、UDP、ARP协议
### 项目说明
在Ubuntu下可直接使用以下指令进行安装
sudo apt-get install wireshark
在运行`wireshark`时,一般用户没有抓包的权限。
官方推荐使用`wireshark`用户组的用户进行抓包,不建议使用`superuser`。
如果仅为实验,方便起见可以使用超级管理员权限。
sudo wireshark
## <a name="简单网络组件与配置"/>简单网络组件与配置
### 基本功能
按照实验指导书所示的网路拓扑,选择实体设备并进行网络连接。
### 项目说明
细节可参照实验指导书,仅保留实验报告。