TCP/IP协议簇学习笔记(8)TCP概述

从以下方面介绍
  • 概述
  • 如何建立和终止一个TCP连接
  • 了解正常的数据传输过程
  • TCP超时重传技术
  • TCP定时器
  • TCP新的特性以及TCP的性能
概述
特征

TCP是面向连接的、可靠的字节流传输层协议

TCP通过如下方式提供可靠性:

  • 应用数据被分割成TCP认为最适合发送的数据块。这和UDP完全不同(UDP直接加上UDP头就给IP)。由TCP传递给I P的信息单位称为报文段或段(segment)(参见图1 - 7)。在1 8 . 4节我们将看到TCP如何确定报文段的长度(其实就是MSS协商)。
  • 当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。在第 2 1章我们将了解TCP协议中自适应的超时及重传策略。
  • 当T C P收到发自 T C P连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒,这将在 1 9 . 3节讨论。
  • T C P将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错, T C P将丢弃这个报文段和不确认收到此报文段(希望发端超时并重发)。
  • 既然T C P报文段作为 I P数据报来传输,而 I P数据报的到达可能会失序,因此 T C P报文段的到达也可能会失序。如果必要, T C P将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。
  • 既然I P数据报会发生重复, T C P的接收端必须丢弃重复的数据
  • T C P还能提供流量控制。 T C P连接的每一方都有固定大小的缓冲空间。 T C P的接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机的缓冲区溢出。
***和确认应答

***是按顺序给发送数据的每一个字节都标上号码的编号。接收端查询接收数据TCP首部的***和数据长度,将自己下一步应该接收的序号作为确认应答返送回去,来实现可靠传输。
***有个基础值叫ISN,是在这个基础值上做累加
注意由于TCP是全双工的,所以有2个方向的***和确认号。
TCP/IP协议簇学习笔记(8)TCP概述

TCP结构

TCP/IP协议簇学习笔记(8)TCP概述
TCP/IP协议簇学习笔记(8)TCP概述

  • TCP的源目端口号和IP首部的源目IP确定了一个唯一的TCP连接
  • 32位***:表示一次通讯过程中,发端向收端方向的,TCP报文第一个字节序号在随机初始***ISN上的序号,SYN、FIN都会消耗一个***
  • 32位确认号:在ACK为1时,表示发送确认的一段希望接受到的下一个***,所以确认号是上次已接成功接收***加1
  • 4位首部长度:表示TCP首部有多少个4字节,当值位5时,表示TCP头20个字节
  • URG:紧急指针,为1表示包中有经济处理的数据
  • ACK:确认号是否有效
  • PSH:接收方应该尽快将这个报文段交给应用层。
  • RST:强制断开连接
  • SYN:同步标志,用来建立一个tcp连接
  • FIN:为1表示今后不会在有数据发送给对方。
  • 16位窗口大小:用来告诉对方本端接收缓冲区还能接收多少个字节数
  • 16位校验和:覆盖tcp首部和tcp数据整个tcp报文段,是强制字段,一定要存在。
  • 16位紧急指针:只有当URG标志置1时紧急指针才有效。数据部分首位到紧急指针所指示的位置为止为紧急数据,因此紧急指针指出了紧急数据的末尾在报文中的位置。
  • 选项字段有一个MSS(Maximum Segment Size),最大报文大小,通常在建立tcp连接时带上这个字段,表明本端能接受的最大长度报文