TCP/IP知识总结(TCP/IP协议族读书笔记四)

  参考:http://blog.chinaunix.net/uid-26275986-id-4109679.html

  继续!TCP的流量控制和拥塞控制。

  TCP相对UDP可靠的地方在于它的拥塞控制、流量控制。

一.流量控制:

  如果发送方把数据发送得过快,接收方可能会来不及接收,这就会造成数据的丢失。所谓流量控制就是把发送方的发送速率不要太快,要让接收方来得及接收。利用滑动窗口机制可以很方便的在TCP连接上实现对发送方的流量控制。主要的方式就是返回ACK中会包含自己的接受窗口的大小,并且利用大小来控制发送方的数据发送。

  滑动窗口协议:TCP是全双工协议,发送方和接收方各自控制自己的缓冲区。发送放成功发送了数据,只有得到接收方的确认之后,才会移动滑动窗口离开已发送的数据;同时接收方则确认连续的数据分组,对于乱序的分组则先接收下来,避免网络重复传递

  停止等待协议:发送方和接收方都使用了大小为1的滑动窗口。发送方一次发送一个分组,然后在发送下一个分组之前要先等待一个确认。它是面向连接的,提供流量控制和差错控制。所需要的缓冲存储空间最小,缺点是信道效率很低。在任何时候信道中都只有一个分组和一个确认。流量控制是通过迫使发送方等待确认来实现,差错控制是通过丢弃损坏的分组并让发送方在计时器超市后重传未确认的分组来实现。

  返回N协议:为了提高传输的效率,在发送方等待确认时应当有多个分组正在传送中。也就是我们应当让多个分组处于等待确认的状态,以便发送方在等待确认的同时,信道也能保持忙绿的状态。GBN的关键是我们在收到确认之前能够发送多个分组,但接收方只能缓存一个分组。发送方为发送出去的分组保存副本直到确认到达。发送窗口必须小于2^m。(发送方不用等待接收方的应答,持续的发送多个帧,假如发现已发送的帧中有错误发生,那么从那个发生错误的帧开始及其之后所有的帧全部再重新发送。)复杂度低,但是不必要的帧会再重发,所以大幅度范围内使用的话效率是不高的。

  

  

  流量控制

  

二.拥塞控制

  网络中的链路容量和交换结点中的缓存和处理机都有着工作的极限,当网络的需求超过它们的工作极限时,就出现了拥塞。拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。常用的方法就是:
1. 慢开始、拥塞控制
2. 快重传、快恢复
     一切的基础还是慢开始,这种方法的思路是这样的:
-1. 发送方维持一个叫做“拥塞窗口”的变量,该变量和接收端口共同决定了发送者的发送窗口;
-2. 当主机开始发送数据时,避免一下子将大量字节注入到网络,造成或者增加拥塞,选择发送一个1字节的试探报文;
-3. 当收到第一个字节的数据的确认后,就发送2个字节的报文;
-4. 若再次收到2个字节的确认,则发送4个字节,依次递增2的指数级;
-5. 最后会达到一个提前预设的“慢开始门限”,比如24,即一次发送了24个分组,此时遵循下面的条件判定:
  *1. cwnd < ssthresh, 继续使用慢开始算法;
  *2. cwnd > ssthresh,停止使用慢开始算法,改用拥塞避免算法;
  *3. cwnd = ssthresh,既可以使用慢开始算法,也可以使用拥塞避免算法;
-6. 所谓拥塞避免算法就是:每经过一个往返时间RTT就把发送方的拥塞窗口+1,即让拥塞窗口缓慢地增大,按照线性规律增长;
-7. 当出现网络拥塞,比如丢包时,将慢开始门限设为原先的一半,然后将cwnd设为1,执行慢开始算法(较低的起点,指数级增长);

     上述方法的目的是在拥塞发生时循序减少主机发送到网络中的分组数,使得发生拥塞的路由器有足够的时间把队列中积压的分组处理完毕。慢开始和拥塞控制算法常常作为一个整体使用,而快重传和快恢复则是为了减少因为拥塞导致的数据包丢失带来的重传时间,从而避免传递无用的数据到网络。快重传的机制是:
-1. 接收方建立这样的机制,如果一个包丢失,则对后续的包继续发送针对该包的重传请求;
-2. 一旦发送方接收到三个一样的确认,就知道该包之后出现了错误,立刻重传该包;
-3. 此时发送方开始执行“快恢复”算法:
  *1. 慢开始门限减半;
  *2. cwnd设为慢开始门限减半后的数值;
  *3. 执行拥塞避免算法(高起点,线性增长);

QUIZ:

  TCP连接建立后,是通过什么保持的呢?

ANSWER:

  网络中接收和发送数据都是通过SOCKET实现的。但是如果套接字断开,那发送数据和接收数据就一定会出现问题。如何判断套接字是否可用呢?也就是如何保持长连接呢?TCP为我们设置了一个叫心跳的机制,如果设置了心跳,那么TCP就会在一定的时间内发送你设置的次数的心跳,并且此信息不会影响协议,让对方知道自己“还活着”,确保连接的有效性。

QUIZ:

  什么是长连接?什么是短连接?

ANSWER:

  长连接指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需要双方检测包以维持此连接;短连接是指通信双方有数据交互时,就建立一个TCP连接,数据发送完成后,则断开此TCP连接。长连接适用于操作频繁,点对点通信,且连接数不太多的情况;短连接适用于银行,因为它管理起来比较简单,存在的连接都是合理的连接。

  

  

时间: 2024-10-12 11:01:51

TCP/IP知识总结(TCP/IP协议族读书笔记四)的相关文章

