Merge branch 'wireshark' into 'master'

第一单元 Wireshark更新

preface,TCP 几处小修正。

See merge request !6
tmp/2387f5b0b63e5e559086632dd5280c76/head
夏竟 4 years ago
commit c2f424b82e

@ -3,8 +3,9 @@
\chapter{网络抓包与协议分析}
\label{chap:wireshark}
本单元实验要求学生能熟练使用Wireshark软件捕捉、分析有线和无线网络数据包
掌握以太网、802.11、ARP、IP、ICMP和TCP等重要协议传输单元结构
本单元实验要求学生能熟练使用Wireshark软件
捕捉和分析有线网络数据包掌握以太网、ARP、IP、ICMP
和TCP等重要协议传输单元结构
深入理解相关网络命令和重要协议算法的工作原理,
从而培养网络故障检测、网络性能改进和网络安全分析的能力。
% (备注第二版将增补实验1.4: IEEE 802.11协议分析。)

@ -220,7 +220,7 @@ IP地址长度为4字节。每个字段的含义如下
\begin{figure}[!ht]
\centering
\includegraphics[width=16cm]{wireshark-statistic}
\includegraphics[width=12cm]{wireshark-statistic}
\caption{统计功能}
\label{fig:c:wireshark_wireshark-statistic}
\end{figure}

@ -248,7 +248,7 @@ tracert命令Linux格式和常用参数如图\ref{fig:tracert-cmd}所示
\begin{figure}[!ht]
\centering
\includegraphics[width=16cm]{wireshark-monitor}
\includegraphics[width=12cm]{wireshark-monitor}
\caption{Wireshark监视器界面}
\label{fig:c:wireshark_wireshark-monitor}
\end{figure}
@ -258,7 +258,7 @@ tracert命令Linux格式和常用参数如图\ref{fig:tracert-cmd}所示
\begin{figure}[!ht]
\centering
\includegraphics[width=16cm]{ip-view}
\includegraphics[width=12cm]{ip-view}
\caption{查看IP数据报}
\label{fig:c:wireshark_ip-view}
\end{figure}
@ -268,7 +268,7 @@ tracert命令Linux格式和常用参数如图\ref{fig:tracert-cmd}所示
\begin{figure}[!ht]
\centering
\includegraphics[width=16cm]{echo-request}
\includegraphics[width=12cm]{echo-request}
\caption{Echo request示例}
\label{fig:c:wireshark_echo-request}
\end{figure}
@ -302,7 +302,7 @@ tracert命令Linux格式和常用参数如图\ref{fig:tracert-cmd}所示
\begin{figure}[!ht]
\centering
\includegraphics[width=16cm]{wireshark-filter-setup}
\includegraphics[width=12cm]{wireshark-filter-setup}
\caption{在Wireshark中设置过滤条件}
\label{fig:c:wireshark_wireshark-filter-setup}
\end{figure}

