美文网首页
网络复习-笔记06-传输层(2)

网络复习-笔记06-传输层(2)

作者: 桔子满地 | 来源:发表于2018-06-15 17:10 被阅读0次

TCP

  1. 点对点:
  • 一个发送方,一个接收方
  1. 可靠的、按序的字节流
  2. 流水线机制:
  • TCP拥塞控制和流量控制机制, 动态调整窗口尺寸
  1. 发送方/接收方缓存


    TCP发送方/接收方缓存.png

    (和SR略有相似)

  2. 全双工:

  • 同一连接中能够传输双向数据流
  1. 面向连接:
  • 通信双方在发送数据之前必须建立连接
  • 连接状态只在连接的两端中维护,在沿途节点中并不能维护状态(中间的路由器之类的并不维护这种连接的状态)
  • TCP连接包括:两台主机上的缓存、连接状态变量、socket等
  1. 流量控制机制

TCP段结构

TCP段结构.png

TCP:序列号和ACK

序列号:

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

ACKs:

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

处理乱序到达的segment:

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

TCP的可靠数据传输

  • TCP在IP层提供的不可靠服务基础上实现可靠数据传输服务

  • TCP使用了流水线机制

  • TCP使用了累计确认机制

  • TCP使用单一重传定时器

  • 触发重传的事件:1. 超时 2.收到重复ACK

  • 渐进式:1.暂不考虑重复ACK 2.暂不考虑流量控制 3.赞不考虑拥塞控制

TCP RTT和超时

设置定时器的超时时间时,考虑RTT的大小,需大于RTT。如果过短,则会进行不必要的重传;如果过长,又会对段丢失时间反应慢。
则需要估计RTT:

  • SampleRTT:测量从段发出去到收到ACK的时间:忽略重传
  • 测量多个SampleRTT,求平均值,形成RTT的估计值EstimatedRTT


    RTT估计值

    每次测量一次SampleRTT,就用该公式更新一下现有的EstimatedRTT。

定时器超时时间的设置:

  • EstimatedRTT + “安全边界”
  • EstimatedRTT变化大——说明需要较大的边界

安全边界的确定:

  • 测量RTT的变化值:SampleRTT和EstimatedRTT的差值


    RTT的变化值.png

则定时器超时时间的设置:


定时器超时时间的设置.png

TCP发送方事件

从应用层收到数据:

  • 创建segment
  • 序列号是segment第一个字节的编号
  • 开启计时器
  • 设置超时时间:TimeOutInterval

超时:

  • 重传引起超时的segment
  • 重启定时器

收到ACK:
如果确认此前未确认的segment:

  • 更新SendBase
  • 如果窗口中还有未被确认的分组,重新启动定时器

TCP重传示例

TCP重传示例(a).png

在(a)例中,ACK丢失,引起超时重传,重新传送seq92.

TCP重传示例(b).png

在(b)例中,超时时间设置过短,则ACK=100在超时时间内并未被收到,因此重传seq=92。接着又陆续收到ACK=100,ACK=120,因此陆续更新sendbase=100, sendbase=120。此时接收方又收到了seq=92,而之前接收方已经发送过ACK=120,故此时再发送一个ACK=120。

TCP重传示例(c).png

在(c)例中,ACK=100没有被收到,但是接收方并不知道,接收方已经正确的接收了seq=
92,则seq=100是按序收到的,于是接收方继续发送ACK=120。此时发送方收到120,则确认此前未确认的segment,并将sendbase更新为120。

TCP ACK的生成:

接收方:

  1. 收到一个按序的段,有个延迟ACK的动作,等待最多500ms,如果没有下一个段,就发送ACK
  2. 如果一个按序的段到了,并且之前有段在等待,则立即发送累计ACK,确认这两个段
  3. 如果一个乱序的段到了,立即发送重复ACK

快速重传机制

为什么要快速重传? TCP的实现中,如果发生超时,超时时间间隔将重新设置,即将超时时间间隔加倍,导致其很大

  • 重发丢失的分组之前要等待很长时间

