欢迎来到 跌倒的小黄瓜 的博客

♪(^∇^*)我要当大佬,(#^.^#)哈哈哈哈,(。-ω-)zzz我要成为优秀的人,(*^▽^*)٩(๑>◡<๑)۶O(∩_∩)O哈哈~~~~~~~~欢迎━(*`∀´*)ノ亻!

计算机网络-传输层2

TCP 概述

TCP 段结构

序列号和ACK

TCP可靠数据传输

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

触发重传的事件:超时,收到重复ACK

渐进式:暂不考虑重复ACK,暂不考虑流量控制,暂不考虑拥塞控制

TCP RTT 和超时

TCP发送方事件

  • 从应用层收到数据
    • 创建Segment
    • 序列号是Segment第一个字节的编号
    • 开启计时器
    • 设置超时时间:TimeOutInterval
  • 超时
    • 重传引起超时的Segment
    • 重启定时器
  • 收到ACK
    • 如果确认此前未确认的Segment
      • 更新SendBase
      • 如果窗口中还有未被确认的分组,重新启动定时器

看一段伪代码:

TCP 重传示例



接收方

快速重传机制

TCP的实现中,如果发生超时,超时时间间隔将重新设置,即将超时时间间隔加倍,导致其很大,重发丢失的分组之前要等待很长时间

  • 通过重复ACK检测分组丢失
    • Sender会背靠背地发送多个分组
    • 如果某个分组丢失,可能会引发多个重复的ACK
  • 如果sender收到对同一数据的3个ACK,则假定该数据之后的段已经丢失
    • 快速重传:在定时器超时之前即
      进行重传

快速重传算法

TCP 流量控制


TCP 连接管理

三次握手

TCP 生命周期

拥塞控制原理

拥塞(Congestion)

非正式定义:“太多发送主机发送了太多数据或者发送速度太快,以至于网络无法处理”

  • 表现:
    • 分组丢失(路由器缓存溢出)
    • 分组延迟过大(在路由器缓存中排队)

拥塞的成因和代价 : 场景1

拥塞的成因和代价 : 场景2


拥塞的成因和代价 : 场景3


拥塞控制的方法

  • 端到端拥塞控制:

    • 网络层不需要显式的提供支持
    • 端系统通过观察loss,delay等
    • 络行为判断是否发生拥塞
    • TCP采取这种方法
  • 网络辅助的拥塞控制:

    • 路由器向发送方显式地反馈网络拥塞信息
    • 简单的拥塞指示(1bit):SNA,DECbit, TCP/IP ECN, ATM)
    • 指示发送方应该采取何种速率

ATM ABR 拥塞控制


TCP 拥塞控制

TCP拥塞控制的基本原理

加性增— 乘性减: AIMD

TCP 慢启动: SS


Threshold变量

Loss 事件的处理

TCP 拥塞控制: 总结

TCP拥塞控制

TCP拥塞控制算法

TCP 性能分析

TCP throughput: 吞吐率

  • 给定拥塞窗口大小和RTT ,TCP 的平均吞吐率是多少 ?
    • 忽略掉Slow start
  • 假定发生超时时CongWin的大小为W,吞吐率是W/RTT
  • 超时后,CongWin=W/2,吞吐率是W/2RTT
  • 平均吞吐率为:0.75W/RTT

未来的TCP


TCP的公平性

具有公平性


不具公平性

小结

  • 传输层服务的基本原理

    • 复用/解复用
    • 可靠数据传输
    • 流量控制
    • 拥塞控制
  • Internet的传输层

    • UDP
    • TCP
posted @ 2020-03-23 18:35  跌倒的小黄瓜  阅读(363)  评论(0编辑  收藏  举报