@ -24,7 +24,7 @@ TCP(Transmission Control Protocol传输控制协议)是一种面向连接的、
(例如尝试连接未存活的主机或未监听端口或客户端发送了第一个SYN连接请求而服务端无响应)
观察SYN洪泛影响观察分析TCP通信过程中的各类异常报文(例如数据超时、乱序)
了解其触发机制与含义。
\item 流量控制(进阶)运行一组TCP连接客户端/服务器程序(Python代码见附录)
\item 流量控制(进阶)运行一组TCP连接客户端/服务器程序(Python代码见节后附件)
制造收发不平衡场景,观察收发报文中通告窗口的变化,分析与窗口机制相关的类型报文,
了解滑动窗口工作原理。
\item 拥塞控制(进阶):改变带宽、时延、丢包率等网络参数,观察大文件传输过程,
@ -41,10 +41,8 @@ TCP(Transmission Control Protocol传输控制协议)是一种面向连接的、
TCP协议基于“尽力而为”的网络层为应用层提供可靠的进程间通信服务
具体地说是可靠的全双工的端对端字节流传输服务。
在TCP的协议传输单元中(TCP报文段TCP Segment)
发送方和接收方使用字节序号(Sequence Number)明确收发的数据,并精确到字节单位;
收发双方以字节为单位使用序列号(Sequence Number)明确收发的数据,
使用ACK反馈(Acknowledgment)机制,实现端对端的可靠传输控制。
接下来简要介绍TCP报文段的结构
TCP的连接管理、差错控制、流量控制和拥塞控制的原理。
\paragraph{TCP报文段(Segment)}~{}
\\
@ -85,25 +83,25 @@ TCP 报文段结构如图\ref{fig:c:wireshark_TCP-structure}所示,
\begin{enumerate}
\item \textbf{源端口号(Source Port)}16位的源端口
与源IP地址一起标识发送该TCP 报文段的通信进程。端口号范围0\~65535。
与源IP地址一起标识发送该TCP报文段的通信进程。端口号范围0-65535。
\item \textbf{目的端口号(Destionation Port)}16位目的端口
与目的IP地址一起标识接收该TCP 报文段的通信进程。端口号范围0\~65535。
\item \textbf{序号(Sequence Number)}该TCP 报文段中第一个数据字节的序号占4个字节。在TCP连接建立时通常生成一个随机数作为字节序列号的初始值ISN
与目的IP地址一起标识接收该TCP报文段的通信进程。
\item \textbf{序号(Sequence Number)}该TCP报文段中第一个数据字节的序号占4个字节。在TCP连接建立时通常生成一个随机数作为字节序列号的初始值(ISN)
\item \textbf{确认号(Acknowledgement Number)}
表示期望收到对方下一个报文段的字节序号占4个字节。
\item \textbf{标志位(TCP Flags)}
\begin{enumerate}
\item 确认ACK (Acknowledgement)置1表示确认号字段有效。
\item 推送PSH (Push)置1表示该报文段优先级高
接收方 TCP 尽快推送给接收应用程序。
\item 复位RST(Reset)置1表示需要释放 TCP 连接并重新建立连接。
一般称携带 RST 标志的 TCP 报文段为「复位报文段」
\item 确认ACK(Acknowledgement)置1表示确认号字段有效。
\item 推送PSH(Push)置1表示该报文段优先级高
接收方TCP应尽快推送给接收应用程序。
\item 复位RST(Reset)置1表示需要释放TCP连接并重新建立连接。
一般称带RST标志的TCP报文段为“复位报文段”
\item 同步SYN(Synchronization)置1表示这是TCP请求连接报文段。
一般称 SYN 标志的 TCP 报文段为“同步报文段”。
一般称带SYN标志的TCP报文段为“同步报文段”。
\item 终止FIN(Finish)置l表示发送方的数据已经发送完毕
并要求释放 TCP 连接。
并要求释放TCP连接。
\end{enumerate}
\item \textbf{窗口大小(Window)}表示接收缓存大小,即暂时缓存接收的数据
\item \textbf{窗口大小(Window)}表示接收缓存大小。
最早TCP协议首部只设置了16位的窗口大小允许的最大缓存大小不超过64KB
而RFC1323打破此限定设置了TCP窗口缩放因子(Window size scaling factor)
使窗口大小等于二者的乘积。
@ -125,7 +123,7 @@ TCP 报文段结构如图\ref{fig:c:wireshark_TCP-structure}所示,
\textbf{建立过程:}TCP是面向连接的数据传输之前必须在双方之间建立一条连接
并通过三次握手过程完成。
其主要目的是,同步连接双方的序列号和确认号,并交换 TCP窗口大小等控制信息。
其主要目的是同步连接双方的序列号和确认号并交换TCP窗口大小等控制信息。
一般地,客户端主动向服务器端发起连接请求,具体过程如下:
\begin{enumerate}
@ -150,7 +148,7 @@ TCP 报文段结构如图\ref{fig:c:wireshark_TCP-structure}所示,
服务器端完成数据发送之后也发出FIN=1的报文请求释放连接
并进入 LAST-ACK状态直至客户端返回确认第四次挥手才关闭TCP连接。
客户端收到服务器的FIN报文后则进入TIME\_WAIT状态
并等待 2MSL(最大存活时间- Maximum Segment Lifetime)时间之后完全关闭TCP连接。
并等待2MSL(最大存活时间- Maximum Segment Lifetime)时间之后完全关闭TCP连接。
(注:释放连接也可由服务器端先发起)
\paragraph{TCP流量控制}~{}
@ -160,7 +158,7 @@ TCP 报文段结构如图\ref{fig:c:wireshark_TCP-structure}所示,
TCP利用滑动窗口(Sliding Window)机制实施流量控制,
其基本原理是用TCP报文段中的窗口大小字段来控制数据发送速率
即发送方的发送窗口应小于接收方回应报文中的通告窗口值。
为了提高信道利用率TCP采用了连续ARQ (Automatic Repeat reQuest)
为了提高信道利用率TCP采用了连续ARQ(Automatic Repeat reQuest)
TCP两端都可以连续发出若干个分组然后等待确认
也都设有发送/接收窗口和发送/接收缓存。
其中发送窗口可以用3个指针表示
@ -222,8 +220,8 @@ BBR\footnote{\href{https://queue.acm.org/detail.cfm?id=3022184}{BBR: Congestion-
\subsubsection{实验方法和手段}
使用VMWare软件配置两台本地虚拟机本地相互连接(如图\ref{fig:c:wireshark_TCP-topo})。
在VMWare中的虚拟机设置->网络适配器->高级中虚拟机的网卡传入/传出带宽、
传输速率、时延等,用来仿真不同的网络条件(如图\ref{fig:c:wireshark_VM-advance-setup}
通过“虚拟机设置->硬件->网络适配器->高级”(如图\ref{fig:c:wireshark_VM-advance-setup}
设置虚拟机的网卡传入/传出带宽、数据包丢失率、延迟等,仿真不同的网络条件
本实验需要使用的命令和工具,如表\ref{tab:c:wireshark_tools-command}所列。
常用的Linux操作系统命令还包括echo、cat、sysctl、ping、ftp。
@ -370,7 +368,7 @@ BBR\footnote{\href{https://queue.acm.org/detail.cfm?id=3022184}{BBR: Congestion-
\texttt{tc qdisc add dev ens33 root netem delay 70ms 10ms 30\% duplicate 1\% reorder 5\% 10\% corrupt 0.1\%}
(将此行命令的add改为change即修改、del即删除此行规则)。
(将此行命令的add改为change/del即修改/删除此规则)。
\item 下载服务器上的大文件:\texttt{wget 192.168.100.144/100M.file}
\end{enumerate}

Loading…
Cancel
Save