精华内容
下载资源
问答
  • 夜光杯感应杯垫上有四个彩色LED,随放在它上面的玻璃杯温度不同而发出不同颜色的光。 作品实物效果图如下: 在20摄氏度以下,发出冷色调的光,在28摄氏度以上,发出暖色调的光。而当没有杯子搁在上面(在室温20至28...
  • 夜光灯遥感总结

    2019-03-18 16:29:41
    国内外夜光灯数据总结以及相关的研究进展的总结
  • 介绍了最大概率法的数学原理及迭代方程的使用过程, 以卫星遥感观测的夜光云数据为例, 阐述了最大概率法在实例中的使用方法, 并反演得到了夜光云体散射比廓线及散射系数廓线。与传统洋葱剥皮法的反演结果进行对比, ...
  • 夜光序言: 其实即使是天才,在生下来的时候的第一声啼哭,也和平常儿童的一样,决不会就是一首好诗。 正文: 可靠数据传输的原理 仅考虑在一般情况下可靠数据传输的间题,仅考虑单向数据...

    夜光序言:

     

    其实即使是天才,在生下来的时候的第一声啼哭,也和平常儿童的一样,决不会就是一首好诗。

     

     

     

     

     

     

    正文:

     

    可靠数据传输的原理


    仅考虑在一般情况下可靠数据传输的间题,仅考虑单向数据传输的情况,即数据传输是从发送方到接收方的。可靠的、双向数据传输 (即全双工数据传输)的情况从概念上讲是一样的。

     

    主要目的是帮助大家理解 TCP 的可靠数据传输机制。

     

     

     1.完全可靠信道上的可靠数据传输:rdt1.0


    考虑最简单的情况,即底层信道是完全可靠的,是完美信道。
    no bit errors
    no loss of packets

    因此应用层调用 rdt_send(data),
    packet = make_pkt(data) //发送方从较高层接收数据,生成一个包含该数据的分组
    udt_send(packet) //将分组发送到信道中
    接收方应用层调用 rdt_rcv(packet),(注意是接收方主动接收)
    extract (packet,data) //接收方接收提取,
    deliver_data(data) //交付数据
     

     



    2.具有比特差错信道上的可靠数据传输:rdt2.0


    在分组的传输、传播或缓存的过程中,这种比特差错通常会出现在网络的物理部件中。
    因此需要引入checksum 检测比特位错误

     

    需要引入确认机制:


    acknowledgements (ACKs): receiver 明确告诉 sender 数据包接收 OK
    negative acknowledgements (NAKs): receiver 明确告诉 sender 数据包存在错误
    sender 收到 NAK,重传数据包(pkt)
    rdt2.0 (在 rdt1.0 基础上)采用的新机制:
    校验和:错误检测
    接收者反馈: 控制信息(ACK,NAK)
    重传 
    但是确认信息本身出错、引起重复的传输怎么办呢? rdt2.1
    如果 ACK/NAK 出错,那么发送者直接重传当前的数据报
    发送者为数据报添加字段:序号 (sequence number )
    接收者抛弃重复的数据报

     


    3.具有比特差错的丢包信道上的可靠数据传输:rdt3.0


    现在假定除了比特受损外,底层信道还会丢包。

    发送者等待 ACK 足够的时间
    然后重传(假如还是没有 ACK)
    如果数据包(or ACK) 延迟 (但没有丢失):
    重传导致重复, 顺序号的使用可以处理这种情况
    但是接收者必须指定所确认数据包的顺序号


    一般使用倒数的定时器(timer)


    可靠数据传输协议的要点:校验和、序号、定时器、肯定确认和否定确认、重传。 

     


    4 流水线可靠数据传输协议

     


    Rdt3.0 使用停等方式运行,提高发送效率的方法是允许发送方发送多个分组而无需等待确认。发送方向接收方传输的众多分组可以被看成是填充到了一条流水线中,故这种技术被称为流水线(pipelining)。

    流水线技术对可靠数据传输协议提出了新的要求: 

     .必须增加序号范围,因为每个传输的分组(不计算重传的)必须有一个唯一的序号,而 且也许有多个在传输中的未确认的分组。
     .协议的发送方和接收方必须缓存多个分组。发送方最低限度应当能缓冲那些已发送但没有确认的分组。接收方也需要缓存那些已正确接收的分组。

    .所需序号范围和对缓冲的要求取决于数据传输协议处理丢失、损坏及过度延时分组的
    方式。

    解决流水线的差错恢复有两种基本方法:回退 N 步和选择重传。


     •回退 N 步

     

     


     

    在 GBN 协议中,允许发送方发送多个分组(当有多个分组可用时)而不需等待确认,但它也受限于在流水线中未确认的分组数不能超过某个最大允许数 N。 

    已被发送但还未被确认的分组的许可序号范围可以被看成是一个在序号范围内长度为N 的窗口。随着协议的运行,该窗口在序号空间内向前滑动。

     

    因此,N 常被称为窗口长度,协议常被称为滑动窗口协议。

     

    当有超时事件发生,出现丢失和过度时延分组时,发送方将重传所有已发送但还未被确认的分组。 

     

    在 GBN 中,接收方的动作也很简单。如果一个序号为 n 的分组被正确接收到,并且按序(即上次交付给上层的数据是序号为 n-I 的分组),则接收方为分组 n 发送一个 ACK,并将该分组中的数据交付到上层。在所有其他情况下,接收方都丢弃该分组,并为最近按序接收的分组 n-1 重传 ACK。因此,使用累积确认是 GBN 的一个很自然的选择。

     

    累积确认指接收一个未出错分组(可能失序)时总是返回一个最后接收的按顺序到达分组的确认。

     

     


    GBN 协议中综合了 TCP 可靠数据传输构件的所有技术。这些技术包括序号、累积确认、校验和以及超时/重传操作。


    •选择重传
    选择重传(SR)协议通过让发送方仅重传那些它怀疑在接收方出错(即丢失或受损)的分组而避免了不必要的重传。这种个别的、按需的重传要求接收方逐个地确认正确接收的分组。它也用窗口长度 N 来限制流水线中未完成、未被确认的分组数。 

     


    发送方:


    a 从上层收数据。当从上层接收到数据后,SR 发送方检查下一个可用的序号。如果序号在发送方的窗口内,则将数据打包并发送;否则就像在 GBN 中一样。要么将数据缓存,要么将其返回给上层。
    b 超时定时器被用来防止丢失分组。但每个分组必须有自己的定时器,因为超时后只能发送一个分组。
    c 收到 ACK。如果收到 ACK,且该分组序号在窗口内,则 SR 发送方将那个被确认的组标记为已接收。如果该分组的序号等于窗口左边缘的基序号,则窗口基序号向前移动到具有最小序号的未确认分组处。如果窗口移动了并且有分组序号落在窗口内未发送。

     


    则发送这些分组。


    SR 接收方将确认一个正确接收的分组而不管其是否按序。失序的分组将被缓存直到所有丢失分组(即序号更小的分组)都被收到,这时才它们按序交付给上层

     

    a 收到的分组落在接收方的窗口内,一个确认分组被回送给发送方,即使该分组是接收方以前已确认过的分组。
    b 如果该分组是以前没收到的分组,则被缓存。

    如果该分组的序号等于接收窗口的基序号,则该分组以及以前缓存的、序号连续的分组交付给上层,然后接收窗口向前移动。

    c 其他情况,忽略该分组。

     

     

    展开全文
  • 最近在做夜光遥感的实验,刚对数据进行简单的预处理,结果到了需要查看属性表时才发现,我viirs数据居然木得有属性表!解决方法也查了好久,知道原因是因为我下载的viirs数据是浮点型,无法生成属性表,根本的解决...

      最近在做夜光遥感的实验,刚对数据进行简单的预处理,结果到了需要查看属性表时才发现,我viirs数据居然木得有属性表!解决方法也查了好久,知道原因是因为我下载的viirs数据是浮点型,无法生成属性表,根本的解决方法就是转成整形。

      我尝试过用复制栅格的方法,但很奇怪,用初始的npp数据进行操作就能成功,但用已经掩膜、投影、重采样的其中任何一步影像都不好使。但转整成功之后的影像再进行掩膜处理之类的就没问题,依然是整形,有属性表的。究竟是什么原因导致的这个现象我还没有搞明白。

      但刚刚突然发现新方法,可以把处理之后的影像直接转整!

      用数学分析里的运算就ok。

      这样应该就可以解决后续需要查看属性表之类的问题了。dmsp数据应该也能通用,但珞珈恐怕不行,准备接着去研究了。

      对了,还有方法好像是栅格转点,再值提取至点,我也尝试过,但得到的结果不是我想要的,也许是我方法有误,原理也没太搞懂,有需要的可以试试。

    PS:第一次发文,能帮到大家最好啦,我自己从CSDN里学到好多方法,所以这次也想分享下我的方法,自己学arcgis不精,基础也不好,希望这个方法不会是误导QAQ。方法有问题的话,就麻烦各位大神指正下!  虽然,我也想说"小伙伴们有问题可以问我~",可是大概问了我也不会TAT,一起交流的话还是很欢迎大家哒!就这样!

     

     

    展开全文
  • 夜光序言: 一个人时要坚强,泪水没肩膀依靠就昂头,没有谁比自己爱自己更实在;一个人的日子我们微笑,微笑行走,微笑面对。 正文: 可靠数据传输的原理 仅考虑在一般情况下可靠数据传输的...

    夜光序言:

     

     

    一个人时要坚强,泪水没肩膀依靠就昂头,没有谁比自己爱自己更实在;一个人的日子我们微笑,微笑行走,微笑面对。

     

     

     

     

     

    正文:

     

    可靠数据传输的原理


    仅考虑在一般情况下可靠数据传输的间题,仅考虑单向数据传输的情况,即数据传输是从发送方到接收方的。可靠的、双向数据传输 (即全双工数据传输)的情况从概念上讲是一样的。

     

    主要目的是帮助大家理解 TCP 的可靠数据传输机制。

     

    1.完全可靠信道上的可靠数据传输:rdt1.0


     考虑最简单的情况,即底层信道是完全可靠的,是完美信道。
    no bit errors
    no loss of packets
     因此应用层调用 rdt_send(data),
    packet = make_pkt(data) //发送方从较高层接收数据,生成一个包含该数据的分组
    udt_send(packet) //将分组发送到信道中
    接收方应用层调用 rdt_rcv(packet),(注意是接收方主动接收)
    extract (packet,data) //接收方接收提取,
    deliver_data(data) //交付数据
     

     



     2.具有比特差错信道上的可靠数据传输:rdt2.0


    在分组的传输、传播或缓存的过程中,这种比特差错通常会出现在网络的物理部件中。

    因此需要引入checksum 检测比特位错误

    需要引入确认机制:
    acknowledgements (ACKs): receiver 明确告诉 sender 数据包接收 OK
    negative acknowledgements (NAKs): receiver 明确告诉 sender 数据包存在错误
    sender 收到 NAK,重传数据包(pkt)
    rdt2.0 (在 rdt1.0 基础上)采用的新机制:
    校验和:错误检测
    接收者反馈: 控制信息(ACK,NAK)
    重传 

     

    但是确认信息本身出错、引起重复的传输怎么办呢? rdt2.1如果 ACK/NAK 出错,那么发送者直接重传当前的数据报
    发送者为数据报添加字段:序号 (sequence number )接收者抛弃重复的数据报

     


    3.具有比特差错的丢包信道上的可靠数据传输:rdt3.0


    现在假定除了比特受损外,底层信道还会丢包。

    发送者等待 ACK 足够的时间

    然后重传(假如还是没有 ACK)

    如果数据包(or ACK) 延迟 (但没有丢失):

    重传导致重复, 顺序号的使用可以处理这种情况,但是接收者必须指定所确认数据包的顺序号


     

    TCP


    如果仅仅为了理解网络工作原理,那么只要了解 TCP 是可靠传输,数据传输丢失时会重传就可以了。

     

     

    那么下面内容很有可能成为考查的知识点,其中的重点是序号/确认号的编码、超时定时器的设置、可靠传输和连接的管理。


    1 TCP 连接


    TCP 面向连接,在一个应用进程开始向另一个应用进程发送数据之前,这两个进程必须先相互“握手”,即它们必须相互发送某些预备报文段,以建立连接。

     

    连接的实质是双方都初始化与连接相关的发送/接收缓冲区,以及许多 TCP 状态变量。

    这种 “连接”不是一条如电话网络中端到端的电路,因为它们的状态完全保留在两个端系统中。

    TCP 连接提供的是全双工服务,应用层数据就可在从进程 B 流向进程 A 的同时,也从进程 A 流向进程 B。

    TCP 连接也总是点对点的,即在单个发送方与单个接收方之间建立连接。

    一个客户机进程向服务器进程发送数据时,客户机进程通过套接字传递数据流。

    客户机操作系统中运行的 TCP 软件模块首先将这些数据放到该连接的发送缓存里,然后会不时地从发送缓存里取出一块数据发送。

    TCP 可从缓存中取出并放入报文段中发送的数据量受限于最大报文段长 MSS,通常由最大链路层帧长度来决定(也就是底层的通信链路决定)。例如一个链路层帧的最大长度 1500字节,除去数据报头部长度 20 字节, TCP 报文段的头部长度 20 字节,MSS 为 1460 字节。

    报文段被往下传给网络层,网络层将其封装在网络层 IP 数据报中。然后这些数据报被发送到网络中。

    当 TCP 在另一端接收到一个报文段后,该报文段的数据就被放人该连接的接收缓存中。

    应用程序从接收缓存中读取数据流(注意是应用程序来读,不是操作系统推送)。

    TCP 连接的每一端都有各自的发送缓存和接收缓存。

    因此TCP连接的组成包括:主机上的缓存、控制变量和与一个进程连接的套接字变量名,以及另一台主机上的一套缓存、控制变量和与一个进程连接的套接字。

    在这两台主机之间的路由器、交换机中,没有为该连接分配任何缓存和控制变量。


     

    2 报文段结构


    TCP 报文段由首部字段和一个数据字段组成。数据字段包含有应用层数据。由于 MSS 限制了报文段数据字段的最大长度。当 TCP 发送一个大文件时,TCP 通常是将文件划分成长度为 MSS 的若干块。

    TCP 报文段的结构。

    首部包括源端口号和目的端口号,它用于多路复用/多路分解来自或送至上层应用的数据。另外,TCP 首部也包括校验和字段。报文段首部还包含下列字段:

    32 比特的序号字段和 32 比特的确认号字段。这些字段被 TCP 发送方和接收方用来实现可靠数据传输服务。

    16 比特的接收窗口字段,该字段用于流量控制。该字段用于指示接收方能够接受的字节数量。

     

    4 比特的首部长度字段,该字段指示以 32 比特的字为单位的 TCP 首部长度。一般 TCP 首部的长度就是 20 字节。

     

    可选与变长的选项字段,该字段用于当发送方与接收方协商最大报文段长度,或在高速网络环境下用作窗口调节因子时使用。

     

     


    标志字段 ACK 比特用于指示确认字段中的 ACK 值的有效性,即该报文段包括一个对已被成功接收报文段的确认。SYN 和 FIN 比特用于连接建立和拆除。

    PSH、URG 和紧急指针字段通常没有使用。


    •序号和确认号


    TCP 报文段首部两个最重要的字段是序号字段和确认号字段。
    TCP 把数据看成一个无结构的但是有序的字节流。TCP 序号是建立在传送的字节流之上,而不是建立在传送的报文段的序列之上。

    一个报文段的序号是该报文段首字节在字节流中的编号。

    例如,假设主机 A 上的一个进程想通过一条 TCP 连接向主机 B 上的一个进程发送一个数据流。主机 A 中的 TCP 将对数据流中的每一个字节进行编号。假定数据流由一个包含 4500字节的文件组成(可以理解为应用程序调用 send 函数传递过来的数据长度),MSS 为 1000 字节(链路层一次能够传输的字节数),如果主机决定数据流的首字节编号是 7。

     

    TCP 模块将为该数据流构建 5 个报文段(也就是分 5 个 IP 数据报)。第一个报文段的序号被赋为 7;第二个报文段的序号被赋为 1007,第三个报文段的序号被赋为 2007,以此类推。前面 4 个报文段的长度是 1000,最后一个是 500。

     

    确认号要比序号难理解一些。前面讲过,TCP 是全双工的,因此主机 A 在向主机 B 发送数据的同时,也可能接收来自主机 B 的数据。从主机 B 到达的每个报文段中的序号字段包含了从 B 流向 A 的数据的起始位置。因此主机 B 填充进报文段的确认号是主机 B 期望从主机 A 收到的下一报文段首字节的序号。

     

    假设主机 B 已收到了来自主机 A 编号为 7-1006 的所有字节,同时假设它要发送一个报文段给主机 A。主机 B 等待主机 A 的数据流中字节 1007 及后续所有字节。所以,主机 B 会在它发往主机 A 的报文段的确认号字段中填上 1007。

     

    再举一个例子,假设主机 B 已收到一个来自主机 A 的包含字节 7-1006 的报文段,以及另一个包含字节 2007-3006 的报文段。由于某种原因,主机 A 还没有收到字节 1007-2006 的报文段。

     


    在这个例子中,主机 A 为了重组主机 B 的数据流,仍在等待字节 1007。因此,A 在收到包含字节 2007-3006 的报文段时,将会又一次在确认号字段中包含 1007。因为 TCP 只确认数据流中至第一个丢失报文段之前的字节数据,所以 TCP 被称为是采用累积确认。

     


    TCP 的实现有两个基本的选择:

     

    ①接收方立即丢弃失序报文段;或者

    ②接收方保留失序的字节,并等待缺少的字节以填补该间隔。

     


    一条 TCP 连接的双方均可随机地选择初始序号。这样做可以减少将那些仍在网络中的来自两台主机之间先前连接的报文段,误认为是新建连接所产生的有效报文段的可能性。

     

    •例子 telnet


    Telnet 由是一个用于远程登录的应用层协议。它运行在 TCP 之上,被设计成可在任意一对主机之间工作。

    假设主机 A 发起一个与主机 B 的 Telnet 会话。因为是主机 A 发起该会话,因此主机 A被标记为客户机,主机 B 被标记为服务器。用户键入的每个字符(在客户机端)都会被发送至远程主机。远程主机收到后会复制一个相同的字符发回客户机,并显示在 Telnet 用户的屏幕上。

     

    这种“回显”用于确保由用户发送的字符已经被远程主机收到并处理。因此,在从用户击键到字符显示在用户屏幕上之间的这段时间内,每个字符在网络中传输了两次。

     

    现在假设用户输入了一个字符“C”,假设客户机和服务器的起始序号分别是 42 和 79。

     

    前面讲过,一个报文段的序号就是该报文段数据字段首字节的序号。因此,客户机发送的第一个报文段的序号为 42,服务器发送的第一个报文段的序号为 79。前面讲过,确认号就是主机期待的数据的下一个字节序号。在 TCP 连接建立后但没有发送任何数据之前,客户机等待字节 79,而服务器等待字节 42。

     

    如图所示,共发了 3 个报文段。

    第一个报文段是由客户机发往服务器,其数据字段里包含一字节的字符“C”的 ASCII 码,其序号字段里是 42。另外,由于客户机还没有接收到来自服务器的任何数据,因此该报文段中的确认号字段里是 79。

    第二个报文段是由服务器发往客户机。它有两个目的:第一个目的是为服务器所收到的数据提供确认。服务器通过在确认号字段中填入 43,告诉客户机它已经成功地收到字节 42及以前的所有字节,现在正等待着字节 43 的出现。第二个目的是回显字符“C”。因此,在第二个报文段的数据字段里填入的是字符“C”的 ASCII 码,第二个报文段的序号为 79,它是该 TCP 连接上从服务器到客户机的数据流的起始序号,也是服务器要发送的第一个字节的数据。

    这里客户机到服务器的数据的确认被装载在一个服务器到客户机的数据的报文段中,这种确认被称为是捎带确认.

     

    第三个报文段是从客户机发往服务器的。它的唯一目的是确认已从服务器收到的数据

    3 往返时延的估计与超时


    TCP 如同前面所讲的 rdt 协议一样,采用超时/重传机制来处理报文段的丢失问题。

    最重要的一个问题就是超时间隔长度的设置。显然,超时间隔必须大于 TCP 连接的往返时延 RTT,即从一个报文段发出到收到其确认时。否则会造成不必要的重传。

    •估计往返时延
    TCP 估计发送方与接收方之间的往返时延是通过采集报文段的样本 RTT 来实现的,就是从某报文段被发出到对该报文段的确认被收到之间的时间长度。

    也就是说 TCP 为一个已发送的但目前尚未被确认的报文段估计 sampleRTT,从而产生一个接近每个 RTT 的采样值。但是,TCP 不会为重传的报文段计算 RTT。

    为了估计一个典型的 RTT,采取了某种对 RTT 取平均值的办法。

    TCP 据下列公式来更新

     

    即估计 RTT 的新值是由以前估计的 RTT 值与 sampleRTT 新值加权组合而成的。

    参考值是 a=0.125,因此是一个加权平均值。显然这个加权平均对最新样本赋予的权值要大于对老样本赋予的权值。因为越新的样本能更好地反映出网络当前的拥塞情况。从统计学观点来讲,这种平均被称为指数加权移动平均除了估算 RTT 外,还需要测量 RTT 的变化,RTT 偏差的程度,因为直接使用平均值设置计时器会有问题(太灵敏)。

    RTT 偏差也使用了指数加权移动平均。B 取值 0.25.

     



    •设置和管理重传超时间隔


    假设已经得到了估计 RTT 值和 RTT 偏差值,那么 TCP 超时间隔应该用什么值呢?

    TCP 将超时间隔设置成大于等于估计 RTT 值和 4 倍的 RTT 偏差值, 否则将造成不必要的重传。但是超时间隔也不应该比估计 RTT 值大太多,否则当报文段丢失时,TCP 不能很快地重传该报文段,从而将给上层应用带来很大的数据传输时延。因此,要求将超时间隔设为估计 RTT 值加上一定余量。

     

    当估计 RTT 值波动较大时,这个余最应该大些;当波动比较小时,这个余量应该小些。因此使用 4 倍的偏差值来设置重传时间。


    TimeoutInterval = EstimatedRTT + 4*DevRTT

     

     



    4 可信数据传输


    因特网的网络层服务是不可靠的。

     

    IP 不保证数据报的交付,不保证数据报的按序交付,也不保证数据报中数据的完整性。

     

    TCP 在 IP 不可靠的尽力而为服务基础上建立了一种可靠数据传输服务。
    TCP 提供可靠数据传输的方法涉及前面学过的许多原理。
    TCP 采用流水线协议、累计确认。
    TCP 推荐的定时器管理过程使用单一的重传定时器,即使有多个已发送但还未被确认的报文段也一样。重传由超时和多个 ACK 触发。

    在 TCP 发送方有 3 种与发送和重传有关的主要事件:从上层应用程序接收数据,定时器超时和收到确认 ACK。

    从上层应用程序接收数据。一旦这个事件发生,TCP 就从应用程序接收数据,将数据封装在一个报文段中,并将该报文段交给 IP。注意到每一个报文段都包含一个序号,这个序号就是该报文段第一个数据字节的字节流编号。如果定时器还没有计时,则当报文段被传给 IP时,TCP 就启动一个该定时器。

     

    第二个事件是超时。TCP 通过重传引起超时的报文段来响应超时事件。然后 TCP 重启定时器。

     

    第三个事件是一个来自接收方的确认报文段(ACK)。当该事件发生时,TCP 将 ACK 的值 y与变量 SendBase(发送窗口的基地址)进行比较。TCP 状态变量 SendBase 是最早未被确认的字节的序号。就是指接收方已正确按序接收到数据的最后一个字节的序号。

     

    TCP 采用累积确认,所以 y 确认了字节编号在 y 之前的所有字节都已经收到。

    如果 Y>SendBase,则该 ACK 是在确认一个或多个先前未被确认的报文段。因此发送方更新其 SendBase 变量,相当于发送窗口向前移动。

     

    另外,如果当前有未被确认的报文段,TCP 还要重新启动定时器。

     


     

     

    快速重传


    超时触发重传存在的另一个问题是超时周期可能相对较长。当一个报文段丢失时,这种长超时周期迫使发送方等待很长时间才重传丢失的分组,因而增加了端到端时延。所以通常发送方可在超时事件发生之前通过观察冗余 ACK 来检测丢包情况。

     

    冗余 ACK 就是接收方再次确认某个报文段的 ACK,而发送方先前已经收到对该报文段的确认。

     

    当 TCP 接收方收到一个序号比所期望的序号大的报文段时,它认为检测到了数据流中的一个间隔,即有报文段丢失。这个间隔可能是由于在网络中报文段丢失或重新排序造成的。

    因为 TCP 使用累计确认,所以接收方不向发送方发回否定确认,而是对最后一个正确接收报文段进行重复确认(即产生一个冗余 ACK)

    如果 TCP 发送方接收到对相同报文段的 3 个冗余 ACK. 它就认为跟在这个已被确认过 3次的报文段之后的报文段已经丢失。一旦收到 3 个冗余 ACK,TCP 就执行快速重传,即在该报文段的定时器过期之前重传丢失的报文段。


     

    5 流量控制


    前面讲过,一条 TCP 连接双方的主机都为该连接设置了接收缓存。当该 TCP 连接收到正确、按序的字节后,它就将数据放入接收缓存。

    相关联的应用进程会从该缓存中读取数据,但没必要数据刚一到达就立即读取。事实上,接收方应用也许正忙于其他任务,甚至要过很长时间后才去读取该数据。如果应用程序读取数据时相当缓慢,而发送方发送数据太多、太快,会很容易使这个连接的接收缓存溢出。

     

    TCP 为应用程序提供了流量控制服务以消除发送方导致接收方缓存溢出的可能性。因此,可以说流量控制是一个速度匹配服务,即发送方的发送速率与接收方应用程序的读速率相匹配。

     

    前面提到过,TCP 发送方也可能因为 IP 网络的拥塞而被限制,这种形式的发送方的控制被称为拥塞控制(congestion control )。

     

    TCP 通过让接收方维护一个称为接收窗口的变量来提供流量控制。接收窗口用于告诉发送方,该接收方还有多少可用的缓存空间。因为 TCP 是全双工通信,在连接两端的发送方都各自维护一个接收窗口变量。主机把当前的空闲接收缓存大小值放入它发给对方主机的报文段接收窗口字段中,通知对方它在该连接的缓存中还有多少可用空间。

     


     

    6 TCP 连接管理


    客户机中的 TCP 会用以下方式与服务器建立一条 TCP 连接:

    第一步:客户机端首先向服务器发送一个 SNY 比特被置为 1 报文段。该报文段中不包含应用层数据,这个特殊报文段被称为 SYN 报文段。另外,客户机会选择一个起始序号,并将其放置到报文段的序号字段中。为了避免某些安全性攻击,这里一般随机选择序号。

    第二步:一旦包含 TCP 报文段的用户数据报到达服务器主机,服务器会从该数据报中提取出 TCP SYN 报文段,为该 TCP 连接分配 TCP 缓存和控制变量,并向客户机 TCP 发送允许连接的报文段。这个允许连接的报文段还是不包含应用层数据。但是,在报文段的首部却包含3 个重要的信息。

     

    首先,SYN 比特被置为 1。

     

    其次,该 TCP 报文段首部的确认号字段被置为客户端序号+1 

    最后,服务器选择自己的初始序号,并将其放置到 TCP 报文段首部的序号字段中。这个允许连接的报文段实际上表明了:“我收到了你要求建立连接的、带有初始序号的分组。我同意建立该连接,我自己的初始序号是 XX”。这个同意连接的报文段通常被称为 SYN+ACK 报文段。


     

     

    展开全文
  • 5. 8 夜光盒 -- 舵机 夜光宝盒听着名字是不是很好玩实际也是这么好玩儿本节要做的这 个盒子在白天是闭合的一旦进入了深夜就开始慢慢张开灯光也会慢慢 变亮好似一颗 夜明珠 一旦到了白天又慢慢合上了原理是通过一个模...
  • 夜光序言: 照片我没删 我只是加密了 空间里关于你的一切我没有抹去, 我只是锁住了 东西我也没丢 我把它们装进了那个大箱子里 而你…… 我也没忘 我把你整理好 放进那些情歌里了 正文:...

    夜光序言:

    照片我没删

    我只是加密了

    空间里关于你的一切我没有抹去,

    我只是锁住了

    东西我也没丢

    我把它们装进了那个大箱子里

    而你……

    我也没忘

    我把你整理好

    放进那些情歌里了

     

     

    正文:Javaweb领域一起更新,思考了很久,有必要新开设一下这个专栏~~么么哒

     

    我在工业领域待了很长时间,深刻意识到通信领域的魅力

     

           在移动互联和互联网+的时代,无论是云计算、大数据、智能家居、智慧城市、全球卫星定位还是4G/5G移动蜂窝网、空天地海一体化网络、物联网(IoT)、传感器网络、无人驾驶汽车、人工智能等,都是以通信网络为基础。可以说,通信网络技术以及互联网已经深刻地改变了人们的工作、学习、生活、娱乐等方式

     

           本系列生动有趣,以实例从通信中的三次握手讲起,并以通俗易懂的方式主要讲授计算机信网络的基本概念和基本原理,计算机网络的体系结构和各层协议,以及基于C/S、B/S和P2P的各种应用开发等,并通过研发项目实例,学习基本的开发能力。

     

     

    在这些技术里边,跟我们日常密切相关的 移动蜂窝网络技术的发展,更是为移动互联网的发展提供了强力的支持。

    1G : 大哥大(FDM)

    2G : GSM(TDM)

    2.5G :GPRS

    3G : TD-SCDMA、WCDMA、CDMA2000

    4G : TDD-LTE、FDD-LTE、Wi-max

    5G : OFDM+MIMO

     

    通信中的三次握手过程:理想情况


    1. A 的信使顺利抵达B  ,A , B 均未确认。(通信过
    程结束了吗?否)
    2. B 的信使顺利抵达A  ,A 确认,B 未确认。(通信
    过程结束了吗?否)
    3. A 的信使顺利抵达B , A , B。 均确认。  (通信过
    程结束了吗?是)


    这就是通信中的 三次握手的过程

     

    另外,在实际的通信过程中间,我们有很多的
    问题需要考虑:


    (1)加密/解密
    (2)压缩/解压缩……


    具体到计算机的通信网络:


    (1)两台设备之间的信息传递的接口、传输介质、
    通信规程、差错检测和纠正
    (2)数据交换和路由选择
    (3)不同的应用有不同的传输要求等

     

     

    基本理论 :  信号/ / 编码/ / 接口/ / 检错与纠错/ / 数据交换
    • 计算机网络体系结构 : OSI/RM 模型
    • 传输介质及复用技术,网络拓扑结构
    • 数据链路层协议
    • 不同构型的网络及其互连 LAN/MAN/ISDN/X.25/FR/ATM
    • 传输层协议
    • TCP/IP 协议
    • Internet

     

    展开全文
  • 夜光序言: 谁不曾生而为人,都只不过一场旅途 正文:有向介质(上) 计算机以及其它通信设备利用信号来表示数据。这些信号以电磁能量形式从一台设备传输到另一台设备。电磁信号能够穿 越真空,通过空气...
  • 夜光序言: 之后我们在山风里长久的拥抱,背后是碧蓝清澈的长白天池,眼前是看不见尽头的悠悠岁月。有些寒冷的东西消融了,有些信任和依赖沉淀下来,慢慢成了时光中最柔和的一隅,伴随我们即将共同经历的数十载...
  • 夜光序言: 如果有一天,你正一个人在大马路上走,突然听见一群熟悉的声音在后面扯着嗓子大喊你曾经的外号,你会不会突然停住,然后回头,看着一张张熟悉并且依旧觉得欠揍的脸,泪流满面? 正文: Applet的...
  • 夜光序言: 在有你的经年里,我愿以我最苍凉的姿势,聆听你内心最凄美的心声。 正文:PHP MySQL 预处理语句 有点意思:预处理语句及绑定参数 预处理语句用于执行多个相同的 SQL ...
  • 夜光序言: 少年你一定程度上挺温柔的呢 但是啊... 温柔的人绝对会吃亏的 正文: 网络安全 1 信息安全 •保密性 具有一定保密程度的信息只能让有权读到或更改的人读到和更改。...
  • 夜光序言: 对你最大的爱就是尊重你的选择,而不让你纠结。从不刻意只有随意,相处得舒服,足矣。 正文:TCP/IP应用层 TCP/IP中的应用层等价于OSI模型中的会话层、表示层以及应用层的组合。在TCP/IP协议中,...
  • 夜光序言: 或许你的一句不经意的话,他都当真了 或许你的一个不经意的动作,他就爱上了 喜欢一个人是没有理由的 正文:二、 SpringMVC 组件实现原理 1 执行逻辑图 2 组件介绍 2.1DispatcherServlet ...
  • 作者seer 之前电路城曾介绍了一款4 LED灯的变色杯垫设计(链接:https://www.cirmall.com/circuit/4873/detail?3),能将普通的玻璃杯变成美丽的夜光杯。...附件内容包括原理图、PCB源文件、夜光杯程序源码,见截图:
  • 夜光序言: 失去兴趣的奋斗,就算你有顽强的毅力,那也只不过是镜花水月。但是这样的奋斗却能不断的磨练我们的毅力~ 正文: <input type="text"><datalist><option>苹果<...
  • 夜光序言: 满地落樱留不住三月的脚步。~~~ 正文:AOP 面向切面编程,其底层原理就是动态代理实现。如果切面策略目标有接口实现,使用JDK 的动态代理技术;无接口实现则使用 CGLIB 技术生成动态代理。 ...
  • 夜光:计算机网络笔记(三十七)

    千次阅读 2019-06-12 20:14:48
    夜光序言: 有的人注定是恒星 即使远离 甚至死亡 那光芒依旧留在你的星空中 照耀着你 正文: 概述 ·无线主机。主机是运行应用程序的端系统设备。无线主机是具有...
  • 夜光序言: 不要浪费你的生命,在你一定会后悔的地方上。憎恨别人对自己是一种很大的损失。 逆境是成长必经的过程,能勇于接受逆境的人,生命就会日渐的茁壮。 保持激情;只有激情,你才有动力,才能感染自己和...
  • 夜光序言: 正文: 以道御术 / 以术识道 ...
  • 夜光序言: 毅力是什么? 毅力就是坚持,有毅力就代表着努力。 没有毅力,一个人将一事无成, 再宏伟的梦想也只能是一个梦而已, 再宏大的理想也只能是想一想罢了。 正文: 基于...
  • 夜光序言: 人的一生不能只为物质而活,要有更大的格局和心胸。一个梦想改变世界的人,一定会勇于修正自己,一定比他人更有冲破黑暗的决心和毅力。我们的存在,应该一起让这个世界更为美好,不是吗? ...
  • 夜光序言: 她只有我了 我若是不等她 谁会等她 我若是不守护她 谁会守护她 正文: 倒计时 <!DOCTYPE html><html><head lang="en"><meta charset="UTF-8"><...
  • 夜光序言: 以眼看世界,世界是很小的;以心看世界,世界是很大的。 有些人,有些事,只有用心去体味,才能了解得更真实。 正是这种感觉,年轻的我们,在成长的过程中,少不了磕磕绊绊,雨雨风风。 路上,总会...
  • 夜光序言: 我都舍不得欺负的人,哪能让别人欺负? 正文: 以道御术 / 以术识道 package 深入理解volatile原理与使用; //保证可见性的前提 //多个线程拿到的是同一把...
  • 夜光序言: “宰相肚里能撑船”,心有多大,天地就有多大。凡事,看淡一些,看开一些,看远一些,就会发现“潮平两岸阔,风正一帆悬”并非妄念。学会原谅那些无心之失,学会坦然面对事业、生活中的不如意。做一...
  • 夜光序言: 人,来到这个世界上,总会有许多的不如意,也会有许多的不公平;生活容不容易,关键看你怎么活。每个人,有每个人的需求;每个人,有每个人的梦想,最终都是想让心灵得到满足。少点攀比,少点比较,不...
  • 夜光序言: 正文: 以道御术 / 以术识道 2. 集合的安全性问题 请问 ArrayList、HashSet、HashMap 是线程安全的吗?如果不是我想要线程安全的集合怎么办? 我们都看过上面那些...
  • 夜光序言: 摘下的一瓣花能锦绣多久?一时的纵容又能快乐多久?有志者要为终身的目的孜孜以求。 正文: jQuery UI 简介 jQuery UI 是一个建立在 jQuery JavaScript 库上的小部件和交互库 嗯唔:我们...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 259
精华内容 103
关键字:

夜光原理