1、三次握手
A向B发送同步消息,请求建立A到B的连接,并在消息中附带字节流的开始编号。B收到消息后,发送同步和确认消息,因为B需要建立一个B到A到连接,在该同步消息中同样附带字节流到开始编号。A收到后,返回确认消息。
2、关闭连接
A向B发送完成消息(Fin)表示希望关闭A到B的连接,B返回可能需要的数据并返回确认消息,此时A到B的连接关闭,但B可能还有数据需要发送给A,所以B到A的连接暂时还保留着。一段时间后,B向A发送完成消息。A收到后返回确认消息给B,B收到后关闭B到A的连接。
3、TCP服务模型
特性 | 表现 |
---|---|
字节流 | 可靠的字节传输服务 |
可靠传输 | 1. 确认消息指示正确传输 2. 校验和检测受损的数据 3. 序列号检测丢失的数据 4. 流量控制防止接收方超负荷 |
有序性 | 数据按顺序交付给应用程序 |
(拥塞控制) | 控制网络拥塞 |
字节流:在两个应用程序间提供可靠的字节流
可靠传输:TCP使用四种机制来保证可靠传输,换句话说,保证数据已被正确传输。当运输层接收到数据后,它发送ACK消息告知发送方其数据已正确到达;TCP报头中有一个校验和字段,它覆盖了报头和segment中的数据;校验和用于检验数据在传输过程中是否受损,例如线路上的位错误或路由器内部的内存错误;序列号用于检测丢失的数据,每个segment的header中都有序列号,标明数据中第一个字节的序号;若主机B的发送速度远高于主机A的接收速度,主机A会被淹没。在TCP中,接收方会不断告知发送方是否可以继续发送。具体来说,它告诉发送方自己的缓冲区还有多少空间可以接收新数据。
有序性:TCP会按正确的顺序将数据传送到应用程序。TCP会按序列号重组收到到数据。
拥塞控制:略
3、TCP SEGMENT
序列号指明数据中第一个字节在字节流中的编号。ACK序列号指示发送方下一个发送的segment应该的序列号。HLEN指明header的长度,这是由于TCP Options的关系。Flags中标记位,ACK位表示ACK序列号部分有效(即表明这是一个ACK消息),SYN表示这是同步消息,FIN表示这是关闭连接的消息。
4、TCP连接的唯一标识
源IP、目的IP、协议ID、源端口号、目的端口号
5、总结
TCP在应用程序之间提供了有序、可靠的字节流传递服务。