传输层

  • 知识点
    • 1. UDP协议:无连接、不可靠、提供复用和分用功能
    • 2. 端口的概念;熟知端口的范围0-1023
      • 端口的概念
      • 端口
      • 两类端口
    • 3. TCP报文段格式
    • 4. TCP可变窗口的实现:报文段中的窗口字段
    • 5. TCP编号:面向字节
    • 6. TCP流量控制:可变滑动窗口
    • 7. TCP拥塞控制:慢开始、拥塞避免、加法增大、乘法减小、快重传、快恢复
      • 接收端窗口 rwnd 和拥塞窗口 cwnd
      • 慢开始
      • 拥塞避免
      • 乘法减小:
      • 慢开始和拥塞避免算法的实现举例
      • 快重传
      • 快重传举例
      • 快恢复
    • 8. TCP的连接建立:三次握手(注意TCP报文段中的相关字段设置)
      • 连接建立要解决的三个问题
      • 客户服务器方式
      • 三次握手
      • TCP的正常连接建立和关闭
  • 例题

知识点

1. UDP协议:无连接、不可靠、提供复用和分用功能

  • UDP 只在 IP 的数据报服务之上增加了很少一点的功能,即端口的功能和差错检测的功能。
  • 虽然 UDP 用户数据报只能提供不可靠的交付,但 UDP 在某些方面有其特殊的优点。
    • 发送数据之前不需要建立连接

    • UDP 的主机不需要维持复杂的连接状态表。

    • UDP 用户数据报只有8个字节的首部开销。

    • 网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。

      UDP传送速度快!

2. 端口的概念;熟知端口的范围0-1023

端口的概念

  • 端口就是运输层服务访问点 TSAP。通俗讲,就是传输层地址
  • 端口的作用就是让应用层的各种应用进程都能将其数据通过端口向下交付给运输层,以及让运输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程。
  • 从这个意义上讲,端口是用来标志应用层的进程

端口

  • 端口用一个 16 bit 端口号进行标志。
  • 端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。在因特网中不同计算机的相同端口号是没有联系的。

两类端口

  • 熟知端口,数值一般是0~1023。一些流行的服务,如Web、Email、Ftp等,使用熟知端口。
  • 一般端口,用来随时分配给请求通信的客户进程。

3. TCP报文段格式

  • 源端口和目的端口字段
    各占 2 字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。
  • 序号字段
    占 4 字节。TCP 连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。
  • 确认号字段
    占 4 字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。
  • 数据偏移
    占 4 bit,它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。“数据偏移”的单位不是字节而是 32 bit 字(4 字节为计算单位)。
  • 保留字段
    占 6 bit,保留为今后使用,但目前应置为 0。
  • 紧急比特 URG
    当 URG = 1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。
  • 确认比特 ACK
    只有当 ACK = 1 时确认号字段才有效。当 ACK = 0 时,确认号无效。
  • 推送比特 PSH (PuSH)
    接收 TCP 收到推送比特置 1 的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。
  • 复位比特 RST (ReSeT)
    当 RST = 1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。
  • 同步比特 SYN
    同步比特 SYN 置为 1,就表示这是一个连接请求或连接接受报文。
  • 终止比特 FIN (FINal)
    用来释放一个连接。当FIN = 1 时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。
  • 窗口字段
    占 2 字节。窗口字段用来控制对方发送的数据量,单位为字节。TCP 连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。
  • 检验和
    占 2 字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部。
  • 紧急指针字段
    占 16 bit。紧急指针指出在本报文段中的紧急数据的最后一个字节的序号。
  • 选项字段
    长度可变。TCP 只规定了一种选项,即最大报文段长度 MSS (Maximum Segment Size)。MSS 告诉对方 TCP:“我的缓存所能接收的报文段的数据字段的最大长度是MSS 个字节。
    (MSS 是 TCP 报文段中的数据字段的最大长度。数据字段加上 TCP 首部才等于整个的 TCP 报文段。)
  • 填充字段
    这是为了使整个首部长度是 4 字节的整数倍。

4. TCP可变窗口的实现:报文段中的窗口字段

占 2 字节。窗口字段用来控制对方发送的数据量,单位为字节。TCP 连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。

