中科大郑烇、杨坚《计算机网络》课程 第三章笔记

第3章 传输层

文章目录


目标:
 理解传输层的工作原理
 多路复用/解复用
 可靠数据传输
 流量控制
 拥塞控制
 学习Internet的传输层协议
 UDP:无连接传输
 TCP:面向连接的可靠传 输
 TCP的拥塞控制

3.1 概述和传输层服务

传输服务和协议

  • 为运行在不同主机上的应用进程提供逻辑通信
  • 传输协议运行在端系统
    • 发送方:将应用层的报文分成报文段,然后传递给网络层
    • 接收方:将报文段重组成报文,然后传递给应用层
  • 有多个传输层协议可供应用选择
    • Internet: TCP(字节流的服务,不保证界限) 和 UDP

传输层 vs. 网络层

  • 网络层服务:主机之间的逻辑通信

  • 传输层服务:进程间的逻辑通信

    • 依赖于网络层的服务
      • 延时、带宽
    • 并对网络层的服务进行增强
      • 数据丢失、顺序混乱、 加密

有些服务是可以加强的:不可靠 -> 可靠;安全
但有些服务是不可以被加强的:带宽,延迟

Internet传输层协议

可靠的、保序的传输: TCP(字节流的服务)

  • 多路复用、解复用
  • 拥塞控制
  • 流量控制
  • 建立连接

不可靠、不保序的传输:UDP(数据包的服务)

  • 多路复用、解复用
  • 没有为尽力而为的IP服务添加更多的其它额外服务

都不提供的服务: 延时保证 带宽保证

3.2 多路复用与解复用

多路复用/解复用(一个TCP/UDP实体上有很多应用进程借助其发送)

在发送方主机多路复用
从多个套接字接收来自多个进程的报文,根据套接字对应的IP地址和端口号等信息对报文段用头部加以封装 (该头部信息用于以后的解复用)

在接收方主机多路解复用
根据报文段的头部信息中的IP地址和端口号将接收到的报文段发给正确的套接字(和对应的应用进程)

多路解复用工作原理

  • 解复用作用:TCP或者UDP实体采 用哪些信息,将报文段的数据部分 交给正确的socket,从而交给正确 的进程
  • 主机收到IP数据报
    • 每个数据报有源IP地址和目标地 址
    • 每个数据报承载一个传输层报 文段
    • 每个报文段有一个源端口号和 目标端口号 (特定应用有著名的端口号)
  • 主机联合使用IP地址和端口号将报文段发送给合适的套接字

无连接(UDP)多路解复用

当创建UDP段采用端口号,可以指定: • 目标IP地址 • 目标端口号
当主机接收到UDP段时: • 检查UDP段中的目标端 口号 • 将UDP段交给具备那个端口号的套接字
目标IP地址,目标端口号一样发送给同一个进程

image-20210725125946183

面向连接(TCP)的多路复用

TCP套接字:四元组本 地标识:  源IP地址  源端口号  目的IP地址  目的端口号
解复用:接收主机用 这四个值来将数据报 定位到合适的套接字

image-20210725125934798

socket 和message

3.3 无连接传输:UDP

UDP: User Datagram Protocol 用户数据包协议
在IP(主机到主机)所提供的基础上增加了一个多路复用/解复用(进程到进程)的服务

  • “尽力而为”的服务,报文 段可能

    • 丢失
    • 送到应用进程的报文段乱序(延迟不一样)
  • 无连接:

    • UDP发送端和接收端之间没有握手
    • 每个UDP报文段都被独立地处理
  • UDP 被用于:

    • (实时)流媒体(丢失不敏感, 速率敏感、应用可控制 传输速率)
    • DNS
    • SNMP
    • 事务性的应用(一次性往返搞定)
  • 在UDP上可行可靠传输:

    • 在应用层增加可靠性
    • 应用特定的差错恢复

UDP:用户数据报协议

image-20210725134800713

为什么要有UDP?

  1. 不建立连接 (会增加延时)

  2. 简单:在发送端和接收端没有连接状态

  3. 报文段的头部很小(开销小)

  4. 无拥塞控制和流量控制:UDP可以尽可能快的发送报文段

  5. 应用->传输的速率 = 主机->网络的速率 (忽略头部时)

UDP校验和
目标: 检测在被传输报文段中的差错 (如比特反转)

