写在前面:
此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出。欢迎各位前来交流。(部分材料来源网络,若有侵权,立即删除)
记录计网学习(复习)

计网学习 第三章 part one

  • 3第三章 运输层
    • 3.1运输层服务
      • 3.1.0概述
      • 3.1.1运输层和网络层的关系
      • 3.1.2因特网与运输层的关系
    • 3.2多路复用与多路分解
      • 3.2.1无连接的多路复用和分解
      • 3.2.2面向连接的多路复用与多路分解
    • 3.3无连接运输:UDP
      • 3.3.1 UDP 报文段结构
      • 3.3.2 UDP 检验和
    • 3.4 可靠数据传输原理
      • 3.4.1 构造可靠数据传输协议
        • 经完全可靠信道的可靠数据传输: rdt 1.0
        • 经具有比特差错信道的可靠数据传输:rdt 2.0
        • rdt 2.1
        • rdt 2.2
        • rdt 3.0

3第三章 运输层

3.1运输层服务

3.1.0概述

  • 运输层协议提供逻辑通信,在端系统中实现(provide logical communication between app processes running on ifferent hosts)

  • 分组:报文段(segment)

  • 服务于运行在不同主机上的进程

  • 中间路由器既不处理也不识别运输层加在应用层的任何信息

  • 运输协议能够提供的服务常常受制于底层网络层协议的服务模型

3.1.1运输层和网络层的关系

  • TCP(传输控制协议)/reliable

    • data delivery and error checking
    • flow control
    • congestion control
    • connection setup
  • UDP(数据用户报协议)/unreliable

    • only provide data delivery and error checking
    • no-frills extension of “the best”
  • 底层网络协议是不可靠的,会使分组丢失、篡改和冗余

  • 运输层协议能为应用程序提供可靠的数据传输服务

3.1.2因特网与运输层的关系

  • TCP和UDP的分组统称为报文段

  • 因特网网络层协议:IP(网际协议)

    • 为主机之间提供逻辑通信

    • IP的服务模型是尽力而为交付服务( best-effort delivery service)

    • 不做任何确保

      • 不确保报文的交付
      • 不保证报文的按序交付
      • 不保证报文段数据中的完整性
  • 进程到进程间的数据交付与差错检查是两种最低限度的运输层服务

3.2多路复用与多路分解

  • 多路分解与多路复用:将主机间交付扩展到进程间的交付
  • 一个进程有一个或多个套接字(socket)
  • 运输层将数据交付给套接字
  • 每一个套接字都有唯一的标识符
  • 标识符的格式取决于它是UDP还是TCP套接字
  • 多路分解(demultiplexing):将运输层报文中的数据交付到正确的套接字的工作
  • 多路复用(multiplexing)在源主机从不同套接字中收集数据块,并为每一个数据块封装首部信息(这在以后用于分解)从而生成报文段,然后将报文段传递到网络层
  • 运输层多路复用要求:
    • 套接字有唯一标识符
    • 每个报文段有特殊字段来指示该报文段所要交付到的套接字
  • 0-1023端口:周知端口号
    • HTTP:80
    • FTP:20,21
    • DNS:53
    • IMAP:143
    • SMTP:25
    • POP3:110
  • 1023-65535:动态/私有端口

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

  • 每个进程有自己的UDP套接字及相应的端口号
  • 网络到达TCP报文段时,主机通过检查该报文段中的目的的端口号,将每个报文定向(分解)到相应的套接字
  • 一个UDP套接字是由一个二元组来全面标识:
    • 目的IP地址
    • 目的端口号
  • 二者相同就会被套接字定位到相同的目的的进程
  • 源端口号:用作“返回地址”的一部分

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

  • TCP套接字由一个四元组来标识:

    • 源IP地址
    • 源端口号
    • 目的IP地址
    • 目的端口号
  • 两个具有不同源IP地址或源端口号的到达TCP报文段将被定向到两个不同的的套接字;除非TCP报文携带了初始创建连接的请求。

  • 到一个TCP报文段到达主机时,所有4个字段被用来将报文段定向到相应的套接字

  • 连接1套接字与进程之间并非总是有着一一对应的关系

