1. 概述和传输层服务
- 传输服务:
- 为运行在不同主机上的应用进程提供逻辑通信。
- 传输协议运行在端系统
- 发送方:将应用层的报文分成报文段,然后传递给网络层
- 接收方:将报文段重组成报文,然后传递给应用层
- 传输层协议:
- 无连接传输:UDP
- 无连接:
- UDP发送端和接收端之间没有握手。简单,节约建立时间。
- 报文段的头部很小(开销小)
- 每个UDP报文段都被独立地处理。
- 无拥塞控制和流量控制:尽力交付,不管是否到达(可能丢失),不管送达顺序。
- UDP应用:
- 流媒体(丢失不敏感,速率敏感、应用可控制传输速率)
- 视频会议等
- 在UDP上可行可靠传输:
- 在应用层增加可靠性,如增加校验
- 应用特定的差错恢复
- 无连接:
- 面向连接的传输:TCP:
-
特点:
- 点对点: 一个发送方,一个接收方
- 可靠的、按顺序的字节流: 没有报文边界
- 管道化(流水线): TCP拥塞控制和流量控制设置
窗口大小 - 发送和接收缓存
- 全双工数据: 在同一连接中数据流双向流动 ; MSS:最大报文段大小
- 面向连接: 在数据交换之前,通过握手(交换控制报文) 初始化发送方、接收方的状态变量
- 有流量控制: 发送方不会淹没接收方
-
TCP报文结构:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x9ia2S1J-1650711282652)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/0004f76e-9323-421b-ad5a-784c8f48f48e/1.png)]
-
TCP流量控制:
接收方控制发送方,不让发送方发送的太多、太快以至于让接收方的缓冲区溢出。
-
TCP拥塞控制原理:
- 非正式的定义: “太多的数据需要网络传输,超过了网 络的处理能力。
- 拥塞的表现:
- 分组丢失 (路由器缓冲区溢出)
- 分组经历比较长的延迟(在路由器的队列中排队)
-
2种常用的拥塞控制方法:
- 端到端拥塞控制:
- 没有来自网络的显式反馈
- 端系统根据延迟和丢失事件推断是否有拥塞
- TCP采用的方法
- 网络辅助的拥塞控制:
- 路由器提供给端系统以反馈信息
- 端到端拥塞控制:
-
TCP 拥塞控制策略:
- 慢启动
-
-
- 无连接传输:UDP
- 传输层 vs. 网络层:
- 网络层服务:主机之间的逻辑通信
- 传输层服务:进程间的逻辑通信
- 依赖于网络层的服务
- 并对网络层的服务进行增强
2. 多路复用与解复用
- 在发送方主机多路复用:
- 从多个套接字接收来自多个进程的报文,根据套接字对应的IP地址和端口号等信息对报文段用头部加以封装 (该头部信息用于以后的解复用)
- 在接收方主机多路解复用:
- 根据报文段的头部信息中的IP地址和端口号将接收到的报文段发给正确的套接字(和对应的应用进程)
- 多路解复用工作原理
- 解复用作用:TCP或者UDP实体采用哪些信息,将报文段的数据部分交给正确的socket,从而交给正确的进程
- 主机收到IP数据报
- 每个数据报有源IP地址和目标地址
- 每个数据报承载一个传输层报文段
- 每个报文段有一个源端口号和目标端口号(特定应用有著名的端口号)
- 主机联合使用IP地址和端口号将报文段发送给合适的套接字
1. 无连接(UDP)多路解复用
- 在接收端,UDP套接字用二元组标识 (目标IP地址、目标端口号)
- 当主机收到UDP报文段:
- 检查报文段的目标端口号
- 用该端口号将报文段定位给套接字
- 如果两个不同源IP地址/源端口号的数据报,但是有相同的目标IP地址和端口号,则被定位到相同的套接字。
2. 面向连接(TCP)的多路复用
- TCP套接字:四元组本地标识:
- 源IP地址
- 源端口号
- 目的IP地址
- 目的端口号
- 解复用:接收主机用这四个值来将数据报定位到合适的套接字。
- 服务器能够在一个TCP端口上同时支持多个TCP套接字:
- 每个套接字由其四元组标识(有不同的源IP和源PORT)
- Web服务器对每个连接客户端有不同的套接字
- 非持久对每个请求有不同的套接字
- 当一个进程有多个线程时,多个线程分别为客户提供服务。在这个场景下,还是根据4元组决定将报文段内容同一个进程下的不同线程,然后解复用到不同线程。
3. 流水线
- 目的:提高链路利用率
- 流水线:允许发送方在未得到对方确认的情况下一次发送多个分组
- 必须增加序号的范围:用多个bit表示分组的序号
- 在发送方/接收方要有缓冲区
- 发送方缓冲:未得到确认,可能需要重传;
- 接收方缓存:上层用户取用数据的速率≠接收到的数据速率;接收到的数据可
能乱序,排序交付(可靠)
- 两种通用的流水线协议:
- 回退N步(GBN)
- 选择重传(SR)
4. 滑动窗口协议
- 发送缓冲区
- 形式:内存中的一个区域,落入缓冲区的分组可以发送
- 功能:用于存放已发送,但是没有得到确认的分组
- 必要性:需要重发时可用
- 发送缓冲区的大小:一次最多可以发送多少个未经确认的分组
- 停止等待协议=1
- 流水线协议>1,合理的值,不能很大,链路利用率不能够超100%
- 发送缓冲区中的分组
- 未发送的:落入发送缓冲区的分组,可以连续发送出去;
- 已经发送出去的、等待对方确认的分组:发送缓冲区的分组只有得到确认才能删除