标签 tcp 下的文章

流量控制

一般来说,我们希望数据传输的更快一些。但是如果发送方传的过快,接收方来不及接收,这就会造成数据的丢失。所谓流量控制(flow control)就是让发送方的发送速率不要太快,要让接收方来的及接收。

滑动窗口

流量控制利用滑动窗口机制来实现。
tcp报文结构中有4字节表示接收方窗口大小。发送方的发送窗口不能超过接收方的接收窗口大小。

拥塞控制

网络资源、带宽、交换机,传输需求超过了资源所能提供的可用部分,网络性能就会变坏。这就叫拥塞。

拥塞控制和流量控制的一丝差别:
拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不至过载。
拥塞控制是一个全局性的过程,涉及所有主机、路由器,所以即使tcp端点迟迟不能接收对方的消息,也无法知道拥塞到底发生在网络的何处以及发生的原因。
而流量控制往往指点对点通信量的控制。是端到端的问题。

从控制理论的角度看拥塞控制,可以分为开环控制和闭环控制。

开环控制

开环控制是在设计网络时事先将有关发生拥塞的因素考虑周到,力求网络工作时不拥塞。运行过程中不再改正。

闭环控制

闭环控制是基于反馈链路的概念。

  1. 监测网络系统一遍检测拥塞在哪里发生。
  2. 把拥塞发生的信息传送到可采取行动的地方。
  3. 调整网络系统的运行来解决出现的问题。

检测网络拥塞的主要指标:由于缺少缓存空间而被丢弃的分组的百分数、平均队列长度、超时重传的分组数、平均分租延时、分组时延的标准差等。

RFC2581定义了拥塞控制的四中算法:慢开始、拥塞避免、快重传、快恢复。

一 tcp关键结构信息

  • 源端口号和目的端口:各占2字节,与ip首部ip地址组成一个唯一的tcp连接。
  • 序号和确认序号:4字节,无符号,是本报文段的第一个字节的序号,例如,一报文段的序号为300,而且数据共100字节,则下一个报文段的序号就是400;序号是32bit的无符号数,序号到达2^32-1后从0开始。确认序号是期望收到对方下次发送数据的第一个字节的序号,确认序号应该是上次已成功收到数据字节序号+1。只有ACK标志为1时,确认序号才有效。
  • 标志位:6个,各占1位。

    • SYN:请求建立连接;
    • ACK:当ACK=1,确认序号有效;
    • FIN:发送端发送完成,请求断开连接;
    • URG:注解此报文应尽快传送,而不要按本来的列队次序来传送。与“紧急指针”字段共同应用,紧急指针指出在本报文段中的紧急数据的最后一个字节的序号,使接管方可以知道紧急数据共有多长;
    • PSH:接收方应该尽快将本报文段立即传送给其应用层。
    • RST:重置连接。
  • 窗口:16位,65535,tcp通过滑动窗口进行流量控制,设想发送方发送速度很快,而接收方接受速度很慢,为了保证数据不丢,而进行流量控制。所谓滑动窗口,可理解为接收方所需要缓冲区的大小。

- 阅读剩余部分 -