当前课程知识点:计算机网络技术 > 第四章 TCP/UDP协议 > 4.3 传输控制协议 > 4.3 传输控制协议
第三节
TCP协议
本节介绍TCP协议的特点
差错控制 流量控制 连接与释放等内容
TCP协议的特点
简单说 支持面向连接服务
支持字节流传输
支持全双工通信
支持可靠性服务
TCP的可靠性
我们说TCP协议是可靠的
是指它
通过以下多种方式来确保了它的可靠性
这些方式包括
应用数据分成适合的数据块
重传计时器与确认机制
提供端-端的校验和
重新排序接收的数据报
检查并丢弃重复的数据
用于流量控制的可变窗口等等手段
TCP报文段
TCP 虽然是面向字节流的
但 TCP 传送的数据单元却是报文段
如图所示
一个 TCP 报文段分为首部和数据两部分
而 TCP 的全部功能
都体现在它的首部中各字段的作用
TCP 报文段首部的前 20 个字节是固定的
后面有 4n
字节
是根据需要而增加的选项 (其中n 是整数)
因此 TCP 首部的最小长度是 20 字节
差错控制
TCP是一个可靠的传输层协议
发送方的应用程序
将数据流交付给TCP
那么TCP将整个数据流
交付给接收方的应用程序
并且是按序的 没有差错的
也没有丢失或者是重复
TCP要做到这些
是通过差错控制来实现的
差错控制包括
检测受到损伤的报文段
丢失的报文段
失序的报文段和重复的报文段
以及检测出差错后纠正差错的机制
TCP中的差错检测
是通过3种简单的工具来完成的
校验和 超时 确认
每一个TCP报文段
都包括校验和字段
校验和用来
检查受到损伤的报文段
如果报文段通过检查发现它受到损伤
就丢弃
如果一个报文段
在超时截止期之前
未被确认
则被认为是受到损伤或已丢失
出错或超时的报文
都是通过重传来实现纠错
用滑动窗口协议
来完成流量控制的目的
是网络中使用的一种基本的方法
TCP协议也使用了这种方法
TCP发送数据的多少
是由这个窗口定义的
使用这种方法
两个主机
为每一个连接使用一个窗口
这个窗口叫做“滑动窗口”
当接收方
接收到正确的字节并发回确认时
这个窗口能够在缓存上滑动
窗口覆盖了缓存的一部分
这部分就是主机可以发送
而不必考虑从另一个主机发来的确认
窗口的大小可以是固定的
也可以是可变的
取决于目的进程的通知
目的进程可以在确认报文中
增大窗口
也可以在确认报文中减少窗口
在滑动窗口的操作中
可能出现一个严重的问题
就是当发送方
应用程序产生数据很慢
或者是接受方应用程序接收数据很慢
或者两者都有时
将会使得协议开销
与传输数据比例过高
使网络利用效率降低
例如
当 TCP 报文段只含有 1 字节的数据时
在 IP 层传输的数据报的开销至少
有 40 字节
包括 TCP 报文段的首部和 IP 数据报的首部
这样
对网络的利用率就不会超过 1/41
一个解决办法是
只要有数据到达就发送确认
但宣布的窗口大小为零
直到缓存空间已能放入
具有最大长度的报文段
或者缓存空间的一半已经空了
TCP连接的建立
TCP是面向连接的协议
所以TCP 建立连接的过程叫做握手
握手需要在两个进程之间
交换三个 TCP 报文段
称之为三次握手
采用三报文握手
主要是为了防止已失效的连接请求报文
段
突然又传回来了
因而产生错误
看图
1
主机A 的 TCP 向 主机 B
发送连接请求报文段
其首部中的同步位 SYN = 1
并选择序号 seq = x
表明传送数据时的
第一个数据字节的序号是 x
第二次是B 的 TCP 收到连接请求报文段后
如果同意
则发回确认
B 在确认报文段中
应使 SYN = 1
使 ACK = 1
其确认号 ack = x + 1
自己选择的序号 seq = y
第三次A 收到此报文段后向 B 给出确认
其 ACK = 1
确认号 ack = y +1
A 的 TCP 通知
上层应用进程
连接已经建立
B 的 TCP 收到主机 A 的确认后
也通知其上层应用进程
TCP 连接已经建立
这是它的这个TCP连接的三次握手过程
TCP连接的释放
那TCP 连接释放过程比较复杂
数据传输结束后
通信的双方都可释放连接
TCP 连接释放过程是四次握手来实现的
如图所示
第一次 A 的应用进程
先向其 TCP 发出连接释放报文段
并停止再发送数据 主动关闭TCP连接
2 B发确认 TCP 服务器进程通知高层应用进程
从 A 到 B 这个方向的连接就释放了
TCP 连接处于半关闭状态
B 若发送数据
A 仍然要接收
3 若 B 已经没有要向 A 发送的数据
其应用进程就通知 TCP 释放连接
最后一步
A 收到连接释放报文段后
必须要再发一个确认
TCP的状态
图中给出了
用有限状态机的形式
表示的TCP传输连接建立
维护与释放的状态转换图
可以更清晰地看出
TCP 连接的各种状态之间的关系
图中每一个方框都是 TCP 可能具有的状态
每个方框中的大写英文字符串
是 TCP 标准所使用的 TCP 连接状态名
状态之间的箭头
表示可能发生的状态变迁
箭头旁边的字
表明引起这种变迁的原因
或表明发生状态变迁后
又出现什么动作
图中有三种不同的箭头
粗实线箭头表示对客户进程的正常变迁
粗虚线箭头
表示对服务器进程的正常变迁
细线箭头表示异常变迁
-1.1 计算机网络的发展历程
--计算机的发展
-1.2 从计算机网络到互联网
-1.3 从互联网到移动互联网
-1.4 从移动互联网到物联网
-1.5-1.7 深入认识计算机网络结构、网络安全、互联网的成功经验
--1.5-1.7 深入认识计算机网络结构、网络安全、互联网的成功经验
-第一章 作业
-2.1 传输网的基本概念
-2.2 广域网技术研究与发展
-2.3 城域网技术研究与发展
-2.4 局域网技术研究与发展
-2.5 个人区域网研究与发展
-2.6 个人区域网研究与发展
-2.7-2.8 3G/4G与M2M工作模式、传输网两个融合的发展趋势
--2.7-2.8 3G/4G与M2M工作模式、传输网两个融合的发展趋势
-第二章 作业
-3.1 网络层与IP协议的演变与发展
-3.2 IPv4与IPv6协议
-3.3 路由技术的研究与发展
-3.4 QoSR与RSVP、DiffServ与MPLS
-3.5 IPv4向IPv6过渡
-3.6 路由器技术的研究与发展
-3.7 下一代互联网体系结构的研究
-第三章 作业
-4.1 网络环境中分布式进程通信
-4.2 传输层的基本功能
-4.3 传输控制协议
-4.4 用户数据报协议
-4.5 实时传输协议RTP/RTCP
-4.6. 容迟网技术的研究
-第四章 作业
-5.1 Internet应用发展与应用层协议分类
-5.2 P2P网络的主要类型
-5.3 基于P2P的网络应用
-6.1 移动互联网的概念
--第6章-移动互联网与移动IP - 6.1-6.2-PPT
-6.2 移动IP
-6.3 移动IPv4的基本工作原理
--第6章-移动互联网与移动IP - 6.3-6.4-PPT
-6.4 移动IPv6协议
-第五-六章 作业
-7.1 网联网的概念
-7.2 物联网的体系结构
-7.3 物联网的ONS 服务
-7.4 车联网VANET的基本概念
-7.5 车联网VANET的协议标准
-第七章 作业