TCP 协议
概述
传输控制协议 为了在不可靠的互联网上提供可靠的端到端字节流而专门设计的一个传输协议
设计目标
为了能动态适应互联网络不同部分有着截然不同的 拓扑结构 贷款 延迟 数据包大小 和其他参数 的特性
TCP服务模型
TCP 服务由发送端和接受端创建的一种称为 套接字(socket) 的端点来获得
每个套接字都有一个套接字编号
为了获得TCP连接 必须显式的在一台机器的套接字和另一台机器套接字之间建立一个连接
套接字(socket)
每个套接字都有一个套接字编号(地址) 该编号由主机的IP地址以及一个本地主机的16位数值组成 这个16位数值称为端口 端口是TCP的TSAP名字
所有的TCP连接都是全双工(可以同时在两个方向上传输数据) 点对点(每个连接恰好由两个端点)的
一个TCP连接是一个字节流 而不是消息流 端到端之间不保留消息边界 接受端无法获知发送端所发送的数据块大小
TCP 可以立即发送数据 也可以缓冲数据之后再次发送 (为了收集更多数据一次发送出去)
TCP数据的交换
TCP连接上的每个字节都有一个独有的32位序号
发送端和接受端的TCP实体以段的形式交换数据
TCP段由一个固定的20字节的头(加上可选部分)以及随后0个或者多个数据字节构成
TCP软件决定了段的大小 它可以将多次写操作中的数据积累起来 放在一个段中发送 也可以将一次写操作中的数据分割到多个段中发送
TCP实体使用的基本协议
具有动态窗口大小的滑动窗口协议 当发送端传送一段时 它会启动一个计时器 当该段到达接受方时 接受端的TCP实体会返回一个携带确认号和剩余窗口大小的段(如果由数据要发送 则包含数据 否则不包含)并且确认号的值等于接收段期望接收的下一个序号 如果发送端的计时器在确认端到达之前超时 则发送端再次发送原来的段