Merge branch 'wireshark' into 'master'

wireshark部份元宵节晚更新

实验目的校正,附录A本部份提炼,TCP部份规避VMWare环境问题,其他若干勘误。

See merge request !7
tmp/c55888ed5a683ebd13f1e91b73d20eaf/head
夏竟 4 years ago
commit ec37e1baf1

@ -0,0 +1,32 @@
import socket
import time
def recv_data(sock,length):
data=b''
while len(data) < length:
more = sock.recv(length - len(data))
if not more:
pass
#raise EOFError('Cannot RECV execpting data')
data += more
return data
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 设置接收缓冲区大小为1024
s.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 1024)
s.bind(('0.0.0.0', 9999))
s.listen(1)
print("Sever listening on 9999...")
try:
sc, addr = s.accept()
while True:
rcvdata = recv_data(sc,16)
time.sleep(0.01)
pass
finally:
sc.close()
s.close()

@ -0,0 +1,24 @@
import socket
import time
ip_port = ("server", 9999)
data = "0123456789\n"*100
c = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
c.connect(ip_port)
print("Connected.")
time.sleep(1)
i=0
while i<10:
print("Send:"+data)
c.send(data.encode())
i=i+1
finally:
print("Sent. Waiting....")
while True:
time.sleep(0.001)

@ -73,19 +73,19 @@
\multirow{3}{1.5cm}{\centering 网络抓包与协议分析} \multirow{3}{1.5cm}{\centering 网络抓包与协议分析}
& Wireshark软件使用和ARP分析 & & Wireshark软件使用和ARP分析 &
\tabitem{掌握Wireshark的基本操作使用捕获过滤器和显示过滤器抓取和分析有线局域网的数据包。} \par \tabitem{学习Wireshark的基本操作掌握过滤器使用抓取和分析数据包。} \par
\tabitem{掌握以太网MAC帧的基本结构。} \par \tabitem{熟悉以太网MAC帧的基本结构。} \par
\tabitem{掌握ARP协议的特点及工作过程} \tabitem{掌握ARP协议的特点及工作原理}
& 2 & $\star$ \\ \cline{2-5} & 2 & $\star$ \\ \cline{2-5}
& IP和ICMP分析 & & IP和ICMP分析 &
\tabitem{熟练使用Wireshark软件观察IP数据报的基本结构分析数据报的分片过程;} \par \tabitem{观察IP数据报的基本结构理解数据报的分片过程;} \par
\tabitem{掌握基于ICMP协议的ping和traceroute命令及其工作过程} \tabitem{掌握基于ICMP协议的ping和traceroute命令及其工作原理}
& 2 & $\star\star$ \\ \cline{2-5} & 2 & $\star\star$ \\ \cline{2-5}
& TCP与拥塞控制 & & TCP与拥塞控制 &
\tabitem{运用Wireshark观察分析TCP协议报文分析通信时序理解TCP的工作过程} \par \tabitem{观察TCP报文分析通信时序理解TCP的工作机制} \par
\tabitem{分析TCP连接管理、流量控制和拥塞控制的过程能够分析TCP的性能问题。} \tabitem{分析TCP流量控制和拥塞控制的过程学会排查TCP性能问题。}
& 4 & $\star\star\star$ \\ \hline & 4 & $\star\star\star$ \\ \hline
& 套接字基础与UDP通信 & & 套接字基础与UDP通信 &

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