发送方:
 将报文段的内容视为16 比特的整数
 校验和:报文段的加法和(1的补运算)
 发送方将校验和放在 UDP的校验和字段

接收方:
 计算接收到的报文段的校验和
 检查计算出的校验和与校验和字段的内容是否相等:
 不相等––检测到差错
相等––没有检测到差错 ,但也许还是有差错 (残存错误,为检测出来)

Internet校验和的例子

注意:当数字相加时,在最高位的进位要回卷(加到最低位上),再加到结果上

image-20210725135335276

目标端:校验范围+校验和=1111111111111111 通过校验
 否则没有通过校验
 注:求和时,必须将进位回卷到结果上

3.4 可靠数据传输的原理

可靠数据传输(rdt)的原理 rdt(Reliable Data Transfer)

 rdt在应用层、传输层和数据链路层都很重要
 是网络Top 10问题之一

 信道的不可靠特点决定了可靠数据传输协议( rdt )的复杂性

image-20210725151016012

 渐增式地开发可靠数据传输协议( rdt )的发送方和接收方
 只考虑单向数据传输
 但控制信息是双向流动的!
双向的数据传输问题实际上是2个单向数据传输问题的综合
 使用有限状态机 (FSM) 来描述发送方和接收方

Rdt1.0: 在可靠信道上的可靠数据传输

下层的信道是完全可靠的

  • 没有比特出错
  • 没有分组丢失

发送方和接收方的FSM

  • 发送方将数据发送到下层信道
  • 接收方从下层信道接收数据

发送方:接收–封装–打走 接收方:解封装–交付 什么都不用干

Rdt2.0:具有比特差错的信道

下层信道可能会出错:将分组中的比特翻转
 用校验和来检测比特差错

 问题:怎样从差错中恢复:
 确认(ACK):接收方显式地告诉发送方分组已被正确接收
 否定确认( NAK): 接收方显式地告诉发送方分组发生了差错
• 发送方收到NAK后,发送方重传分组

 rdt2.0中的新机制:采用差错控制编码进行差错检测
 发送方差错控制编码、缓存
 接收方使用编码检错
 接收方的反馈:控制报文(ACK,NAK):接收方->发送方
 发送方收到反馈相应的动作

Rdt2.0:FSM描述

image-20210725152850739

发送方接收nak (接收方检测出错) ,将之前封装的package重传,直到收到ack才开始下一轮的发送

rdt2.0的致命缺陷!-> rdt2.1

如果ACK/NAK出错?
 发送方不知道接收方发生了什么事情!
发送方如何做?
重传?可能重复
不重传?可能死锁(或出 错)
需要引入新的机制
序号

处理重复:
 发送方在每个分组中加 入序号
 如果ACK/NAK出错,发送方重传当前分组
接收方丢弃(不发给上层)重复分组
接收方通过序号判断,是否重复接收同样的包,在进行下一次流程/发送ack

停等协议: 发送方发送一个分组, 然后等待接收方的应答

发送方:

  1. 在分组中加入序列号
     两个序列号(0,1)就 足够了
     一次只发送一个未经确认 的分组
  2. 必须检测ACK/NAK是否 出错(需要EDC )
    状态数变成了两倍
    必须记住当前分组的序列号为0还是1

接收方:

  1. 必须检测接收到的分组是否是重复的
     状态会指示希望接收到的 分组的序号为0还是1

注意:接收方并不知道 发送方是否正确收到了 其ACK/NAK

rdt2.1的运行

image-20210725154944808

接收方不知道它最后发送的ACK/NAK是否被正确地收到
 发送方不对收到的ack/nak给确认,没有所谓的确认的确认
 接收方发送ack,如果后面接收方收到的是:
老分组p0?则ack 错误
下一个分组?P1,ack正确

rdt2.2:无NAK的协议

  • 功能同rdt2.1,但只使用ACK(ack 要编号)
  • 接收方对最后正确接收的分组发ACK,以替代NAK
    • 接收方必须显式地包含被正确接收分组的序号
  • 当收到重复的ACK(如:再次收到ack0)时,发送方与收到NAK采取相同的动作:重传当前分组
  • 为后面的一次发送多个数据单位做一个准备
    • 一次能够发送多个
    • 每一个的应答都有:ACK,NACK;麻烦
    • 使用对前一个数据单位的ACK,代替本数据单位的nak
    • 确认信息减少一半,协议处理简单

NAK free

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值