第5章 运输层

5.1运输层协议概述

5.1.1   进程之间的通信

运输层的作用

屏蔽作用

可靠信道与不可靠信道

5.1.2 运输层的两个主要协议

5.1.3  运输层的端口

运输协议数据单元

两个对等运输实体在通信时传送的数据单位叫作运输协议数据单元 TPDU (Transport Protocol Data Unit)。

TCP 传送的数据单位协议是 TCP 报文段 (segment)。

UDP 传送的数据单位协议是 UDP 报文或用户数据报。

UDP 与 TCP 的区别

使用 UDP 和 TCP 的典型应用和应用层协议

复用和分用

需要考虑的问题

进程的创建和撤销都是动态的,因此发送方几乎无法识别其他机器上的进程。

我们往往需要利用目的主机提供的功能来识别终点,而不需要知道具体实现这个功能的进程是哪一个。

有时我们会改换接收报文的进程,但并不需要通知所有的发送方。

端口号 (protocol port number)

解决方法:在运输层使用协议端口号 (protocol port number),或通常简称为端口 (port)。把端口设为通信的抽象终点。

软件端口与硬件端口

TCP/IP 运输层端口的标志

两大类、三种类型的端口

常用的熟知端口

5.2用户数据报协议 UDP

5.2. UDP 概述

UDP 的主要特点

UDP 是面向报文的

UDP 通信和端口号的关系

5.2.2 UDP 的首部格式

UDP 基于端口的分用

计算 UDP 检验和的例子

5.3传输控制协议 TCP 概述

5.3.1TCP 最主要的特点

TCP 面向流的概念

5.3.2 TCP 的连接

套接字 (socket)

TCP 连接,IP 地址,套接字

Socket 有多种不同的意思

5.4可靠传输的工作原理

5.4.1停止等待协议

理想传输条件的特点

停止等待协议

1. 无差错情况

2. 出现差错

3. 确认丢失和确认迟到

4. 信道利用率

停止等待协议要点

提高传输效率:流水线传输

5.4.2连续 ARQ 协议

发送窗口

累积确认

5.5 TCP 报文段的首部格式

源端口和目的端口

各占 2 字节。端口是运输层与应用层的服务接口。 运输层的复用和分用功能通过端口实现。

序号

占 4 字节。TCP 连接中传送的数据流中的每一个字节都有一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。

确认号

占 4 字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。

记住:若确认号 = N,则表明:到序号 N – 1 为止的所有数据都已正确收到。

数据偏移(即首部长度)

占 4 位,指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。单位是 32 位字(以 4 字节为计算单位)。

保留

占 6 位,保留为今后使用,但目前应置为 0。

紧急 URG

控制位。当 URG = 1 时,表明紧急指针字段有效,告诉系统此报文段中有紧急数据,应尽快传送 (相当于高优先级的数据)。

确认 ACK

控制位。只有当 ACK =1 时,确认号字段才有效。当 ACK =0 时,确认号无效。

推送 PSH (PuSH)

控制位。接收 TCP 收到 PSH = 1 的报文段后,就尽快(即“推送”向前)交付接收应用进程,而不再等到整个缓存都填满后再交付。

复位 RST (ReSeT)

