1 传输层服务
1.1 概念
- 为运行在不同主机上的应用进程提供逻辑通信
- 传输单元 :TCP/报文段 UDP/数据报
- 协议 : TCP UDP
对于服务的增强和依赖
- 依赖于网络层的服务 (延时 带宽)
- 对网络层进行增强 (数据丢失 乱序)
1.2 实体协议(TCP/UDP)
可靠,保序的传输:TCP
通过
- 多路复用/解复用
- 拥塞控制
- 流量控制
- 建立连接
来实现
不可靠,不保序的传输:UDP
- 多路复用/解复用
- 没有为网络层添加更多的服务
都不提供的服务
- 延时保证
- 带宽保证
2 多路复用和解复用
复用 :在传输层上,协议实体通过不同目标端口封装不同的数据报,协议实体不变,实现协议实体复用
解复用:在传输层上,协议实体通过解封装数据报得到不同的目标端口匹配不同的socket放到相应的进程之上,协议实体不变,实现协议实体复用
无连接UDP :socket之间是一对多的形式
在接收端,源端IP和port对应上来源的目标IP和端口,无论来源端源IP和port是是什么,都处于相同的socket,并且处于相同的进程
( 具备相同目标IP地址和目标端口号,即使是源IP地址或源端口号的IP数据报,将会被传到相同的UDP套接字上
)
面向连接TCP:socket之间是一对一的形式
接收端用四元组来标识不同的socket,并且标识不同的进程或线程
3 可靠数据传输的原理
3.1 停止等待协议
属于停止等待协议,效率低
- 发送的数据分组
- 确认消息分组
运行规则
- 确认消息分组号必须与发送的消息分组号相等才算一次完好的发送,
- 如果发送pkt9 , 但是消息发送错误,就会发送ack8 , 用确认上一个分组来期待下一个分组
- 如果发送pkt9,但是确认消息分组丢失,会有超时重发机制触发
2 流水线模式
流水线: 允许发送方在未得到对方确认的情况下,一次性发送多个分组
在上一种模式上增加:
- 增加序号范围:用多个bit 表示分组序号
- 在发送方和接收方都要有缓冲区
发送方缓冲区 :留有发送数据的副本,在超时重传和快速重传时发挥作用
接受方缓冲区 : 上层用户取用数据速率不等于接收速率 ,接收到的数据可能乱序,需要排序
两种流水线协议 回退N步(GBN)和选择重传(SR)
3 GBN和SR的异同点
相同
- 发送窗口 > 1
- 可以未经确认的一次性发送多个分组
不同
在这里插入代码片
GBN 接收窗口 = 1
接收端:只能顺序接收
发送端 :从表现来看,一旦一个分组没有发成功,如:0,1,2,3,4 ; 假如1未成功,234都发送出去 了,要返回1再发送GB1
发送端只需设置未确认分组的最老分组到定时器
SR :接收窗口 > 1
接收端 : 可以乱序接收
发送端 :发送0,1,2,3,4,一旦1 未成功,0 ,2,3,4,已发送,无需重发,选择性发送1(快速重发)
发送端对分组中的每一个都设置了定时器
4 无连接UDP
校验和 :检测报文传输当中保温段的差错
5 面向连接TCP
5.1 概述
- 点对点
- 可靠的,按顺序的字节流
- 管道化(流水线)
- 全双工数据
- 面向连接
- 有流量控制和拥塞控制
5.2 报文段
序号 :报文段首字节在字节中的编号
确认号 :期待从另一方收到的下一个子节点序号
5.3 可靠数据传输
TCP采用SR的方式,并且有一定的改变
5.4 流量控制
流量控制 :接受方控制发送方,不让发送方发送太多,太快以致于淹没接受方(接受方缓冲区溢出)
手段 :接受方发向发送方的ack消息中包含rwnd字段,通告发送方接受方的空闲buffer,发送方根据rwnd字段调整发送速率
目的 :保证接受方缓冲区不会被淹没
5.5 拥塞控制
定义 :太多的数据需要网络传输,超过了网络的处理能力
表现 :分组丢失 分组延时较长
拥塞控制两种方式 :
1 端到端的拥塞控制
没有来自网络的反馈
端系统根据延迟和丢失事件推测是否拥塞
TCP采用
2 网络辅助的拥塞控制
路由器提供反馈信息
单个bit位显示有拥塞
显示提供发送端可以采用的速率
5.6 连接管理
客户端服务器分别关闭它自己这一侧的连接