目录
- 传输层的基本服务
- 传输层的复用与分解
- 停—等协议与滑动窗口协议
- 用户数据报协议(UDP)
- 传输控制协议(TCP)
传输层的基本服务
传输层的核心任务是为应用进程之间提供端到端的逻辑通信服务
主要功能都有:
- 传输层寻址
- 应用层报文的分段和重组
- 报文的差错检测
- 进程间的端到端可靠数据的传输控制
- 面向应用层实现复用与分解
- 端到端的流量控制
- 拥塞控制
传输层功能
传输层协议提供逻辑通信服务
传输层协议只需在端系统中实现
通信的真正断电并不是主机,而是主机中运行的应用进程
注意:传输层负责的是应用服务间的通信,网络层负责的是主机间的通信。
传输层寻址与端口
用统一的寻址方法对应用进程进行标识——端口号。如常见的 HTTP 服务,端口号为 80
在全网范围内利用“IP地址+端口号”唯一标识一个通信端点
传输层端口为16位整数,包含三类:
3.1 数值为0-1023:熟知端口号,如 HTTP 协议的80端口
3.2 数值为1024-49151:登记端口号,需要向IANA申请注册,防止重复
3.2 数值为49152-65335:短暂端口号 或 客户端口号,留给客户进行选择暂时使用
TCP协议:POP3 端口号 110 、SMTP 端口号 25 、HTTP 端口号 80
UDP协议:DNS 端口号 53
无连接服务与面向连接服务
无连接服务:数据传输之前无需与对端进行任何信息交换(即“握手”),直接构造传输层报文段并向接收端发送。——UDP
面向连接服务:在数据传输之前,需要双方交换一些控制信息,简历逻辑连接,然后再传输数据,数据传输结束后还需要再拆除连接。——TCP
传输层的复用与分解
多路复用与多路分解
多路复用与多路分解是传输层的一项基本功能,支持众多应用进程共同使用同一个传输层协议,并能够将接受到的数据准确交付给不同的应用进程。
无连接的多路复用与多路分解
UDP 套接字:<目的IP地址,目的端口号>
UDP 套接字的端口号是 UDP 实现多路复用与多路分解的重要依据
面向连接的多路复用与多路分解
TCP 套接字:<源IP地址,源端口号,目的IP地址,目的端口号>
当一个 TCP 报文段从网络层到达主机时,该主机会根据这四个值来将报文段分解到相应的套接字。
停—等协议与滑动窗口协议
可靠数据传输的基本原理
- 差错检测:利用差错编码实现数据包传输过程中的比特差错检测
- 确认:接收方想发送方反馈接收状态
- 重传:发送方重新发送接收方没有正确收到的数据
- 序号:确保数据按序提交
- 计时器:解决数据丢失问题
停-等协议
停-等协议协议的主要特点是发送发没发送一个报文段后就停下等待接收方的确认
工作过程为:
- 发送方发送经过差错编码和编号的报文段,等待接收方的确认;(发送并等待确认)
- 接收方如果正确接受报文段,即差错检测无误且序号正确,则接受报文段,并向发送方发送ACK,否则丢弃报文段,并向发送方发送NAK;(接受并确认/否认)
- 发送方如果收到ACK,则继续发送后续报文段,否则重新发送刚发的报文段。(继续发送/重发)
滑动窗口协议
由于停-等协议降低了信道利用率,限制了传输性能,所以出现了改进解决方案——流水线协议(管道协议),采用这种协议将允许发送方在没有收到确认前连续发送多个分组,流水线协议增加了分组序号的范围,发送方和(或)接收方必须缓存多个分组
而滑动窗口协议就是典型的流水线协议
其实停-等协议也算是滑动窗口协议的一种
代表性的滑动窗口协议:
回退N步:(Go-Back-N,GBN)协议
发送端窗口大小较大,可以在未得到确认前连续发送多个分组,但接收端窗口大小仅为1,只能接受1个暗许到达的分组,未按序到达的分组或者某个分组差错,就会引起发送方抽发改分组及其之后的所有分组。选择重传:(Selective Repeat,SR)协议
增加接收方方缓存能力(接收窗口>1),缓存正确到达但失序的分组,仅要求发送方重传违背接收方确认的分组,等确实的分组到达后,一并想上层按序提交
用户数据报协议(UDP)
用户数据报协议 UDP 是 Internet 传输层协议,提供无连接、不可靠 、数据报尽力传输服务
UDP 数据报结构
- 源端口号和目标端口号:用于实现复用与分解
- 长度字段:在 UDP 报文段中的字节数(首部和数据的总和)
- 校验和:接收方用来检测该报文段是否出现差错
UDP 校验和的计算
- 对所有参与运算的内容(包括UDP报文段)按16位(16位对齐)求和
- 球和过程中遇到任何溢出(即进位)都被回卷(即进位与和的最低位再加)
- 最后得到的和取反码
传输控制协议(TCP)
传输控制协议 TCP是 Internet 传输层协议,提供面向连接的可靠传输服务。TCP 报文首部的大小一定是4字节的倍数,其中固定首部大小为20字节且不变。
TCP 报文段结构
源端口号:报文发送方地址
目的端口:报文接收方地址
序号:报文的顺序编号
确认号:接收方返回接下来希望接收的数据的序号
数据偏移:报文可能会分为若干段,此字段表示拆分后的序号
ACK:确认位,当它的值为1时,确认号才是有效的
SYN:同步请求,TCP连接中连接双方协商初始的序号
RST:复位,TCP连接中数据传输发生异常需要重新发送
FIN:通信结束后,当它的值为1时拆除连接
窗口:告诉对方接受窗口有多大,大小可变,流量控制时使用
校验和:TCP对数据进项校验时使用
TCP 建立连接
建立连接需要 3次握手:
- SYN连接请求
- SYNACK确认
- ACK确认
TCP 断开连接
断开连接需要 4次挥手
TCP 可靠数据传输
- TCP 的可靠数据传输实现机制包括差错检验、确认、序号、重传、计时器等。
- TCP 的可靠数据传输基于滑动窗口协议,但是发送窗口的大小动态变化。
- 封装TCP报文
- 发出一个报文段后启动一个计时器
- 通过校验和发现数据差错
- 通过需要重新排序,丢弃重复的报文段
- 流量控制
TCP流量控制
- TCP 协议通过滑动窗口协议实现流量控制,但不是简单的滑动窗口协议,它的窗口是可以动态变化的。
- TCP 建立时,双方都为之分配了固定大小的缓冲空间,TCP的接收端只允许另一端发送其缓冲区所能接纳的数据。
2.1 接收端在给发送端发送确认段时,通告接受窗口的大小
2.2 发送端在接下来发送数据段时,确保未确认段的应用层数据总量不超过接收端的接受窗口大小,从而确保接收端不会发生缓存溢出。
TCP拥塞控制
窗口机制
通过调节窗口的大小实现对发送数据速率的调整窗口调整的基本策略
加性增加,乘性减小(Additive Increase,Multiolicative Decrease,AIMD)
网络未发生拥塞时,逐渐“加性”增大窗口大小,当网路拥塞时“乘性”快速减小窗口大小TCP的拥塞控制算法
包括慢启动、拥塞避免、快速重传、快速恢复4个部分
本篇到此完结,计算机网络知识 系列文章已全部发布!
计算机网络原理梳理丨计算机网络的概念
计算机网络原理梳理丨应用层
计算机网络原理梳理丨传输层
计算机网络原理梳理丨网络层
计算机网络原理梳理丨链路层
计算机网络原理梳理丨物理层
计算机网络原理梳理丨无线与移动网络
计算机网络原理梳理丨网络安全
计算机网络原理梳理丨HTTP 请求全解