【计算机网络-哈工大】---学习笔记(中)---(一)传输层,UDP、可靠数据传输Rdt,TCP

本文详细介绍了互联网传输层的主要概念和服务,包括多路复用/分用、可靠数据传输机制、流量控制及拥塞控制。重点讨论了UDP和TCP协议,解释了UDP的无连接特性以及TCP的面向连接服务,特别是TCP的可靠传输、流量控制和拥塞控制策略。此外,还探讨了TCP的三次握手和四次挥手连接管理过程。
摘要由CSDN通过智能技术生成

1 传输层

  • 主要内容
    • 理解传输层服务的基本理论和基本机制
      • 多路复用/分用;
      • 可靠数据传输机制;
      • 流量控制机制;
      • 拥塞控制机制;
    • 掌握Internet的传输层协议
      • UDP:无连接传输服务;
      • TCP:面向连接的传输服务;
      • TCP拥塞控制;

1.1 传输层服务

1.1.1 传输层服务概述

  • 传输层协议为运行在不同Host上的进程提供了一种逻辑通信机制

image-20220707153007481

  • 1、传输层 vs 网络层
    • 传输层是应用进程之间,网络层是主机之间;

image-20220707153058136

  • 2、Internet传输层协议

image-20220707153422761

1.1.2 多路复用和多路分用

  • 传输层是应用进程之间的,一个主机会有多个进程;因此会需要多路复用和多路分用;

image-20220707153729428

  • 1、分用如何工作?

image-20220707154252065

  • 传输层根据端口号决定发送到哪一个socket
  • 网络层不关心端口号信息;
  • 2、无连接分用(UDP)

image-20220707161315461

  • UDP的socket使用二元组标识;此处有错误,应该是源端口号,目的端口号;

image-20220707161407391

  • SP是源端口号;DP是目的端口号;
  • 3、面向连接的分用(TCP)

image-20220707161622919

image-20220707161637162

  • 针对于P2-P6P3-P5,它们仅仅只有源端口号不同;
  • 4、面向连接的分用:多线程Web服务器

image-20220707162028814

  • 服务器用一个进程创建多个线程;P4创建了3个线程;

1.2 UDP协议

  • UDP:User Datagram Protocol [RFC 768],用户数据报协议

image-20220707163153398

image-20220707163239017

  • 右侧就是多路复用的(源端口号,目的端口号),length是UDP段的长度(包含头部);
  • checksum是UDP校验和(checksum);
  • UDP校验和(checksum)

image-20220707163639459

  • 检测错误的能力有限;
  • 校验和计算示例
    image-20220707164044554

1.3 可靠数据传输协议

1.3.1 可靠数据传输概述

  • 1、可靠数据传输原理

image-20220707165131675

  • 2、可靠数据传输协议基本结构:接口

image-20220707165445635

  • rdt_send()和deliver_data()都是单向的;
  • udt_send()和rdt_rcv()都是双向的,跟不可靠信道数据交互时,双向传送控制信息;
  • 3、可靠数据传输协议
  • 数据传输是单向的,控制信息是双向的;

image-20220707165625532

1.3.2 Rdt 1.0:可靠信道上的数据传输

image-20220707170619112

1.3.3 Rdt 2.0:产生位错误的信道

  • 2.0增加的部分
    • 1、校验和;
    • 2、接收方返回发送方的控制确认消息ACK\NAK;
    • 3、重传机制;

image-20220707171239317
image-20220707171351579

  • Rdt 2.0: 无错误场景
    image-20220707172656571

  • Rdt 2.0:有错误场景

image-20220707172638634

1.3.4 Rdt 2.1 和 Rdt2.2:ACK错误

  • 1、Rdt 2.0 缺陷
  • NAK也可能会坏掉;
  • 简单的重传,会产生重复分组;

image-20220707195928767

  • 1、Rdt 2.1 : 发送方,应对ACK/NAK破坏

image-20220707195945822

  • 2、Rdt 2.1 :接收方,应对ACK/NAK破坏

image-20220707200139833

  • 3、Rdt 2.1 vs Rdt 2.0

image-20220707200216910

  • 两个序列号足够,因为是停-等协议;
  • 4、Rdt 2.2 :无NAK消息协议

image-20220707200416927

  • 5、Rdt 2.2 状态机(判断)

image-20220707200443343

  • Rdt2.0的ACK错误之后,无法处理,2.1和2.2就加入一个重要的序列号机制;

1.3.5 Rdt 3.0:丢失分组

