传输层
文章目录
一:运输层概述
1:概述
运输层直接为应用进程间的逻辑通信提供了服务
2:运输层端口号,复用和分用
运行在计算机上的进程都使用PID来标志,但是由于计算机不是使用统一的操作系统,而且各种操作系统上又使用了不同格式的进程标识符,因此,为了使得运行不同的操作系统的计算机的应用进程之间可以进行网络的通信,就必须使用统一的方法对TCP/IP体系的应用进程进行标识。
TCP/IP体系的运输层使用端口号来区分应用层的不同应用进程:
- 端口号使用16bit表示,取值范围是0-65535
端口号只具有本地意义,只用来标识计算机应用层中的各个进程。在因特网中,不同的计算机中的相同的端口号是没有联系的
发送方的复用和接收方的分用
二:TCP和UDP
1:UDP和TCP的对比
UDP:用户数据报协议 User Datagram Protocol
TCP:传输控制协议 Transmission Control Protocol
UDP双方可以随时进行数据的传输,但是TCP在进行数据传输前要进行三报文握手,在传输结束后要进行四报文挥手【所以说TCP是面向连接的,而UDP是无连接的】
UDP因为随时可以数据传输,因此支持单播,多播,广播,而TCP因为要在数据传输之前建立可靠的信道,所以仅支持单播
UDP对应用层的报文既不合并也不拆分,是面向应用报文的; TCP会将应用层的报文仅仅看成一个个的字节流,对其进行编号,存储,转发后传给接收方,不保证发送方和接收方的个数一样,所以TCP是面向字节流的
UDP向上层提供的是不可靠的传输,而TCP提供的是可靠传输
UDP和TCP的报文不一致,因为TCP协议要进行流量控制,拥塞控制,可靠传输等,因此首部比较复杂。
2:TCP的流量控制
3:TCP的拥塞控制
慢开始,拥塞避免,快重传,快恢复
4:TCP的超时重传时间的选择RTO
超时重传时间的选择
超时重传时间的选择是TCP超时重传的最复杂的问题:
5:TCP的可靠传输
⚠️ TCP是全双工模式,通信的双方都有一个接收窗口和一个发送窗口
6:TCP的连接建立:三次握手
TCP的连接建立主要要解决下面三个问题:
- 使得TCP双方可以互相确认对方的存在
- 使得TCP双发可以协商一些参数(例如最大窗口值,是否使用窗口扩大选项和时间戳选项以及服务质量等)
- 使得TCP双方能够对运输的实体资源(例如缓存大小,连接表中的项目等)进行分配
ACK = 1说明这个请求不带有数据,但是消耗一个序号,这就是为什么每次的ack都是在上一个seq的基础上 +1 的原因
最后一段握手是否多余,是否可以简化成为两报文握手?
不多余!!!下面这种情况如果之后二报文握手将会大大的浪费资源
7:TCP的连接释放:四次挥手
如果没有时间等待状态和2MSL会怎样?
可能会触发服务器反复进行最终确认,导致其无法进入closed状态
保活计时器
8:TCP报文段格式
控制位 (Control Bits)
控制位字段包含6个标志位,每个标志位占用1位。这些标志位用于控制TCP连接的状态和行为。