5. TCP编号:面向字节

  • TCP 协议是面向字节的。TCP 将所要传送的报文看成是字节组成的数据流,并使每一个字节对应于一个序号。
  • 在连接建立时,双方要商定初始序号。TCP 每次发送的报文段的首部中的序号字段数值表示该报文段中的数据部分的第一个字节的序号
  • TCP 的确认是对接收到的数据的最高序号表示确认。接收端返回的确认号是已收到的数据的最高序号加 1。因此确认号表示接收端期望下次收到的数据中的第一个数据字节的序号

6. TCP流量控制:可变滑动窗口

  • TCP 采用大小可变的滑动窗口进行流量控制。窗口大小的单位是字节。
  • 在 TCP 报文段首部的窗口字段写入的数值就是当前给对方设置的发送窗口数值的上限
  • 发送窗口在连接建立时由双方商定。但在通信的过程中,接收端可根据自己的资源情况,随时动态地调整对方的发送窗口上限值(可增大或减小)。

7. TCP拥塞控制:慢开始、拥塞避免、加法增大、乘法减小、快重传、快恢复

接收端窗口 rwnd 和拥塞窗口 cwnd

  • 接收端窗口 rwnd:来自接收端的流量控制
  • 拥塞窗口 cwnd:来自发送端的流量控制
  • 发送窗口的上限值 = Min [rwnd, cwnd]

慢开始

  • 先不考虑接收窗口
  • 刚刚开始发送报文段时,可先将拥塞窗口 cwnd 设置为一个最大报文段 MSS 。
  • 每收到一个报文段的确认,将拥塞窗口增加一个 MSS 。
  • 如果当前窗口的所有报文段的确认都收到,则拥塞窗口大小翻倍
  • 用这样的方法逐步增大发送端的拥塞窗口 cwnd,可以使分组注入到网络的速率更加合理

    Cwnd:1-> 2-> 4-> 8;指数规律增长

拥塞避免

  • 慢启动导致拥塞窗口大小指数规律增长
  • 为了控制慢启动,发送端为每个连接设置一个慢启动门限(slow start threshold)。
  • 其初始值很大,可以达到流量控制窗口的大小。
  • 连接建立后执行慢开始算法;如果拥塞窗口不断增大,超过了慢启动阈值,则转而执行拥塞避免算法
  • 当前窗口所有报文段的确认都收到,拥塞窗口大小增加一个MSS
  • 因此,拥塞窗口的增长变为线性规律 – 加法增大

乘法减小:

只要出现一次超时(即出现一次网络拥塞),就把慢开始门限值 ssthresh 设置为当前的拥塞窗口值乘以 0.5

慢开始和拥塞避免算法的实现举例

  • 当 TCP 连接进行初始化时,将拥塞窗口置为 1个MSS。
  • 慢开始门限的初始值设置为 16 个报文段,即 ssthresh = 16。
  • 发送端的发送窗口不能超过拥塞窗口 cwnd 和接收端窗口 rwnd 中的最小值。
  • 假定接收端窗口足够大,因此现在发送窗口的数值等于拥塞窗口的数值。

快重传

  • 快重传算法规定,接收方在收到一个失序的报文段后就立即发出重复确认(为的是使发送方及早知道有报文段没有到达对方)而不要等到自己发送数据时捎带确认。
  • 发送端只要一连收到三个重复的 ACK 即可认为有数据丢失,则可以立即重传丢失的报文段而不必继续等待为该报文段设置的重传计时器的超时
  • 不难看出,快重传并非取消重传计时器,而是在某些情况下可更早地重传丢失的报文段。

快重传举例

快恢复

  • 快重传一般配合快恢复使用
  • 快恢复:
    (1) 设置慢开始门限 ssthresh为当前拥塞窗口的一半。
    (2) 拥塞窗口 cwnd 不是设置为 1,而是设置为 ssthresh + n * MSS (n > 3), n代表重复的 ACK 数。
    (3) 重传丢失的报文段;
    (4) 收到重复的ack,则cwnd增加1;情况允许,发送一个新的报文段。
    (5) 若收到了新的 ACK,就将 cwnd 设置为 ssthresh(第1步中设置的数值) ,执行拥塞避免算法(加法增大)。

8. TCP的连接建立:三次握手(注意TCP报文段中的相关字段设置)

连接建立要解决的三个问题

  1. 要使每一方能够确知对方的存在。
  2. 要允许双方协商一些参数(如最大报文段长度,最大窗口大小,服务质量等)。
  3. 分配运输实体资源(如缓存大小,连接表中的项目等)。

