计算机网络笔记分享(第五章 运输层)

文章目录

  • 五、运输层
    • [5.1 运输层协议概述](#5.1 运输层协议概述)
    • [5.2 UDP 用户数据报协议](#5.2 UDP 用户数据报协议)
    • [5.3 TCP 传输控制协议概述](#5.3 TCP 传输控制协议概述)
    • [5.4 可靠传输的工作原理](#5.4 可靠传输的工作原理)
    • [5.5 TCP报文段的首部格式](#5.5 TCP报文段的首部格式)
    • [5.6 TCP可靠传输的实现(重点)](#5.6 TCP可靠传输的实现(重点))
    • [5.7 TCP的流量控制](#5.7 TCP的流量控制)
    • [5.8 TCP的拥塞控制](#5.8 TCP的拥塞控制)
    • [5.9 TCP的运输连接管理](#5.9 TCP的运输连接管理)

介绍

学习计算机网络的过程中,我整理了一些比较关键的、考试可能会考的点,有些具体的点可能没涉及到。后面会持续更新,希望对大家有所帮助!

五、运输层

5.1 运输层协议概述

网络层为主机之间的通信提供服务

而运输层在网络层的基础上,为应用进程之间的通信提供服务

5.2 UDP 用户数据报协议

  • 无连接:UDP是无连接的协议,不需要建立连接即可发送数据包。
  • 不保证可靠性:UDP不保证数据包的交付顺序和完整性,没有重传机制和确认机制。
  • 低延迟:由于没有连接建立和维护的开销,UDP传输延迟较低,适合实时性要求高的应用。
  • 轻量级:UDP的头部开销小,仅包含基本的源端口、目的端口、长度和校验和字段。

5.3 TCP 传输控制协议概述

  • 连接导向:TCP是面向连接的协议,在发送数据之前需要建立一个连接(三次握手)。
  • 可靠传输:TCP提供可靠的数据传输,通过确认(ACK)、重传机制和序列号确保数据包按顺序且无误地到达接收方。
  • 流量控制:TCP使用滑动窗口机制来控制发送方的数据发送速率,以防止接收方被数据淹没。
  • 拥塞控制:TCP具有拥塞控制机制,如慢启动、拥塞避免、快速重传和快速恢复,以应对网络拥塞。
  • 双向通信:TCP支持全双工通信,即数据可以在同一连接中同时进行发送和接收。

5.4 可靠传输的工作原理

(1)首先,采用三次握手 来建立TCP连接,四次挥手来释放TCP连接,从而保证建立的传输信道是可靠的。

(2)其次,相比停止等待协议,换成流水线传输。TCP采用了连续ARQ协议 (回退N,Go-back-N;超时自动重传)来保证数据传输的正确性,使用滑动窗口协议来保证接方能够及时处理所接收到的数据,进行流量控制。(回退N帧协议Plus版?)

(3)最后,TCP使用慢开始、拥塞避免、快重传和快恢复来进行拥塞控制,避免网络拥塞。

5.5 TCP报文段的首部格式

端口号:0-65535 ( 2 16 2^{16} 216次方,所以要16位)

5.6 TCP可靠传输的实现(重点)

以字节为单位的滑动窗口

已发送并确认 P1 已发送未确认 P2 允许发送但尚未发送 P3 不允许发送

P3 - P1 = 发送窗口大小

P3 - P2 = 可用窗口(有效窗口)

超时重传时间的选择

RTTS

采用自适应算法,在记录报文段的往返时间RTT的基础上,保留加权平均往返时间RTTs(平滑的往返时间)

新 R T T s = ( 1 − α ) × ( 旧 R T T s ) + α × ( 新 R T T ) 新RTTs = (1-\alpha) \times (旧RTTs) + \alpha \times (新RTT) 新RTTs=(1−α)×(旧RTTs)+α×(新RTT)

α \alpha α 接近于0, 变化不大,RTT更新慢; 接近1,变化接近于新RTT,更新快

超时重传时间RTO

略 > RTTs

R T O = R T T s + 4 × R T T D RTO = RTTs + 4 \times RTT_D RTO=RTTs+4×RTTD RTTD是RTT的偏差的加权平均值

如何判定此确认报文段是对原来的报文段1的确认, 还是对重传的报文段2的确认?

Karn 算法

在计算平均往返时间RTT时,只要报文段重传了, 就不采用其往返时间样本。

这样得出的加权平均平均往返时间 RTTs 和超时重传时间 RTO 就较准确。 但是,这又引起新的问题。当报文段的时延突然增大了很多时,在原来得出的重传时间内,不会收到确认报文段。于是就重传报文段。但根据 Karn算法,不考虑重传的报文段的往返时间样本。这样, 超时重传时间就无法更新。

报文段每重传一次,就把 RTO增大一些:

新 R T O = γ × 旧 R T O 新RTO = \gamma \times 旧RTO 新RTO=γ×旧RTO

系数γ的典型值是2 。 当不再发生报文段的重传时,才根据报文段的往返时延更新平均往返时延 RTTs 和超时重传时间 RTO 的数值。

选择确认SACK

SACK允许接收方在单个确认中指示已成功接收的非连续数据段,而不仅仅是下一个期望的序列号。

SACK选项包含一个或多个SACK块,每个SACK块指定了一个已成功接收的非连续数据段的起始和结束序列号。格式如下:

Kind Length Left Right
5 18 1000 2000
3000 4000
  • Kind:1字节,表示SACK选项的类型,值为5。

  • Length:1字节,表示SACK选项的总长度,包括Kind和Length字段。

    这里为18字节 = 2个SACK块占用 2*8 = 16 字节 + 2字节的Kind和Length字段。

  • Left Edge:4字节,表示一个SACK块的起始序列号。

  • Right Edge:4字节,表示一个SACK块的结束序列号。

5.7 TCP的流量控制

点到点之间的问题

让发送方慢点,使接收方来得及接收

  1. 利用滑动窗口实现流量控制
  2. 考虑传输效率(最大报文段长度MSS,只要达到MSS就发送报文)

5.8 TCP的拥塞控制

全局性的问题

  1. 慢开始:由小到大逐渐增大拥塞窗口数值(指数增长,得寸进尺)

  2. 拥塞避免:拥塞窗口cwnd按线性规律缓慢增长

其中,如果检测到拥塞,则减到1,同时更新ssthresh值 = 拥塞窗口的一半

一个cwnd = 一个报文段 = 一个最大报文段长度MSS

一个传输轮次就是一批数据,比如当前传输轮次的cwnd=8,说明该轮次能发送8个报文段(类似窗口大小)

  1. 快重传:接收方每收到一个失序报文段后立即发出重复确认(当前累计最大ack),连续收到三个重复确认时,立即重传(不用等超时再来重传,提高速度)

  2. 快恢复:当发送方连续收到三个重复确认时,把慢开始门限减半,预防网络拥塞。然后把cwnd值设为慢开始门限减半后的值,然后执行拥塞避免算法。

5.9 TCP的运输连接管理

就是三次握手 + 四次挥手(网上一堆讲解,所以我没整理哈)

下面是TCP有限状态机图:

相关推荐
Sun_12_217 分钟前
SQL注入(SQL lnjection Base)21
网络·数据库
Hejjon24 分钟前
SpringBoot 整合 SQLite 数据库
笔记
网络安全Jack1 小时前
网络安全概论——身份认证
网络·数据库·web安全
网络安全King1 小时前
计算机网络基础(2):网络安全/ 网络通信介质
计算机网络·安全·web安全
易我数据恢复大师1 小时前
如何彻底删除电脑数据以防止隐私泄露
网络·电脑·数据删除·擦除
学习溢出2 小时前
【网络安全】逆向工程 练习示例
网络·安全·网络安全·渗透测试·逆向工程
_微风轻起2 小时前
linux下网络编程socket&select&epoll的底层实现原理
linux·网络
西洼工作室3 小时前
【java 正则表达式 笔记】
java·笔记·正则表达式
初学者7.3 小时前
Webpack学习笔记(2)
笔记·学习·webpack