image-20220707201301926

  • 1、Rdt 3.0 : 发送方FSM

image-20220707201322885

  • 2、Rdt 3.0 示例(1)

image-20220707201354519

  • 3、Rdt 3.0 示例(2)
    image-20220707201605504
  • 设置这个时间timeout是关键;
  • 4、Rdt 3.0 性能分析
  • Rdt3.0能够正确工作,但性能很差;停-等协议;

image-20220707202222986

  • 网络协议与硬件配置要协同,软硬件协同设计,才能更好利用;
  • 5、Rdt 3.0 :停等协议—限制性能

image-20220707202345759

1.3.6 流水线机制与滑动窗口协议

  • 以上停等协议造成了效率的降低,引入流水线机制;提升资源利用率;

image-20220707202843252

  • 1、流水线协议
  • 序列号扩充,缓存扩充

image-20220707202948475

  • 2、滑动窗口协议(GBN,SR)
  • 管理已经发出,但还没有确认的分组;

image-20220707203137667

1.3.7 滑动窗口协议-GBN协议

  • Go-Back-N(GBN)协议:发送方

image-20220707204034246

  • 1、绿色是已经发送并且成功确认的分组;
    • 2、黄色是已经发送还没有确认的分组;
    • 3、蓝色是可以使用用来发送的序列号;
    • 4、不可以使用的序列号;
  • GBN是一种累积确认的机制;
  • 因为发生超时事件后,会重传所有序列号大于等于n的,因此存在资源浪费的情况;
  • 1、GBN:发送方扩展FSM

image-20220707204244515

  • 所谓的窗口滑动,其实就是base变量+1;
  • 2、GBN:接收方扩展FSM

image-20220707204500875

  • 接收方会维护一个变量,代表当前期望收到的序列号expectseqnum,并没有缓存;
  • 3、GBN示例

image-20220707204648122

  • 2发生timeout事件后,会重新发送2之后的序列;
  • 4、练习题–看接收确定的最大序列号3

image-20220707204945958

1.3.8 滑动窗口协议-SR协议

  • Selective Repeat协议
  • GBN累积确认(确认以最后一个序列号为准),会造成很多重复的重传分组;
  • SR单独确认,可以接收乱序到达的分组;

image-20220708163033013

  • 相比于SBN,SR多了一个接收方的窗口;
  • 1、Selective Repeat:发送方/接收方窗口

image-20220708163907467

  • 下方为接收滑动窗口,
    • 灰色表示目前期望收到的但还没有收到的序列分组;
    • 红色表示已经到达,并返回ack的分组;
    • 蓝色表示可以接收的窗口内的序列分组;
  • 发送方与接受方的窗口并不是同步的;
  • 2、SR协议

image-20220708164127224
** 3、SR协议示例**
image-20220708164147179

  • 4、SR协议:困境

image-20220708164327895

  • 注意,右侧两种情况,可以成功区分吗?
  • 因为序列号只有0123个状态,两次0状态不好区分;
  • 解决方案:就是空间大小与窗口尺寸满足一定要求;

1.3.9 可靠数据传输原理与协议回顾

image-20220708165317775

1.4 TCP协议

1.4.1 TCP概述

image-20220708165911773

  • 1、TCP段结构

image-20220708170625135

  • 2、TCP:序列号和ACK
    image-20220708173426729
  • 序列号指的是segment中第一个字节的编号;
    • 假如有1K的数据,拆分成两个segment,那么第二个segment的序号号通常是501或者500,是segment中第一个字节的编号;并不是segment个数的编号;
  • ACKs:是希望接收的下一个字节的序列号;
    • 累积确认像SBN协议;
  • 右图中,段的序列号是42,期望收到的字节序列号为ACK=79;

1.4.2 TCP可靠数据传输

image-20220710204647863

  • 1、TCP RTT和超时

image-20220710204928150

  • 考虑历史信息与当前信息,动态更新RTT的时间设置阈值;

image-20220710205100527

  • 变化大的话,安全边界也设置增大;
  • 2、TCP发送方事件

image-20220710205139158

  • 只会重传没有确认的那个;
  • 3、TCP发送端程序

image-20220710205222926

  • 4、TCP重传示例

image-20220710205329039

  • 累积确认机制,第二次会返回ACK=120;

image-20220710205556257

  • 主机A虽然没有收到ACK=100,但是收到了ACK=120就会更新为120;
  • 5、快速重传机制