3.3无连接运输:UDP

  • “我们必须做一点点事,而不是什么都不做”

  • UDP协议只是做了运输协议能够做的最少工作,除了复用/分解以及少量的差错检测外,它几乎没有对IP增加别的东西

  • UDP被称为是无连接的:发送方和接收方的运输实体之间没有握手

  • TCP20字节首部开销

  • UDP8字节首部开销

  • UDP uesed in:

    • streaming multimedia apps (loss tolerant, rate sensitive)
    • DNS
    • SNMP (Simple Network Management Protocol)
    • RIP (Routing Information Protocol)
  • 应用首选UDP原因:

    • 关于何时、发送什么数据的应用层控制更为精细
    • 无需建立连接
    • 无连接状态
    • 分组首部开销小
  • UDP和TCP都用于多媒体应用,如因特网电话、实时视频会议、流式储存音频与视频

  • 使用UDP是可以实现可靠数据传输的

    • 通过在应用程序自身中建立可靠性机制来完成

      • 例如通过增加确认与重传机制来实现

3.3.1 UDP 报文段结构

  • UDP首部仅有四个字段每个字段两个字节,一共32比特

    • 源端口号

    • 目的端口号

      • 使目的主机将应用数据交给运行在目的端系统中的相应进程(执行分解功能)
    • 长度

      • 指示了在UDP报文段中的字节数(首部加数据)
    • 检验和

      • 使用检验和来检验在该报文中是否出现了差错

3.3.2 UDP 检验和

  • 检验和提供了差错检验功能
  • 发送方的UDP对报文中的所有16比特字的和进行反码运算,求和时遇到的任何溢出都被回卷
  • 得到的结果被放在UDP报文段中的检验和字段
  • 在接收方,全部的4个16比特字(包括检验和)加在一起,如果分组中没有引入差错,则显然在接收方处该和将是1111111111111111,如果这些比特之一是0,那么该分组已经出现差错
  • 端到端原则(end-end principle):在既无法确保逐链路的可靠性,又无法确保内存中的差错检测的情况下,如果端到端数据传输服务要提供差错检测,UDP就必须在端到端基础上在运输层提供差错检测
  • UDP提供差错检测,但它对差错恢复无能为力
  • UDP的某种实现只是丢弃受损的报文段,其他实现可以是将受损的报文段交给应用程序并给出警告

3.4 可靠数据传输原理

  • 可靠数据传输协议(reliable data transfer protocol):RDT
  • 不可靠数据传输(udt)
  • 单向数据传输(unidirectional data transfer)
  • 双向数据传输(bidirectional data transfer)

3.4.1 构造可靠数据传输协议

经完全可靠信道的可靠数据传输: rdt 1.0

  • 底层信道完全可靠:rdt:1.0
  • 有限状态机(Finite-State Machine,FSM)
  • sender sends data into underlying channel
  • receiver reads data from underlying channel

