计算机网络 自顶向下方法 第三章 运输层

rdt不同版本(rdt1.0,rdt2.0,rdt2.1,rdt2.2,rdt3.0)协议的特点以及发送端接收端的FSM 两个简单概念 可靠数据传输(Reliable Data Transfer,rdt),发送方通过该协议把数据交给更底层(比如传输层交给网络层),底层负责传输,接收方再通过该协议把数据取出。 有限状态机(Finite-state machine, FSM),又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。 rdt不同版本 备注:以下图来自Computer_Networking_A_Top-Down_Approach rdt 1.0 假设底层信道是完全可靠的, 阅读详情

Tags:计算机网络

第三章 运输层


3.1 概述和运输层服务

3.1.1 运输层和网络层的关系

  • 网络层提供了 主机 之间的逻辑通信。而运输层为运行在 不同主机上的进程 提供逻辑通信。
  • 运输层协议只工作在端系统上。
  • 运输协议能提供的服务受制于底层网络协议的服务模型。
  • 网络层协议,即 IP 协议,其服务模型是 尽力而为交付服务 ,但不做任何的保证。是 不可靠服务 。

3.1.2 因特网运输层概述

  • UDP 提供了一种不可靠、无连接的服务。
  • TCP 提供了一种可靠的、面向连接的服务。
  • 进程到进程的数据交付和差错检测是两种最低限度的运输层服务,也是 UDP 能提供的仅有的两种服务。

3.2 多路复用与多路分解

  • 多路分解: 将运输层报文段中的数据交付到正确的套接字。
  • 多路复用: 在源主机从不同的套接字中收集数据块,并为每个数据块封装上首部信息从而生成报文段,然后将报文传递到网络层。
  • 运输层多路复用要求:
    • 套接字有唯一标识符。
    • 每个报文段有特殊字符(端口号)来指示该报文段所要交付到的套接字。
    • 端口号:一个 16 比特的数,在 0 ~ 65535 之间。其中 0 ~ 1023 是周知端口号,是受限制的。

3.2.1 无连接的多路复用与多路分解

  • 用 clientSocket = socket(socket.AF_INET, socket.SOCK_DGRAM) 创建一个 UDP 套接字时,系统会自动为该套接字分配一个未被其他 UDP 套接字使用的端口号。
    也可以用clientSocket.bind(('',23333)) 显式的分配一个端口号。
  • 通常,应用程序的客户端让运输层自动地分配端口号,而服务器则分配一个特定的端口号。
  • 一个 UDP 套接字是由一个包含 目的 IP 地址 和 目的端口号 的 二元组 标识的。

3.2.2 面向连接的多路复用与多路分解

  • TCP 套接字是由一个 四元组(源 IP 地址,源端口号,目的 IP 地址,目的端口号)来标识的。

3.3 无连接运输:UDP

  • 选择 UDP 的原因:
    • 关于何时、发送什么数据的应用层控制更为精细。
    • 无需连接建立。
    • 无连接状态。
    • 分组首部开销小。
  • 用 UDP 建立可靠数据传输机制可以在应用层中实现。

3.3.1 UDP 报文结构

UDP 报文段结构
- 首部只有 4 个字段,每个字段 2 字节。其中,length 指示了 UDP 报文段中的 首部加数据的字节数。

3.3.2 UDP 检验和(上图中的 checksum)

  • 检验和 是 UDP 的差错检测机制。其实现方法是:
    1. 将 UDP 报文按 16 比特进行分组。
    2. 将两个 16 比特的数字相加得到一个 32 位的数。
    3. 将 2 中得到的 32 比特数的 高 16 位和低 16 相加。
    4. 重复第 2 步直到得到的和的高 16 位为 0。
    5. 将得到的 16 比特的数按位取反即为 检验和。
      • 注:计算之前的检验和为 0
      • 如果传输没有出错,则在接收方处计算的的检验和将是 11111111111111。若不是,则数据有错。

3.4 可靠数据传输原理

3.4.1 构造可靠数据传输协议

在这节将一步步研究一系列协议,它们一个比一个复杂,最后得到一个无错、完全可靠的数据传输协议。

