From f48815e6bc92b963315e60f20c54dcbdf3747bc7 Mon Sep 17 00:00:00 2001 From: estomm Date: Thu, 14 Nov 2019 19:07:26 +0800 Subject: [PATCH] tcp --- README.md | 1 + 概率论与数理统计/第16节 一元线性回归.md | 55 +++++++++++ 概率论与数理统计/第17节 多元线性回归.md | 0 计算机网络/3.5 传输层-TCP可靠数据传输.md | 114 +++++++++++++++++------ 计算机网络/3.6 传输层-TCP拥塞控制.md | 9 +- 计算机网络实验/4 传输层实验.md | 0 计算机网络实验/802.11无线网络.md | 41 +++++--- 计算机网络实验/image/无线网ipv6.png | Bin 0 -> 73590 bytes 8 files changed, 176 insertions(+), 44 deletions(-) create mode 100644 概率论与数理统计/第17节 多元线性回归.md create mode 100644 计算机网络实验/4 传输层实验.md create mode 100644 计算机网络实验/image/无线网ipv6.png diff --git a/README.md b/README.md index f5705a72..05caa00e 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ > 关于笔记记录的说明:我觉得笔记记录的内容过于细节。所有的知识应该以书上为准。整理笔记的目的应该是作为一种快速参考或者索引,而不是详细的记录所有的细节。说实话,我觉得你的笔记废话太多,自己都不一定会看。 > 我觉得是时间放弃你愚蠢的笔记策略了。 +> 从今以后,必须跟上自己的笔记进度和作业进度。不能就学两科还跟不上进度,太傻逼了。 ## 1 分类标题(用来描述主题的各个方面或者分类) diff --git a/概率论与数理统计/第16节 一元线性回归.md b/概率论与数理统计/第16节 一元线性回归.md index e69de29b..67dd5d0a 100644 --- a/概率论与数理统计/第16节 一元线性回归.md +++ b/概率论与数理统计/第16节 一元线性回归.md @@ -0,0 +1,55 @@ +# 一元线性回归 + +## 回归分析理解 + +### 变量关系 + +* 确定性关系:可用函数来描述。 +* 非确定性关系:不能用函数来描述。 + + +### 回归分析 + +* 回归模型:变量间相关关系无法用完全确定的函数关系描述,但在平均意义下,有一定的函数表示式。通过大量数据,估计函数表示式,称为回归分析。回归分析中根据观测数据建立的反映变量间相关关系的统计模型称为回归模型。 + +* 回归分析分类 + * 随机变量间的相关关系。 + * 随机变量与普通变量间的相关关系。 + +> 随机变量与普通变量的相关关系的回归分析:普通变量更像一个参数,能够决定随机分布的参数。建立的函数关系式是参数$E(Y)=\mu$与普通变量之间的关系。 + + +### 相关定义 + +响应变量和解释变量 +* 响应变量+解释变量:在随机变量与普通变量的回复分析中,随机变量是因变量,或响应变量。普通变量为自变量,或解释变量。 + +回归分析的元 +* 一元回归分析:一个响应变量+一个解释变量 +* 多元回归分析:一个响应变量+多个解释变量 +* 多元多重回复分析:多个响应变量+多个解释变量 + +回归分析的方法 +* 线性回归:线性统计模型 +* 多项式回归: +* 神经网络(常数回归?): +* 支持箱梁节(不知道诶): + +## 一元线性回归的数学描述 + +$E(y)=\mu(x)$的理解。 + +随机变量 +* E(y):随机变量的数据特征。是随机变量的在某一个性质上投影。 +* $\mu(x)$:这个性质投影,能够消除随机变量的随机性,反映一种基本性质。这个性质投影,与某个普通变量存在一定的关系。 + +* 这与之前的随机变量的参数估计相似。一个随机变量有一个未知参数——数学期望。利用样本数据求出这种关系。 + +回归分析 +* 求函数表达式$E(y)=\mu(x)$的估计是回归分析的基本内容。$\mu(x)$为y对x的理论回归函数,而基于数据对$\mu(x)$估计称为y对x的经验回归函数。 + + +## 未知参数的估计及其统计性质 + + +## 回归的显著性检验与回归系数的置信区间 diff --git a/概率论与数理统计/第17节 多元线性回归.md b/概率论与数理统计/第17节 多元线性回归.md new file mode 100644 index 00000000..e69de29b diff --git a/计算机网络/3.5 传输层-TCP可靠数据传输.md b/计算机网络/3.5 传输层-TCP可靠数据传输.md index bda84845..7fc7bb1a 100644 --- a/计算机网络/3.5 传输层-TCP可靠数据传输.md +++ b/计算机网络/3.5 传输层-TCP可靠数据传输.md @@ -1,34 +1,57 @@ -# TCP可靠数据传输 +# TCP数据传输 ## 1 概述 -TCP提供了可靠的传输服务,这是通过下列方式提供的: -* 应用数据被分割成TCP认为最适合发送的数据块。由TCP传递给IP的信息单位称为报文段或段(segment) -* 当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。 -* 当TCP收到发自TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒 -* TCP将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段(希望发端超时并重发)。 -* 由于IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。如果必要,TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。 -* IP数据报会发生重复,TCP的接收端必须丢弃重复的数据。 -* TCP还能提供流量控制。TCP连接的每一方都有固定大小的缓冲空间。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机的缓冲区溢出。 +### 主要内容 + +tcp数据传输主要包括以下几个方面 +* 可靠数据传输(保证数据传输的正确性) + * 面向连接 + * 序号机制(保证数据顺序) + * 校验和(防止数据出错) + * 确认机制(应对丢包) + * 超时重传(应对丢包、丢失确认) + * 累计确认(发送方动作,发送方认为之前全被正确接收) + * 选择重传(接受方动作,接收方维持滑动串口,只要求重传丢失的分组) +* 流量控制(提高传输效率的流水线方法,考虑接收端的接受能力,发送方的发送速率不应该超过接收端的接受能力) + * 滑动窗口(对应缓冲区大小,双向缓冲窗口流水线技术) +* 拥塞控制(通过流量控制实现,考虑断点之间的网络情况,目的使负载不超过网络的传输能力。) + * 慢启动 + * 拥塞避免 + * 快重传 + * 快恢复 + +> * 在接收方实现了流量控制 +> * 在发送方实现了拥塞控制 -## 2 TCP主要任务 +### TCP主要任务 当TCP连接建立之后,应用程序即可使用该连接进行数据收发。应用程序将数据提交给TCP,TCP将数据放入自己的缓存,并且在其认为合适的时候将数据发送出去。在TCP中,数据会被当做字节流并按照MSS的大小进行分段,然后加上TCP头部并提交给网络层。之后数据就会被网络层提交给目地主机,目地主机的IP层会将分组提交给TCP,TCP根据报文段的头部信息找到相应的socket,并将报文段提交给该socket,socket是和应用关联的,也就提交给了应用。 -## 3 TCP可靠传输 -IP提供的服务是尽力交付的服务,也是不可靠的服务。但是TCP在IP之上提供了可靠度传输服务。TCP采用了流水线下的可靠数据传输协议,但是在差错恢复时,并没有简单的采取GBN协议或者选择重传协议,而是将二者结合了起来。 +### 相关概念 -TCP采用了累积确认的方式,这类似于GBN,即如果TCP发送了对某个序号N的确认,则表明在N之前的所有字节流都已经被正确接收。但是另一方面,TCP又不会像GBN协议那样简单丢弃失序到达的报文段,而是会将它们缓存起来,但是这些被缓存的报文段不会逐个被确认。当发生超时时,TCP只会重传发生超时的那一个报文段。 +* 字节流:编了序号的字节串 -TCP还允许接收方选择性的确认失序到达的分组,而不是累积的对最后一个确认最后一个正确到达的分组,将它与TCP所采取的选择重传结合起来看就很想选择重传协议的工作机制。因此说TCP的差错恢复结合了GBN和选择重传。 +## 2 TCP可靠传输 -选择重传中每个报文段都有自己的超时值,TCP采用了RFC2988建议的机制用一个单一定时器来完成该功能。RFC2988定义的原则: -* 发送TCP分段时,如果还没有重传定时器开启,那么开启它。 -* 发送TCP分段时,如果已经有重传定时器开启,不再开启它。 -* 收到一个非冗余ACK时,如果有数据在传输中,重新开启重传定时器。 -* 收到一个非冗余ACK时,如果没有数据在传输中,则关闭重传定时器。 +> 这一部分主要介绍了TCP实现可靠数据传输的基本原理。包括校验和、序号机制、确认机制、超时重传、流水线技术(滑动窗口)、累计确认、选择重传等。 +### 可靠保证 +TCP提供了可靠的传输服务,这是通过下列方式提供的: + +* **校验和**TCP将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段(希望发端超时并重发)。 +* **序号机制**由于IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。如果必要,TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。IP数据报会发生重复,TCP的接收端必须丢弃重复的数据。 +* **确认机制和超时重传**:应用数据被分割成TCP认为最适合发送的数据块。由TCP传递给IP的信息单位称为报文段或段(segment)当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。 + +### GBN协议与选择重传结合——流水线技术 +* **流水线技术**IP提供的服务是尽力交付的服务,也是不可靠的服务。但是TCP在IP之上提供了可靠度传输服务。TCP采用了流水线下的可靠数据传输协议,但是在差错恢复时,并没有简单的采取GBN协议或者选择重传协议,而是将二者结合了起来。 + + TCP采用了累积确认-选择重传的方式 + +* **累计确认**:这类似于GBN,即如果TCP发送了对某个序号N的确认,则表明在N之前的所有字节流都已经被正确接收。但是另一方面,TCP又不会像GBN协议那样简单丢弃失序到达的报文段,而是会将它们缓存起来,但是这些被缓存的报文段不会逐个被确认。 + +* **选择重传**TCP还允许接收方选择性的确认失序到达的分组,当发生超时时,TCP只会重传发生超时的那一个报文段。而不是所有的没有确认的报文段。 ### 基本工作过程 @@ -54,7 +77,19 @@ TCP还允许接收方选择性的确认失序到达的分组,而不是累积 如果收到的报文段的序号等于rcv_base,并且有延迟的ACK待发送,则更新rcv_base,并发送累积的ACK以确认这两个按序报文段 如果收到的报文段的序号大于rcv_base,则发送冗余的ACK,即重传对已经确认过的最后一个按序到达的报文段的ACK + +## 3 超时重传机制 +### 发送端超时重传机制 + +选择重传中每个报文段都有自己的超时值,TCP采用了RFC2988建议的机制用一个单一定时器来完成该功能。RFC2988定义的原则: +* 发送TCP分段时,如果还没有重传定时器开启,那么开启它。 +* 发送TCP分段时,如果已经有重传定时器开启,不再开启它。 +* 收到一个非冗余ACK时,如果有数据在传输中,重新开启重传定时器。 +* 收到一个非冗余ACK时,如果没有数据在传输中,则关闭重传定时器。 + + ### 往返时延的估算与超时 + TCP协议定义了RTT来代表一个TCP分段的往返时间。然而由于IP网络是尽力而为的,并且路由是动态的,且路由器可能缓存或者丢弃IP数据报,因此一个TCP连接的RTT是动态变化的,因而也需要动态测量。样本RTT(SampleRTT)是报文段被发出到报文段的确认被收到的时间间隔。TCP不会为每一个发动的报文段测量一个SampleRTT,而是仅为已发送但是未被确认的分组测量SampleRTT。这样做是为了产生一个近似于RTT的SampleRTT。TCP不会为重传的报文段测量SampleRTT。 得到多个SampleRTT后,TCP会尝试使用这些信息来尽可能得到一个较为准确的RTT,为此TCP采用了经常被采用的收到即使用一个滤波器来对多个SampleRTT进行计算。TCP使用如下的滤波器来计算一个EstimateRTT: @@ -75,38 +110,55 @@ $$ ### 倍数增加的重传间隔 -在发生超时重传时,TCP不是以固定的时间间隔来重传的,而是会再每次重传时都将下一次重传的间隔设置为上次重传间隔的2倍,因此重传间隔是倍数增加的。直到收到确认或者彻底失败。由于正常发送报文段时,重传定时器的超时值为EstimateRTT + 4 * DevRTT,因此第一重传时会将下一次的超时时间设置为2倍的该值,依次类推。 +在发生超时重传时,TCP不是以固定的时间间隔来重传的,而是每次重传时都将下一次重传的间隔设置为上次重传间隔的2倍,因此重传间隔是倍数增加的。直到收到确认或者彻底失败。由于正常发送报文段时,重传定时器的超时值为EstimateRTT + 4 * DevRTT,因此第一重传时会将下一次的超时时间设置为2倍的该值,依次类推。 ### 快速重传 倍数增加的重传间隔会增大端到端的时延,使得发送端可能不得不等待很长时间才能重传报文段。冗余ACK使得TCP可以得到分组丢失的线索。TCP基于冗余ACK提供了一种快速重传机制。其原理是:如果收到了对相同数据的三个冗余的ACK,发送端就认为跟在这个被确认了三次的报文段之后的报文段丢失了,因此重传它,而不是等待它的超时定时器到期。这就是快速重传。 -### 流量控制 +## 4 流量控制 + +### 流量控制的原因 在TCP中,连接双都为该连接设置了接收缓存,当报文段被连接的一端接收时,它会进入该接收缓存,被接收的数据并不一定立即被提交给应用程序。因为应用可能由于各种而没能及时读取缓存中的数据。如果发送方发送的数据太快,而应用没有及时读取被缓存的数据,缓存就会变满,此时为了防止缓存溢出,就要丢弃报文段,显然丢弃已经正确接收的报文段是对网络资源的浪费。为了解决该问题,TCP需要提供一种机制来防止接收缓存溢出。 -TCP提供了流量控制功能,来防止发送方发送过快而导致接收方缓存溢出的情形出现。这是通过让接收方通告一个接收窗口大小来实现的。接收窗口的大小包含在TCP头部的窗口大小字段中。其工作原理为: +### 流量控制的方法 -接收方通过窗口大小通告本地可以接收的报文段的总大小。发送方将根据该信息来判断自己可以发送多少数据。发送方保证自己发送的未被确认的报文段的总大小不超过接收方通告的窗口大小。对应到我们所描述的GBN和选择重传协议中,就是发送方会用接收方通告的窗口大小更新本地的窗口大小N的值。一个可视化的描述如下图: +TCP提供了流量控制功能,来防止发送方发送过快而导致接收方缓存溢出的情形出现。TCP采用**大小可变的滑动窗口**进行流量控制: + +* 接受端根据自己的接受缓存大小,随时动态调整发送端的发送窗口的上限值。接收端窗口rwnd,被放在TCP报文段首部的窗口字段当中。 +* 发送端根据其对网络拥塞程度的估计确定窗口值,叫做拥塞窗口cwnd。 +$$ +发送窗口的上限值=Min[cwnd,rwnd] +$$ + +* 发送端的窗口大小通告的可视化的描述如下图: ![](image/TCP流量控制.png) -但是TCP连接的一端可能通告一个大小为0的窗口,这时候接收到对端通告大小为0的窗口的一端并不会停止发送,而是会启动一个定时器来发送窗口探测报文段,该报文段只包含一个字节,该报文段会被接收方确认,该定时器会一直重启自身来发送窗口探测包直到对端通告了一个大小不为0的窗口为止。定时器的超时值会逐渐增大到一个最大值,然后固定以该值重发窗口探测包。 +* 窗口边沿移动规律如下: + * 当窗口的左边沿向右移动时,称为窗口合拢。此时,数据被发送并被确认。 + * 当左边沿与右边沿重合时,称为零窗口,发送端不发送任何有效数据。 + * 当窗口右边沿向右移动时将允许发送更多数据,称为窗口张开,此时接收端已经确认了数据,并释放了TCP的接受缓存。 + * 当右边沿向左移动时,称为窗口收缩,一半不会发生,但应该能够处理这种情况。 +* 但TCP连接的一端可能通告一个大小为0的窗口,这时候接收到对端通告大小为0的窗口的一端并不会停止发送,而是会启动一个定时器来发送窗口探测报文段,该报文段只包含一个字节,该报文段会被接收方确认,该定时器会一直重启自身来发送窗口探测包直到对端通告了一个大小不为0的窗口为止。定时器的超时值会逐渐增大到一个最大值,然后固定以该值重发窗口探测包。 -## 4 SWS(糊涂窗口综合症) +## 5 SWS(糊涂窗口综合症) 糊涂窗口综合症是指在发送端应用进程产生数据很慢、或接收端应用进程处理接收缓冲区数据很慢,或二者都存在时,通过TCP连接传输的报文段会很小,这会导致有效载荷很小。极端情况下,有效载荷可能只有1个字节;而传输开销有40字节(20字节的IP头+20字节的TCP头) 这种现象就叫糊涂窗口综合症。 ### 发送端引起的SWS -如果TCP发送端的应用是产生数据很慢的应用程序(比如telnet),它可能一次只产生一个字节。这种应用程序一次只往TCP提交一个字节的数据,如果没有特殊的处理,这就会导致TCP每次都产生一个只有一个有效载荷的报文段。最终导致网络的有效利用率非常低。解决办法是防止TCP发送过小的报文段,如果应用提交的数据较短,就等待足够的数据来组成一个较大的报文段再发送,为了防止长时间等待导致时延过大,可以加入一个等待时间限制,如果时间到期还没等到足够的数据就直接发送不再等待。Nagle算法就是这样的一种算法。 +如果TCP发送端的应用是产生数据很慢的应用程序(比如telnet),它可能一次只产生一个字节。这种应用程序一次只往TCP提交一个字节的数据,如果没有特殊的处理,这就会导致TCP每次都产生一个只有一个有效载荷的报文段。最终导致网络的有效利用率非常低。解决办法是防止TCP发送过小的报文段,如果应用提交的数据较短,就等待足够的数据来组成一个较大的报文段再发送,为了防止长时间等待导致时延过大,可以加入一个等待时间限制,如果时间到期还没等到足够的数据就直接发送不再等待。 +* Nagle算法就是这样的一种算法。 +* CORK选项是为了提高利用率。 ### 接收端引起的SWS 如果TCP接收端的应用处理数据的速度很慢,一次只从TCP缓存取走很小数量的数据,比如一个字节,而发送方发送的速度较快,这就会导致接收方的缓存被填满,然后接收方每次在应用取走一个字节的数据后都通告一个大小为1的窗口,这就限制发送方每次只能发送包含一个字节的有效载荷的报文段。 对于这种糊涂窗口综合症,即应用程序消耗数据比到达的慢,有两种建议的解决方法: -Clark解决方法 Clark解决方法是只要有数据到达就发送确认,但通告的窗口大小为零,这个过程持续到缓存空间已能放入具有最大长度的报文段或者缓存空间的一半已经空了。 -延迟确认 第二个解决方法是延迟一段时间后再发送确认。这时接收方不立即确认收到的报文段。接收方在确认收到的报文段之前一直等待,直到入缓存有足够的空间为止。该方法阻止了发送端滑动其窗口,当发送端发送完其数据后,它就停下来了。这样就防止了这种症状。延迟的确认还减少了通信量。接收端不需要确认每一个报文段。但它有可能使发送端重传其未被确认的报文段。可以给延迟的确认加一个时间限制来降低该方法缺点的影响。 +* Clark解决方法 Clark解决方法是只要有数据到达就发送确认,但通告的窗口大小为零,这个过程持续到缓存空间已能放入具有最大长度的报文段或者缓存空间的一半已经空了。 +* 延迟确认 第二个解决方法是延迟一段时间后再发送确认。这时接收方不立即确认收到的报文段。接收方在确认收到的报文段之前一直等待,直到入缓存有足够的空间为止。该方法阻止了发送端滑动其窗口,当发送端发送完其数据后,它就停下来了。这样就防止了这种症状。延迟的确认还减少了通信量。接收端不需要确认每一个报文段。但它有可能使发送端重传其未被确认的报文段。可以给延迟的确认加一个时间限制来降低该方法缺点的影响。 ### Nagle算法 @@ -115,7 +167,7 @@ Nagle算法的核心思想是任意时刻,最多只能有一个未被确认的 * 如果该包含有FIN,则允许发送; * 设置了TCP_NODELAY选项,则允许发送; * 未设置TCP_CORK选项时,若所有发出去的小数据包(包长度小于MSS)均被确认,则允许发送; -上述条件都未满足,但发生了超时(一般为200ms),则立即发送。 +* 上述条件都未满足,但发生了超时(一般为200ms),则立即发送。 Nagle算法在任意时刻只允许存在一个未被确认的报文段,但他它并不关心报文段的大小,因此它事实上就是一个扩展的停止等待协议,只不过它是基于报文段的而不是基于字节的。Nagle算法完全由TCP协议的ACK机制决定,因此也有一些缺点,比如如果对端ACK回复很快的话,Nagle事实上不会拼接太多的数据包,虽然避免了网络拥塞,网络总体的利用率依然很低。 @@ -132,9 +184,9 @@ Nagle算法和CORK算法非常类似,但是它们也有区别: 用户通过TCP_NODELAY来启用或禁用Nagle算法而通过TCP_CORK来启用或禁用CORK算法。 -Nagle算法关心的是网络拥塞问题,只要有ACK回来则发包,而CORK算法关心的是报文段大小,在前后数据发送间隔很短的前提下,即使你是分散发送多个小数据包,你也可以通过使能CORK算法将这些内容拼接在一个包内,如果此时用Nagle算法的话,则可能做不到这一点。 +Nagle算法关心的是网络拥塞问题,只要有ACK回来则发包;而CORK算法关心的是报文段大小,在前后数据发送间隔很短的前提下,即使你是分散发送多个小数据包,你也可以通过使能CORK算法将这些内容拼接在一个包内,如果此时用Nagle算法的话,则可能做不到这一点。 -## 5 紧急方式 +## 6 紧急方式 TCP提供了“紧急方式(urgentmode)”,它使连接的一端可以告诉另连接的一端有些 “紧急数据”已经被放置在数据流中。紧急数据的处理方式由接收方决定。 diff --git a/计算机网络/3.6 传输层-TCP拥塞控制.md b/计算机网络/3.6 传输层-TCP拥塞控制.md index 957a0521..478831f4 100644 --- a/计算机网络/3.6 传输层-TCP拥塞控制.md +++ b/计算机网络/3.6 传输层-TCP拥塞控制.md @@ -17,6 +17,13 @@ TCP让连接双方根据自己所判断的网络拥塞的程度来限制其发 TCP通过ACK到达的情况(即是否到达,到达的速率)来调整拥塞窗口的大小。 +### 主要技术 + +* 慢启动 +* 拥塞避免 +* 快重传 +* 快恢复 + ## 2 慢启动 在建立TCP连接时,拥塞窗口被初始化为 min (4*SMSS, max (2*SMSS, 4380 bytes)) 。但是TCP不是以线性的方式增大拥塞窗口,而是以指数的方式增加的,即: * 初始设置cwnd=1个 min (4*SMSS, max (2*SMSS, 4380 bytes)) ,发送一个报文,在RFC5861中有更新,但是总体就是一个较小的值(SMSS:SENDER MAXIMUM SEGMENT SIZE : The SMSS is the size of the largest segment that the sender can transmit)。(对于SCTP,cwnd初始值为min(4*MTU)。 @@ -43,7 +50,7 @@ TCP通过ACK到达的情况(即是否到达,到达的速率)来调整拥 因此TCP的拥塞控制方式又称为加性增,乘性减。拥塞窗口的增加受惠的只是自己,而拥塞窗口减少受益的是大家,当出现拥塞时,通过乘性减虽然损害了自己,但是可以让更多的其它网络参与者受益,这也证实TCP拥塞控制中的公平性的核心所在。 -## 4 对超时事件的处理 +## 4 快重传(超时处理) 虽然超时和收到三个冗余ACK(SCTP中不存在三个冗余ACK,对应的事件是三个SACK都不包含都某个报文段的确认,则认为该报文段丢失需要重传)都被认为是丢包事件,但是TCP在二者的处理上并不全相同。当收到三个冗余ACK时,TCP的处理就是“加性增,乘性减”。但是如果是超时事件,则TCP会更新ssthresh的值为max (FlightSize / 2, 2*SMSS)(对于SCTP,max(cwnd/2, 4*MTU)),然后进入“慢启动”过程,即将拥塞窗口设置为一个MSS,然后指数增加拥塞窗口大小。此时“慢启动”会持续到遇到一个丢包事件或者拥塞窗口被增大到了ssthresh,如果是增大到了ssthresh则进入“拥塞避免”的模式,即开始加性增。 diff --git a/计算机网络实验/4 传输层实验.md b/计算机网络实验/4 传输层实验.md new file mode 100644 index 00000000..e69de29b diff --git a/计算机网络实验/802.11无线网络.md b/计算机网络实验/802.11无线网络.md index 0ca45011..050ebc55 100644 --- a/计算机网络实验/802.11无线网络.md +++ b/计算机网络实验/802.11无线网络.md @@ -128,23 +128,40 @@ CSMA/CA 访问控制机制 虚拟载波监听功能与网络分配矢量 帧间隔 -RTS(Request To Send)请求发送 -RA:RTS用于为要传送的数据帧、管理帧或者控制帧预约信道,RA就是后续这些帧的目的地址; -TA:发送RTS的无线终端的地址; -Duration:持续时间,单位为微秒。值为传送一个管理帧或者数据帧时间加上一个CTS时间、一个ACK再加上3个SIFS。 +* 控制帧的类型 + +|Subtype Value|Subtype Description| +|-|-| +|0000-0110 |Reseved| +|1000 |Block Ack Reques| +|1001 |Block Ack| +|1010 |PS-Poll| +|1011 |RTS| +|1100 |CTS| +|1101 |ACK| -CTS(Clear To Send)允许发送 -RA:直接拷贝自对应RTS中的TA; -Duration:拷贝自对应的RTS中的Duration值,但要减去传输此CTS帧的时间,并再减去一个SIFS。 +* RTS(Request To Send)请求发送 + + * RA:RTS用于为要传送的数据帧、管理帧或者控制帧预约信道,RA就是后续这些帧的目的地址; + * TA:发送RTS的无线终端的地址; + * Duration:持续时间,单位为微秒。值为传送一个管理帧或者数据帧时间加上一个CTS时间、一个ACK再加上3个SIFS。 -ACK -RA:拷贝自所要确认的帧的Address 2字段; -Duration: -如果Frame Control中More Fragment为0,那么Duration为0; -否则将拷贝自所要确认的帧中的Duration值,并减去传输此ACK所需时间,再减去一个SIFS。 +* CTS(Clear To Send)允许发送 + * RA:直接拷贝自对应RTS中的TA; + * Duration:拷贝自对应的RTS中的Duration值,但要减去传输此CTS帧的时间,并再减去一个SIFS。 + +* ACK + * RA:拷贝自所要确认的帧的Address 2字段; + * Duration:如果Frame Control中More Fragment为0,那么Duration为0;否则将拷贝自所要确认的帧中的Duration值,并减去传输此ACK所需时间,再减去一个SIFS。 + +* PS-Poll(Power Save模式) + * 无线接入点为处于PS模式的无线终端缓存数据帧。无线终端唤醒后,通过PS-Poll帧来通知无线接入点把缓存帧发送过来。 + * BSSID:包含连接无线终端的无线接入点所在的服务集标识 + * TA:传输该帧的无线终端地址 + * AID:该无线终端和无线服务器端关联时指定的关联代码。 ## 3 802.11与以太网帧转换 ### 802.11帧封装 diff --git a/计算机网络实验/image/无线网ipv6.png b/计算机网络实验/image/无线网ipv6.png new file mode 100644 index 0000000000000000000000000000000000000000..6f0f892eb2bb10ce6cba62f27a09a4926ebe9719 GIT binary patch literal 73590 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 z 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μjYp2{)xxHSe@ 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 Lf2ZWORp@^Jq@&Ge literal 0 HcmV?d00001