1. 引言
TCP是运输层的面向连接的可靠的运输协议。
2. TCP的服务
TCP提供的是面向连接的、可靠的字节流服务。
2.1 面向连接
指的是两个使用TCP的应用在交换数据前必须先建立一个TCP连接,一个连接中只有两方进行通信,故广播和多播不能用于TCP
2.2 可靠性
TCP提供可靠性的方式:
- 数据被分割成适合发送的数据块,即,报文段(segment)
- 自适应的超时及重传策略。(发出一个段后会启动定时器,超时未收到会重发)
- 收到另一端的数据后会发送确认
- 会保持首部和数据的检验和(端到端的),检测数据在传输过程中的任何变化
- 可以对收到的数据进行重新排序(因为TCP报文段作为IP数据报传输,IP数据报的到达会失序,所以TCP报文段的到达也会失序)
- 接收端会丢弃重复的数据
- 可以提供流量控制
2.3 字节流服务
TCP不在字节流中插入记录标识符,此外,TCP不对字节流的内容作任何解释,该工作由TCP连接双方的应用层进行。
3. TCP的首部
- 源端口号和目的端口号:这个两个字段的值加上IP首部中的源端IP地址和目的端IP地址唯一确定一个TCP连接。(一个IP地址+一个端口号称为一个插口(socket))
- 序号:用于标识从发端向收端发送的数据字节流,为32位的无符号数,序号增加到 232-1 后又从0开始。建立新连接时,SYN标志为1
- 确认序号:包含发送确认的一端所期望收到的下一个序号。
- 首部长度:给出首部32位字的数目,该字段占4位,故TCP首部最多为60字节
- 6个标志比特:
- 窗口大小:TCP流量控制由每一端通过声明的窗口大小提供,窗口大小为字节数,故窗口大小最大为65535字节
- 检验和:覆盖TCP首部+数据,是强制性字段,必须由发送端计算和存储,由接收端验证
- 紧急指针:URG置1时才有效,该字段值与序号字段值相加表示紧急数据最后一个字节的序号。
- 可选字段:常见MSS(最长报文大小),指明本端所能接收的最大长度的报文段
注意:
- 因为TCP提供的是全双工服务,所以连接的每一端都要保存每个方向上的传输数据序号.
- TCP可以称为没有选择确认或否认的滑动窗口协议。
4. 小结
- TCP提供的服务的特性
- TCP首部中各个字段