5.2 传输控制协议TCP概述
5.2.1 主要特点
--TCP面向链接的传输协议;UDP是无连接的
--一个TCP智能有两个端点,因此智能是点对点的;UDP可以一对一、一对多、多对多
--TCP提供的可靠交付服务;UDP提供的是不可靠服务
--TCP是全双工通信
--TCP是面向数据流的,TCP不关心应用程序一次性给多长的数据,而是根据当前的网络拥塞情况和用户提供时间窗口值来决定一个报文应该包含多长;UDP发送的数据报长度完全取决于用户程序
5.3 可靠传输的工作原理
可靠传输的条件:1,传输信道不产生差错(出错重传);2,不管发送方以多快数量发送数据,接收方总能来得及处理数据(适当降低发送速率)
停止等待协议
--使用确认和超市重传机制可以保证在不可靠的传输网络上实现可靠的通信;
--停止等待协议是,每发送完一个分组就等待接收方的确认,在超时之前或者收到确认之前不会发送下一个分组
--停止等待协议的效率较低
连续ARQ协议
发送窗口:在一个发送窗口内,其中的分组可以连续的发送出去而不用等待接收方确认
累计确认:当发送方连续发送多个分组时,接收方不是对接收到的分组逐个确认,而是对分组按序达到的编号的最后一个进行确认,即当某个分组确认后,其分组编号之前的分组也相当于被正确接收从而确认了
5.4 TCP可靠传输的原理
5.4.1 以字节为单位的发送窗口
5.4.2 超时重传时间的选择
--采用自适应的算法,利用发送时记录时以及接收确认的时间,计算加权平均往返时间
5.4.3 选择确认Sack
--此处的设计目的是为了提高效率,只传送缺少的数据而不是所有未确认的数据。但是大多数实现还是采用重传所有未确认的数据
5.5 TCP的流量控制
--就是让发送的发送速率不要太快。让接收方来得及接收
--还是通过滑动窗口来实现的,即接收方告诉发送方发送窗口值是多大
5.6 TCP的拥塞控制
--慢开始,逐渐增大滑动窗口
5.7 TCP的运输管理
3个阶段:连接建立、数据传送、连接断开
连接建立:
三次握手:在吗、在、好的 主要是为了连接的正常建立。
A与B通信时:
理论上2次握手也可解决问题,但是由于TCP是面向连接的,假设采用两次握手会有问题:当A问B在吗的时候,有可能由于网络不太好,这个时候B过了很久才会收到A的请求,这是B向A答复在吗实际上已经超时了,其实按照tcp协议,A会再次向B发送建立请求,前一个;连接实际上已经失效了,但是B却以为连接已经建立了,因此B的许多连接就会被白白浪费了
四次挥手: