可靠数据传输原理 三 TCP协议

Http Socket 2018-06-16

TCP概述:RFCs-793,1122,1323,2018,2581

点对点

一个发送方,一个接收方。不支持一对多,比如一个发送方多个接收方

tcp使用流水线机制

TCP拥塞控制和流量控制机制设置窗口尺寸。
至于窗口尺寸的设置是一个比较复杂的事情了,他是基于拥塞控制和流量控制机制来动态调整窗口尺寸

发送方和接收方都设置缓存

他结合GBN和SR协议,发送方接收方都设置缓存

面向连接

  • 通信双方在发送数据之前必须建立链接。
  • 链接状态只在链接的两端中维护,在沿途节点中并不维护状态。
  • TCP链接包括:两台主机的缓存,链接状态变量,socket等

全双工

同一个连接中能够传输双向数据流

tcp的段结构

在tcp段结构中很多字段都还没有用,存在很多改进空间。

recevie window
所愿意接收的字节的字节数,来进行流量控制

序列号:

  • 序列号指的是segment中的第一个字节的编号,而不是segemnt的编号
  • 建立TCP连接时,双方随即选择序列号

不是segment的第几个这样的编号,而是第一个字节的编号
随机选择序列号,在链接之后,回互相交换信息

ACKs:

  • 希望收到的下一个字节的序列号
  • 累计确认:该序列号之前的所有字节均已被正确接收

acks表示下一个期望接收到的序列号的值
注意也是累计确认的有点像GBN

接收方如何处理乱序到达的Segement?

  • TCP规范中没有规定,由TCP的实现者做出决策

看一个例子

  1. 第一条线是在tcp链接已经建立的情况下,段的序列号是序列号是随机选择的。下一个期望接收到的序列号是79
  2. 主机b 返回的段的序列号为79,下一个期望接受到的为43。与此同时43之前的都已经被确认了
  3. 之后主机a要再发一个确认,这时候data里面不带任何数据。序列号变成了43,ack变成了80

之前看了大量的可靠传输的原理,下面来看tcp是用到了哪些可靠传输的原理来实现可靠传输服务的。

IP层是不可靠的,tcp要把他转换为可靠的服务

  • TCP在IP层提供的不可靠服务基础上实现可靠数据传输服务
  • 流水线机制
  • 累计确认
  • Tcp使用单一重传定时器

后面要了解下单一计时器是怎么使用的


本文由 方方無 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

还不快抢沙发

添加新评论

shijiebei 365bet manbetx 188bet xinshui caipiao 95zz tongbaoyule beplay 88bifa 18luck betway bwin hg0088 aomenjinshayulecheng ca88 shenbotaiyangcheng vwin w88 weide