!3 wireshark 3-2

Merge pull request !3 from 建发/wireshark
edit
Xphi 4 years ago committed by Gitee
commit 4e3b71669b

@ -83,7 +83,7 @@ ARP解析的过程主机A和B不在同一网段的情况请参阅课本相关
ARP请求报文中的发送端IP地址和发送端MAC地址为主机A的IP地址和MAC地址
目标IP地址和目标MAC地址为主机B的IP地址和全0的MAC地址。
由于ARP请求报文以广播方式发送该网段上的所有主机都可以接收到该请求
但只有被请求的主机(即主机B会对该请求进行处理。
但只有被请求的主机B会对该请求进行处理。
\item 主机B比较自己的IP地址和ARP请求报文中的目标IP地址
当两者相同时进行如下处理:
将ARP请求报文中的发送端即主机A的IP地址和MAC地址存入自己的ARP表中。
@ -135,7 +135,7 @@ IP地址长度为4字节。每个字段的含义如下
\begin{enumerate}
\item 通过Wireshark官网下载最新版软件按默认选项安装。
\item 运行Wireshark软件程序界面会显示当前的网络接口列表
选择要抓取的网络接口,双击开始抓包,
选择要观察的网络接口,双击开始捕捉数据包,
Wireshark软件选择网络接口的界面如图\ref{fig:c:wireshark_wireshark-boot-ui}所示。
\begin{figure}[!ht]
@ -168,16 +168,16 @@ IP地址长度为4字节。每个字段的含义如下
显示过滤器支持若干的过滤选项:
源MAC、目的MAC、源IP、目的IP、TCP/UDP传输协议、
应用层协议HTTP, DHCP、源端口Port、目的端口Port等。
在显示过滤器栏中输入过滤表达式(图\ref{fig:c:wireshark_wireshark-filters}
例如下面的命令:
在显示过滤器栏中输入过滤表达式(
更详细的显示过滤语法可以查看WireShark的官方文档
\footnote{
\href{https://www.wireshark.org/docs/wsug_html_chunked/ChWorkBuildDisplayFilterSection.html}
{WireShark显示过滤器语法}
}
}
),例如下面的命令:
\begin{itemize}
\item \texttt{arp~~~~~~~~~~~~~~~~~~~~~~~~//显示arp协议报文}
\item \texttt{arp~~~~~~~~~~~~~~~~~~~~~~~~//显示arp协议报文,例如图\ref{fig:c:wireshark_wireshark-filters}}
\item \texttt{ip.src == a.b.c.d \&\& icmp~~//显示源地址为a.b.c.d的icmp报文}
\end{itemize}
@ -189,7 +189,7 @@ IP地址长度为4字节。每个字段的含义如下
\end{figure}
\item 通过主菜单“文件”/“导出特定分组”(如图\ref{fig:c:wireshark_wireshark-save}
可以保存抓取的网络数据(也可以先选中某个包,只保存部分数据)。
可以保存捕获的网络数据(也可以先选中某个包,只保存部分数据)。
\begin{figure}[!ht]
\centering
@ -198,7 +198,7 @@ IP地址长度为4字节。每个字段的含义如下
\label{fig:c:wireshark_wireshark-save}
\end{figure}
\item 如果只抓取特定的数据包,
\item 如果只捕捉特定的数据包,
可以使用菜单“捕获”/”捕获过滤器”选定想要的类型
(如图\ref{fig:c:wireshark_wireshark-special-type})。
例如选择“IPv4 only”Wireshark只抓取ipv4类型的数据包。
@ -226,12 +226,15 @@ IP地址长度为4字节。每个字段的含义如下
\end{figure}
\end{enumerate}
\subsubsection{查看OUI信息}
查看本机MAC地址字段查看OUI信息搜索各厂商的OUI进行验证。
\subsubsection{观察MAC地址}
启动Wireshark捕捉数据包
在命令行窗口分别ping网关和ping同网段的一台主机
分析本机发出的数据包。
重点观察以太网帧的 Destination和Source的MAC地址
辨识MAC地址类型解读OUI信息、I/G和G/L位。
\subsubsection{分析以太网的帧结构}
选择其中一个数据包点击Ethernet II展开\ref{fig:c:wireshark_eth-frame-detail}
查看MAC帧的各个字段。计算帧的长度并与Wireshark的分析结果比较。
同时查看比较广播帧和单播帧的异同。
查看MAC帧的各个字段。
\begin{figure}[!ht]
\centering
@ -260,11 +263,11 @@ IP地址长度为4字节。每个字段的含义如下
\subsubsection{ARP协议分析}
\begin{enumerate}
\item 使用\texttt{arp d}命令(其语法见图\ref{fig:arp-cmd})
清空本机已有的ARP缓存
清空本机的ARP缓存
开启Wiresharkping本机的同网段地址在显示过滤器条框中输入“\texttt{arp}”,
观察捕获的ARP报文的各个字段分析请求/响应的过程。
\item 使用\texttt{arp d}命令,清空本机已有的ARP缓存。开启Wireshark
ping本机的不同网段地址或域名观察捕获的ARP报文的各个字段
\item 使用\texttt{arp d}命令清空本机的ARP缓存。开启Wireshark
ping与本机网段不同的IP地址或域名观察捕获的ARP报文的各个字段
分析请求/响应的过程。
\end{enumerate}
@ -294,7 +297,7 @@ IP地址长度为4字节。每个字段的含义如下
\begin{enumerate}
\item 20分现场考核Wireshark的基本使用。
\item 30分以太网帧格式分析OUI查看、长度计算、校验和计算。
\item 30分以太网帧格式分析MAC地址类型、头部信息、长度及校验和计算。
\item 30分结合捕捉的网络数据描述ARP数据包描述ARP协议工作过程。
\item 10分回答任意两道思考题。
\item 10分记录自己在本次实验中所遇到的问题以及心得感悟。

@ -54,12 +54,12 @@ IP和ICMP协议是TCP/IP协议簇中的网络层协议
\item \textbf{首部长度4位}该字段定义数据报协议头长度,
表示协议首部具有32位字长的数量最小值为5最大值为15。
\item \textbf{服务8位}该字段定义上层协议对处理当前数据报所期望的服务质量,
并对数据报按照重要性级别进行分配。前3位为优先位后面4位为服务类型,
最后1位没有定义。这8位字段可用于分配优先级、延迟、吞吐量以及可靠性。
并对数据报按照重要性级别进行分配。前3位为优先位后面4位为服务类型
最后1位没有定义。这8位可用于分配优先级、延迟、吞吐量以及可靠性。
\item \textbf{总长度16位}该字段定义整个IP数据报的字节长度
包括协议首部和数据其最大值为65535字节。
\item \textbf{标识16位}该字段包含一个整数,用于标识当前数据报。
当数据报分片时,标识字段的值被复制到所有的分片。
当数据报分片时,标识字段的值被复制到所有的分片
\item \textbf{标记3位}该字段由3位字段构成其中最低位MF控制分片
若存在下一个分片则值为1否则置0代表该分片是最后一个。
中间位DF指出数据报是否可进行分片若置1则不允许该数据报进行分片。
@ -68,11 +68,11 @@ IP和ICMP协议是TCP/IP协议簇中的网络层协议
以8字节为长度单位。
\item \textbf{生存时间8位}该字段是计数器,
转发该数据报的路由器依次减1直至减少为0。
\item \textbf{协议8位}该字段指出在IP处理过程完成之后,
有哪种上层协议接收导入数据报。
\item \textbf{协议8位}该字段指出在IP处理后,
由哪种上层协议接收该数据报。
\item \textbf{头部校验和16位}该字段帮助确保IP协议头的正确性。
计算过程是先将校验和字段置为0然后将整个头部每16位划分为一部分
将个部分相加,再将计算结果取反码,插入到校验和字段中。
并将各部分相加,其计算结果取反码,填入校验和字段中。
\item \textbf{源地址32位}源主机的IP地址。
\item \textbf{目的地址32位}目标主机的IP地址。
\end{enumerate}
@ -85,16 +85,14 @@ IP和ICMP协议是TCP/IP协议簇中的网络层协议
在IP数据报的分片与重组过程中以下三个首部字段发挥了重要作用
\begin{enumerate}
\item 标记占3位该字段目前只有后两位有意义。
其中,最低位记为MFMore FragmentMF = 1代表还有后续分片
\item 标记的后两位:
最低位记为MFMore FragmentMF = 1代表还有后续分片
MF = 0表示此为原始数据报的最后分片。次低位DFDon't Fragment
用来控制数据报是否允许分片。DF = 1表示该数据报不允许分片DF = 0允许分片。
\item 标识符占16位用于目的主机将IP数据报的各个分片重装成原来的数据报。
当IP数据报分片时该标识字段的值被复制到所有的数据报分片的标识字段中。
这样,目的主机就可以正确的将标识字段值相同的各数据报分片重装成原来的数据报。
\item 片偏移占13位表示本分片在原IP数据报中的偏移位置偏移量以8字节为单位。
由于每个数据分片按照独立数据报方式传输,因此到达目的主机的顺序是不确定的,
\item 标识符用于目的主机将IP数据报的各个分片重装成原来的数据报。
\item 片偏移以8字节为单位
目的主机在重装IP数据报时需要根据该字段提供偏移量进行排序。
这是因为数据分片的独立传输使各分片的到达顺序难以确定。
\end{enumerate}
\subsubsection{ICMP协议及报文格式}
@ -190,16 +188,17 @@ tracert命令Linux格式和常用参数如图\ref{fig:tracert-cmd}所示
\centering
\begin{code}[text]
tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] [-R]
[-S srcaddr] [-4] [-6] target_name
-d Do not resolve addresses to hostnames.
-h maximum_hops Maximum number of hops to search for target.
-j host-list Loose source route along host-list (IPv4-only).
-w timeout Wait timeout milliseconds for each reply.
-R Trace round-trip path (IPv6-only).
-S srcaddr Source address to use (IPv6-only).
-4 Force using IPv4.
-6 Force using IPv6.
[-S srcaddr] [-4] [-6] target_name
-d 将地址解析成主机名
-h maximum_hops搜索目标的最大跃点数
-j host-list与主机列表一起的松散源路由用于IPv4
-w timeout 等待每个回复的超时时间(单位:毫秒)
-R 跟踪往返行程路径用于IPv6
-S srcaddr要使用的源地址用于IPv6
-4 强制使用IPv4
-6 强制使用IPv6
target_name 指定目标可以是IP地址或主机名
\end{code}
\caption{tracert命令语法及参数}
\label{fig:tracert-cmd}

@ -8,7 +8,7 @@
TCP(Transmission Control Protocol传输控制协议)是一种面向连接的、
可靠的、基于字节流的传输层通信协议。
本实验通过运用Wireshark对网络活动进行抓包分析,
本实验通过运用Wireshark对网络活动进行分析
观察TCP协议报文分析通信时序理解TCP的工作过程
掌握TCP工作原理与实现
学会运用Wireshark分析TCP连接管理、流量控制和拥塞控制的过程发现TCP的性能问题。
@ -21,10 +21,10 @@ TCP(Transmission Control Protocol传输控制协议)是一种面向连接的、
\item 连接管理观察正常TCP连接中的三次握手与四次挥手报文
绘制出时序图并标出双方TCP状态变化。
\item 异常情况分析观察分析TCP连接建立过程的异常
(例如,尝试连接未存活的主机或未监听端口客户端发送了第一个SYN连接请求而服务端无响应)
(例如,尝试连接未存活的主机或未监听端口客户端发送了第一个SYN连接请求而服务端无响应)
观察SYN洪泛影响观察分析TCP通信过程中的各类异常报文(例如数据超时、乱序)
了解其触发机制与含义。
\item 流量控制(进阶)运行一组TCP连接客户端/服务器程序(Python代码见节后附件)
\item 流量控制(进阶)运行一组TCP连接客户端/服务器程序,
制造收发不平衡场景,观察收发报文中通告窗口的变化,分析与窗口机制相关的类型报文,
了解滑动窗口工作原理。
\item 拥塞控制(进阶):改变带宽、时延、丢包率等网络参数,观察大文件传输过程,
@ -48,7 +48,7 @@ TCP协议基于“尽力而为”的网络层为应用层提供可靠的进程
\\
TCP 报文段结构如图\ref{fig:c:wireshark_TCP-structure}所示,
采用20字节的报文段头并有最长40字节的可选项。
采用20字节的报文段头以及不超过40字节的可选项。
\small
\begin{figure}[!ht]
@ -111,7 +111,7 @@ TCP 报文段结构如图\ref{fig:c:wireshark_TCP-structure}所示,
然后客户端进入SYN\_SEND状态等待服务器的确认
\item 第二次握手服务器收到SYN报文段。服务器收到客户端的SYN报文段
需要对这个SYN报文段进行确认设置确认号为x+1
同时将SYN位置为1系列号为y。
同时将SYN位置为1号为y。
服务器端将上述信息放入SYN+ACK报文段中
一起发送给客户端此时服务器进入SYN\_RECV状态
\item 第三次握手客户端收到服务器的SYN+ACK报文段之后
@ -200,9 +200,12 @@ BBR\footnote{\href{https://queue.acm.org/detail.cfm?id=3022184}{BBR: Congestion-
两台实验机本地相互连接(如图\ref{fig:c:wireshark_TCP-topo})
在实验机中仿真不同的网络条件以便观察TCP的各种控制现象。
方案一使用虚拟机VMware Player中通过“虚拟机设置->硬件->网络适配器->高级”(如图\ref{fig:c:wireshark_VM-advance-setup}
设置虚拟机的网卡传入/传出带宽、数据包丢失率、延迟等;
方案二使用物理机使用tc进行流量控制场景仿真使用wondershaper对网卡进行限速。
方案一使用VMware Player运行两台虚拟机
通过“虚拟机设置->硬件->网络适配器->高级”
(如图\ref{fig:c:wireshark_VM-advance-setup}
设置虚拟机的网卡传入/传出带宽、数据包丢失率、延迟等。
方案二直接在两台PC机上操作
使用tc进行流量控制场景仿真使用wondershaper对网卡进行限速。
本实验需要使用的命令和工具,如表\ref{tab:c:wireshark_tools-command}所列。
常用的Linux命令还包括echo、cat、sysctl、ping、ftp等。
@ -287,7 +290,7 @@ BBR\footnote{\href{https://queue.acm.org/detail.cfm?id=3022184}{BBR: Congestion-
使用Wireshark内置的绘制流功能选择菜单栏中的Statistics$\rightarrow$Flow Graph
Flow Type选择TCP flows可以直观地显示TCP序号和确认号是如何工作的。
\item 观察TCP三次握手与四次挥手报文注意报文收发过程中双方TCP状态的变化。
以本次抓得报文为分别画出本次TCP连接三次握手与四次挥手的时序图
以本次捕获的报文为依分别画出本次TCP连接三次握手与四次挥手的时序图
结合TCP状态机在双方各阶段标出对应的TCP状态。选择其中一个TCP报文
配合Wireshark截图分析该报文TCP首部各字段的定义、值及其含义。
\end{enumerate}
@ -321,7 +324,7 @@ BBR\footnote{\href{https://queue.acm.org/detail.cfm?id=3022184}{BBR: Congestion-
\texttt{sudo iptables -I INPUT -s 192.168.100.144 -p tcp -m tcp --tcp-flags ALL SYN, ACK -j DROP}
\item 再次尝试连接并启动wireshark抓包并在双方多次用ss -tan观察TCP状态。
\item 观察TCP的状态变化分析wireshark抓到的TCP异常报文。
\item 观察TCP的状态变化分析wireshark捕获的TCP异常报文。
\item 服务端的SYN-RECV 状态何时释放?
\item SYN ACK重传了几次时间间隔有何变化
\item 参考1中的操作在服务端修改SYN ACK重传次数(tcp\_synack\_retries)
@ -333,8 +336,8 @@ BBR\footnote{\href{https://queue.acm.org/detail.cfm?id=3022184}{BBR: Congestion-
指定所能接受SYN同步包的最大客户端数量为6
在客户端运用netwox工具对服务器监听的端口产生大量SYN连接请求
(如\texttt{sudo netwox 76 -i 192.168.100.144 -p 23})
再使用正常的连接工具(如telnet)连接,观察现象(特别是服务器端的TCP连接状态)
抓包总结分析解释SYN洪攻击原理与对策。
再使用正常的连接工具(如telnet)尝试连接,观察交互情况(特别是服务器端的TCP连接状态)
抓包分析解释SYN洪攻击原理与对策。
\item 异常报文分析。在服务器端产生一个100M的大文件
利用1中的web服务器在客户端上用wget下载它。
参考命令:
@ -351,8 +354,8 @@ BBR\footnote{\href{https://queue.acm.org/detail.cfm?id=3022184}{BBR: Congestion-
\end{enumerate}
抓包记录以上过程分析黑色标签错误报文结合TCP实现机制
分析这些报文产生的原因。此类报文也可以从现实网络行为抓取获得
请结合实际抓得报文分析,报文附件随报告提交。
分析这些报文产生的原因。此类报文也可以从现实网络行为捕获
请结合捕获的报文进行分析,报文附件随报告提交。
包括但不限于以下几种类型报文:
[Duplicate ACK]、[TCP Retransmission]、[Fast Retransmission]、
[TCP Spurious Retransmission]、[TCP Out-Of-Order]、
@ -368,10 +371,10 @@ BBR\footnote{\href{https://queue.acm.org/detail.cfm?id=3022184}{BBR: Congestion-
在客户端快速发送数据给服务端,而服务端则有意缓慢地接收数据,
观察TCP如何用窗口大小值进行流量控制。虚拟机两端分别运行
\texttt{python3 server.py}\texttt{python3 client.py}
\item 抓取两端通信报文数据分析报文中的Win值变化联系上下报文
\item 捕捉两端通信报文数据分析报文中的Win值变化联系上下报文
解释为什么出现[TCP Windows Full]、[TCP ZeroWindows]、[TCP Keep-Alive]
等和窗口大小相关的流量控制报文。
抓取的原始报文存成附件随实验报告提交。
捕获的原始报文存成附件随实验报告提交。
\end{enumerate}
\subsubsection{拥塞控制}
@ -380,7 +383,7 @@ BBR\footnote{\href{https://queue.acm.org/detail.cfm?id=3022184}{BBR: Congestion-
在VMWare Player中的虚拟机设置$\rightarrow$网络适配器$\rightarrow$高级中设置;
物理机可使用wondershaper命令进行限速。
再启动应用(可以是http wget也可以ftp下载/上传)传输大文件观察。
\item Wireshark抓取全部传输过程数据,找出该网络活动的拥塞点,
\item Wireshark捕捉全部传输过程数据,找出该网络活动的拥塞点,
并结合Analyze$\rightarrow$Expert Information、Statistic$\rightarrow$IO Graphs、
Statistic$\rightarrow$TCP Stream Graphs(如图\ref{fig:c:wireshark_io-graphs})
分析此传输过程中的慢启动、拥塞避免、快速恢复等阶段。
@ -423,11 +426,11 @@ BBR\footnote{\href{https://queue.acm.org/detail.cfm?id=3022184}{BBR: Congestion-
\item 本次实验观察了Linux环境下的TCP实现在Windows、macOS环境下
操作系统又是如何实现TCP的呢
类似Linux TCP参数在不同系统环境下如何查看或设置
请尝试通过抓包其通信过程发现其实现异同。
请尝试通过捕捉其通信过程、比较其实现异同。
\item 在TCP状态机(图\ref{fig:c:wireshark_TCP-status-machine})中,
有些状态停留时间较长,易观察到,有些状态很短暂不易观察到。
试列出不易观察到的状态,并考虑观察到它们的可能方法。
\item TCP是封装单元为MSS可是我们在抓包过程中常发现远大于此值的TCP包
\item TCP是封装单元为MSS可是我们在捕捉过程中常发现远大于此值的TCP报文
为什么TCP可以提交如此大的报文呢
此类型的包远超出链路层的MTU它是如何被处理的呢请从两端同时抓包观察比对。
@ -471,9 +474,9 @@ BBR\footnote{\href{https://queue.acm.org/detail.cfm?id=3022184}{BBR: Congestion-
\item (20分) 完成流量控制操作要求,结合上下分析报文窗口变化,
解释说明相关的类型报文成因。
\item (20分) 完成拥塞控制操作要求,
成功从抓得数据分析出了一次完整TCP流的各阶段(慢启动、拥塞控制、快速恢复)。
成功从捕获的数据分析出一次完整TCP流的各个阶段(慢启动、拥塞控制、快速恢复)。
\item (10分)完成任2道思考题。
\item (10分)记录自己在本次实验中所遇到的问题,以及心得感悟实验总结
\item (10分)记录自己在本次实验中所遇到的问题,以及心得感悟。如果遇到异常情况,或者无法完成任务时,也请分析错误产生的原因
\end{enumerate}
\subsection{附件}

Loading…
Cancel
Save