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