- TCP/IP运输层的两个重要协议
- TCP报文段的首部格式
- 为了实现可靠传输,TCP采用了面向字节流的方式
- 但TCP在发送数据时,是从发送缓存取出一部分或全部字节并给其添加一个首部使之称为TCP报文段后进行发送
- 一个TCP报文段由首部和数据载荷两部分构成
- TCP的全部功能都体现在它首部各字段的作用
- TCP的运输连接管理——TCP的连接建立
- TCP的连接建立要解决以下三个问题:
- 使TCP双方能够确知对方的存在
- 使TCP双方能够协商一些参数
- 使TCP双方能够能对运输实体资源进行分配
- TCP使用“三报文握手”建立连接
- TCP的运输连接管理——TCP的连接释放
- TCP的流量控制
- 流量控制:让发送方的发送速率不要太快,要让接收方来得及接收
- 利用滑动窗口机制可以很方便地在TCP连接上实现对发送方地流量控制
- TCP接收方利用自己地接收窗口的大小来限制发送方发送窗口的大小
- TCP发送方收到接收方的零窗口通知后,应启动持续计时器,持续计时器超时后,向接收方发送零窗口探测报文
- TCP的拥塞控制
- TCP可靠传输的实现
- TCP基于以字节为单位的滑动窗口来实现可靠传输
- 发送方在未收到接收方的确认时,可将发送窗口内还未发送的数据全部发送出去
- 接收方只接收序号落入发送窗口内的数据
- 虽然发送方的发送窗口是根据接收方的接收窗口设置的,但在同一时刻,发送方的发送窗口并不是总是和接收方的接收窗口一样大
* 网络传送窗口值需要经历一定的时间滞后,并且这个时间还是不确定的
* 发送方还可能根据网络当时的拥塞情况适当减少自己的发送窗口尺寸 - 对于不按序到达的数据应如何处理,TCP并无明确规定
- 如果接收方不把不按序到达的数据一律丢弃,那么接收窗口的管理会比较简单,但这样做对网络资源的利用不利,因为发送方会重复传送较多的数据
- TCP通常对不按序到达的数据是先临时存放在接收窗口中,等到字节流中所缺少的字节收到后,再按序交付上层的应用进程
- TCP要求接收方必须有累计确认和捎带确认机制,这样可以减小传输开销,接收方可以在合适的时候发送确认,也可以在自己有数据要发送时把确认信息顺带捎带上
- 接收方不应过分推迟发送确认,否则会导致发送方不必要的超时重传,这反而浪费了网络资源
- 捎带确认实际上并不是经常发生,因为大多数应用程序很少同时在两个方向上发送数据
- TCP超时重传时间的选择