image-20220710205825200

  • 利用发送方收到3个同一数据的ACK来开启重传机制
  • 6、快速重传算法

image-20220710205950752

1.4.3 TCP流量控制

image-20220710210111035

image-20220710210146610

  • 由接收方通过头部字段告诉发送方,目前可用的buffer大小来限制发送;
  • 即使是0,也可以发送很小的信息,以便响应信息携带信息告知;

1.4.4 TCP连接管理

image-20220710210855794

  • 三次握手:
    • 1、发送方首先第一次请求,SYN标志位置一,发送初始自己的初始序列号;
    • 2、接收方返回一个SYNACK,返回自己的初始序列号;
    • 3、发送方(客户端)收到SYNACK,同时SYN不再置一,回复一个ACK;表示客户端收到了服务端允许建立连接的信息,可以包含信息;
  • 1、TCP连接管理:建立

image-20220710211244479

  • 2、TCP连接管理:关闭

image-20220710211407116

  • 当服务器收到客户端的ACK才会真正关闭连接;
  • 3、TCP连接管理

image-20220710211645411

1.4.5 TCP拥塞控制原理

  • 1、拥塞控制
    image-20220710211930988

  • 2、拥塞的成因和代价:场景1,无限buffer

image-20220710212202477

  • 假设路由器有无线缓存,都可以逐渐发送,不会发生丢包和重传;
  • 吞吐量与时延跟随输入速率的曲线图;
  • 时延代价大;

3、拥塞的成因和代价:场景2,有限buffer

image-20220710213524293
image-20220710213535908

  • 由于丢失和重传,造成了资源的浪费;
  • 4、拥塞的成因和代价:场景3

image-20220710213853470

  • 4个路由器,有限缓存;
  • A向C发送,要占用上右路由器,D向B发送,红色和蓝色线会发送竞争;拥塞后会发送丢包;加入R2拥塞丢失造成重传,那么上游的路由资源都被浪费了;

image-20220710214114685

  • 当更大,说明网络已经瘫痪了,都在发送数据,但是几乎没有被接收到;
  • 5、拥塞控制的方法(两种)
  • 重点:管制发送方的发送速度;

image-20220710214308266

  • 6、ATM ABR拥塞控制

image-20220710214442247

  • 信息经过的一路的路由转发,期间的路由器都可以改变状态,接收方就可以通过这个信息知道拥塞情况;
  • 这个拥塞控制由接收方返回给发送方的;
  • 还有一种是中间网络设备直接向发送方发送控制信息分组的;当前讨论是ATM ABR;
  • 7、ATM ABR拥塞控制

image-20220710215113611

  • 红色就是资源管理的控制信息;
  • 接收方返回红色块给发送方;

1.4.6 TCP拥塞控制

  • 1、TCP拥塞控制的基本原理
  • 控制发送方的发送速率

image-20220711113201173

  • 发生拥塞,就将发送窗口长度变小,来减小发送速率;
  • 通过timeout或者3个重复ACK来判断感知网络拥塞;
  • 2、加性增—乘性减:AIMD
  • 线性加(一个一个的加),乘性减(直接减半,快速减);

image-20220711113647827

  • 3、TCP慢启动:SS

image-20220711114445623

image-20220711114521371

  • 4、Threshold变量
  • 线性增长与指数型增长的区别,以及何时使用切换?
  • 以Threshold为界限,指数增长到Threshold后开始线性增长;

image-20220711114739313

  • Threshold当发生拥塞,阈值减少为原来的一般;蓝色窗口直接降为1;
  • 改进:蓝色窗口也减少为一半,进入线性增长阶段;
  • 5、Loss事件的处理
  • 不同的事件处理不同
    • timeout意味着更加严重的拥塞;直接减为1;
    • 向上图减少一半,说明是3个ACK的Loss事件;

image-20220711115106561

  • 6、TCP拥塞控制算法

image-20220711115405404

  • 7、例题

image-20220711115519720

1.4.7 TCP性能分析

  • 1、TCP throughput:吞吐率

image-20220711115652530

  • 2、未来的TCP
  • 目前是否适用;

image-20220711115712248

image-20220711115739460

  • 3、TCP的公平性

image-20220711115921536

image-20220711115940647

  • 横轴是连接1的,纵轴是连接2的,右上45度是公平的,
  • 最终会收敛到45度公平性;

image-20220711120104912

  • 与UDP一起,就会差,不公平,UDP会一直发,TCP会控制;

image-20220711120113196

1.5 传输层总结

image-20220711120223273

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值