diff --git a/计算机网络/实验报告/实验10.tex b/计算机网络/实验报告/实验10.tex new file mode 100644 index 0000000..313f879 --- /dev/null +++ b/计算机网络/实验报告/实验10.tex @@ -0,0 +1,96 @@ +\documentclass[../public/实验报告模板]{subfiles} + +\renewcommand{\mydate}{2023年11月10日} +\renewcommand{\mylabname}{域名系统(DNS)} +\renewcommand{\mychapternum}{10} + +\begin{document} + \mytitle + \begin{enumerate} + \myitem{实验目的}{ + \item 掌握DNS的报文格式 + \item 掌握DNS的工作原理 + \item 掌握DNS域名空间的分类 + \item 理解DNS高速缓存的作用 + } + \myitem{实验设备或环境}{ + \item 采用网络拓扑结构一 + } + \myitem{实验原理}{ + \item 域名空间 + \item DNS协议简介 + \item DNS的域名分类 + \item DNS报文格式 + \item 正向解析与反向解析 + \item 递归解析与迭代解析 + \item 高速缓存 + \item 压缩 + \item DNS封装 + } + \myitemx[label=练习\arabic*\ ]{实验步骤}{ + \item Internet域名空间的分类 + \item DNS正向查询 + \item DNS反向查询 + \item DNS的应用及高速缓存 + } + \myitemx[label=练习\arabic*\ , itemsep=1em]{实验结果总结}{ + \item Internet域名空间的分类 + \begin{enumerate} + \item 类属域 + + “ www.python.org ”对应的IPv4地址是151.101.76.223,IPv6地址是2a04:4e42:1a::223。 + + “ www.python.org ”域名的顶级域名的含义是“orgnization”,非盈利机构。 + + \item 国家域 + + “ www.jl.gov.cn ”对应的IPv4地址是180.97.168.75,IPv6地址是240e:978:303::fe。 + + “ www.jl.gov.cn ”域名的顶级域名的含义是“China”,中国,二级域名的含义是“government”,政府机构,三级域名的含义是“JiLin”,吉林省。 + + \item 反向域 + + 172.16.0.253 对应的域名是 JServer.NetLab 。 + + 反向域的顶级域名是 arpa ,二级域名是 in-addr 。 + + \end{enumerate} + \thinkingquestion{ + \item Internet的域名结构是怎样的?它与目前电话网的号码结构有何异同之处? + + Internet的域名空间是树状结构,域名从下往上读取。目前电话网的号码结构可以分成三段,即1XX-XXXX-XXXX,其中前3位是网络识别号,各个运营商有不同的号段;第4-7位是地区码,由运营商分配;第8-11位是顺序码,由运营商随机发放供用户挑选。 + + 因此域名结构和电话号码结构都是树状结构,区别在于域名是从下往上读取,而电话号码是从上往下读取。 + } + + \item DNS正向查询 + + 在响应报文中提取对方主机的IP地址为172.16.0.217。 + + \thinkingquestion{ + \item 域名的IP地址是否只有一个? + + 不一定,可以有多个。 + + \item 域名服务协议的主要功能是什么?域名服务协议中的根服务器和授权服务器有何区别?授权服务器和管辖区有何关系? + + 域名服务协议的主要功能是把IP地址映射为域名或把域名映射为IP地址。根服务器用于查询顶级域名服务器的地址,授权服务器用于查询某个具体域名对应的地址。授权服务器都有自己的管辖区。 + } + + \item DNS反向查询 + + 在响应报文中提取主机A的域名地址为 host73.NetLab 。 + + \item DNS的应用及高速缓存 + + \includegraphics[width=1\linewidth]{imgs/2023-12-31-19-17-13.png} + + 在使用域名完成的通信中,DNS协议起到了将域名转化为IP地址,以便于网络层转发包的作用。 + + DNS高速缓存用来加速解析过程。 + + 此次访问过程的报文交互图(包括ICMP协议)如下: + \includexopp[2]{10.4.1} + } + \end{enumerate} +\end{document} \ No newline at end of file diff --git a/计算机网络/实验报告/实验12.tex b/计算机网络/实验报告/实验12.tex new file mode 100644 index 0000000..f4f545f --- /dev/null +++ b/计算机网络/实验报告/实验12.tex @@ -0,0 +1,136 @@ +\documentclass[../public/实验报告模板]{subfiles} + +\renewcommand{\mydate}{2023年11月17日} +\renewcommand{\mylabname}{超文本传输协议(HTTP)} +\renewcommand{\mychapternum}{12} + +\begin{document} + \mytitle + \begin{enumerate} + \myitem{实验目的}{ + \item 掌握HTTP的报文格式 + \item 掌握HTTP的工作原理 + \item 掌握HTTP常用方法 + } + \myitem{实验设备或环境}{ + \item 采用网络拓扑结构一 + } + \myitem{实验原理}{ + \item 体系结构 + \item 万维网文档 + \item HTTP协议简介 + \item HTTP报文格式 + \item HTTP方法 + \item HTTP状态码 + \item 持久与非持久连接 + \item HTTP代理服务器 + } + \myitemx[label=练习\arabic*\ ]{实验步骤}{ + \item 页面访问 + \item 页面提交 + \item 获取页面信息 + \item 较复杂的页面访问 + } + \myitemx[label=练习\arabic*\ , itemsep=1em]{实验结果总结}{ + \item 页面访问 + + 本练习使用HTTP协议的GET方法,这种方法的作用是从服务器请求一个文档。 + \begin{table}[H] + \centering + \caption{实验结果} + \begin{tabular}{c|c} + \toprule + 主机名 & 172.16.0.253 \\ + URL & http://172.16.0.253/experiment \\ + 服务器类型 & Apache/2.2.3 (CentOS) \\ + 传输文本类型 & text/html \\ + 访问时间 & Fri, 17 Nov 2023 00:41:58 GMT \\ + \bottomrule + \end{tabular} + \end{table} + + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2023-12-31-20-51-39.png} + \caption{HTTP请求的会话分析即报文交互图} + \end{figure} + + TCP协议是传输层协议,HTTP是应用层协议,HTTP 1和2是基于TCP的,但HTTP 3 是基于UDP的。 + \thinkingquestion{ + \item 一个主页是否只有一个连接? + + 如果使用持久连接的话,一个主页只有一个连接;否则就不一定。 + } + + \item 页面提交 + + 本练习的提交过程使用了HTTP协议的POST方法,这种方法的作用是从客户向服务器发送一些信息。 + + 此次通信分访问post.html页面,提交用户名和密码两个阶段。 + + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2023-12-31-21-08-23.png} + \caption{先GET post.html} + \end{figure} + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2023-12-31-21-09-08.png} + \caption{同时会附带GET favicon.ico获取图标} + \end{figure} + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2023-12-31-21-09-37.png} + \caption{点击确定后向res.html POST用户名和密码} + \end{figure} + + 可以注意到每次请求都重新建立TCP连接了,因此此服务器实现的HTTP/1.1不正确,因为HTTP/1.1应默认为持久连接。 + + \item 获取页面信息 + + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2023-12-31-21-14-23.png} + \caption{发送请求} + \end{figure} + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2023-12-31-21-14-58.png} + \caption{会话分析} + \end{figure} + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2023-12-31-21-15-16.png} + \caption{服务器返回了400 Bad Request} + \end{figure} + \thinkingquestion{ + \item 同时打开多个浏览器窗口并访问一个WEB站点的不同页面时,系统是根据什么把返回的页面正确地显示到相应窗口的? + + 多个浏览器窗口访问同一个WEB站点的不同页面时,每个窗口都会建立一个TCP连接,这些连接有不同的源端口号,系统根据源端口号把返回的页面正确地显示到相应窗口。 + } + + \item 较复杂的页面访问 + + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2023-12-31-21-19-06.png} + \caption{先查询DNS} + \end{figure} + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2023-12-31-21-19-53.png} + \caption{再请求第一个页面,可以看到响应过大被分段了} + \end{figure} + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2023-12-31-21-21-41.png} + \caption{还请求了图片,响应过大仍然被分段} + \end{figure} + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2023-12-31-21-22-20.png} + \caption{也能观察到TCP的累积确认机制} + \end{figure} + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2023-12-31-21-23-03.png} + \caption{当然有的资源可能404 Not Found} + \end{figure} + \thinkingquestion{ + \item 为什么HTTP不保持与客户端的TCP连接? + + (标准回答)先问是不是,再问为什么。 + + 使用持久连接时,HTTP会保持与客户端的TCP连接;使用非持久连接时,HTTP不保持与客户端的TCP连接。HTTP/1.1以下默认非持久连接,HTTP/1.1开始默认持久连接。而本次实验环境实现的HTTP不规范,因此导致HTTP不保持与客户端的TCP连接。 + } + } + \end{enumerate} +\end{document} \ No newline at end of file diff --git a/计算机网络/实验报告/实验13.tex b/计算机网络/实验报告/实验13.tex new file mode 100644 index 0000000..7fc2f4c --- /dev/null +++ b/计算机网络/实验报告/实验13.tex @@ -0,0 +1,192 @@ +\documentclass[../public/实验报告模板]{subfiles} + +\renewcommand{\mydate}{2023年12月29日} +\renewcommand{\mylabname}{远程登录与文件传送协议(TELNET与FTP)} +\renewcommand{\mychapternum}{13} + +\begin{document} + \mytitle + \begin{enumerate} + \myitem{实验目的}{ + \item 掌握 TELNET 的工作过程 + \item 理解 TELNET 选项协商 + \item 掌握 FTP 的工作原理 + \item 掌握 FTP 的一些常用命令的使用方法及用途 + } + \myitem{实验设备或环境}{ + \item 采用网络拓扑结构一 + } + \myitem{实验原理}{ + \item 分时系统 + \item 本地登录与远程登录 + \item 网络虚拟终端 + \item TELNET简介 + \item NVT字符集 + \item TELNET选项协商 + \item FTP协议简介 + \item FTP连接、通信与传送 + \item FTP命令与响应 + } + \myitemx[label=练习\arabic*\ ]{实验步骤}{ + \item 运行TELNET命令,捕获数据并分析 + \item TELNET选项协商的过程 + \item FTP的工作过程 + \item 使用TCP连接工具与服务器进行命令交互 + } + \myitemx[label=练习\arabic*\ , itemsep=1em]{实验结果总结}{ + \item 运行TELNET命令,捕获数据并分析 + + TELNET使用的TCP端口是23。 + + 客户端与服务器端进行选项协商的过程在练习2中有体现。 + + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2024-01-02-20-02-45.png} + \caption{可以捕获到用户名和密码} + \end{figure} + + TELNET交互图为上图的会话分析的截图。 + + TELNET是明文传输,因此可能存在网络监听,是不安全的。 + + \item TELNET选项协商的过程 + + 写出步骤3中每个十六进制字符对应的NVT字符。 + + FFFB18:WILL Terminal\_type, FFFB1F:WILL Negotiateaboutwindowsize \\ + FFFC20:WONT Terminalspeed, FFFC23:WONT Xdisplaylocation, FFFB27:WILL Newenvironment \\ + FFFD03:DO Suppressgo\_ahead \\ + FFFB01:WILL Echo; FFFE05:DONT Status; FFFC21:WONT Remoteflowcontrol \\ + + 步骤3中发送的每个数据各自的作用根据上述字符可以知道对应内容,服务器对其应答的内容如下: + + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2024-01-02-20-15-30.png} + \caption{服务器应答选项协商} + \end{figure} + + \thinkingquestion{ + \item 远程登录TELNET的主要特点是什么?什么叫做虚拟终端NVT? + + 主要特点是使用远程主机上的资源;网络虚拟终端NVT是让用户登录远程主机,并操作终端,就像在自己的主机上操作终端一样。 + } + + \item FTP的工作过程 + + FTP使用的TCP端口有21(命令传输端口),20(主动模式服务器发出连接的端口)、更高的随机端口(被动模式服务端打开的端口,或者客户端发出连接使用的端口)。 + + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2024-01-02-20-32-29.png} + \caption{FTP用户名} + \end{figure} + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2024-01-02-20-33-27.png} + \caption{FTP密码} + \end{figure} + + 可以看到用户名和密码,FTP是不安全的。 + + FTP的工作过程如上图的会话分析所示,控制连接和数据连接根据主动模式和被动模式有不同。 + + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2024-01-02-20-36-00.png} + \caption{数据连接} + \end{figure} + + \thinkingquestion{ + \item 文件传送协议FTP的主要工作过程是怎样的?主进程和从属进程各起什么作用? + + 主要工作过程是先由主进程开启控制连接传输命令,然后由从属进程开启数据连接传输文件。 + } + + \item 使用TCP连接工具与服务器进行命令交互 + + USER group7\_3 + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2024-01-02-20-39-58.png} + \caption{服务器回复的信息} + \end{figure} + PASS group7\_3 + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2024-01-02-20-40-50.png} + \caption{服务器回复的信息} + \end{figure} + SYST + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2024-01-02-20-41-21.png} + \caption{服务器回复的信息} + \end{figure} + PWD + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2024-01-02-20-41-44.png} + \caption{服务器回复的信息} + \end{figure} + TYPE A + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2024-01-02-20-42-10.png} + \caption{服务器回复的信息} + \end{figure} + PORT 172,16,0,73,10,10 + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2024-01-02-20-42-37.png} + \caption{服务器回复的信息} + \end{figure} + + PORT 命令对端口信息是分成两个字节,当作两个8位整数传递;客户端使用的端口值为2570。 + + PORT的格式为 PORT $x_1,x_2,x_3,x_4,x_5,x_6$,其中 $x_1,x_2,x_3,x_4$ 携带的是本机的 IP 地址,$x_5,x_6$ 为端口值,计算方法为 $x_5\times 256+x_6$,该命令的用途是告知服务器本机客户端使用的端口。 + + 这是FTP服务器是使用主动模式创建数据连接的,即客户端告知服务器自己开启的数据连接的端口,之后服务器从20端口主动连接客户端的这个端口。 + + STOR group7\_3\\ + 服务器回复的信息:150 Ok to send data. + + filedata + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2024-01-02-20-55-17.png} + \caption{filedata} + \end{figure} + + PASV + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2024-01-02-20-57-07.png} + \caption{服务器回复的信息} + \end{figure} + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2024-01-02-21-01-13.png} + \caption{服务器回复的信息} + \end{figure} + 该命令的用途是告知服务器使用被动模式。 + + 这里FTP服务器使用被动模式创建数据连接,即服务器告知客户端自己开启的数据连接的端口,之后客户端从随机端口连接服务器的这个端口。 + + 在服务器回复的信息中可知服务器端使用的端口为:$227\times 256+126=58238$。 + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2024-01-02-20-55-49.png} + \caption{服务器回复的信息} + \end{figure} + + RETR group7\_3 + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2024-01-02-21-02-12.png} + \caption{服务器回复的信息} + \end{figure} + + 其内容是步骤(9)输入的信息。 + + QUIT + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2024-01-02-21-02-52.png} + \caption{服务器回复的信息} + \end{figure} + + 会话交互图如前文的会话分析所示。 + + \thinkingquestion{ + \item FTP的数据连接存在两种模式:主动模式和被动模式,说明各自的工作过程。如果服务器和客户端之间存在防火墙,使用哪种模式会引起一些麻烦? + + 主动模式和被动模式各自的工作过程在前文已有提到,如果存在防火墙,一般防火墙会阻止未经许可的向客户端的传入连接,所以使用主动模式会引起一些麻烦。 + } + } + \end{enumerate} +\end{document} \ No newline at end of file diff --git a/计算机网络/实验报告/实验14.tex b/计算机网络/实验报告/实验14.tex new file mode 100644 index 0000000..df32336 --- /dev/null +++ b/计算机网络/实验报告/实验14.tex @@ -0,0 +1,205 @@ +\documentclass[../public/实验报告模板]{subfiles} + +\renewcommand{\mydate}{2023年11月24日} +\renewcommand{\mylabname}{电子邮件协议(SMTP、POP3和IMAP)} +\renewcommand{\mychapternum}{14} + +\begin{document} + \mytitle + \begin{enumerate} + \myitem{实验目的}{ + \item 掌握邮件服务的工作原理 + \item 掌握SMTP、POP3、IMAP的工作过程 + \item 了解SMTP、POP3、IMAP协议的命令和使用方法 + } + \myitem{实验设备或环境}{ + \item 采用网络拓扑结构一 + } + \myitem{实验原理}{ + \item 电子邮件简介 + \item 电子邮件传输过程 + \item SMTP协议简介 + \item SMTP会话命令与响应 + \item SMTP运行过程 + \item POP3和IMAP简介 + \item POP3会话命令 + \item POP3运行过程 + \item IMAP会话命令 + \item IMAP运行过程 + \item POP3协议与IMAP协议的区别 + } + \myitemx[label=练习\arabic*\ ]{实验步骤}{ + \item 使用Live Mail发送电子邮件 + \item 使用Live Mail接收电子邮件 + \item 使用TCP工具和SMTP命令实现邮件发送 + \item 使用TCP工具和POP3命令实现邮件接收 + \item 使用TCP工具和IMAP命令实现邮件接收 + } + \myitemx[label=练习\arabic*\ , itemsep=1em]{实验结果总结}{ + \item 使用Live Mail发送电子邮件 + + SMTP使用的TCP端口号是25。 + + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2024-01-01-10-10-30.png} + \caption{SMTP应该是能看到用户名和密码的,这里应该是之前登录过了所以没有} + \end{figure} + \begin{table}[H] + \centering + \caption{实验结果} + \begin{tabularx}{\linewidth}{c|ccZZ} + \toprule + % 为什么这里用b才能有居中的效果呢?难道和tabularx有关? + \multirow[b]{4}{*}{SMTP连接建立过程} & 源IP & 目的IP & 报文摘要和参数 & 报文作用 \\ + \midrule + & 172.16.0.253 & 172.16.0.73 & 220服务就绪 & 服务器告诉客户已准备好接收邮件 \\ + & 172.16.0.73 & 172.16.0.253 & HELO cslabc39 & 把客户的域名通知服务器 \\ + & 172.16.0.253 & 172.16.0.73 & 250请求命令完成 & 连接成功 \\ + \toprule + \multirow[b]{9}{*}{邮件传输过程} & 源IP & 目的IP & 报文摘要和参数 & 报文作用 \\ + \midrule + & 172.16.0.73 & 172.16.0.253 & MAIL FROM: & 介绍报文的发送者 \\ + & 172.16.0.253 & 172.16.0.73 & 250请求命令完成 & 请求命令完成 \\ + & 172.16.0.73 & 172.16.0.253 & RCPT TO: & 告知收件人的邮件地址 \\ + & 172.16.0.253 & 172.16.0.73 & 250 请求命令完成 & 请求命令完成 \\ + & 172.16.0.73 & 172.16.0.253 & DATA & 告知即将开始发送邮件内容 \\ + & 172.16.0.253 & 172.16.0.73 & 354 开始邮件输入 & 准备接收邮件报文 \\ + & 172.16.0.73 & 172.16.0.253 & 发送报文,每行一CRLF(回车换行)结束,整个报文以仅有一个点的行结束 & 发送邮件内容 \\ + & 172.16.0.253 & 172.16.0.73 & 250 OK & 接收邮件内容成功 \\ + \toprule + \multirow[b]{3}{*}{SMTP连接释放过程} & 源IP & 目的IP & 报文摘要和参数 & 报文作用 \\ + \midrule + & 172.16.0.73 & 172.16.0.253 & QUIT & 退出 \\ + & 172.16.0.253 & 172.16.0.73 & 221 服务关闭 & 服务关闭 \\ + \bottomrule + \end{tabularx} + \end{table} + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2024-01-01-10-52-02.png} + \caption{MIME信息} + \end{figure} + 可以观察到MIME信息为: + MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="---=NextPart\_000\_0097\_01DA1EB0.298B18B0" + + 这说明MIME的版本是1.0,内容有多个部分,并给出了内容的边界模式字符串。 + + \item 使用Live Mail接收电子邮件 + + \begin{enumerate} + \item 使用POP3协议接受 + POP3使用的TCP端口是110。 + + 能看到用户名和密码。 + + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2024-01-01-11-06-00.png} + \caption{用户名的数据包} + \end{figure} + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2024-01-01-11-06-29.png} + \caption{密码的数据包} + \end{figure} + + POP3在每次收取时都会发送用户名和密码进行验证,而SMTP只需要验证一次。 + + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2024-01-01-11-09-26.png} + \caption{命令RETR的响应报文与发送的内容一致} + \end{figure} + + \item 使用IMAP协议接收 + + IMAP使用的TCP端口号是143。 + + 能看到用户名和密码。 + + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2024-01-01-11-11-41.png} + \caption{传输用户名和密码的数据包} + \end{figure} + + IMAP的功能比POP3多,能直接操作服务器上的邮件而不需要先下载到本地。 + \end{enumerate} + + \item 使用TCP工具和SMTP命令实现邮件发送 + + \begin{figure}[H] + \centering + \includegraphics[width=0.8\linewidth]{imgs/2024-01-01-11-14-37.png} + \caption{TCP工具发送邮件建立连接} + \end{figure} + \begin{figure}[H] + \centering + \includegraphics[width=0.8\linewidth]{imgs/2024-01-01-11-15-13.png} + \caption{TCP工具发送邮件发送内容} + \end{figure} + \begin{figure}[H] + \centering + \includegraphics[width=0.8\linewidth]{imgs/2024-01-01-11-16-17.png} + \caption{TCP工具发送邮件断开连接} + \end{figure} + \begin{figure}[H] + \centering + \includegraphics[width=1\linewidth]{imgs/2024-01-01-11-17-24.png} + \caption{会话分析的过程与练习一的过程相同} + \end{figure} + + 在编写邮件内容时,我们只是简单发送“myemail”字符串,能否尝试添加邮件内容首部的一些关键信息,如From、Subject、To等及有关MIME的信息。 + + 能。 + + \item 使用TCP工具和POP3命令实现邮件接收 + + \begin{figure}[H] + \centering + \includegraphics[width=0.8\linewidth]{imgs/2024-01-01-11-21-10.png} + \caption{TCP工具接收邮件} + \end{figure} + \begin{figure}[H] + \centering + \includegraphics[width=0.8\linewidth]{imgs/2024-01-01-11-21-49.png} + \caption{TCP工具接收邮件} + \end{figure} + \begin{figure}[H] + \centering + \includegraphics[width=0.8\linewidth]{imgs/2024-01-01-11-22-07.png} + \caption{TCP工具接收邮件} + \end{figure} + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2024-01-01-11-22-51.png} + \caption{会话分析} + \end{figure} + + \thinkingquestion{ + \item 电子邮件系统使用TCP协议传送邮件。为什么有时我们会遇到邮件发送失败的情况?为什么有时对方会收不到我们发送的邮件? + + 可能发送时网络信号不好,突然断网了,导致发送失败。有时对方的邮件服务器将邮件错误地归类到了垃圾邮件中,导致对方收不到我们发送的邮件。 + + \item 通过实验说明你的电子邮件在网络上传输是安全的吗?为什么?你认为实现邮件安全传输的最好的办法是什么? + + 如果只是简单使用SMTP或POP3或IMAP,那就是不安全的。要确保安全,最好使用SSL/TLS加密,即在TCP上加一层使用非对称加密的公钥密码体系确保安全的SSL/TLS层。 + } + + \item 使用TCP工具和IMAP命令实现邮件接收 + + \begin{figure}[H] + \centering + \includegraphics[width=0.8\linewidth]{imgs/2024-01-01-11-32-08.png} + \caption{TCP工具IMAP协议接受邮件} + \end{figure} + \begin{figure}[H] + \centering + \includegraphics[width=0.8\linewidth]{imgs/2024-01-01-11-32-37.png} + \caption{TCP工具IMAP协议接受邮件} + \end{figure} + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2024-01-01-11-33-19.png} + \caption{TCP工具IMAP协议会话分析} + \end{figure} + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2024-01-01-11-34-02.png} + \caption{TCP工具IMAP协议会话分析} + \end{figure} + } + \end{enumerate} +\end{document} \ No newline at end of file diff --git a/计算机网络/实验报告/实验2.tex b/计算机网络/实验报告/实验2.tex new file mode 100644 index 0000000..b01d51a --- /dev/null +++ b/计算机网络/实验报告/实验2.tex @@ -0,0 +1,91 @@ +\documentclass[../public/实验报告模板]{subfiles} + +\renewcommand{\mydate}{2023年12月1日} +\renewcommand{\mylabname}{地址解析协议(ARP)} +\renewcommand{\mychapternum}{2} + +\begin{document} + \mytitle + \begin{enumerate} + \myitem{实验目的}{ + \item 掌握ARP协议的报文格式 + \item 掌握ARP协议的工作原理 + \item 理解ARP高速缓存的作用 + \item 掌握ARP请求和应答的实现方法 + \item 掌握ARP缓存表的维护过程 + } + \myitem{实验设备或环境}{ + \item 采用网络拓扑结构二 + } + \myitem{实验原理}{ + \item 物理地址与逻辑地址 + \item ARP协议简介 + \item ARP报文格式 + \item ARP封装 + \item ARP的运行过程 + \item 代理ARP + \item 协议栈实现代码解析 + \item 各模块推荐流程 + } + \myitemx[label=练习\arabic*\ ]{实验步骤}{ + \item 领略真实的ARP(同一子网) + \item 编辑并发送ARP报文(同一子网) + \item 跨路由器地址解析(不同子网) + \item 发送arp请求,处理输入的arp数据包功能的实现 + } + \myitemx[label=练习\arabic*\ , itemsep=1em]{实验结果总结}{ + \item 领略真实的ARP(同一子网) + + \begin{figure}[H] + \centering + \includegraphics[width=0.8\linewidth]{imgs/2024-01-01-13-37-01.png} + \caption{主机C的ARP高速缓存} + \end{figure} + \begin{figure}[H] + \centering + \includegraphics[width=0.8\linewidth]{imgs/2024-01-01-13-41-56.png} + \caption{主机B的高速缓存} + \end{figure} + + ARP高速缓存表由接口、Internet地址、物理地址、类型组成。 + + ARP协议的报文交互过程和ARP高速缓存表的更新过程是主机先广播发送ARP请求报文,目标主机收到后向请求方单播发送ARP应答报文,主机收到后更新ARP高速缓存表。 + + \item 编辑并发送ARP报文(同一子网) + + 主机B、E收到了ARP请求包,主机F给出了ARP响应包。 + + 主机A、C、D没有收到ARP请求包,因为主机A、C、D与ARP请求发出者主机E不在一个子网。 + + \item 跨路由器地址解析(不同子网) + + 单一ARP请求报文不呢个跨越子网进行地址解析,因为它是数据链路层协议,只在一个子网内有效。 + + ARP地址解析在跨越子网的通信中起到了联通不同子网的作用。 + + \thinkingquestion{ + \item 哪些主机收到了ARP请求包?哪台主机给出了ARP响应包? + + 主机B、C、D、E、F都收到了ARP请求包。主机F给出了ARP响应包,主机B收到后又转发了这个ARP响应包。 + + \item 比较ARP协议在同网段内解析和跨网段的解析有何异同点? + + 相同之处是ARP协议在同网段和跨网段解析在正确配置时都能解析成功,区别在于ARP协议在同网段内解析不需要路由器开启静态路由服务,而跨网段解析需要路由器开启静态路由服务。 + + \item ARP数据包的长度是固定的吗?试加以解释。 + + 不是,ARP可以用于不同的硬件类型和协议类型,不同的硬件类型(比如以太网、无线局域网)可能有不同长度的硬件地址,不同的协议类型(比如IPv4、IPv6)可能有不同长度的逻辑地址。 + + \item 试解释为什么ARP高速缓存每存入一个项目就要设置10-20分钟的超时计时器。这个时间设置得太大或太小会出现什么问题? + + 因为设备的硬件地址和逻辑地址之间的关联可能会变化,比如DHCP租约到期后更换IP地址,或者某个设备离开网络了,因此需要超时计时器,在超时后重新发送ARP报文。 + + 这个时间设置得太大会出现不能及时检测到网络变化的情况,设置得太小会导致频繁发送ARP广播请求消耗资源。 + + \item 至少举出两种不需要发送ARP请求数据包的情况。 + + 当目的IP与MAC的对应关系在ARP高速缓存中已经查找到了,就不需要发送ARP请求数据包了;当目的IP与主机自己的IP不在同一个网段,这时需要将数据包发给网关,如果网关的IP与MAC的对应关系在ARP高速缓存中已经查找到了,就不需要发送ARP请求数据包了。 + } + } + \end{enumerate} +\end{document} \ No newline at end of file diff --git a/计算机网络/实验报告/实验3.tex b/计算机网络/实验报告/实验3.tex new file mode 100644 index 0000000..50d4f39 --- /dev/null +++ b/计算机网络/实验报告/实验3.tex @@ -0,0 +1,156 @@ +\documentclass[../public/实验报告模板]{subfiles} + +\renewcommand{\mydate}{2023年12月8日} +\renewcommand{\mylabname}{网际协议(IP)} +\renewcommand{\mychapternum}{3} + +\begin{document} + \mytitle + \begin{enumerate} + \myitem{实验目的}{ + \item 掌握IP数据报的报文格式 + \item 掌握IP校验和计算方法 + \item 掌握子网掩码和路由转发 + \item 理解特殊IP地址的含义 + \item 理解IP分片过程 + \item 理解协议栈对IP协议的处理方法 + \item 理解IP路由表作用以及IP路由表的管理 + } + \myitem{实验设备或环境}{ + \item 采用网络拓扑结构二 + } + \myitem{实验原理}{ + \item IP协议简介 + \item IP地址及其表示方法 + \item 特殊的IP地址 + \item 子网划分 + \item IP报文格式 + \item IP封装 + \item IP数据报分片 + \item IP数据报校验和 + \item 交付与转发 + \item 路由选择 + \item 协议栈实现代码解析 + \item 各模块推荐流程 + } + \myitemx[label=练习\arabic*\ ]{实验步骤}{ + \item 编辑并发送IP数据报 + \item 特殊的IP地址 + \item IP数据报分片 + \item 子网掩码的作用 + \item IP数据报的接收与发送 + \item IP路由表管理的设计与实现 + } + \myitemx[label=练习\arabic*\ , itemsep=1em]{实验结果总结}{ + \item 编辑并发送IP数据报 + + IP在计算校验和时包括首部的内容。 + + 第一步中主机A所编辑的报文,经过主机B到达主机E后,报文数据发生了变化,源MAC变成了主机B的右侧接口的MAC,生存时间从128变为了127,发生变化是因为经过了主机B的转发。 + + 生存时间改为1后主机B能捕获到主机A所发送的报文,但主机E不能捕获到。因为主机A将报文间接交付给主机B后,主机B将生存时间减一,发现生存时间为0,于是丢弃此报文,并向A发送ICMP差错报文表示目的不可达。 + + \thinkingquestion{ + \item 说明IP地址与硬件地址的区别,为什么要使用这两种不同的地址? + + IP地址用来标识设备在整个网络中的位置,硬件地址用来标识设备在一个网段内的位置。使用这两种不同的地址是因为既要避免广播范围过大,又要让一个设备能够和全球的其他设备收发报文。 + } + + \item 特殊的IP地址 + + \begin{enumerate} + \item 受限广播地址 + \begin{table}[H] + \centering + \caption{实验结果} + \begin{tabular}{cc} + \toprule + & 主机号 \\ + \midrule + 收到主机A发送的IP数据报 & B、C、D \\ + 未收到主机A发送的IP数据报 & E、F \\ + \bottomrule + \end{tabular} + \end{table} + + 受限广播地址的作用是用来发送给子网内的所有主机的。 + + \item 环回地址 + + 主机F没有收到主机E发送的目的地址为127.0.0.1的IP数据报,因为目的地址为127.0.0.1表示环回地址,只有发送的主机自己能收到。 + \end{enumerate} + \thinkingquestion{ + \item 受限广播地址的作用范围? + + 当前子网。 + + \item 受限广播地址和直接广播地址的区别? + + 受限广播地址只能用于本地网络,直接广播地址可以被路由器转发从而用于更大范围的网络。 + + \item 路由器转发受限广播吗? + + 不转发。 + } + + \item IP数据报分片 + + \begin{table}[H] + \centering + \caption{实验结果} + \begin{tabular}{c|ccc} + \toprule + 字段名称 & 分片序号1 & 分片序号2 & 分片序号3 \\ + \midrule + “标识”字段值 & 869 & 869 & * \\ + “还有分片”字段值 & 1 & 0 & * \\ + “分片偏移量”字段值 & 0 & 97 & * \\ + 传输的数据量 & 776 & 224 & * \\ + \bottomrule + \end{tabular} + \end{table} + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2024-01-01-19-00-41.png} + \caption{IP数据报分片} + \end{figure} + + \thinkingquestion{ + \item Ping的数据部分为3000字节,回显请求报文为何被分为3片而不是2片? + + 因为MTU是包括IP头部的,假设IP头部为20字节,那么第一片只能装1480个字节的数据,第二片也是只能装1480个字节的数据,因此需第三片来装剩下的40个字节的数据。 + + \item 数据部分长度为多少时报文正好被分为2片? + + 以太网的MTU默认为1500,IP头部一般为20字节,那么一片的数据字段最多为1480字节,所以数据部分长度为$1480\times 2=2960$时报文正好被分为2片。 + + \item 不同协议的MTU的范围从296到65535,使用大的MTU有什么好处?使用小的MTU有什么好处? + + 使用大的MTU可以添加更少的帧首部信息,减少冗余。使用小的MTU可以减少信道持续占用的时间,更利于共享广播信道。 + } + + \item 子网掩码的作用 + + \begin{table}[H] + \centering + \caption{实验结果} + \begin{tabular}{cc} + \toprule + & 是否ping通 \\ + \midrule + 主机A---主机B & 是 \\ + 主机C---主机D & 是 \\ + 主机E---主机F & 是 \\ + \bottomrule + \end{tabular} + \end{table} + + 当两主机的子网掩码不同时,按照发送方的子网掩码来看,如果这两个主机在同一个子网掩码代表的网络中,那么就能ping通;或者主机ping的是网关的时候也可以ping通(目的IP不在本地网络里就会发送到网关)。 + + \thinkingquestion{ + \item IP数据报中的首部校验和并不检验数据报中的数据,这样做的最大好处是什么?缺点是什么? + + 最大好处是避免每经过一个路由器都要重复校验相同的数据;缺点是可能无法发现数据报中的数据错误。 + } + } + \end{enumerate} +\end{document} \ No newline at end of file diff --git a/计算机网络/实验报告/实验4.tex b/计算机网络/实验报告/实验4.tex new file mode 100644 index 0000000..fe0742d --- /dev/null +++ b/计算机网络/实验报告/实验4.tex @@ -0,0 +1,98 @@ +\documentclass[../public/实验报告模板]{subfiles} + +\renewcommand{\mydate}{2023年12月8日} +\renewcommand{\mylabname}{Internet控制报文协议(ICMP)} +\renewcommand{\mychapternum}{4} + +\begin{document} + \mytitle + \begin{enumerate} + \myitem{实验目的}{ + \item 掌握ICMP协议的报文格式 + \item 理解不同类型ICMP报文的具体意义 + \item 了解常见的网络故障 + } + \myitem{实验设备或环境}{ + \item 采用网络拓扑结构二 + } + \myitem{实验原理}{ + \item ICMP简介 + \item ICMP报文格式 + \item ICMP封装 + \item ICMP报文类型 + \item ICMP查询报文 + \item ICMP差错报文 + \item ICMP校验和 + } + \myitemx[label=练习\arabic*\ ]{实验步骤}{ + \item 运行Ping命令 + \item ICMP查询报文 + \item ICMP差错报文 + } + \myitemx[label=练习\arabic*\ , itemsep=1em]{实验结果总结}{ + \item 运行Ping命令 + + 捕获的报文对应的“类型”字段是0(ICMP回显应答),“代码”字段是0。 + + 报文中的类型、标识号、序列号字段保证了回显请求报文和回显应答报文的一一对应。 + + \item ICMP查询报文 + + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2024-01-01-20-27-37.png} + \caption{时间戳请求} + \end{figure} + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2024-01-01-20-27-06.png} + \caption{时间戳应答} + \end{figure} + \begin{table}[H] + \centering + \caption{实验结果} + \begin{tabular}{cc|cc} + \toprule + \multicolumn{2}{c}{时间戳请求报文}\vline& \multicolumn{2}{c}{时间戳应答报文}\\ + ICMP字段名 & 字段值 & ICMP字段名 & 字段值 \\ + \midrule + 类型 & 13 & 类型 & 14 \\ + 标识号 & 0 & 标识号 & 0 \\ + 序列号 & 0 & 序列号 & 0 \\ + 发起时间戳 & 0 & 发起时间戳 & 0 \\ + 接收时间戳 & 0 & 接收时间戳 & 1347310080 \\ + 传送时间戳 & 0 & 传送时间戳 & 1347310080 \\ + \bottomrule + \end{tabular} + \end{table} + \thinkingquestion{ + \item 能否根据时间戳计算出当前的时间? + + 能。 + + \item 使用时间戳得到的时间比从系统得到的时间有什么好处? + + 使用时间戳请求得到的时间是和目标主机一致的,当系统的时间出错时可以据此校准。 + } + \item ICMP差错报文 + + 捕获到的是主机不可达报文。 + + \thinkingquestion{ + \item 为什么要设置TTL字段? + + 防止一个报文在网络中无限制地转发下去。 + + \item 为什么要限制由由失效的 ICMP 差错报文再产生一个 ICMP 报文? + + 防止ICMP报文不断在网络中发送,占用资源。 + + \item 什么样的 ICMP 报文是由路由器发送出的?什么样的 ICMP 报文是由目的主机发送出的? + + 当主机向外部发送报文但出现差错时,路由器会向主机发出ICMP差错报文;当主机向目的主机发送ICMP回显请求时,目的主机会发送出回显应答报文。 + + \item 主机 A 向主机 B 发送数据报,主机 B 从未收到该数据报,而主机 A 也从未收到出问题的通知,试给出可能发生情况的 2 种不同解释。 + + 可能是主机A向主机B发出的数据包发到错误的链路上丢失了;或者在链路中的某个地方出现差错,返回ICMP差错报文,但ICMP差错报文丢失或被丢弃了。 + } + } + \end{enumerate} +\end{document} \ No newline at end of file diff --git a/计算机网络/实验报告/实验5.tex b/计算机网络/实验报告/实验5.tex new file mode 100644 index 0000000..3c7a56a --- /dev/null +++ b/计算机网络/实验报告/实验5.tex @@ -0,0 +1,97 @@ +\documentclass[../public/实验报告模板]{subfiles} + +\renewcommand{\mydate}{2023年12月15日} +\renewcommand{\mylabname}{用户数据报协议(UDP)} +\renewcommand{\mychapternum}{5} + +\begin{document} + \mytitle + \begin{enumerate} + \myitem{实验目的}{ + \item 掌握 UDP 协议的报文格式 + \item 掌握 UDP 协议校验和的计算方法 + \item 理解 UDP 协议的优缺点 + \item 理解协议栈对 UDP 协议的处理方法 + \item 理解 UDP 上层接口应满足的条件 + } + \myitem{实验设备或环境}{ + \item 采用网络拓扑结构一 + } + \myitem{实验原理}{ + \item 进程到进程的通信 + \item 面向连接的服务与面向无连接的服务 + \item UDP协议简介 + \item UDP报文格式 + \item UDP封装 + \item UDP校验和 + \item UDP应用 + \item 协议栈实现代码解析 + \item 各模块推荐流程 + } + \myitemx[label=练习\arabic*\ ]{实验步骤}{ + \item 编辑并发送 UDP 数据报 + \item UDP 单播通信 + \item UDP 广播通信 + \item UDP 数据报发送与接收 + \item UDP 报文的上层投递的设计与实现 + } + \myitemx[label=练习\arabic*\ , itemsep=1em]{实验结果总结}{ + \item 编辑并发送 UDP 数据报 + + UDP在计算校验和时包括伪首部、UDP首部以及从应用层来的数据。 + + \thinkingquestion{ + \item 为什么UDP协议的“校验和”要包含伪首部? + + 确保此数据包确实是发送给自己的,并且确保这个数据包是属于UDP。 + + \item 比较UDP和IP的不可靠程度? + + UDP和IP都是不可靠的协议,IP只验证首部,因此数据字段出现问题了也无法知道;而UDP会验证数据字段,因此IP比UDP更不可靠。 + } + + \item UDP单播通信 + + 主机C上的“UDP工具”能够接收到主机A发送的UDP报文。 + + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2024-01-02-19-04-14.png} + \caption{主机C接收到主机A的UDP报文} + \end{figure} + + UDP不是基于连接的协议,此特性的优点是能更快发送数据,缺点是可能不够安全。 + + UDP报文交互中没有确认报文,此特性的优点是占用资源更少,信道利用率更高,缺点是发送包可能不知道有数据包出错了。 + + 主机E上的UDP通信程序接收到此数据包,UDP可以使用0作为校验和,即代表不校验。 + + \item UDP广播通信 + + 主机B、C、D、E、F都能接收到主机A发送的UDP报文。 + + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2024-01-02-19-08-50.png} + \caption{接收到的报文} + \end{figure} + + 主机A发送的报文的目的MAC地址和目的IP地址都表示广播。 + + \thinkingquestion{ + \item 如果将目的 MAC 地址从广播地址换成某一个主机的 MAC 地址,是 + 否所有的主机还会受到这种报文? + + 否。 + + \item 如果将目的 MAC 地址设置成广播地址,目的 IP 设置成某一主机的 + IP 地址,结果怎样? + + 同一网段内的主机都能收到报文,但IP地址不是目的IP的主机解封装到IP层的时候会发现目的IP与自己的IP不一样从而丢弃报文。 + + \item 在可靠性不是最重要的情况下,UDP 可能是一个好的传输协议,试给 + 出这种特定情况的一些示例。 + + 例如流媒体传输,或DNS、SNMP等应用层协议。 + } + } + \end{enumerate} +\end{document} \ No newline at end of file diff --git a/计算机网络/实验报告/实验6.tex b/计算机网络/实验报告/实验6.tex new file mode 100644 index 0000000..36df75c --- /dev/null +++ b/计算机网络/实验报告/实验6.tex @@ -0,0 +1,89 @@ +\documentclass[../public/实验报告模板]{subfiles} + +\renewcommand{\mydate}{2023年12月15日} +\renewcommand{\mylabname}{传输控制协议(TCP)} +\renewcommand{\mychapternum}{6} + +\begin{document} + \mytitle + \begin{enumerate} + \myitem{实验目的}{ + \item 掌握 TCP 协议的报文格式 + \item 掌握 TCP 连接的建立和释放过程 + \item 掌握 TCP 数据传输中编号与确认的过程 + \item 掌握 TCP 协议校验和的计算方法 + \item 理解 TCP 重传机制 + } + \myitem{实验设备或环境}{ + \item 采用网络拓扑结构一 + } + \myitem{实验原理}{ + \item TCP协议简介 + \item TCP报文格式 + \item TCP封装 + \item TCP校验和 + \item TCP连接建立与释放 + \item 流量控制 + \item 差错控制 + } + \myitemx[label=练习\arabic*\ ]{实验步骤}{ + \item 察看TCP连接的建立和释放 + } + \myitemx[label=练习\arabic*\ , itemsep=1em]{实验结果总结}{ + \item 察看TCP连接的建立和释放 + + \begin{table}[H] + \centering + \caption{实验结果} + \begin{tabular}{cccc} + \toprule + 字段名称 & 报文1 & 报文2 & 报文3 \\ + \midrule + 序列号 & 23308859 & 4100194079 & 263308860 \\ + 确认号 & 0 & 263308860 & 4100194080 \\ + ACK & 0 & 1 & 1 \\ + SYN & 1 & 1 & 0 \\ + \bottomrule + \end{tabular} + \end{table} + + TCP 连接建立时,前两个报文的首部都有一个“最大字段长度”字段,它的值是1460,作用是防止报文被分片。根据IEEE 802.3 协议规定的以太网最大帧长度(MTU)为1500字节,而TCP头部一般为20字节,IP头部一般也为20字节,所以这里的最大字段长度为$1500-20-20=1460$。 + + \begin{table}[H] + \centering + \caption{实验结果} + \begin{tabular}{ccccc} + \toprule + 字段名称 & 报文4 & 报文5 & 报文6 & 报文7 \\ + \midrule + 序列号 & 263308860 & 4100194080 & 263308861 & * \\ + 确认号 & 4100194080 & 263308861 & 4100194081 & * \\ + ACK & 1 & 1 & 1 & * \\ + FIN & 1 & 1 & 0 & * \\ + \bottomrule + \end{tabular} + \end{table} + + 这里只有三个报文是因为报文5把FIN和ACK合并了,而且报文4的ACK也为1,猜测可能也是捎带确认的原因。 + + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2024-01-02-21-24-05.png} + \caption{握手与挥手} + \end{figure} + + 结合步骤 3、5 所填的表,理解 TCP 的三次握手建立连接和四次握手的释放连接过程,理解序号、确认号等字段在 TCP 可靠连接中所起的作用。 + + 三次握手过程为SYN、ACK+SYN,ACK,四次挥手过程为FIN、ACK、FIN、ACK。序号、确认号在TCP可靠连接中用于确保分组正确以及不乱序。 + + \thinkingquestion{ + \item 为什么在 TCP 连接中需要 3 次握手,如不这样做可能会出现什么情况? + + 假设A与B建立连接,如果只有2次握手,那么B不知道A接收报文的功能是否正常,也就是B的SYN发出去后A不一定收到(可能由于被防火墙拦截了或超时了等原因),但此时B已经认为建立连接了;使用三次握手就可以避免这种情况,让B确认连接能够建立。 + + \item 解释TCP协议的释放过程? + + 假设A与B建立连接,A发送FIN数据包,B发送ACK确认;B发送FIN数据包,A发送ACK确认。 + } + } + \end{enumerate} +\end{document} \ No newline at end of file diff --git a/计算机网络/实验报告/实验8.tex b/计算机网络/实验报告/实验8.tex new file mode 100644 index 0000000..9d125b6 --- /dev/null +++ b/计算机网络/实验报告/实验8.tex @@ -0,0 +1,129 @@ +\documentclass[../public/实验报告模板]{subfiles} + +\renewcommand{\mydate}{2023年11月17日} +\renewcommand{\mylabname}{简单网络管理协议(SNMP)} +\renewcommand{\mychapternum}{8} + +\begin{document} + \mytitle + \begin{enumerate} + \myitem{实验目的}{ + \item 掌握SNMP的报文格式 + \item 掌握SMI定义的规则 + \item 掌握MIB定义的结构 + \item 理解SNMP工作原理 + } + \myitem{实验设备或环境}{ + \item 采用网络拓扑结构一 + } + \myitem{实验原理}{ + \item SNMP简介 + \item SNMP报文格式 + \item SNMP管理器和代理 + \item SNMP管理构件 + \item 管理信息结构SMI + \item 管理信息库MIB + \item SNMP通信过程 + } + \myitemx[label=练习\arabic*\ ]{实验步骤}{ + \item 获取代理服务器信息 + \item 设置代理服务器信息 + \item 代理服务器的事件报告 + } + \myitemx[label=练习\arabic*\ , itemsep=1em]{实验结果总结}{ + \item 获取代理服务器信息 + + \begin{table}[H] + \centering + \caption{实验结果} + \begin{tabular}{cccc} + \toprule + 代理服务器信息 & OID & 返回值类型 & 返回值 \\ + \midrule + 操作系统类型(sysDescr) & & & \\ + 网卡数(ifNumber) & & & \\ + 物理地址(ifPhysAddress & & & \\ + IP默认TTL值(ipDefaultTTL) & & & \\ + \bottomrule + \end{tabular} + \end{table} + + 忘记截图了,也无法推测出该代理服务器的路由表。 + + 为加深对SMI(管理信息结构)的理解,现给出某一报文中SNMP协议的数据。 + + 302602010004067075626c6963a11902020a52020100020100300d300b06072b0601020101010500 + + 结合SNMP报文格式和SMI定义的规则,绘制出树形的结构图(用树来表现sequence和sequence of的关系)。 + + 这太复杂了,由于时间原因,就放弃了。 + + udptable如下图所示: + + \begin{figure}[H] + \centering + \includegraphics[width=1\linewidth]{imgs/2023-12-31-20-03-46.png} + \caption{udptable} + \end{figure} + + 通过察看代理服务器放到结果OID列表和主机D上捕获的SNMP报文类型,可以知道字典式排序在SNMP查询方式的中的意义是便于查找。 + + 代理服务器开放的端口为161,UDP服务名为SNMP代理服务。 + + \item 设置代理服务器信息 + + \begin{figure}[H] + \centering + \includegraphics[width=1\linewidth]{imgs/2023-12-31-20-11-45.png} + \caption{主机C更改主机D的系统名称} + \end{figure} + \begin{figure}[H] + \centering + \includegraphics[width=1\linewidth]{imgs/2023-12-31-20-12-02.png} + \caption{可以看到已经成功更改} + \end{figure} + \begin{figure}[H] + \centering + \includegraphics[width=1\linewidth]{imgs/2023-12-31-20-14-30.png} + \caption{主机D捕获到的更改的报文} + \end{figure} + + \item 代理服务器的事件报告 + + \begin{figure}[H] + \centering + \includegraphics[width=1\linewidth]{imgs/2023-12-31-20-18-31.png} + \caption{主机D修改配置后主机C就无法获取主机D的信息了} + \end{figure} + \begin{figure}[H] + \centering + \includegraphics[width=1\linewidth]{imgs/2023-12-31-20-23-34.png} + \caption{发送了请求没有响应} + \end{figure} + \begin{figure}[H] + \centering + \includegraphics[width=1\linewidth]{imgs/2023-12-31-20-26-22.png} + \caption{但是会收到陷阱报告} + \end{figure} + \begin{figure}[H] + \centering + \includegraphics[width=1\linewidth]{imgs/2023-12-31-20-29-21.png} + \caption{主机D也能捕获到陷阱报告的数据} + \end{figure} + + \thinkingquestion{ + \item SNMP使用UDP协议进行封装,分析为什么不使用TCP进行封装? + + 应该是因为数据发送非常频繁,用TCP会导致负载过重;并且单个包丢失或错误不影响整体的管理。 + + \item 为什么SNMP的管理进程使用探询掌握全网状态属于正常情况,而代理进程用陷阱向管理进程报告属于较少发生的异常情况? + + 因为SNMP的管理进程一般会按周期持续主动向代理服务器探询全网情况,并且周期很短,这保证了SNMP能实时掌握最新的全网状态;所以代理进程只有在非常紧急的情况下才会用陷阱向管理进程报告,因此这属于较少发生的异常情况。 + + \item 假设你是网络管理人员,你能否通过SNMP协议和以前所学的知识,实现网络拓扑发现? + + 不能。 + } + } + \end{enumerate} +\end{document} \ No newline at end of file diff --git a/计算机网络/实验报告/实验9.tex b/计算机网络/实验报告/实验9.tex new file mode 100644 index 0000000..efdeae3 --- /dev/null +++ b/计算机网络/实验报告/实验9.tex @@ -0,0 +1,64 @@ +\documentclass[../public/实验报告模板]{subfiles} + +\renewcommand{\mydate}{2023年11月10日} +\renewcommand{\mylabname}{动态主机配置协议(DHCP)} +\renewcommand{\mychapternum}{9} + +\begin{document} + \mytitle + \begin{enumerate} + \myitem{实验目的}{ + \item 掌握DHCP的报文格式 + \item 掌握DHCP的工作原理 + } + \myitem{实验设备或环境}{ + \item 采用网络拓扑结构一 + } + \myitem{实验原理}{ + \item DHCP简介 + \item DHCP报文格式 + \item 静态地址分配与动态地址分配 + \item 状态转换 + \item DHCP运行过程 + } + \myitemx[label=练习\arabic*\ ]{实验步骤}{ + \item 使用DHCP获取IP地址 + \item 模拟重新登录 + } + \myitemx[label=练习\arabic*\ , itemsep=1em]{实验结果总结}{ + \item 使用DHCP获取IP地址 + \begin{table}[H] + \centering + \caption{实验结果} + \begin{tabular}{cccccc} + \toprule + 报文序号 & 操作码的值 & DHCP消息类型的值 & \parbox{5em}{租借时间的值(若有)} & 源IP地址 & 目的IP地址 \\ + \midrule + 0 & 1(请求) & 7(DHCP发行) & & 172.16.0.217 & 172.16.0.253 \\ + 1 & 1(请求) & 1(DHCP探测) & & 0.0.0.0 & 255.255.255.255 \\ + 2 & 2(应答) & 2(DHCP提供) & & 172.16.0.253 & 172.16.0.217 \\ + 3 & 1(请求) & 3(DHCP请求) & & 0.0.0.0 & 255.255.255.255 \\ + 4 & 2(应答) & 5(DHCP确认) & & 172.16.0.253 & 172.16.0.217 \\ + 5 & 1(请求) & 8(DHCP通知) & & 172.16.0.217 & 255.255.255.255 \\ + 6 & 1(请求) & 8(DHCP通知) & & 172.16.0.217 & 255.255.255.255 \\ + \bottomrule + \end{tabular} + \end{table} + + 各报文中字段“操作码”、“DHCP消息类型”的值分别是多少?该请求报文的作用是什么? + + 字段中的值在上表中,该请求报文的作用是动态获取IP。 + + \item 模拟重新登录 + \thinkingquestion{ + \item DHCP协议适合于什么情况下使用?请举例说明。 + + DHCP主要用于大型网络环境和配置IP比较困难的地址。例如在家用无线局域网环境中,让用户手动配置IP地址比较麻烦,所以可以使用DHCP自动配置。 + + \item DHCP协议为何使用67、68两个熟知端口进行UDP通信? + + 便于使新连接到网络中的设备发送DHCP报文。 + } + } + \end{enumerate} +\end{document} \ No newline at end of file diff --git a/计算机网络/实验报告/实验IPv6.tex b/计算机网络/实验报告/实验IPv6.tex new file mode 100644 index 0000000..de561a1 --- /dev/null +++ b/计算机网络/实验报告/实验IPv6.tex @@ -0,0 +1,106 @@ +\documentclass[../public/实验报告模板]{subfiles} + +\renewcommand{\mydate}{2023年12月22日} +\renewcommand{\mylabname}{IPv6基础} +\renewcommand{\mychapternum}{0} + +\begin{document} + \mytitle + \begin{enumerate} + \myitem{实验目的}{ + \item 了解华为 eNSP 网络仿真平台的使用方法; + \item 了解华为 VRP 操作系统的基本功能; + \item 了解和掌握通过 CLI 界面对华为网络设备进行 IPv6 基本配置(静态 IPv6 地址配置、无状态地址自动配置、DHCPv6 部署于配置); + \item 了解几个 ICMPv6 的应用(ping、tracert 和 path MTU 发现)的工作原理; + \item 了解 NDP 的基本功能(无状态地址自动配置、地址解析和 DAD)。 + } + \myitem{实验设备或环境}{ + \item PC 机一台,运行华为 eNSP 仿真软件 + \item 以每人为小组独立完成实验 + } + \myitem{实验原理}{ + \item 华为 eNSP 仿真平台简介 + \item 华为 VRP 简介 + \item 华为设备的常用配置视图 + \item 华为网络设备的配置保存 + \item 华为 VRP 的基本配置命令 + \item 使用 eNSP 完成第一个实验 + \item IPv6 地址配置实验 + \item ICMPv6 与 NDP 实验 + } + \myitemx[itemsep=1em]{实验步骤和结果总结}{ + \item 使用 eNSP 完成第一个实验 + + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2024-01-02-21-42-03.png} + \caption{能够ping通} + \end{figure} + + \item IPv6 地址配置实验 + + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2024-01-02-21-44-27.png} + \caption{配置正确,能够ping通} + \end{figure} + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2024-01-02-21-44-50.png} + \caption{ipconfig正确} + \end{figure} + + \thinkingquestion{ + \item IPv6 无状态地址自动配置与 DHCPv6 地址自动配置的区别是? + + 无状态地址自动配置不需要独立的地址分配服务器,但是可管理性差,DHCPv6地址自动配置需要DHCPv6服务器,客户端也需支持DHCPv6,但是便于管理。 + + \item 在本实验中,我们使用路由器作为 IPv6 无状态地址自动配置的客户端,它依据什么规 + 范生成的 IPv6 接口 ID 并在获取 IPv6 地址前缀后最终形成单播地址?这个规范具体的 + 操作过程是什么? + + IEEE EUI-64规范。具体操作过程是在48位的MAC地址对半劈开,然后插入“FFFE”,再把左数第7位取反,这就形成了IPv6接口标识。之后在前面加上64位的IPv6地址前缀,形成单播地址。 + } + \item ICMPv6 与 NDP 实验 + + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2024-01-02-21-46-51.png} + \caption{RA报文内容} + \end{figure} + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2024-01-02-21-47-23.png} + \caption{RS和RA报文内容} + \end{figure} + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2024-01-02-21-47-59.png} + \caption{NS和NA报文内容} + \end{figure} + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2024-01-02-21-48-59.png} + \caption{ping报文内容} + \end{figure} + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2024-01-02-21-49-41.png} + \caption{Tracert报文内容} + \end{figure} + \begin{figure}[H] + \includegraphics[width=1\linewidth]{imgs/2024-01-02-21-50-29.png} + \caption{MTU分片} + \end{figure} + + \thinkingquestion{ + \item 当我们在路由器的 IPv6 接口上执行 undo ipv6 nd ra halt 命令后,该接口将周期性地发送 + RA 报文,这些报文的目的 IPv6 地址是?该报文的载荷有什么内容? + + 目的IPv6地址是 FF02::1,用来发给链路上的所有节点。该报文的载荷有路由器的接口MAC地址,以及IPv6地址前缀。 + + \item 当一台设备的接口获得 IPv6 地址后,设备立即启动 DAD 过程并在接口上发送一个 NS + 报文用于检测该地址是否已被使用,这个 NS 报文的目的 IPv6 地址是什么?这个地址 + 是如何形成的? + + 这个NS报文的目的IPv6地址是待检测地址对应的被请求节点组播地址,这个地址是由固定前缀FF02::1:FF00:0/104和对应IPv6地址的最后24bit组成。 + + \item IPv6 报文头部中的“Hop Limit”字段有什么用途? + + 用于限制RA报文能够经过的最大跳数。 + } + } + \end{enumerate} +\end{document} \ No newline at end of file