HTTP发送请求建立TCP连接需要的三次握手

2019-05-27  本文已影响0人  梦想成真213

TCP连接

几乎所有的HTTP通信都是由TCP/IP承载的,TCP/IP是全球计算机及网络设备都在使用的一种常用的分组交换网络分层协议集。客户端应用程序可以打开一条TCP/IP连接,连接可能运行在世界任何地方的服务器应用程序。一旦连接建立起来,在客户端的和服务器端的计算机之间的报文就永远不会丢失、受损、或失序。

HTTP协议是在TCP/IP传输层上的应用层协议,TCP为HTTP提供了一条可靠的比特传输管道。

下图是浏览器发出http请求到响应的一个过程:



在HTTP请求过程中会出现网络时延,主要有以下几种原因:

现在我们主要看一下客户端在发送TCP连接请求时的时延:握手时延

建立一条新的TCP连接时,甚至是在发送任意数据之前,TCP软件之间会交换一系列的IP分组,对连接的有关参数进行沟通(如下图)。如果连接只用来传送少量数据,这些交换过程就会严重降低HTTP的性能。


HTTP是没有连接的概念的,只有请求和响应数据,这个数据包的传送是在TCP连接(TCP connection)之上的。在一个TCP连接上是可以发送多个HTTP请求的。



TCP连接握手需要经过三个步骤:(三次网络传输)

符号解释:

(1)seq序号:占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。它的初始序号是随机的,相对序号/确认序号是和TCP会话的初始序号相关联的。该序号被用来跟踪该端发送的数据量。每一个包中都包含序号,在接收端则通过确认序号用来通知发送端数据成功接收。

(2)确认序号:ack序号,占32位,只有ACK标志位为1时(不要将确认序号ack与标志位中的ACK弄混了),确认序号才有效。确认方ack = 发起方seq +1,两端配对。

(3)位码即TCP标志位,有6种,具体含义如下:

SYN(synchronous建立连接) 发起一个新连接

ACK(acknowledgement 表示响应、确认) 确认序号有效

PSH(push表示有DATA数据传输) 接收方应尽快将这个报文交给应用层

FIN(finish关闭连接) 释放一个连接

RST(reset表示连接重置)

URG(urgent pointer紧急指针字段值有效)

参考:
《HTTP权威指南》
https://blog.csdn.net/weixin_36794678/article/details/81491121

上一篇 下一篇

猜你喜欢

热点阅读