2-25 after Alpha

merge-requests/6/head
Jeff Chen 4 years ago
parent 34940e7f4d
commit 6738b37ca0

@ -24,7 +24,7 @@ TCP(Transmission Control Protocol传输控制协议)是一种面向连接的、
(例如尝试连接未存活的主机或未监听端口或客户端发送了第一个SYN连接请求而服务端无响应) (例如尝试连接未存活的主机或未监听端口或客户端发送了第一个SYN连接请求而服务端无响应)
观察SYN洪泛影响观察分析TCP通信过程中的各类异常报文(例如数据超时、乱序) 观察SYN洪泛影响观察分析TCP通信过程中的各类异常报文(例如数据超时、乱序)
了解其触发机制与含义。 了解其触发机制与含义。
\item 流量控制(进阶)运行一组TCP连接客户端/服务器程序(Python代码见附录) \item 流量控制(进阶)运行一组TCP连接客户端/服务器程序(Python代码见节后附件)
制造收发不平衡场景,观察收发报文中通告窗口的变化,分析与窗口机制相关的类型报文, 制造收发不平衡场景,观察收发报文中通告窗口的变化,分析与窗口机制相关的类型报文,
了解滑动窗口工作原理。 了解滑动窗口工作原理。
\item 拥塞控制(进阶):改变带宽、时延、丢包率等网络参数,观察大文件传输过程, \item 拥塞控制(进阶):改变带宽、时延、丢包率等网络参数,观察大文件传输过程,
@ -41,10 +41,10 @@ TCP(Transmission Control Protocol传输控制协议)是一种面向连接的、
TCP协议基于“尽力而为”的网络层为应用层提供可靠的进程间通信服务 TCP协议基于“尽力而为”的网络层为应用层提供可靠的进程间通信服务
具体地说是可靠的全双工的端对端字节流传输服务。 具体地说是可靠的全双工的端对端字节流传输服务。
在TCP的协议传输单元中(TCP报文段TCP Segment) 在TCP的协议传输单元中(TCP报文段TCP Segment)
发送方和接收方使用字节序号(Sequence Number)明确收发的数据,并精确到字节单位; 收发双方以字节为单位使用序列号(Sequence Number)明确收发的数据,
使用ACK反馈(Acknowledgment)机制,实现端对端的可靠传输控制。 使用ACK反馈(Acknowledgment)机制,实现端对端的可靠传输控制。
接下来简要介绍TCP报文段的结构 接下来简要介绍TCP报文段的结构
TCP的连接管理、差错控制、流量控制和拥塞控制的原理。 TCP的连接管理、流量控制和拥塞控制等原理。
\paragraph{TCP报文段(Segment)}~{} \paragraph{TCP报文段(Segment)}~{}
\\ \\
@ -63,16 +63,16 @@ TCP 报文段结构如图\ref{fig:c:wireshark_TCP-structure}所示,
\begin{enumerate} \begin{enumerate}
\item \textbf{源端口号(Source Port)}16位的源端口 \item \textbf{源端口号(Source Port)}16位的源端口
与源IP地址一起标识发送该TCP 报文段的通信进程。端口号范围0\~65535。 与源IP地址一起标识发送该TCP 报文段的通信进程。端口号范围0-65535。
\item \textbf{目的端口号(Destionation Port)}16位目的端口 \item \textbf{目的端口号(Destionation Port)}16位目的端口
与目的IP地址一起标识接收该TCP 报文段的通信进程。端口号范围0\~65535。 与目的IP地址一起标识接收该TCP 报文段的通信进程。端口号范围0-65535。
\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)}
\begin{enumerate} \begin{enumerate}
\item 确认ACK (Acknowledgement)置1表示确认号字段有效。 \item 确认ACK(Acknowledgement)置1表示确认号字段有效。
\item 推送PSH (Push)置1表示该报文段优先级高 \item 推送PSH(Push)置1表示该报文段优先级高
接收方 TCP 应该尽快推送给接收应用程序。 接收方 TCP 应该尽快推送给接收应用程序。
\item 复位RST(Reset)置1表示需要释放 TCP 连接并重新建立连接。 \item 复位RST(Reset)置1表示需要释放 TCP 连接并重新建立连接。
一般称携带 RST 标志的 TCP 报文段为「复位报文段」。 一般称携带 RST 标志的 TCP 报文段为「复位报文段」。
@ -103,7 +103,7 @@ TCP 报文段结构如图\ref{fig:c:wireshark_TCP-structure}所示,
\textbf{建立过程:}TCP是面向连接的数据传输之前必须在双方之间建立一条连接 \textbf{建立过程:}TCP是面向连接的数据传输之前必须在双方之间建立一条连接
并通过三次握手过程完成。 并通过三次握手过程完成。
其主要目的是,同步连接双方的序列号和确认号,并交换 TCP窗口大小等控制信息。 其主要目的是同步连接双方的序列号和确认号并交换TCP窗口大小等控制信息。
一般地,客户端主动向服务器端发起连接请求,具体过程如下: 一般地,客户端主动向服务器端发起连接请求,具体过程如下:
\begin{enumerate} \begin{enumerate}
@ -128,7 +128,7 @@ TCP 报文段结构如图\ref{fig:c:wireshark_TCP-structure}所示,
服务器端完成数据发送之后也发出FIN=1的报文请求释放连接 服务器端完成数据发送之后也发出FIN=1的报文请求释放连接
并进入 LAST-ACK状态直至客户端返回确认第四次挥手才关闭TCP连接。 并进入 LAST-ACK状态直至客户端返回确认第四次挥手才关闭TCP连接。
客户端收到服务器的FIN报文后则进入TIME\_WAIT状态 客户端收到服务器的FIN报文后则进入TIME\_WAIT状态
并等待 2MSL(最大存活时间- Maximum Segment Lifetime)时间之后完全关闭TCP连接。 并等待2MSL(最大存活时间- Maximum Segment Lifetime)时间之后完全关闭TCP连接。
(注:释放连接也可由服务器端先发起) (注:释放连接也可由服务器端先发起)
\paragraph{TCP流量控制}~{} \paragraph{TCP流量控制}~{}
@ -138,7 +138,7 @@ TCP 报文段结构如图\ref{fig:c:wireshark_TCP-structure}所示,
TCP利用滑动窗口(Sliding Window)机制实施流量控制, TCP利用滑动窗口(Sliding Window)机制实施流量控制,
其基本原理是用TCP报文段中的窗口大小字段来控制数据发送速率 其基本原理是用TCP报文段中的窗口大小字段来控制数据发送速率
即发送方的发送窗口应小于接收方回应报文中的通告窗口值。 即发送方的发送窗口应小于接收方回应报文中的通告窗口值。
为了提高信道利用率TCP采用了连续ARQ (Automatic Repeat reQuest) 为了提高信道利用率TCP采用了连续ARQ(Automatic Repeat reQuest)
TCP两端都可以连续发出若干个分组然后等待确认 TCP两端都可以连续发出若干个分组然后等待确认
也都设有发送/接收窗口和发送/接收缓存。 也都设有发送/接收窗口和发送/接收缓存。
其中发送窗口可以用3个指针表示 其中发送窗口可以用3个指针表示
@ -200,8 +200,8 @@ BBR\footnote{\href{https://queue.acm.org/detail.cfm?id=3022184}{BBR: Congestion-
\subsubsection{实验方法和手段} \subsubsection{实验方法和手段}
使用VMWare软件配置两台本地虚拟机本地相互连接(如图\ref{fig:c:wireshark_TCP-topo})。 使用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}所列。 本实验需要使用的命令和工具,如表\ref{tab:c:wireshark_tools-command}所列。
常用的Linux操作系统命令还包括echo、cat、sysctl、ping、ftp。 常用的Linux操作系统命令还包括echo、cat、sysctl、ping、ftp。

Loading…
Cancel
Save