@ -1,29 +1,30 @@
%# -*- coding: utf-8-unix -*- %# -*- coding: utf-8-unix -*-
\section{Wireshark软件使用与ARP分析} \section{Wireshark软件使用与ARP协议分析}
\label{sec:c:wireshark:s:arp} \label{sec:c:wireshark:s:arp}
\subsection{实验目的} \subsection{实验目的}
\label{subsec:c:wireshark:s:arp_object} \label{subsec:c:wireshark:s:arp_object}
本实验旨在让学生掌握Wireshark的基本操作使用捕获过滤器和显示过滤器 本实验旨在让学生掌握Wireshark的基本操作
抓取和分析有线局域网的数据包掌握以太网MAC帧的基本结构掌握ARP协议的特点及工作过程。 抓取和分析有线局域网的数据包;
掌握以太网MAC帧的基本结构
掌握ARP协议的特点及工作过程。
\subsection{实验内容} \subsection{实验内容}
\label{subsec:c:wireshark:s:arp_content} \label{subsec:c:wireshark:s:arp_content}
练习使用Wireshark抓取相关有线局域网的数据包并进行分析。 练习使用Wireshark抓取局域网的数据包并进行分析:
\begin{enumerate} \begin{enumerate}
\item \textbf{熟悉Wireshark界面、基本设置和使用方法} \item \textbf{学习Wireshark基本操作}
熟悉菜单、工具栏和主窗口根据自己需要设置Wireshark视图 重点掌握捕获过滤器和显示过滤器。
学习使用捕获过滤器和显示过滤器;捕获有线局域网的数据包并保存 \item \textbf{观察MAC地址}了解MAC地址的组成辨识MAC地址类型。
\item \textbf{MAC地址}了解MAC地址的组成查看其OUI信息。
\item \textbf{分析以太网帧结构:}观察以太网帧的首部和尾部, \item \textbf{分析以太网帧结构:}观察以太网帧的首部和尾部,
了解数据封装成帧的过程,计算帧长度 了解数据封装成帧的原理
\item \textbf{差错检测FCS计算检验:}计算帧尾校验和, \item \textbf{计算FCS检验:}计算帧尾校验和,
并用抓包数据文件进行验证。 并用抓包数据文件进行验证。
\item \textbf{ARP协议分析}抓取ARP请求和应答报文分析其工作过程。 \item \textbf{分析ARP协议}抓取ARP请求和应答报文分析其工作过程。
\end{enumerate} \end{enumerate}
\subsection{实验原理} \subsection{实验原理}
@ -40,7 +41,7 @@ Wireshark软件是目前全球使用最广泛的开源网络数据包分析工
能够分析各层网络协议的性能、掌握通信主体的运行情况, 能够分析各层网络协议的性能、掌握通信主体的运行情况,
确认带宽分配和时延大小、查看应用的快慢并改进优化, 确认带宽分配和时延大小、查看应用的快慢并改进优化,
识别网络中存在的攻击或恶意行为、解决网络异常和故障。 识别网络中存在的攻击或恶意行为、解决网络异常和故障。
Wireshark可以在Windows、Linux和MacOS操作系统中运行 Wireshark可以在Windows、Linux和macOS操作系统中运行
具备友好的图形界面、丰富的统计及图表分析功能。 具备友好的图形界面、丰富的统计及图表分析功能。
\subsubsection{以太网MAC帧格式} \subsubsection{以太网MAC帧格式}
@ -123,8 +124,8 @@ IP地址长度为4字节。每个字段的含义如下
\label{subsec:c:wireshark:s:arp_requirement} \label{subsec:c:wireshark:s:arp_requirement}
\begin{itemize} \begin{itemize}
\item 装有Wireshark软件的PC机一台Windows或Linux操作系统 \item PC机一台连入局域网
\item 处于局域网环境。Wireshark建议3.0以上。 \item Wireshark软件,建议3.0以上版本
\end{itemize} \end{itemize}
\subsection{实验步骤} \subsection{实验步骤}

