跳转至

TCP 的介绍

学习目标

  • 能够说出TCP 的特点

1. 网络应用程序之间的通信流程

之前我们学习了 IP 地址和端口号,通过 IP 地址能够找到对应的设备,然后再通过端口号找到对应的端口,再通过端口把数据传输给应用程序,这里要注意,数据不能随便发送,在发送之前还需要选择一个对应的传输协议,保证程序之间按照指定的传输规则进行数据的通信, 而这个传输协议就是我们今天学习的 TCP。

2. TCP 的概念

TCP 的英文全拼(Transmission Control Protocol)简称传输控制协议,它是一种面向连接的、可靠的、基于字节流的传输层通信协议

面向连接的效果图:

面向连接

TCP 通信步骤:

  1. 创建连接
  2. 传输数据
  3. 关闭连接

说明:

TCP 通信模型相当于生活中的’打电话‘,在通信开始之前,一定要先建立好连接,才能发送数据,通信结束要关闭连接。

面向连接

3. TCP 的特点

  1. 面向连接
  2. 通信双方必须先建立好连接才能进行数据的传输,数据传输完成后,双方必须断开此连接,以释放系统资源。
  3. 可靠传输
  4. TCP 采用发送应答机制
  5. 超时重传
  6. 错误校验
  7. 流量控制和阻塞管理

补充:TCP的三次握手

所谓三次握手(Three-Way Handshake)即建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。在socket编程中,这一过程由客户端执行connect来触发

整个流程如下图所示:

(1)第一次握手:客户端将数据包发送给Server,等待Server确认

(2)第二次握手:Server收到数据包后知道Client请求建立连接,发送数据包发送给Client以确认连接请求

(3)第三次握手:Client收到确认后发送数据包发送给Server,Server检查数据包,如果正确则连接建立成功,完成三次握手,随后Client与Server之间可以开始传输数据了。

补充:TCP的四次挥手

TCP的4次挥手,主要是说TCP断开链接的时候需要经过4次确认.

第一次挥手: 主机1(可以是客户端,也可以是服务器端)向主机2发送一个FIN报文段;此时,主机1进入FIN_WAIT_1状态;这表示主机1没有数据要发送给主机2了;

第二次挥手: 主机2收到了主机1发送的FIN报文段,向主机1回一个ACK报文段告诉主机1,我也没有数据要发送了,可以进行关闭连接了;

第三次挥手: 主机2向主机1发送FIN报文段,请求关闭连接,同时主机2进入CLOSE_WAIT状态;

第四次挥手: 主机1收到主机2发送的FIN报文段,向主机2发送ACK报文段;主机2收到主机1的ACK报文段以后,就关闭连接;此时,主机1等待2MSL(Maximum Segment Lifetime 报文最大生存时间)后依然没有收到回复,则证明Server端已正常关闭,那好,主机1也可以关闭连接了。

4. 总结

TCP 是一个稳定、可靠的传输协议,常用于对数据进行准确无误的传输,比如: 文件下载,浏览器上网