计算机网络 - 运输层
第五章 - 运输层
来源Bilibili湖科大教书匠计算机网络教程:计算机网络微课堂(有字幕无背景音乐版)
运输层概述
物理层
、数据链路层
和网络层
共同解决了将主机通过异构网络互联起来所面临的问题 , 实现了主机之间的通信。- 但实际上,在计算机中进行通信的真正实体是位于
通信两端主机中的进程
- 运输层的任务:为运行在不同主机上的应用进程提供直接的通信服务。运输层协议又称为
端到端协议
- 运输层向高层用户
屏蔽了下面网络核心的细节
(如网络拓扑、所采用了路由选择协议等),它使应用进程之间好像有一条端到端的逻辑通信信道。 - 根据需求不同,运输层为应用层提供了两种不同的运输协议,即
面向连接的TCP
和无连接的UDP
运输层端口号、复用与分用的概念
端口号:
发送方的复用和接收方得到分用:
TCP/IP 体系的应用层常用的运输层熟知端口号:
UDP和TCP的对比
TCP的流量控制
接收方可以对发送方进行流控
TCP的拥塞控制
- 对网络中某一资源的需求超过了该资源的所能提供的可用部分,网络性能就要破坏,这种情况在网络中就叫做拥塞。
- 若出现拥塞而不加以控制,整个网络的吞吐量将会随负荷增大而下降
- 发送方维护一个叫做
拥塞窗口 cwnd
的 状态变量,其值取决于网络的拥塞程度,并且动态变化
- 维护 拥塞窗口的原则:网络越宽松,窗口越大。网络越拥塞,窗口越小
- 判断 拥塞的依据:没有按时收到应当到达达确认报文
- 发送方将拥塞窗口作为
发送窗口swnd
,即swnd = cwnd - 维护一个慢开始门限 ssthresh 状态变量:
- 当 cwnd < ssthresh 时 :使用慢开始算法
- 当 cwnd > ssthresh 时 :使用拥塞避免算法
- 当 cwnd = ssthresh 时 :两者都行
cwnd 起始值为1 ,ssthresh 起始值为16,传输轮次 就是 一个数据交换一个来回
当 cwnd < ssthresh 时 拥塞窗口 呈 指数增长,1 2 4 8 16
当 cwnd > ssthresh 时 使用 拥塞避免算法
拥塞窗口 呈线性增长,假设 由于 窗口过大导致 部分报文段丢失
报文段丢失,发送方判断网络出现了拥塞,更新了 ssthresh 的 值为 当前 cwnd 的一半,将 cwnd 的值减少为1,并重新开始执行慢开始 算法
快重传
快恢复
和原来不同的 是 ,当发送方发现丢失了 个别报文段时, 发送方不再将 cwnd 置为1 而是 将 ssthresh 的值 和 cwnd 的值 调整为当前的一半,然后执行拥塞避免。
TCP超时重传时间的选择
TCP可靠传输的实现
TCP的运输连接管理
TCP的连接建立
- TCP 是面向连接的协议,它基于运输连接来传送TCP报文段
- TCP 运输连接的建立和释放是每一次面向连接的通信中不可缺少的过程
- TCP 运输连接有以下三个阶段
- 建立TCP连接
- 数据传输
- 释放TCP连接
- TCP 运输连接管理 就是控制 运输连接的正确建立和释放都能正常的进行
TCP 三报文握手 建立连接
在本例中,A 主动打开连接,而 B 被动打开连接。
- 一开始,B 的
TCP 服务器进程
先创建传输控制快 TCB
,准备接受客户进程的连接请求。然后服务器进程就处于LISTEN
状态,等待客户请求。 - A 的
TCP 客户进程
也是首先创建传输控制模块 TCB
。打算 建立 TCP连接时,向 B 发送 连接请求报文段,这是 首部中的同步位 SYN = 1,同时选择一个初识序号 seq = x 。 TCP 规定 SYN =1 的数据报不能携带数据
,但要消耗掉一个序号。此时 TCP 客户进程进入SYN-SENT (同步已发送)状态
。 - B 收到连接 请求报文段后,如同意连接,则向 A 发送确认。 再确认报文段中 将 SYN 和 ACK 都置为 1 ,确认号是 = x +1 ,序号 seq = y。
- TCP 客户进程收到 确认数据报后,还要向 B 发送确认,ACK = 1 ,seq = x+1,ack = y+1,这是 TCP 连接已建立,A 进入 ESTABLISHED 状态 ,当 B 接收到后,也转换成 ESTABLISHED 状态
- 一开始,B 的
TCP 为何不能 两报文建立连接
一旦出现 TCP 连接请求晚到的情况 ,会浪费服务器资源
TCP的连接释放
- TCP 通过 四报文挥手 来释放连接
- 保活计时器。每收到一次 客户端发来的数据,保活计时器就更新,与 session 的机制类似。
TCP报文段的首部格式
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 TimeSnapshot!
评论