TCP、HTTP详解

TCP和HTTP

  TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,采用三次握手建立连接,四次挥手终止连接。
  TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去,服务器和客户端均可主动发起断开连接的请求。

  HTTP(Hypertext Transfer Protocol,超文本传送协议),是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准,HTTP协议是建立在TCP协议之上的一种应用。
  HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为”一次连接”。

  • HTTP 1.0中,客户端的每次请求都要建立一次单独的连接,在处理完本次请求后,就自动释放连接
  • HTTP 1.1中,可在一次连接中处理多个请求,且可重叠发送请求(无需等待一个请求结果返回后再发送下一个请求)

TCP是传输层协议,定义数据传输和连接方式的规范
HTTP是应用层协议,定义传输数据的内容的规范
HTTP协议基于TCP协议,所以支持HTTP也就一定支持TCP

TCP三次握手(建立连接)

  1. 第一次握手:客户端向服务器发送SYN(seq=j)包到服务器;
  2. 第二次握手:服务器收到SYN包,向客户端发送ACK包(ack=j+1)和SYN包(seq=k);
  3. 第三次握手:客户端收到SYN+ACK包,向服务器发送ACK包(ack=k+1),完成三次握手。
    SYN:( Synchronize Sequence Numbers,同步序列编号)
    ACK:( Acknowledgement Number,确认编号)
    FIN:结束标志

TCP四次挥手(终止连接)

  1. 第一次挥手:客户端向服务器发送FIN包(seq=j),关闭客户到服务器的数据传送;
  2. 第二次挥手:服务器收到FIN包,向客户端发送ACK包(ack=j+1);
  3. 第三次挥手:服务器向客户端发送FIN包(seq=k);
  4. 第四次挥手:客户端收到FIN包,向客户端发送ACK包(ack=k+1),完成四次挥手。

为什么TCP连接是3次而终止是4次

  连接时,服务端收到SYN后,把ACK和SYN一起打包回发给客户端,只有3次。
  终止时,由于TCP连接是全双工的,每个方向都必须单独进行关闭,即FIN和ACK是分开发送的,所以有4次。
  当一方完成它的数据发送任务后,发送一个FIN来终止连接。但收到一个FIN只表示对方没有数据发送,而己方仍能发送数据。因此必须单独关闭。

猜你喜欢

转载自blog.csdn.net/u012102104/article/details/79485059
今日推荐