接上一篇:计算机网络原理【二】之 网络应用
一、传输层的基本服务
1.传输层功能
a.传输层核心功能
传输层核心功能:给应用进程之间提供端到端的逻辑通信服务。
只有主机才有传输层;
网络核心中的中间系统只用到下三层的功能。
b.传输层七大功能
- 对应用层报文进行分段和重组
- 面向应用层实现复用与分解
- 实现端到端的流量控制
- 拥塞控制
- 传输层寻址
- 对报文进行差错检测
- 实现进程间的端到端可靠数据传输控制
2.传输层寻址与端口
一台计算机中,不同应用进程用 进程标识符(进程ID) 来区分。
在传输层使用协议端口号,通常简称为端口(port)。
在全网范围内利用 『IP地址+端口号』 唯一标识一个通信端点。
黄色圈起来的部分:端口
红色圈起来的部分:进程标识符
传输层端口号为16位整数,可以编号65536个(2的16次方)
常用端口:端口号小于256的端口
端口号 | 类别 | |
---|---|---|
0-1023 | 熟知端口号 | 服务器端口号 |
1024-49151 | 登记端口号 | 服务器端口号 |
49152-65535 | 短暂端口号 | 客户端口号 |
1、服务端使用的端口号:熟知端口号和登记端口号
2、客户端使用的端口号:临时性,在客户进程运行时由操作系统随机选取唯一的未被使用的端口号。
3.无连接服务与面向连接服务
无连接服务(UDP):提供无连接、不可靠的数据报传输服务
面向连接服务(TCP):提供面向连接的、可靠的、有序的字节流传输服务
无连接服务 | 面向连接服务 |
---|---|
数据传输之前:无需与对端进行任何信息交换,直接构造传输层报文段并向接收端发送。 | 数据传输之前:需要双方交换一些控制信息,建立逻辑连接,然后再传输数据,传输结束后还需要拆除连接 |
类似于信件通信 | 类似于电话通信 |
二、传输层的复用与分解
1.复用与分解
多路复用与多路分解(复用与分解 / 复用与分用):支持众多应用进程共用同一个传输层协议,并能够将接收到的数据准确交付给不同的应用进程。
多路复用:在源主机,传输层协议从不同的套接字收集应用进程发送的数据块,并为每个数据块封装上首部信息(包括用于分解的信息)构成报文段,然后将报文段传递给网络层。
多路分解:在目的主机,传输层协议读取报文段中的字段,标识出接收套接字,进而通过该套接字,将传输层的报文段中的数据交付给正确的套接字。
2.无连接的多路复用与多路分解 - UDP
用户数据报协议(User Datagram Protocol, UDP):Internet提供无连接服务的传输层协议。
UDP套接字二元组:<目的IP地址,目的端口号>
3.面向连接的多路复用与多路分解 - TCP
传输控制协议(Transmission Control Protocol, TCP):Internet提供面向连接服务的传输层协议。
TCP套接字四元组:<源IP地址,源端口号,目的IP地址,目的端口号>
三、停-等协议与滑动窗口协议
1.可靠数据传输基本原理
不可靠传输信道在数据传输中可能发送:
- 比特差错:1001变成了1000
- 乱序:数据库1、2、5、6、3、4
- 数据丢失:数据块1、2、5
很多网络应用希望传输层提供可靠的数据传输服务。
基于不可靠信道实现可靠数据传输采取的措施:
①差错检测:利用编码实现数据包传输过程中的比特差错检测
②确认:接收方向发送方反馈接收状态。ACK(肯定确认);NAK(否定确认)
③重传:发送方重新发送接收方没有正确接收的数据。
④序号:确保数据按序提交。
⑤计时器:解决数据丢失问题。
2.停-等协议
a.停-等协议工作流程:
- 发送方发送经过差错编码和编号的报文段,等待接收方的确认。
- 接收方如果差错检测无误且序号正确,则接收报文段,并向发送方发送ACK,否则丢弃报文段,并向发送方发送NAK。
- 发送方如果收到ACK,则继续发送后续报文段,否则重发刚刚发送的报文段。
b.停-等协议的缺点:
性能差,信道利用率低
3.滑动窗口协议
流水线协议(管道协议): 允许发送方在没有收到确认前连续发送多个分组。
最典型的流水线协议:滑动窗口协议。
- 增加分组序号。
- 发送方和接收方可以缓存多个分组。
发送窗口(Ws):发送方可以发送未被确认分组的最大数量;
接收窗口(Wr):接收方可以缓存的正确到达的分组的最大数量;
发送窗口左侧序号:1、2、3、4已经收到ACK。
发送窗口:Ws=5。5、6、7、8、9为当前可以使用的分组序号。序号5是基序号
发送窗口右侧序号:10、11、12为暂时不可以使用的分组序号
当5和6成功后:
发送窗口左侧序号:1、2、3、4、5、6已经收到ACK。
发送窗口:Ws=5。7、8、9、10、11为当前可以使用的分组序号。序号7是基序号
发送窗口右侧序号:12为暂时不可以使用的分组序号
a.滑动窗口协议根据窗口的大小分类
①回退N步协议(GBN协议,Go-Back-N)
GBN协议的特点:
发送端缓存能力高,可以在没有得到确认前发送多个分组。
接收端缓存能力很低,只能接收1个按序到达的分组,不能缓存未按序到达的分组。
GBN发送方响应的3类事件:
- 上层调用
- 收到1个ACKn。GBN采用累积确认方式,即发送方收到ACKn时,表明接收方正确接收序号n以及序号小于n的所有分组。
- 计时器超时。发送方只使用一个计时器。
②选择重传协议(SR协议, Selective Repeat)
SR协议特点:
发送端缓存能力高。
接收端缓存能力高,
SR发送方响应事件:
- 上层调用。
- 计时器超时。发送方对每个分组进行计时。
- 收到ACKn。SR协议采取逐个确认方式。
四、用户数据报协议(UDP)
提供无连接、不可靠、数据报尽力传输服务。
1.UDP特点
- 应用进程容易控制发送什么数据以及何时发送,会出现分组的丢失和重复。
- 无需建立连接。
- 无连接状态。
- 首部开销小,只有8个字节(Byte)。
2.UDP数据报结构
3.UDP校验和
a、提供差错检测功能
UDP的校验和用于检测UDP报文段从源到目的地传送过程中,其中的数据是否发生了改变。
b、UDP校验和计算规则
- 所有参与运算的内容按16位对其求和。
- 求和过程中遇到溢出(即进位) 都被 回卷(即进位与和的最低位再相加)。
- 最后得到的和取反码,就是UDP的校验和,填入UDP数据报的校验和字段。
没溢出则跳过第二步,直接进行第三步
五、传输控制协议(TCP)
提供面向连接、可靠、有序、字节流传输服务。
1.TCP报文段结构
要点:
1.序号:TCP的序号是对每个应用层数据的每个字节进行编号
2.确认序号:期望从对方接收数据的字节序号,即该序号对应的字节尚未收到。用ack_seq表示。
3.首部长度:最短是20字节。最长为60字节。首部长度字段的数值单位为4字节。
TCP首部=固定首部(20字节)+选项(0-40字节)
2.TCP连接管理
以客户端上的一个应用进程与服务器上的一个应用进程建立一条TCP连接为例:
a.连接建立
拓展:为什么需要三次握手?
b.连接拆除
为什么要四次挥手?
要保证数据的传输完毕
3.TCP可靠数据传输
a.可靠
保证接收方应用进程从缓冲区读出的字节流与发送方发出的字节流是完全一样的。(无差错,不丢失,不重复,按序到达)
b.TCP实现可靠数据传输服务的工作机制
- 分段:应用层数据被分割成TCP认为最适合发送的数据块。
- 序号:发送方对发送的数据包进行编号,确保数据按序提交给接收方。
- 确认:接收方向发送方反馈接收状态,确认是否正确接收数据。
- 差错检测:利用差错编码实现数据包传输过程中的比特差错检测(甚至纠正)。
- 重传:发送方重新发送接收方没有正确接收的数据。
- 计时器:在发送方引入计时器,解决数据丢失问题。
三次重复确认: TCP发送方接收到对相同序号的3次重复ACK(第4次确认),则说明被重复确认的报文段已丢失,这时候即便计时器没有超时,也会重发该报文段(快速重传)。
计时器超时时间设置:
TimeoutInterval = EstimatedRTT + 4 * DevRTT
EstimatedRTT:抽样RTT的加权移动平均值
DevRTT:偏差RTT
c.TCP生成ACK的策略:
- 具有所期望序号的报文段按序到达,所有在期望序号及以前的报文段都已被确认。 -> TCP延迟500ms发送ACK。
- 具有所期望序号的报文段按序到达,且另一个按序报文段在等待ACK传输。 -> TCP接收方立即发送单个累积ACK,确认以上俩个按序到达报文段。
- 拥有序号大于期望序号的失序报文段到达。 -> TCP接收方立即发送重复ACK,指示下一个期望接收字节的序号。
- 收到一个报文段,部分或完全填充接收数据间隔。
4.TCP流量控制
流量控制:协调发送方与接收方的数据发送与接收速度。
在通信过程中,接收方设置报文段的接收窗口字段来将窗口大小通知给发送方。
5.TCP拥塞控制
a.拥塞
太多的主机以太快的速度向网络中发送太多的数据,超出了网络处理能力,导致大量数据分组拥挤在中间设备队列中等待转发,网络性能显著下降的现象。
b.拥塞控制
通过合理调度、规范、调整向网络中发送数据的主机数量、发送速率、数据量,以避免拥塞或消除已发生的拥塞。
- 拥塞预防策略:预防拥塞发送。
流量整形技术,规范主机向网络发送数据的流量。 - 拥塞消除策略:基于拥塞检测机制,调整主机向网络中发送数据的速率和数量,从而逐渐消除拥塞。
c.概念补充
d.TCP拥塞控制算法
1)慢启动算法
2)拥塞避免算法
3)快速重传
4)快速恢复
5)窗口调整的基本策略(Additive Increase, Multiplocative Decrease, AIMD):
网络未发生拥塞时,逐渐『加性』增大窗口。
网络拥塞时『乘性』减小窗口。
下一篇:计算机网络原理【四】之 网络层