TCP简介
一、TCP提供的服务
TCP提供面向连接、可靠的字节流服务。
- 面向连接
使用两个TCP的应用在彼此交换数据之前必须建立一个TCP连接。
仅有双方可以彼此通信,广播和多播不能用于TCP。 - 可靠
利用下面技术保证可靠性
- 应用数据被分隔为TCP认为最适合发送的数据块
- 定时及重传机制
- 收到以后发送确认
- 首部保持端到端的校验和
- TCP会处理IP层的乱序
- TCP会丢弃IP层的重复包
- TCP提供了流量控制
- 应用数据被分隔为TCP认为最适合发送的数据块
- 字节流
两个应用程序通过TCP连接交换8 bit字节构成的字节流。TCP不在字节流中插入记录标识符。我们称之为字节流服务(byte stream service)。
TCP不对字节流作任何解释。TCP不知道传输的数据字节流是二进制数据、ASCII字符、EBCDIC字符还是其他类型数据。
二、TCP首部


如果不计选项字段,通常是20字节。
- 源端和目的端端口号
用于寻找发端和收端应用进程。这两个值加上IP首部中的源端IP和目的端IP地址唯一确定一个TCP连接。
一个IP地址和一个端口号称为一个socket。socket pair可以唯一确定互联网络中的每个TCP连接的双方。 - 序号
用来标识从TCP发端向TCP收端发送的数据字节流,表示在这个报文段中的第一个数据字节。 - SYN
新建立一个连接时,SYN标志变为1。 - 确认序号
发送确认的一端所期望收到的下一个序号,即上次已成功收到的数据字节序号加1。 - ACK
只有ACK标志位1时,确认序号才有效。
由于ACK字段总是TCP首部的一部分,因此发送ACK无需任何代价,一旦一个连接建立起来,这个标志总是被设置。 - PSH
接收方应该尽快把这个报文交给应用层 - RST
重置连接 - FIN
发端完成发送任务 - 首部长度
首部中32 bit字的数目。 - 窗口大小
用于TCP流量控制 - 校验和
覆盖了整个TCP报文段:TCP首部和TCO数据。
下起雨,也要勇敢前行