控制位。当 RST=1 时,表明 TCP 连接中出现严重差错(如主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。

同步 SYN (SYNchronization)

控制位。 同步 SYN = 1 表示这是一个连接请求或连接接受报文。 当 SYN = 1,ACK = 0 时,表明这是一个连接请求报文段。 当 SYN = 1,ACK = 1 时,表明这是一个连接接受报文段。

终止 FIN (FINish)

控制位。用来释放一个连接。 FIN=1 表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。

窗口

占 2 字节。 窗口值告诉对方:从本报文段首部中的确认号算起,接收方目前允许对方发送的数据量(以字节为单位)。

记住:窗口字段明确指出了现在允许对方发送的数据量。窗口值经常在动态变化。

检验和

占 2 字节。检验和字段检验的范围包括首部和数据这两部分。 在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部。

紧急指针

占 2 字节。在 URG = 1时,指出本报文段中的紧急数据的字节数(紧急数据结束后就是普通数据),指出了紧急数据的末尾在报文段中的位置。

选项

长度可变,最长可达 40 字节。TCP 最初只规定了一种选项,即最大报文段长度 MSS。

填充

使整个 TCP 首部长度是 4 字节的整数倍。

选项(2):最大报文段长度 MSS

MSS 告诉对方 TCP:“我的缓存所能接收的报文段的数据字段的最大长度是 MSS 个字节。”

是 TCP 报文段中的数据字段的最大长度。 数据字段加上 TCP 首部才等于整个的 TCP 报文段。 所以,MSS是“TCP 报文段长度减去 TCP 首部长度”。

选项(3):窗口扩大

选项(8):时间戳

5.6TCP 可靠传输的实现

5.6.1以字节为单位的滑动窗口

发送窗口

接收窗口

窗口的滑动

发送缓存与发送窗口

需要强调三点

5.6.2超时重传时间的选择  

TCP 超时重传时间设置

加权平均往返时间 RTTS

超时重传时间 RTO

5.6.3选择确认 SACK

5.7TCP 的流量控制

5.7.1 利用滑动窗口实现流量控制

流量控制 (flow control) :让发送方的发送速率不要太快,使接收方来得及接收。

利用滑动窗口机制可以很方便地在 TCP 连接上实现对发送方的流量控制。

持续计时器

5.7.2  TCP 的传输效率

糊涂窗口综合症

发送方糊涂窗口综合症

接收方糊涂窗口综合症

5.8 TCP 的拥塞控制

5.8.1拥塞控制的一般原理

拥塞产生的原因

增加资源能解决拥塞吗?

拥塞控制与流量控制的区别

拥塞控制所起的作用

拥塞控制的一般原理

开环控制和闭环控制

闭环控制措施

5.8.2 TCP 的拥塞控制方法

控制拥塞窗口变化的原则

只要网络没有出现拥塞,拥塞窗口就可以再增大一些,以便把更多的分组发送出去,提高网络的利用率。

但只要网络出现拥塞或有可能出现拥塞,就必须把拥塞窗口减小一些,以减少注入到网络中的分组数,缓解网络出现的拥塞。

发送方判断拥塞的方法:隐式反馈

TCP 拥塞控制算法

1. 慢开始 (Slow start)

每经过一个传输轮次,拥塞窗口就加倍。窗口大小按指数增加,不慢!

传输轮次(transmission round)

慢开始门限 ssthresh

2. 拥塞避免

当网络出现拥塞时

3.快重传 FR (Fast Retransmission) 算法

4.快恢复 FR (Fast Recovery)算法

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

开始执行慢开始算法时,拥塞窗口 cwnd=1,发送第一个报文段。

发送方每收到一个对新报文段的确认 ACK,就把拥塞窗口值加 1,因此拥塞窗口 cwnd 随着往返时延 RTT 按指数规律增长。

当拥塞窗口 cwnd 增长到慢开始门限值 ssthresh 时,改为执行拥塞避免算法,拥塞窗口按线性规律增长。

当拥塞窗口 cwnd = 24 时,网络出现了超时,发送方判断为网络拥塞。调整门限值 ssthresh = cwnd / 2 = 12,同时设置拥塞窗口 cwnd = 1,进入慢开始阶段。

按照慢开始算法,发送方每收到一个对新报文段的确认 ACK,就把拥塞窗口值加 1。当拥塞窗口 cwnd = ssthresh = 12 时,改为执行拥塞避免算法,拥塞窗口按线性规律增大。

当拥塞窗口 cwnd = 16 时,发送方连续收到 3 个对同一个报文段的重复确认(记为 3-ACK)。发送方改为执行快重传和快恢复算法。

当拥塞窗口 cwnd = 16 时,发送方连续收到 3 个对同一个报文段的重复确认(记为 3-ACK)。发送方改为执行快重传和快恢复算法。

执行快重传和快恢复算法:发送方调整门限值 ssthresh = cwnd / 2 = 8,设置拥塞窗口 cwnd = ssthresh = 8,开始执行拥塞避免算法。

TCP 拥塞控制流程图

发送窗口的上限值

5.8.3 主动队列管理 AQM(略)

5.9 TCP 的运输连接管理

运输连接的三个阶段

TCP 连接建立过程中要解决的三个问题

5.9.1  TCP 的连接建立

三报文握手

5.9.2  TCP 的连接释放

四报文握手

必须等待 2MSL 的时间

第一,保证发送的最后一个 ACK 报文段能够到达 B。

第二,防止“已失效的连接请求报文段”出现在本连接中。

保活计时器

用来防止在 TCP 连接出现长时期空闲。

通常设置为 2 小时 。

若服务器过了 2 小时还没有收到客户的信息,它就发送探测报文段。

若发送了 10 个探测报文段(每一个相隔 75 秒)还没有响应,就假定客户出了故障,因而就终止该连接。

5.9.3 TCP 的有限状态机(略)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值