TCP/IP知识总结(TCP/IP协议族读书笔记二)

接下来,总结一下网络层的协议,IP,ARP,RARP,ICMP,IGMP.当我们在网络传输的过程中,把分组交付到主机或路由器需要两级地址:物理地址和逻辑地址.而且我们需要能够把物理地址映射成为相应的逻辑地址,反过来的映射也是必要的. 这时候就涉及两个概念:静态映射与动态映射. 静态映射就是创建一个表,将逻辑地址与物理地址关联起来,这个表存储在网络的每一个机器上.可是存在于网络中的机器的物理地址是经常会发生改变的(更换网卡),这样静态映射表就得时常更新,影响网络的性能. 动态映射就是每当机器知道其

《TCP/IP详解 卷1:协议》读书笔记

第一章 概述 协议栈 应用层 HTTP,FTP   运输层 TCP, UDP 段(Segment) 网络层 IP, ICMP, IGMP 数据报(Datagram) 链路层   帧(Frame) 物理层     应用层关心的是应用程序的细节,而不是数据在网络中的传输活动:下面四层对应用程序一无所知,但它们要处理所有的通信细节. 互联网地址 端口号 周知端口号(Well-Known Ports) 1-255 Unix系统占用端口 256-1023 临时可分配端口 1024-5000 为其他服务预留

《TCP/IP详解 卷1:协议》读书笔记(第一章 概述 &amp; 第二章 链路层)

第一章 概述 TCP/IP协议族:四层协议系统 链路层(数据链路层.网络接口层)设备驱动程序和网络接口卡. 网络层(互联网层)处理分组在网络中的活动,点对点服务.IP.ICMP.IGMP 运输层提供端对端通信.TCP.UDP 应用层处理应用程序细节.Telnet.FTP.SMTP.SNMP 部分概念 构造互联网最简单的方法是把两个或多个网络通过路由器(Router)进行连接.路由器的好处是为不同类型的物理网络提供连接:以太网.令牌环网.点对点的链接等等. 网络层IP协议提供的是一种不可靠的服务.

TCP/IP协议组学习笔记

TCP/IP协议族学习笔记: 一.基础概念: (1)TCP(Transmission Control Protocol) 传输控制协议. (2)IP(Internet Protocol)网际协议.IP是一种不可靠的无连接数据协议,一种尽最大努力交付的服务. (3)ISP(Internet Service Provider)因特网服务提供者. (4)ISO 国际标准化组织. (5)IEEE 电气和电子工程学会. (6)W3C 万维网联盟. (7) OMA 开放移动联盟. (8)RFC(Reques

转: 视频相关的协议族介绍(rtsp, hls, rtmp)

转自: http://www.zhihu.com/question/20621558 作者:杨华链接:http://www.zhihu.com/question/20621558/answer/15661190来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 作为自己的专业知识领域,我决定更新本答案.版权保留,不得商用,转载必须在开始位置注明作者.出处.凭借印象完成,错漏地方,还请大家指正.----视频相关的协议有很多,不同的公司,甚至有自己的协议标准.本文尽量涵盖

TCP/IP协议族——IP工作原理及实例详解(上)

 IP协议详解 本文主要介绍了IP服务特点,头部结构,IP分片知识,并用tcpdump抓取数据包,来观察IP数据报传送过程中IP的格式,以及分片的过程. IP头部信息:IP头部信息出现在每个IP数据报中,用于指定IP通信的源端IP地址.目的端IP地址,知道IP分片和重组. IP数据报的路由和转发:IP数据报的路由和转发发生在出目标机器之外的所有主机和路由器上.他们决定数据报是否应该转发以及如何转发. IP服务的特点 IP协议是TCP/IP协议族的动力,它为上层协议提供无状态.无连接.不可靠的

TCP/IP协议族——IP工作原理及实例具体解释(上)

?? IP协议具体解释 本文主要介绍了IP服务特点,头部结构,IP分片知识,并用tcpdump抓取数据包.来观察IP数据报传送过程中IP的格式,以及分片的过程. IP头部信息:IP头部信息出如今每一个IP数据报中,用于指定IP通信的源端IP地址.目的端IP地址,指导IP分片和重组. IP数据报的路由和转发:IP数据报的路由和转发发生在出目标机器之外的全部主机和路由器上.他们决定数据报是否应该转发以及怎样转发. IP服务的特点 IP协议是TCP/IP协议族的动力.它为上层协议提供无状态.无连接.不

TCP/IP协议族

TCP/IP协议 TCP/IP协议栈主要分为四层:应用层.传输层.网络层.数据链路层,每层都有相应的协议,现在几乎所有的操作系统都实现了TCP/IP协议栈.如下图 上图运输层应为传输层 所谓的协议就是双方进行数据传输的一种格式.整个网络中使用的协议有很多,所幸的是每一种协议都有RFC文档.在这里只对IP.TCP.UDP协议头做一个分析. 首先来看看在网络中,一帧 以太网数据包的格式: 在Linux 操作系统中,当我们想发送数据的时候,我们只需要在上层准备好数据,然后提交给内核协议栈 , 内核协议

Android网络编程系列 一 TCP/IP协议族

在学习和使用Android网路编程时,我们接触的仅仅是上层协议和接口如Apache的httpclient或者Android自带的httpURlconnection等等.对于这些接口的底层实现我们也有必要进一步的了解,这就要我们了解网络通信层了,提到网络通信层不得不说起ISO-OSI的七层协议经典架构,如图所示: 上图的左边部分就是osi架构模型了, ISO/OSI模型,即开放式通信系统互联参考模型(Open System Interconnection Reference Model),是国际标