经具有比特差错信道的可靠数据传输:rdt 2.0

  • underlying channel may flip bits in packet

    • still assume the packets arrive at receiver in order, no loss
    • checksum to detect bit errors
  • 肯定确定(positive acknowledgment)

  • 否定确认(negative acknowledgment)

  • 如何恢复

    • (positive) acknowledgements (ACKs): receiver explicitly tells sender that pkt received OK
    • negative acknowledgements (NAKs): receiver explicitly tells sender that pkt had errors (need repeat)
    • sender retransmits pkt on receipt of NAK
  • 基于重传机制的可靠传输协议称为自动重传请求(Automatic Repeat ,ARQ)协议

    • 差错检测( error detection)
    • 接收方反馈: feedback(肯定确认:ACK,否定确认:NAK)
    • 重传(retransmission)

  • rdt2.0的发送端有两个状态

    1. 发送端正在等待,产生rdt_send(data)事件时,发送方将产生一个包含待发送的数据的分组(sndpkt)带有检验和,如何经udt_send(smdpkt)操作发送该分组
    2. 发送方协议等待来自接收方的ACK或NAK分组
      • 如果收到ACK分组,则发送方知道最近发送的分组已被正确接收,因此协议返回到等待来自上次的数据的状态
      • 如果收到NAK分组,该协议重传最后一个分组并等待接收方响应重传分组而送回送的ACK或NAK
      • 当发送方处于等待ACK或NAK时,它不能从上层获取更多的数据,仅当接收到ACK并离开该状态时才能获取更多的数据
  • rdt2.0的接收端仅有一个状态
    • 当分组到达时, 接收方回答ACK或NAK,取决于分组是否受损
  • 缺陷:ACK与NAK分组受损
    • introducing a new type of sender-to-receiver packet, similar to human say “what did you say?”

      • Receiver repeat the ACK/NAK packet
      • “What did you say?” is corrupted?
    • add checksum bits to allow the sender to detect and recover (effective for corrupt packets but no loss, How to solve the problem of ACK/NAK loss?)
    • sender simply to resend the current data packet when receives a garbled ACK or NAK packet!
  • 要点:正确收到ACK则发下个新数据,正确收到NAK则重发老数据,无法确认ACK或NAK(错误数据)则重发老数据,避免漏发
  • 解决上述问题的一个新方法:在数据分组中添加一新字段,让发送方对其数据分组编号,即将发送数据分组的序号(sequence number)放在该字段。

rdt 2.1

  • sender, handles garbled ACK/NAKs

  • receiver, handles garbled ACK/NAKs

  • rdt 2.1使用了从接收方到发送方的肯定确认和否定确认

    • 当接收到失序分组时,接受方对所接受的分组发送一个肯定请求
    • 如果收到受损的分组,则接收方将发送一个否定确认
    • 发送方接收到对同一个分组的两个ACK(冗余ACK duplicate ACK)后,就知道接收方没有正确接收到跟在被确认两次的分组后面的分组

rdt 2.2

  • 接收方此时必须包括由一个ACK报文所确认的分组序号
  • 发送方此时必须检查接收到的ACK报文中被确认的分组序号
  • 当发送方收到接收方反馈的ACK中出现冗余情况(即接收方并未收到预期编号的正确数据包),发送方认为刚才发送的数据存在错误,则重发该数据。