可以通过重复ACK检测分组丢失:

  • sender会背靠背地发送多个分组
  • 如果某个分组丢失,可能会引发多个重复的ACK

如果sender收到对同一数据的3个ACK,则假定该数据之后的段已经丢失

  • 快速重传:在定时器超时之前即进行重传

TCP流量控制

接收方为TCP连接分配buffer:


接收方buffer.png

流量控制:控制发送方不会传输太多、太快以至于淹没接收方(buffer溢出),实际上是一个速度匹配机制

假定:TCP receiver丢弃乱序的segments
则如上图所示,buffer中的可用空间(spare room)= RcvWindow = RcvBuffer - [LastByteRcvd - LastByteRead]

  • recevier通过在segment的头部字段将RcvWindow告诉sender

  • sender限制自己已经发送的但还未收到ACK的数据不超过接收方的空闲RcvWindow尺寸

  • 如果recevier告知sender RcvWindow=0,则还是允许sender发送一个非常小的segment,以重新返回RcvWindow的大小。


TCP连接管理

TCP的sender和receiver在传输数据前需要建立连接
初始化TCP变量

  • seq.#
  • buffer和流量控制信息

Client:连接发起者

Socket clientSocket = new Socket("hostname", "port number");

Server:等待客户连接请求

Socket connectionSocket = welcomeSocket.accept( );

三次握手(非常重要):

  1. 客户机发送TCP SYN段给服务器,无数据
  2. 服务器接收SYN,回复SYNACK段给客户机,此时分配buffer给它
  3. 客户机接收SYNACK,回复它一个ACK段


    三次握手.png

四次挥手(非常重要):

TCP连接关闭:

client closes socket: clientSocket.close( );

四次挥手.png
  1. 客户机向服务器发送TCP FIN控制segment
  2. 服务器收到FIN,回复ACK,关闭连接,发送FIN
  3. 客户机收到FIN,回复ACK
  • 进入等待:如果又收到FIN, 则会重新发送ACK
  1. 服务器收到ACK,连接关闭。
TCP客户机生命周期.png TCP服务器生命周期.png

相关文章

  • 网络复习-笔记06-传输层(2)

    TCP 点对点: 一个发送方,一个接收方 可靠的、按序的字节流 流水线机制: TCP拥塞控制和流量控制机制, 动态...

  • 第四章 网络层

    个人复习计网的笔记,学习链接: 计算机网络 - B站视频链接 一、网络层提供的服务、 应用层产生数据消息,传输层负...

  • 传输层协议-TCP

    大学学习的TCP,发现还挺重要的,今天抽空复习一下。 传输层协议 传输层的功能:传输层位于网络层之上,网络层提供了...

  • 第五章 传输层

    个人复习计网的笔记,学习链接: 计算机网络 - B站视频链接 传输层为相互通信的应用程序提供了逻辑通信。 传输层协...

  • 网络复习-笔记05-传输层(1)

    重点部分: 掌握Internet的传输层协议: UDP:无连接传输服务 TCP: 面向连接的传输服务 TCP拥塞控...

  • 网络复习-笔记07-传输层(3)

    拥塞控制原理 在学习TCP拥塞控制之前,首先看看拥塞控制的基本原理拥塞控制非正式定义:“太多发送主机发送了太多数据...

  • 网络协议

    网络7层协议: 1 物理层 网线传送 2 数据链路层 3 网络层 4 传输层 传输层协议主要包括:传输控制协议TC...

  • 计算机网络 复习笔记 物理层

    目录 计算机网络 复习笔记 概述 计算机网络 复习笔记 物理层 计算机网络 复习笔记 数据链路层 计算机网络 复习...

  • 网络基础

    1.网络介绍2.OSI七层模型3.TCP/IP四层模型4.传输层协议 网络介绍 网络介绍网络分类网络设备传输介质 ...

  • 第二章 物理层

    个人复习计网的笔记,学习链接: 计算机网络 - B站视频链接 一、物理层的基本概念 物理层主要是解决在传输媒介上传...

网友评论

      本文标题:网络复习-笔记06-传输层(2)

      本文链接:https://www.haomeiwen.com/subject/scypeftx.html