\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}