1. 经完全可靠信道的可靠传输协议: rdt 1.0
  • 这是最简单的情况,假设底层信道是完全可靠的。
  • 有限状态机(FSM):
    • 箭头指示了协议从一个状态变迁到另一个状态。
    • 引起变迁的事件显示在横线的上方。
    • 事件发生时所采取的动作显示在横线的下方。
    • ^ 表示什么都不做。
      下图是发送方和接收方的 有限状态机:
      rdt 1.0
  • 发送方:
    • rdt_send(data): 接收较高层的数据。
    • make_pkt(data): 将数据打包成分组。
    • udt_send(packet): 将分组发送到信道中。
  • 接收方:
    • rdt_rcv(data): 从底层信道接收一个分组。
    • extract(packet,data): 从分组中取出数据。
    • deliver_data(data): 将数据传送给较高层。
2. 经具有比特差错信道的可靠数据传输:rdt 2.0
  • 假设底层信道传输的数据可能会有比特差错。但是仍然不会丢包。
  • 在接收方的协议中加入:
    • 差错检测
    • 接收方反馈
      • 肯定确认(ACK)
      • 否定确认(NAK)
    • 重传
      接收到有差错的分组时,发送方重传该分组。
  • 下图是 rdt 2.0 的 FSM:
    rdt 2.0
    • 当发送方处于等待 ACK 或 NAK 的状态时,它不能从上层获得数据。这被称为 停等协议。
2.1 rdt 2.1
  • rdt 2.0 中有一个致命的缺陷,就是没有考虑到 ACK 和 NAK 分组受损的可能性。
  • 解决这个新问题的一个简单的方法就是在数据分组中添加一个字段,让发送方对其数据分组编号,即将发送数据分组的 序号 放在该字段。
  • 于是,接收方只需要检查序号即可确定收到的分组是否一次重传。
  • 对于停等协议这种简单的情况,1 比特的序号就足够了。
  • 下图是 rdt 2.1 的 FSM:
    rdt 2.1 sender
    rdt 2.1 receiver
2.2 rdt 2.2
  • 当收到受损的分组时,rdt 2.0 的接收方会发送一个否定确认 NAK。
  • 如果不发送NAK,而是对上次正确接收的分组发送一个 ACK,则也能实现和 NAK 一样的效果。
  • 下图是 rdt 2.2 的 FSM:
    rdt 2.2 sender
    rdt 2.2 receiver
3. 经具有比特差错的丢包信道的可靠数据传输:rdt 3.0
  • 现在假定除了比特受损外,底层信道还会丢包。
  • 在 rdt 3.0 中,丢包的问题让发送方解决。不管是发送的分组丢失,还是接收方返回的确认分组丢失,只要在经过一定的时延后,让发送方重发该分组即可。由此产生的 冗余数据分组 则由接收方通过序号处理。
  • 下图是 rdt 3.0 发送方的 FSM:
    rdt 3.0 sender
  • 因为分组序号在 0 和 1 之间交替,因此 rdt 3.0 有时被称为 比特交替协议。
    比特交替协议

3.4.2 流水线可靠数据传输

  • r
计算机网络 自顶向下方法 第三章 运输层 习题答案 复习题 a)称此协议为简单传输协议(STP)。在发送方,STP从发送进程接收不超过1196字节的数据块、目标主机地址和目标端口号。STP向每个块添加一个四字节的头,并将目标进程的端口号放在此头中。然后,STP向网络层提供目标主机地址和生成的段。网络层将该段发送到目标主机上的STP。然后,STP检查段中的端口号,从段中提取数据,并将数据传递给由端口号标识的进程。 b)段现在有两个头字段:源端口字段... 阅读详情

相关推荐

【2021-11-06 修订】【梳理】计算机网络:自顶向下方法 第三章 运输层(docx)

计算机网络 知 识 梳 理 (第一版) 建议先修课程:数据结构。 配套教材: Computer Networking - A Top Down Approach, 7th edition James F. Kurose, Keith W. Ross 参考书目: 1、计算机网络(第7版) 谢希仁 编著 高等教育出版社 链接:https://pan.baidu.com/s/1yrKd2ePMjEUn_hCvS-Idnw 提取码:0000 三 运输层 3.1 运输层服务 先来回忆一下TCP和UDP。U

COFACTOR 1594

【计算机网络】【《计算机网络·自顶向下方法(原书第7版)》笔记】第三章:运输层

