目录
一、运输层引入
1. 一些常识
运输层向它上面的应用层提供通信服务,逻辑通信
运输层重要功能:复用 —— 分用
网络层为主机之间提供逻辑通信,而运输层为应用进程之间提供端到端的逻辑通信
运输层需要进行差错检测
有两种不同的协议:面向连接的TCP协议、无连接的UDP协议
2. 运输层的端口
1)硬件端口:不同硬件设备进行交互的接口
2)软件端口:应用层的各种协议进程与运输实体进行层间交互的一种地址
应用程序 | FTP | TELNET | SMTP | DNS | TFTP | HTTP | SNTP | SNMP(trap) | HTTPS |
熟知端口号 | 21 | 23 | 25 | 53 | 69 | 80 | 161 | 162 | 443 |
二、用户数据报协议UDP
1. UDP特点
1)UDP是无连接的
2)尽最大可能交付
3)面向报文
4)没有拥塞控制
5)支持一对一,一对多,多对多通信
6)首部开销小
三、 传输控制协议TCP
1. TCP特点:
1)面向连接的运输层协议
2)只有两个端点,只能是点对点
3)提供可靠交付的服务
4)提供全双工服务
5)面向字节流,数据长度任意
2. TCP连接
套接字socket::=( IP地址 : 端口号 ) 如(192.3.4.5 :80)
TCP连接 {socket1 , socket2} = {(IP1 : port1) , (IP2 : port2) }
同一个IP地址可以有多个不同的TCP连接,同一个端口号也可以出现在不同的TCP连接中
四、可靠传输工作原理
1. 停止等待协议
每发送一个分组,就停止发送,等待对方确认
传输分为四种情况
1)无差错传输
2)超时重传
3)确认丢失
4)确认迟到
2.信道利用率U
TD ----> 发送所需时间
RTT ----> 往返所需时间
TA ----> 确认时间
停止等待协议信道利用率低
3. 连续ARQ协议
采用流水线传输
五、TCP报文段的首部格式
序号:本报文段所发送的数据的第一个字段的序号
确认号:期望收到对方下一个报文段的第一个数据字节的序号
数据偏移:数据其实距离TCP报文段的其实处有多远(用在分片)
紧急URG:URG=1,表示有紧急数据
确认ACK:ACK=1,确认连接,建立连接轴,所有传送报文必须把ACK置1
复位RST:出现严重差错,释放资源,重连,RST=1时有效
同步SYN:SYN=1,ACK=0,表示建立连接,SYN=1,表示连接请求或接收报文
六、TCP可靠传输的实现
1. 以字节为单位的滑动窗口
特点:1)TCP的滑动窗口是以字节为单位的
2)A收到B发来的确认号31,表示期望下一个发送过来的序号是31,到30为止的都收到了
3)设置超时计时器,超时重传
实现:1)根据B给出的窗口值,A构造出自己的发送窗口
2)在设有收到B的确认情况下,A可以把连接的窗口内的值发送出去
3)窗口越大,坑内获得更高的效率
2. 超时重传时间的选择
TCP每发送一个报文段,就对这个报文段设置一次计时器
1)加权平均往返时间RTTs
α是常数,RFC6298推荐为 α=1/8
2)超时重传时间RTO
Kam算法能够使运输层区分开来有效的和无效的往返时间样本,从而改进了往返时间的估测,使计算结果更为合理
3. 选择确认SACK
实现:1)用指针来标记这些边界,左边界指出字节块的第一个字节的序号,但右边界减1,才是字节块中的最后一个序号
2)在TCP报文段中的首部都增加了SACK选项,一个边界要用掉4个字节,最多只能指明8个边界,即4个字节块的边界信息
七、TCP流量控制
1. 利用滑动窗口实现流量控制
流量控制:让发送方的发送速率不要太快,接收方来得及接收,也不要使网络拥塞
往回发送确认消息的时候,用rwdn来通知设置接收窗口大小,表示允许发送的最大值
八、TCP的拥塞控制
1. 一般原理
1)出现拥塞的原因:需要的总资源 > 可用资源
2)出现拥塞后,网络性能被明显破坏,整个网络的吞吐量随输入符合的增加而下降
3)拥塞常常趋于恶化
4)拥塞引起的重传并不会环节网络的拥塞,反而会加剧网络的拥塞
2. 拥塞控制和流量控制
1)拥塞控制
①拥塞控制所要做的前提,是网络能承受现有的网络负荷
②拥塞控制是一个全局性的过程,涉及到很多因素
2)流量控制
①流量控制往往指点对点的通信量的控制,是一个端到端的问题
②流量控制要做的就是控制发送端的数据
3. 拥塞控制方法
1)拥塞判断:①重传定时器超时
②收到三个相同的ACK
2)四种算法
①慢开始:每经过一个传输轮次,拥塞窗口大小cwnd就加倍,慢在cwnd初始值为1
②拥塞避免算法:让拥塞窗口cwnd缓慢增大,每经过一个传输轮次,cwnd加1,相比慢开始算法,增长速度慢得多
AIDM算法:
通常①②两种算法混合使用,即所谓的AIDM算法,用慢开始门限ssthresh判断使用类型
当 cwnd < ssthresh 时,使用慢开始算法
当 cwnd = ssthresh 时,即可以使用慢开始,也可以使用拥塞避免算法
当 cwnd > ssthresh 时,使用拥塞避免算法
当超时重传时,重新设置ssthresh = 上次的cwnd / 2
③快重传:会一直卡在丢失的数据报中,反复发送重复确认,收到3个连续的重复确认之后,立即快重传,避免超时误认为网络拥塞
④快恢复:只丢失了个别报文段,不是从慢开始启动,而是调整门限ssthresh = cwnd / 2,执行拥塞避免
九、TCP的运输连接管理
1. 连接建立(三次握手)
2. 连接释放(四次握手)