rdt 3.0

  • 考虑底层丢包( channels with errors and loss
  • 怎样检测丢包以及发生丢包后该做什么
  • 基于时间的重传机制,倒计数定时器(countdown timer)
    • 在一个给定的时间量过期后,可中断发送方
  • 发送方需要做到
    • 每次发送一个分组时,便启动一个定时器
    • 响应定时器中断
    • 终止定时器
  • 比特交替协议(alternating-bit protocol)

继续加油!冲冲冲
end
禁止转载

计网复习第三章part one相关推荐

  1. 计网复习——第三章 数据链路层

    目录 1. 使用点对点信道的数据链路层 1.1 数据链路和帧 1.2 三个基本问题 1.2.1 封装成帧 1.2.2 透明传输 1.2.3 差错检测 2. 点对点协议PPP 2.1 PPP协议的特点 ...

  2. 计网PPT 第三章 数据链路层

    目录 数据链路层使用的信道 数据链路层的简单模型 1.使用点对点信道的数据链路层 Ⅰ.数据链路和帧 数据链路层传送的是帧 数据链路层像个数字管道 Ⅱ.三个基本问题 封装成帧 透明传输 差错检测 2.点 ...

  3. 【计网】第三章 数据链路层(5)广域网协议PPP、HDLC,数据链路层设备

    目录 3.7 广域网及相关协议 一.广域网 二.PPP 协议的特点 三.PPP 协议应满足的要求 四.PPP 协议无需满足的要求 五.PPP 协议的三个组成部分 六.PPP 协议的状态图 七.PPP ...

  4. 计网复习_复习重点纲要(一)_前三章

    计网第七版 计网复习路线如下: 走一轮复习重点(本章) 根据往年试卷了解考什么,考的形式,加强知识 总结题型,后续将按照个人对于这门课看待总结题型,如大题预测题型版等 回顾二轮复习重点(本章) 第一章 ...

  5. 计网复习——传输层习题

    计网复习--传输层习题 1. 主机A向主机B连续发送了两个TCP报文段,其序号分别为70和100.试问: (1)第一个报文段携带了多少个字节的数据? (2)主机B收到第一个报文段后发回的确认中的确认号 ...

  6. 吉林大学软件学院计网复习知识点

    吉林大学软件学院计网复习知识点 目录 前言 单项选择题知识点 填空题知识点 名词解释题知识点 简答题知识点 应用题知识点 课后习题答案 尾声 前言 大家好,我是星辉,以上便是根据我手头的资料整理的,希 ...

  7. 计网复习day01 2020.8.18

    计网复习day01 2020.8.18 一些填空题 计算机网络由通信子网和资源子网组成 报文交换网络分为虚电路交换网络和数据报交换网络 OSPF的名字是开放最短路径优先,使用了分布式的链路状态协议,R ...

  8. 计网复习笔记【附思维导图】——【2】应用层

    计网复习笔记[附思维导图]--[2]应用层 计网 应用层 2.1 应用层协议原理 位置 应用层协议含义 应用层协议类型 网络应用程序架构 进程通信 网络应用需要的运输层服务 Internet提供的运输 ...

  9. 计网复习——数据链路层习题

    计网复习--数据链路层习题 1. 要发送的数据为1101011011.采用CRC的生成多项式是P(X)=X^4+X+1.试求应添加在数据后面的余数. ​ 采用CRC的生成多项式是P(x)=X4+X+1 ...

最新文章

  1. SQL Server中数据的修改是如何落盘的?
  2. FormData上传文件同时附带其他参数
  3. 使用curl操作InfluxDB
  4. java屏蔽关键字_替换禁用语(指定关键字)的过滤器
  5. 【图像缩放】双立方(三次)卷积插值
  6. vbs隐藏cmd命令窗口调用bat程序执行class
  7. linux signal 符号表6,gdb调试信息__000_linux-gnu_00000000_002_rw-p__169IT.COM
  8. linux远程无密码登录,linux ssh无密码登录,远程执行脚本文件
  9. JavaScript-Tool:CKFinder
  10. ModelSim ALTERA 6.5b 下载安装以及使用
  11. js导出excel文件
  12. 电脑蓝牙连接android程序,win7系统下电脑与Android手机蓝牙连接方法
  13. 阿里云DataV数据展示的一些sql写法
  14. linux中创建目录树,linux怎样创建目录树
  15. 大学娱乐化值得高度警惕——胡乐乐
  16. 想知道CAD怎么转图片格式?跟我学会这几招就足够了
  17. WPF中的右键菜单ContextMenu
  18. About Sealed
  19. macOS下制作U盘启动盘和安装白苹果教程
  20. 搜索学——什么可以搜,怎么搜

热门文章

  1. 面向对象语言编程的心得
  2. 【less-4】sqli-labs靶场第四关
  3. 牛客网 - 机器人走方格 (动态规划)
  4. 【Spring Cloud】注册中心-Nacos
  5. 【JavaScript】我所知道的JavaScript
  6. 敏捷开发中的MoSCoW优先级排序方法
  7. 排序算法第五篇——快速排序
  8. 敏捷开发一千零一问系列之九:总体架构什么时机进行?(上)
  9. Mysql和Oracle语句区别
  10. python 基本数据结构 ndarray