客户服务器方式

  • TCP 的连接和建立都是采用客户服务器方式。
  • 主动发起连接建立的应用进程叫做客户(client)。
  • 被动等待连接建立的应用进程叫做服务器(server)。

三次握手

  • A 的 TCP 向 B 发出连接请求报文段,其首部中的同步比特 SYN 应置为 1,并选择序号 x,表明传送数据时的第一个数据字节的序号是 x。
  • B 的 TCP 收到连接请求报文段后,如同意,则发回确认。
    • B 在确认报文段中应将 SYN 置为 1,其确认号应为 x+1,同时也为自己选择序号 y。
  • A 收到此报文段后,向 B 给出确认,其确认号应为 y + 1。

TCP的正常连接建立和关闭

例题

  1. 主机甲和主机乙之间建立一个TCP连接,TCP最大段长为1000字节,若主机甲的当前拥塞控制窗口为4000字节,在主机甲向主机乙连续发送2个最大段后,成功收到主机乙发送的第一段确认段,确认段中通告的接受窗口大小为3000字节,则此时主机甲还可以向主机乙发送的最大字节数是
    A:1000 B:2000 C:3000 D:4000

  2. 主机甲和主机乙间已建立一个TCP连接,主机甲向主机乙发送了两个连续的TCP段,分别包含300字节和500字节的有效载荷,第一个段的序列号为200,主机乙正确收到两个段后,发给主机甲的确认序列号是
    A:500 B:700 C:800 D:1000

  3. 一个TCP连接总是以1KB的最大段发送TCP段,发送方有足够多的数据要发送。当拥塞窗口为16KB时发生了超时,如果接下来的5个RTT(往返时间)时间内的TCP段的传输都是成功的,那么当第5个RTT时间内发送的所有TCP段都得到肯定应答时,拥塞窗口大小是多少?
    答:
    发生拥塞后,拥塞门限设为8KB,拥塞窗口大小1KB;
    执行慢开始算法,每经过一个RTT,拥塞窗口翻倍;则经过3个RTT,拥塞窗口大小为8KB,转而执行拥塞避免算法;
    经过第5个RTT,拥塞窗口加2,为10KB。

  4. 主机A与主机B的TCP连接的MSS=1000B。主机A当前的拥塞窗口为4000B,主机A连续发送了两个最大报文段后,主机B返回了对第1个报文的确认,确认段中通知的接受窗口大小为2000B。那么,这时主机A最多能发送多少字节?
    答:
    1000B

  5. 假设TCP拥塞控制的AIMD算法中,慢开始SST1的阈值设置为8,当拥塞窗口上升到12时,发送端检测出超时,TCP使用慢开始与拥塞避免。那么,第1次到第15次传输的拥塞窗口分别为多少?
    答:
    超时后,拥塞门限降为6
    1到15次的拥塞窗口分别为2 4 8 9 10 11 12 1 2 4 6 7 8 9 10;

  6. 一个TCP连接采用慢开始算法进行拥塞控制。它的最大段长度为1KB,发送端一直有数据要发送。在拥塞窗口为16KB时发生了超时,如果接下来的4个RTT时间内TCP端传输都成功,那么当第4个RTT时间内发送的所有TCP段都得到肯定的回答。请问:拥塞窗口是多少?
    答:
    拥塞窗口为9(2 4 8 9)

  7. 图6-29给出了TCP连接建立的三次握手与连接释放的四次握手的过程示意图。请根据TCP协议的工作原理,写出图中1~8位置的序号值。

    1、10021
    2、10021 3、25610
    4、60036 5、16956
    6、60036
    7、16956 8、60037