@ -8,8 +8,8 @@
IP和ICMP协议是TCP/IP协议簇中的网络层协议 IP和ICMP协议是TCP/IP协议簇中的网络层协议
在网络寻址定位、数据分组转发和路由选择等任务中发挥了重要作用。 在网络寻址定位、数据分组转发和路由选择等任务中发挥了重要作用。
本实验使学生能熟练使用Wireshark软件观察IP数据报的基本结构 本实验要求熟练使用Wireshark软件观察IP数据报的基本结构
分析数据报的分片掌握基于ICMP协议的ping和traceroute命令及其工作过程 分析数据报的分片掌握基于ICMP协议的ping和traceroute命令及其工作原理
\subsection{实验内容} \subsection{实验内容}
\label{subsec:c:wireshark:s:ip_content} \label{subsec:c:wireshark:s:ip_content}
@ -39,7 +39,7 @@ IP和ICMP协议是TCP/IP协议簇中的网络层协议
可实现大规模的异构网络互联互通,为主机提供无连接的、尽力而为的数据包传输服务。 可实现大规模的异构网络互联互通,为主机提供无连接的、尽力而为的数据包传输服务。
在网际协议第4版IPv4IP数据报是一个可变长分组 在网际协议第4版IPv4IP数据报是一个可变长分组
包括首部和数据两部分(如图\ref{c:wireshark_ip-structure})。 包括首部和数据两部分(如图\ref{c:wireshark_ip-structure})。
首部由20~60字节组成包含与路由选择和传输有关的重要信息其各字段意义如下 首部由2060字节组成包含与路由选择和传输有关的重要信息其各字段意义如下
\begin{figure}[!ht] \begin{figure}[!ht]
\centering \centering
@ -220,7 +220,7 @@ tracert命令Linux格式和常用参数如图\ref{fig:tracert-cmd}所示
\subsection{实验条件} \subsection{实验条件}
\label{subsec:c:wireshark:s:ip_requirement} \label{subsec:c:wireshark:s:ip_requirement}
装有Wireshark软件的PC机一台Linux或OS 操作系统);局域网环境。 装有Wireshark软件的PC机一台,处于局域网环境。
参考资料: 参考资料:
@ -333,18 +333,18 @@ tracert命令Linux格式和常用参数如图\ref{fig:tracert-cmd}所示
在PC1向PC2发送数据的传输过程中 在PC1向PC2发送数据的传输过程中
以太网数据帧的首部字段和IP数据报的首部字段是怎样变化的 以太网数据帧的首部字段和IP数据报的首部字段是怎样变化的
如果有条件请搭建实验平台进行实验并使用Wireshark软件验证你的答案。 如果有条件请搭建实验平台进行实验并使用Wireshark软件验证你的答案。
\item 拒绝服务Denial of ServiceDoS攻击通过消耗目标主机设备的某种资源 \item 拒绝服务Denial of ServiceDoS攻击DoS通过消耗目标主机设备的某种资源,
导致其网络服务不能被正常用户使用。 导致其网络服务不能被正常用户使用。
\begin{enumerate} \begin{enumerate}
\item IP数据报分片机制可能被攻击者利用来构建拒绝服务攻击。 \item IP数据报分片机制可能被攻击者利用来构建拒绝服务攻击。
试设计一种利用IP数据报分片机制发动DOS攻击的方法并提出防御的思路。 试设计一种利用IP数据报分片机制发动DoS攻击的方法并提出防御的思路。
\item 请思考利用ICMP报文构建DOS攻击的可能性以及防御方法。 \item 请思考利用ICMP报文构建DoS攻击的可能性以及防御方法。
\end{enumerate} \end{enumerate}
\item 在实际操作中Traceroute命令返回的某些条目以“*”号表示。 \item 在实际操作中Traceroute命令返回的某些条目以“*”号表示。
请思考有哪些原因可能导致这样的情况,该如何避免这样的情况 请思考有哪些原因可能导致这样的情况。
\item 发送方要怎样决定IP数据报分组大小 \item 发送方要怎样决定IP数据报分组大小
才能避免因为不同网络MTU不一致而引起分片呢 才能避免因为不同网络MTU不一致而引起分片呢
\item客户端给服务器(其地址为\texttt{\#IP}发送三个ping命令 \itemPC1给PC2(其地址为\texttt{\#IP}发送三个ping命令
请比较命令的结果并用Wireshark软件进行观察分析。 请比较命令的结果并用Wireshark软件进行观察分析。
\begin{enumerate} \begin{enumerate}
\item \texttt{ping \#IP -l 1472 -f -n 1} \item \texttt{ping \#IP -l 1472 -f -n 1}

@ -9,7 +9,7 @@
TCP(Transmission Control Protocol传输控制协议)是一种面向连接的、 TCP(Transmission Control Protocol传输控制协议)是一种面向连接的、
可靠的、基于字节流的传输层通信协议。 可靠的、基于字节流的传输层通信协议。
本实验通过运用Wireshark对网络活动进行抓包分析 本实验通过运用Wireshark对网络活动进行抓包分析
让学生观察TCP协议报文分析通信时序帮助同学理解TCP的工作过程 观察TCP协议报文分析通信时序理解TCP的工作过程
掌握TCP工作原理与实现 掌握TCP工作原理与实现
学会运用Wireshark分析TCP连接管理、流量控制和拥塞控制的过程发现TCP的性能问题。 学会运用Wireshark分析TCP连接管理、流量控制和拥塞控制的过程发现TCP的性能问题。
@ -41,7 +41,7 @@ TCP(Transmission Control Protocol传输控制协议)是一种面向连接的、
TCP协议基于“尽力而为”的网络层为应用层提供可靠的进程间通信服务 TCP协议基于“尽力而为”的网络层为应用层提供可靠的进程间通信服务
具体地说是可靠的全双工的端对端字节流传输服务。 具体地说是可靠的全双工的端对端字节流传输服务。
在TCP的协议传输单元中(TCP报文段TCP Segment) 在TCP的协议传输单元中(TCP报文段TCP Segment)
收发双方以字节为单位使用序号(Sequence Number)明确收发的数据, 收发双方以字节为单位使用序号(Sequence Number)明确收发的数据,
使用ACK反馈(Acknowledgment)机制,实现端对端的可靠传输控制。 使用ACK反馈(Acknowledgment)机制,实现端对端的可靠传输控制。
\paragraph{TCP报文段(Segment)}~{} \paragraph{TCP报文段(Segment)}~{}
@ -86,7 +86,7 @@ TCP 报文段结构如图\ref{fig:c:wireshark_TCP-structure}所示,
与源IP地址一起标识发送该TCP报文段的通信进程。端口号范围0-65535。 与源IP地址一起标识发送该TCP报文段的通信进程。端口号范围0-65535。
\item \textbf{目的端口号(Destionation Port)}16位目的端口 \item \textbf{目的端口号(Destionation Port)}16位目的端口
与目的IP地址一起标识接收该TCP报文段的通信进程。 与目的IP地址一起标识接收该TCP报文段的通信进程。
\item \textbf{序号(Sequence Number)}该TCP报文段中第一个数据字节的序号占4个字节。在TCP连接建立时通常生成一个随机数作为字节序号的初始值(ISN)。 \item \textbf{序号(Sequence Number)}该TCP报文段中第一个数据字节的序号占4个字节。在TCP连接建立时通常生成一个随机数作为字节序号的初始值(ISN)。
\item \textbf{确认号(Acknowledgement Number)} \item \textbf{确认号(Acknowledgement Number)}
表示期望收到对方下一个报文段的字节序号占4个字节。 表示期望收到对方下一个报文段的字节序号占4个字节。
\item \textbf{标志位(TCP Flags)} \item \textbf{标志位(TCP Flags)}
@ -123,7 +123,7 @@ TCP 报文段结构如图\ref{fig:c:wireshark_TCP-structure}所示,
\textbf{建立过程:}TCP是面向连接的数据传输之前必须在双方之间建立一条连接 \textbf{建立过程:}TCP是面向连接的数据传输之前必须在双方之间建立一条连接
并通过三次握手过程完成。 并通过三次握手过程完成。
其主要目的是,同步连接双方的序号和确认号并交换TCP窗口大小等控制信息。 其主要目的是同步连接双方的序号和确认号并交换TCP窗口大小等控制信息。
一般地,客户端主动向服务器端发起连接请求,具体过程如下: 一般地,客户端主动向服务器端发起连接请求,具体过程如下:
\begin{enumerate} \begin{enumerate}
@ -202,7 +202,7 @@ cwnd初始值为1个MSS(Maximum Segment Size)
则启用快重传算法并将cwnd重置为1ssthresh减半。 则启用快重传算法并将cwnd重置为1ssthresh减半。
TCP拥塞控制算法一直处在不断的改进之中围绕对网络环境因素感知和拥塞避免的控制 TCP拥塞控制算法一直处在不断的改进之中围绕对网络环境因素感知和拥塞避免的控制
涌现策略算法。TCP Reno继承Tahoe的三个算法并增加了快速恢复(Fast Recovery)算法。 涌现出新的策略算法。TCP Reno继承Tahoe的三个算法并增加了快速恢复(Fast Recovery)算法。
收到三个重复的ACK后Reno会把当前的ssthresh的值设置为当前cwnd的一半 收到三个重复的ACK后Reno会把当前的ssthresh的值设置为当前cwnd的一半
并将cwnd更新为ssthresh+3MSS然后每收到一个重复ACK则cwnd+1 并将cwnd更新为ssthresh+3MSS然后每收到一个重复ACK则cwnd+1
直至收到新确认号的ACK则将cwnd更新为ssthresh。 直至收到新确认号的ACK则将cwnd更新为ssthresh。
@ -219,11 +219,13 @@ BBR\footnote{\href{https://queue.acm.org/detail.cfm?id=3022184}{BBR: Congestion-
\subsubsection{实验方法和手段} \subsubsection{实验方法和手段}
使用VMWare软件配置两台本地虚拟机本地相互连接(如图\ref{fig:c:wireshark_TCP-topo})。 两台实验机本地相互连接(如图\ref{fig:c:wireshark_TCP-topo})
通过“虚拟机设置->硬件->网络适配器->高级”(如图\ref{fig:c:wireshark_VM-advance-setup} 在实验机中仿真不同的网络条件以便观察TCP的各种控制现象。
设置虚拟机的网卡传入/传出带宽、数据包丢失率、延迟等,仿真不同的网络条件。 方案一使用虚拟机VMware Player中通过“虚拟机设置->硬件->网络适配器->高级”(如图\ref{fig:c:wireshark_VM-advance-setup}
设置虚拟机的网卡传入/传出带宽、数据包丢失率、延迟等;
方案二使用物理机使用tc进行流量控制场景仿真使用wondershaper对网卡进行限速。
本实验需要使用的命令和工具,如表\ref{tab:c:wireshark_tools-command}所列。 本实验需要使用的命令和工具,如表\ref{tab:c:wireshark_tools-command}所列。
常用的Linux操作系统命令还包括echo、cat、sysctl、ping、ftp。 常用的Linux命令还包括echo、cat、sysctl、ping、ftp
\begin{figure}[!ht] \begin{figure}[!ht]
\centering \centering
@ -245,7 +247,7 @@ BBR\footnote{\href{https://queue.acm.org/detail.cfm?id=3022184}{BBR: Congestion-
\centering \centering
\caption{主要工具及命令列表} \caption{主要工具及命令列表}
\label{tab:c:wireshark_tools-command} \label{tab:c:wireshark_tools-command}
\begin{tabular}{|m{1.5cm}<{\centering}|m{3cm}<{\centering}|m{8.5cm}|} \begin{tabular}{|m{2.5cm}<{\centering}|m{3cm}<{\centering}|m{8.5cm}|}
\hline \hline
\heiti 命令 & \heiti 作用 & \multicolumn{1}{c|}{\heiti 参考}\\ \hline \heiti 命令 & \heiti 作用 & \multicolumn{1}{c|}{\heiti 参考}\\ \hline
\texttt{ifconfig} & 配置网络 & \url{https://man.linuxde.net/ifconfig}\\ \hline \texttt{ifconfig} & 配置网络 & \url{https://man.linuxde.net/ifconfig}\\ \hline
@ -257,6 +259,7 @@ BBR\footnote{\href{https://queue.acm.org/detail.cfm?id=3022184}{BBR: Congestion-
\texttt{netwox} & 网络工具 & \url{https://sourceforge.net/projects/ntwox/}\\ \hline \texttt{netwox} & 网络工具 & \url{https://sourceforge.net/projects/ntwox/}\\ \hline
\texttt{ss} & Socket状态 & \texttt{ss atn}\\ \hline \texttt{ss} & Socket状态 & \texttt{ss atn}\\ \hline
\texttt{netstat} & 显示网络状态 & \texttt{netstat atn}\\ \hline \texttt{netstat} & 显示网络状态 & \texttt{netstat atn}\\ \hline
\texttt{wondershaper} & 网卡限速工具 & \texttt{wondershaper [网口] [下载速率] [上行速率] wondershaper clear [网口]}\\ \hline
\texttt{iperf3} & 网络性能分析 & \url{https://iperf.fr/}\\ \hline \texttt{iperf3} & 网络性能分析 & \url{https://iperf.fr/}\\ \hline
\end{tabular} \end{tabular}
\end{table} \end{table}
@ -265,17 +268,14 @@ BBR\footnote{\href{https://queue.acm.org/detail.cfm?id=3022184}{BBR: Congestion-
\label{subsec:c:wireshark:s:tcp_requirement} \label{subsec:c:wireshark:s:tcp_requirement}
\begin{enumerate} \begin{enumerate}
\item 硬件每个学生一台物理实验机8G以上内存80G以上硬盘空间)。 \item 硬件处于同一局域网的两台PC机(可使用虚拟机也可使用物理机)。
\item 软件物理机装Windows7/10、VMWare或VisualBox \item 软件Ubuntu系统(18.04版)
两台 Ubuntu18虚拟机每台2G内存、20G HD 预装wireshark、curl、vsftp、netwox、telnet、nmap和iperf3。
每台Ubuntu虚机上预装wireshark、curl、vsftp、netwox、telnet、namp和iperf3。 \item 环境准备分别以PC1、PC2作为TCP的客户端与服务端
\item 环境准备分别以Ubuntu 1\#机、Ubuntu2\#机作为TCP的客户端与服务端 启动两台实验机后可使用ping进行连接性测试
以下简称1\#2\#设置虚机网络连接为NAT模式IPv4设置为DHCP。
启动两台实验虚机后可使用ping进行连接性测试
也可使用nmap扫一下对方打开的端口 也可使用nmap扫一下对方打开的端口
确保实验环境正常 确保实验环境正常
(指导书中服务器的IP为192.168.100.144指导书中命令若有用及此IP (指导书中PC2的IP为192.168.100.144实验中应替换为实际的IP) 。
应替换为实际观察到的IP) 。
\end{enumerate} \end{enumerate}
参考资料: 参考资料:
@ -294,20 +294,20 @@ BBR\footnote{\href{https://queue.acm.org/detail.cfm?id=3022184}{BBR: Congestion-
\begin{enumerate} \begin{enumerate}
\item 利用python自带的SimpleHTTPServer模块 \item 利用python自带的SimpleHTTPServer模块
在2\#上启动一个简易的web服务器。 PC2上启动一个简易的web服务器。
终端上运行\texttt{echo "TCP lab test" > index.html}创建index.html文件为测试站首页 终端上运行\texttt{echo "TCP lab test" > index.html}创建index.html文件为测试站首页
运行\texttt{sudo python -m SimpleHTTPServer 80}启动一个简易web服务器 运行\texttt{sudo python -m SimpleHTTPServer 80}启动一个简易web服务器
打开新终端,键入\texttt{ss -tln}查看当前主机打开的TCP连接确认80端口处理监听状态。 打开新终端,键入\texttt{ss -tln}查看当前主机打开的TCP连接确认80端口处理监听状态。
\item 在1\#上打开一个终端,键入\texttt{sudo wireshark}启动抓包软件; \itemPC1上打开一个终端键入\texttt{sudo wireshark}启动抓包软件;
再打开一个新终端,键入 curl <2\#IP> 再打开一个新终端,键入 curl <PC2的IP>
停止抓包在wireshark过滤出TCP类型报文。 停止抓包在wireshark过滤出TCP类型报文。
观察首个TCP报文头并分析各段值代表的意义。 观察首个TCP报文头并分析各段值代表的意义。
如果想要关闭相对序号/确认号, 如果想要关闭相对序号/确认号,
可以选择Wireshark菜单栏中的 可以选择Wireshark菜单栏中的
Edit$\rightarrow$Preference$\rightarrow$protocols$\rightarrow$TCP Edit$\rightarrow$Preference$\rightarrow$protocols$\rightarrow$TCP
去掉Relative sequence number勾选项。 去掉Relative sequence number勾选项。
使用Wireshark内置的绘制流功能选择菜单栏中的Statistics$\rightarrow$Flow Graph 使用Wireshark内置的绘制流功能选择菜单栏中的Statistics$\rightarrow$Flow Graph
Flow Type选择TCP flows可以直观地显示TCP序号和确认号是如何工作的。 Flow Type选择TCP flows可以直观地显示TCP序号和确认号是如何工作的。
\item 观察TCP三次握手与四次挥手报文注意报文收发过程中双方TCP状态的变化。 \item 观察TCP三次握手与四次挥手报文注意报文收发过程中双方TCP状态的变化。
以本次抓得报文为据分别画出本次TCP连接三次握手与四次挥手的时序图 以本次抓得报文为据分别画出本次TCP连接三次握手与四次挥手的时序图
结合TCP状态机在双方各阶段标出对应的TCP状态。选择其中一个TCP报文 结合TCP状态机在双方各阶段标出对应的TCP状态。选择其中一个TCP报文
@ -330,7 +330,7 @@ BBR\footnote{\href{https://queue.acm.org/detail.cfm?id=3022184}{BBR: Congestion-
\item 再次curl访问观察抓包内容。 \item 再次curl访问观察抓包内容。
\item 关闭服务器端的SimpleHTTPServer(ctrl+C中断或关闭所在终端) \item 关闭服务器端的SimpleHTTPServer(ctrl+C中断或关闭所在终端)
客户端curl访问服务器80端口观察应答报文。 客户端curl访问服务器80端口观察应答报文。
\item 运行\texttt{nmap -sS <2\#IP>}扫描服务器,并抓包。 \item 运行\texttt{nmap -sS <PC2的IP>}扫描服务器,并抓包。
\item 在报告中总结以上观察结果解释SYN扫描原理。 \item 在报告中总结以上观察结果解释SYN扫描原理。
\end{enumerate} \end{enumerate}
\item 客户端发送了第一个SYN连接请求服务器无响应的情景。 \item 客户端发送了第一个SYN连接请求服务器无响应的情景。
@ -346,8 +346,8 @@ BBR\footnote{\href{https://queue.acm.org/detail.cfm?id=3022184}{BBR: Congestion-
\item 观察TCP的状态变化分析wireshark抓到的TCP异常报文。 \item 观察TCP的状态变化分析wireshark抓到的TCP异常报文。
\item 服务端的SYN-RECV 状态何时释放? \item 服务端的SYN-RECV 状态何时释放?
\item SYN ACK重传了几次时间间隔有何变化 \item SYN ACK重传了几次时间间隔有何变化
\item 参考(1)在服务端修改SYN ACK重传次数(tcp\_synack\_retries) \item 参考1中的操作在服务端修改SYN ACK重传次数(tcp\_synack\_retries)
再次观察,此任务结束后清空防火墙规则iptables -F 再次观察,此任务结束后清空防火墙规则(iptables -F)
\end{enumerate} \end{enumerate}
\item SYN洪泛。 \item SYN洪泛。
在服务器端\texttt{sudo echo "0">/proc/sys/net/ipv4/tcp\_syncookies}禁用syncookies 在服务器端\texttt{sudo echo "0">/proc/sys/net/ipv4/tcp\_syncookies}禁用syncookies
@ -364,18 +364,18 @@ BBR\footnote{\href{https://queue.acm.org/detail.cfm?id=3022184}{BBR: Congestion-
\item 产生一个100M文件 \item 产生一个100M文件
\texttt{dd if=/dev/zero of=100M.file bs=1M count=100} \texttt{dd if=/dev/zero of=100M.file bs=1M count=100}
\item 模拟网络抖动 \item 模拟网络延迟、包重复、包乱序、包损坏
\texttt{tc qdisc add dev ens33 root netem delay 70ms 10ms 30\% duplicate 1\% reorder 5\% 10\% corrupt 0.1\%} \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} \item 下载服务器上的大文件:\texttt{wget 192.168.100.144/100M.file}
\end{enumerate} \end{enumerate}
抓包记录以上过程分析黑色标签错误报文结合TCP实现机制 抓包记录以上过程分析黑色标签错误报文结合TCP实现机制
分析这些报文产生的原因。此类报文也可以从现实网络行为抓取获得, 分析这些报文产生的原因。此类报文也可以从现实网络行为抓取获得,
请结合实际抓得报文分析,报文附件随报告提交。 请结合实际抓得报文分析,报文附件随报告提交。
但不限于以下几种类型报文: 但不限于以下几种类型报文:
[Duplicate ACK]、[TCP Retransmission]、[Fast Retransmission]、 [Duplicate ACK]、[TCP Retransmission]、[Fast Retransmission]、
[TCP Spurious Retransmission]、[TCP Out-Of-Order]、 [TCP Spurious Retransmission]、[TCP Out-Of-Order]、
[TCP Previous segment not captured]。 [TCP Previous segment not captured]。
@ -398,8 +398,9 @@ BBR\footnote{\href{https://queue.acm.org/detail.cfm?id=3022184}{BBR: Congestion-
\subsubsection{拥塞控制} \subsubsection{拥塞控制}
\begin{enumerate} \begin{enumerate}
\item 在VMWare中的虚拟机设置$\rightarrow$网络适配器$\rightarrow$高级中设置, \item 任一端限制网卡传入/传出带宽为10Mbps以下使用虚拟机作为实验机
设置两台虚拟机的网卡传入/传出带宽为10Mbps以下 在VMWare Player中的虚拟机设置$\rightarrow$网络适配器$\rightarrow$高级中设置;
物理机可使用wondershaper命令进行限速。
再启动应用(可以是http wget也可以ftp下载/上传)传输大文件观察。 再启动应用(可以是http wget也可以ftp下载/上传)传输大文件观察。
\item Wireshark抓取全部传输过程数据找出该网络活动的拥塞点 \item Wireshark抓取全部传输过程数据找出该网络活动的拥塞点
并结合Analyze$\rightarrow$Expert Information、Statistic$\rightarrow$IO Graphs、 并结合Analyze$\rightarrow$Expert Information、Statistic$\rightarrow$IO Graphs、
@ -438,19 +439,19 @@ BBR\footnote{\href{https://queue.acm.org/detail.cfm?id=3022184}{BBR: Congestion-
\begin{enumerate} \begin{enumerate}
\item TCP在不可靠的IP层上建立了可靠的端对端连接 \item TCP在不可靠的IP层上建立了可靠的端对端连接
何在不可靠的UDP上建立可靠的端对端传输系统呢 果要在不可靠的UDP上建立可靠的端对端传输系统需要考虑哪些方面
\item TCP连接建立过程中存在哪些等待队列 \item TCP连接建立过程中存在哪些等待队列
这些队列是否可能出现溢出状况高并发TCP连接应用如何调优 这些队列是否可能出现溢出状况?该如何避免
\item 本次实验观察了Linux环境下的TCP实现在Windows、MacOS环境下 \item 本次实验观察了Linux环境下的TCP实现在Windows、macOS环境下
操作系统又是如何实现TCP的呢 操作系统又是如何实现TCP的呢
类似Linux TCP参数在不同系统环境下如何查看或设置 类似Linux TCP参数在不同系统环境下如何查看或设置
请尝试通过抓包其通信过程发现其实现异同。 请尝试通过抓包其通信过程发现其实现异同。
\item TCP是封装单元为MSS可是我们在抓包过程中常发现远大于此值的TCP包
为什么TCP可以提交如此大的报文呢
此类型的包远超出链路层的MTU它是如何被处理的呢请从两端同时抓包观察比对。
\item 在TCP状态机(图\ref{fig:c:wireshark_TCP-status-machine})中, \item 在TCP状态机(图\ref{fig:c:wireshark_TCP-status-machine})中,
有些状态停留时间较长,易观察到,有些状态很短暂不易观察到。 有些状态停留时间较长,易观察到,有些状态很短暂不易观察到。
试列出不易观察到的状态,并考虑观察到它们的可能方法。 试列出不易观察到的状态,并考虑观察到它们的可能方法。
\item TCP是封装单元为MSS可是我们在抓包过程中常发现远大于此值的TCP包
为什么TCP可以提交如此大的报文呢
此类型的包远超出链路层的MTU它是如何被处理的呢请从两端同时抓包观察比对。
\begin{figure}[!ht] \begin{figure}[!ht]
\centering \centering
@ -473,9 +474,10 @@ BBR\footnote{\href{https://queue.acm.org/detail.cfm?id=3022184}{BBR: Congestion-
\item 环境还原前面操作的iptables、tc遗留规则可能会影响后面的操作效果 \item 环境还原前面操作的iptables、tc遗留规则可能会影响后面的操作效果
\texttt{iptables --list}查看核对一下当前的规则, \texttt{iptables --list}查看核对一下当前的规则,
\texttt{iptables -F}清空当前规则; \texttt{iptables -F}清空当前规则;
同样,使用\texttt{tc qdisc del dev eth0 root RULE}清除网卡eth0队列规则。 同样,使用\texttt{tc qdisc del dev eth0 root RULE}清除网卡eth0队列规则
wondershaper限速使用clear参数清除。
使用虚拟机的快照功能是更原始、更彻底的还原方式。 使用虚拟机的快照功能是更原始、更彻底的还原方式。
\item 批量网络扫描是害网络行为,仅在实验室环境下进行试验学习, \item 批量网络扫描是害网络行为,仅在实验室环境下进行试验学习,
不得用于运营网络。 不得用于运营网络。
\end{enumerate} \end{enumerate}
@ -485,7 +487,7 @@ BBR\footnote{\href{https://queue.acm.org/detail.cfm?id=3022184}{BBR: Congestion-
完成本次实验并提交一份实验报告和一组Wireshark数据存储文件。 完成本次实验并提交一份实验报告和一组Wireshark数据存储文件。
报告内容应当包括以下部分,相关的分析解释都对应有截图证明,并与数据存储文件吻合。 报告内容应当包括以下部分,相关的分析解释都对应有截图证明,并与数据存储文件吻合。
\begin{enumerate} \begin{enumerate}
\item (20分) 正确绘制出了三次握手报文与四次挥手报文(须结合抓得报文序号) \item (20分) 正确绘制出了三次握手报文与四次挥手报文(须结合捕获的报文)
并正确标识出了各阶段TCP状态 并正确标识出了各阶段TCP状态
\item (20分) 观察传输异常现象,并进行分析; \item (20分) 观察传输异常现象,并进行分析;
\item (20分) 完成流量控制操作要求,结合上下分析报文窗口变化, \item (20分) 完成流量控制操作要求,结合上下分析报文窗口变化,

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.8 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Loading…
Cancel
Save