一个点对点连接,有以下两个特点:

  1. 只有一条路径到达对端。一个包进入一个连接不可能丢失,因为唯一的出口是目的地。
  2. 包达到时候的顺序跟发出是顺序一致。

TCP 协议提供了一个逻辑上的点对点连接。TCP使用3种机制保证在无连接的网络之上提供面向连接的服务。

  1. 包被加以编号,这样,收到的乱序包能够在提交到上层协议之前排序。
  2. TCP系统使用确认、校验和计时器来保证可靠性。
  3. TCP使用窗口机制来调整数据流,以减小包因缓存溢出而丢弃的概率

TCP包头:

TCP/IP review之 TCP 协议_网络 

源/目的端口:16bit。IP地址和端口号绑定的组合,称作socket。一个socket唯一的定义了internetwork内的每一个应用(application)。

sequence number:32bit。比如,一个包的sequence number是1343,并且这个包包含了512 octets的数据,那么下一个包的sequence number就应该是1343+512+1=1856。

acknowledge number:32bit。如果一个主机收到的ack number跟他即将或者已经发送的包的sequence number不匹配,则主机不仅意识到丢包了,而且还知道哪个包丢了。

Header length:4bit,又称data offset,指示包头的长度(32bit为单位)。用此可以知道data部分的起始位置。

Reserved:6bit,始终为0。

Flags:6bit,用于控制数据流和链接。6个1bit分别代表:flags are Urgent (URG), Acknowledgment (ACK), Push(PSH), Rest (RST), Synchronize (SYN) and Final (FIN).

Window Size: 16bit,用于流控。

Checksum: 16bit,同时校验包头和数据。

Urgent Pointer: 16bit,使用时URG必须设定。在sequence number基础上加上这16bit数据,来指示urgent data的结尾。

Options:最常用的options是 Maximum segment size----用来通知接收者,告知发送者愿意收到的最大segment。

Padding:填充包头,保证整个TCP包是32bit的整数。