【计算机网络】【《计算机网络·自顶向下方法(原书第7版)》笔记】第三章:运输层

丷从心·的博客 2925

计算机网络自顶向下课本 第七版第三章习题解答

计算机网络自顶向下第七版

OpenWRT端口转发与NAT环回冲突的排查与解决

本文详细解析了OpenWRT路由器中端口转发与NAT环回功能冲突导致的内网访问故障。通过生活化类比阐明两者工作原理,提供从基础诊断到内核参数调整、LuCI选项配置及手动编写iptables规则的多套解决方案,并给出进阶排查思路,帮助用户彻底解决内网无法通过公网地址访问服务的常见问题。

weixin_29243279的博客 505

NoUnityCN:绕过地域限制,从Unity官方CDN直链下载全版本编辑器

在软件开发和游戏制作领域,内容分发网络(CDN)是保障全球用户高速、稳定获取大型文件的核心基础设施。其原理是通过将资源缓存至遍布各地的边缘节点,使用户能从地理距离最近的服务器获取数据,从而显著提升下载速度并降低源站压力。这一技术对于需要频繁下载大型开发工具(如游戏引擎)的团队而言,价值在于能确保开发环境部署的一致性与效率,是构建自动化CI/CD流水线和团队协作的基础。然而,当开发者因网络策略或地域限制无法直接访问官方CDN时,获取安装文件便成为阻碍工作流的痛点。NoUnityCN项目正是针对此场景的工程实践

weixin_33473110的博客 309

通达信【雷霆尊者排序】实战指南:高胜率竞价指标解析与优化策略

本文详细解析了通达信【雷霆尊者排序】指标在集合竞价阶段的应用,提供从基础设置到实战解码的完整指南。文章重点剖析了‘雷霆’、‘使者’、‘精选’等核心信号的逻辑与共振策略,并分享了如何结合K线、市场情绪进行综合研判与风险控制,旨在帮助短线交易者提升早盘选股效率与胜率。

pear55的博客 948

Unity中的坐标系及其转换方法

Unity中的坐标系及其转换方法 Unity中有四种坐标系: 1.全局坐标系 World Coordinate System 全局坐标系是用于描述场景内所有物体位置的方向的基准,也称为世界坐标系,Unity中创建的物体都是以全局坐标系中的坐标原点(0,0,0),来确定各自的位置的,可以使用transform.position来获取游戏对象的世界坐标。 2.局部坐标系 Local Coordinate System 局部坐标系也称为模型坐标系或物体坐标系,每个物体都有自身独立的物体坐标系。当物体移动或改变方向

Z_hongli的博客 8178

【血汗泪心路历程】怎么彻底删掉Sangfor文件?怎么彻底删除easyconnect?删除sangfor后网络坏了、某些app无法正常启动怎么解决?

教程来源于网络的五湖四海+gpt解答。用到了好几个教程和方法,遂这篇总结一下。会标明出处!先上一下战绩:终于把sangfor扔进回收站里了!!!哈哈哈那一刻真的好爽。

weixin_71246590的博客 6万+

泛微OA集成阿里云短信(E9保姆教程)

泛微OA集成阿里云短信(E9保姆教程)

技术分享 515

OpenClaw 在 Docker 容器中的部署实战——零配置启动

本文介绍了OpenClaw在Docker容器中的快速部署方法,对比了本地部署与容器化部署的优势。通过官方镜像和Docker Compose两种方式,5分钟即可完成部署,并详细讲解了配置管理方案(挂载配置文件和环境变量)。文章还提供了飞书集成配置方法,以及生产环境下的日志管理、资源限制、健康检查等优化建议。最后包含常见问题排查指南,帮助开发者快速实现OpenClaw的容器化部署。

刘一说的IT专栏 904

GeoServer下载与安装(详细图文教程)

GeoServer官方版可以方便的发布地图数据,允许用户对特征数据进行更新、删除、插入操作,通过 GeoServer 可以比较容易的在用户之间迅速共享空间地理信息。

大剑师兰特的GIS世界 3274

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

上一篇: 计算机网络 自顶向下方法 第二章 应用层
下一篇: PyMySQL 使用笔记
MemoryD
博客等级 码龄10年 64粉丝 43原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值