【网络协议】精讲HTTP工作流程!图解超赞超详细!!!

目录

前言  

1. HTTP工作过程

1.1 地址解析

1.2 封装HTTP请求数据包

1.3 封装成TCP包,建立TCP连接(TCP的三次握手)

1.4 客户机发送请求命令

1.5 服务器响应

1.6 服务器关闭TCP连接

2. HTTP协议栈中各层数据流


前言  

HTTP由请求和响应构成,是一个标准的客户端服务器模型(B/S)。HTTP协议永远都是客户端发起请求,服务器回送响应。见下图:

图片

    HTTP是一个无状态的协议。无状态是指客户机(Web浏览器)和服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,然后服务器返回响应(response),连接就被关闭了,在服务器端不保留连接的有关信息.HTTP遵循请求(Request)/应答(Response)模型。客户机(浏览器)向服务器发送请求,服务器处理请求并返回适当的应答。所有HTTP连接都被构造成一套请求和应答。

1. HTTP工作过程

一次HTTP请求的完整过程

  • 浏览器根据域名解析IP地址

  • 浏览器通过IP地址与WEB服务器建立一个TCP连接

  • 浏览器给WEB服务器发送一个HTTP请求

  • 服务器端响应HTTP请求,浏览器得到服务器响应的内容,比如HTML页面代码

  • 浏览器解析HTML代码,并请求HTML代码中的资源

  • 关闭该TCP连接,浏览器对页面进行渲染呈现给用户

 一次HTTP操作称为一个事务,其工作整个过程详细介绍如下:

1.1 地址解析

     如用客户端浏览器请求这个页面:http://localhost.com:8080/index.htm

    从中分解出协议名、主机名、端口、对象路径等部分,对于我们的这个地址,解析得到的结果如下:     

  • 协议名:http

  • 主机名:localhost.com

  • 端口:8080

  • 对象路径:/index.htm

    在这一步,需要域名系统DNS解析域名localhost.com,得主机的IP地址。

1.2 封装HTTP请求数据包

     把以上部分结合本机自己的信息,封装成一个HTTP请求数据包

1.3 封装成TCP包,建立TCP连接(TCP的三次握手)

      在HTTP工作开始之前,客户机(Web浏览器)首先要通过网络与服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络。HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能,才能进行更层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80。这里是8080端口

1.4 客户机发送请求命令

      建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URI)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可内容。

URI: 统一资源标识符,用来唯一的标识一个资源,是一种语义上的抽象概念。URL :统一资源定位符,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何访问到这个资源 URI是以一种抽象的,高层次概念定义统一资源标识,标记了一个网络资源,而URL则是具体的资源标识的方式。简单比喻 - URI唯一标识一个人(例如身份证), URL定义了如何访问到这个人(例如家庭地址)

1.5 服务器响应

     服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。

    实体消息是服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据

1.6 服务器关闭TCP连接

     一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码

    Connection:keep-alive

   TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。

2. HTTP协议栈中各层数据流

    首先我们看看客户端请求的时候,数据在各层协议的数据组织如下图:

图片

   而服务器解析客户机请求就是反向操作的过程,如下图:

图片

客户机发起一次请求的时候:

    客户机会将请求封装成http数据包-->封装成Tcp数据包-->封装成Ip数据包--->封装成数据帧--->硬件将帧数据转换成bit流(二进制数据)-->最后通过物理硬件(网卡芯片)发送到指定地点。

     服务器硬件首先收到bit流....... 然后转换成ip数据包。于是通过ip协议解析Ip数据包,然后又发现里面是tcp数据包,就通过tcp协议解析Tcp数据包,接着发现是http数据包通过http协议再解析http数据包得到数据。

猜你喜欢

转载自blog.csdn.net/jly_20220520/article/details/141615462