89 lines
4.0 KiB
TeX
89 lines
4.0 KiB
TeX
\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} |