计算机网络复习——Ch6传输层相关推荐

  1. 计算机网络运输层知识点,计算机网络复习——Ch6传输层

    传输层 知识点 1. UDP协议:无连接.不可靠.提供复用和分用功能 2. 端口的概念:熟知端口的范围0-1023 端口的概念 端口 两类端口 3. TCP报文段格式 4. TCP可变窗口的实现:报文 ...

  2. 无连接可靠传输_计算机网络-网络层和传输层

    计算机网络-网络层和传输层 网络层概述 面向连接的服务,即虚电路(virtual circuit) TCP/IP采用数据报服务,无连接的服务,因为网络层是整个互联网的核心,因此应当让网络层尽可能简单. ...

  3. 计算机网络05:传输层

    文章目录 5.1.传输层的两个协议 5.1.1.概述 5.1.2.TCP & UDP 协议的应用场景 5.1.3.传输层的端口 5.1.4.传输层协议和应用层协议之间的关系 5.1.5.网络安 ...

  4. 计算机网络笔记Part5 传输层(Transport Layer)

    本人计算机网络笔记总目录 计算机网络笔记Part1 概述 计算机网络笔记Part2 物理层(Physical Layer) 计算机网络笔记Part3 数据链路层(Data Link Layer) 计算 ...

  5. 计算机网络基础(传输层和它的两个朋友TCP、UDP)(传输层【上】)

    目录 UDP和TCP UDP UDP首部 TCP TCP报文段的首部格式 TCP的三次握手和四次挥手 传输层协议和应用层协议之间的关系 注意的网络安全 修改服务器默认端口 只开放必要端口 UDP和TC ...

  6. 计算机网络笔记-应用层/传输层/网络层(2w字详细整理)

    文章目录 计算机网络 计算机网络概述 互联网的组成 网络边缘部分 C/S方式 P2P对等方式 网络核心部分 电路交换 分组交换 报文交换 传输延时 计算机网络体系概述 OSI七层模型 TCP/IP四层 ...

  7. 计算机网络基础_4_传输层与应用层的作用

    传输层 引言: 传输层关心的是端到端的连接和传输 一.TCP:传输控制协议 1."三次握手","四次断开" 2.TCP的使用举例 端口 协议 说明 80 HTT ...

  8. 计算机网络应用层和传输层及网络层协议有哪些?

    应用层协议: 1.远程登录协议(Telnet) 2.文件传输协议(FTP) 3.超文本传输协议(HTTP) 4.域名服务协议(DNS) 5.简单邮件传输协议(SMTP) 6.邮局协议(POP3) 其中 ...

  9. 计算机网络-应用层和传输层协议分析实验(PacketTracer)

    实验三.应用层和传输层协议分析实验 一.实验目的 通过本实验,熟悉PacketTracer的使用,学习在PacketTracer中仿真分析应用层和传输层协议,进一步加深对协议工作过程的理解. 二.实验 ...

最新文章

  1. 使用office生成PDF文件
  2. SAP-采购订单交货成本抓取方法
  3. 数据库必会必知 之 SQL四种语言:DDL DML DCL TCL
  4. 机房USB被禁用的方法
  5. poj 2513 Colored Sticks( 字典树哈希+ 欧拉回路 + 并查集)
  6. 一个简单混合协议通讯列子,物联网和互联网通讯。
  7. 用几个最简单的例子带你入门 Python 爬虫
  8. 李沐新书中文版上线,零基础也可以《动手学深度学习》| 这不是0.7版
  9. 酒店客房管理系统任务汇报1
  10. zabbix中文乱码设置
  11. MAC 终端打开sublime3
  12. 编程基本功:创新是贬义词,与乱搞同义
  13. 工训物流小车视觉开源代码,包含二维码、条形码、物块、标识靶识别
  14. 计算机字体库位置,电脑cad软件字体库的路径怎么添加
  15. 基于STM32的RFID射频识别技术 韦根协议C语言驱动解码程序
  16. Eclipse中英文对照表(整理笔记)
  17. 2层框架结构柱子间距_2层框架结构如何选取柱子宽度尺寸
  18. 最大化参数 火车头_火车采集器,您身边的的网页数据采集专家!
  19. 端端正正做人,踏踏实实做事
  20. 如何在PPT中插入Visio文件

热门文章

  1. Android 7.1.1 插入耳机图标显示
  2. sublime text3 gb2312编码文件显示乱码,ConvertToUTF8转码失效
  3. CMS 触发GC(Allocation Failure)解析之标梵信息
  4. MFC日期控件(DateTimePicker)
  5. WebBrowser 事件
  6. Oracle约数,oracle 约束
  7. python全局变量一般没有缩进_关于Python的全局变量和局部变量,以下选项中描述错误的是...
  8. 高并发高可用的秒杀或抢券系统设计思考
  9. SpringBoot入门教程:Redisson分布式锁
  10. PostgreSQL教程--Ubuntu下PostgreSQL 安装教程