136 lines
6.0 KiB
TeX
136 lines
6.0 KiB
TeX
\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} |