Site
Site
文章目录
  1. Http 简介
  2. 计算机之间的通信
    1. TCP/IP 协议
  3. HTTP 所在协议层
  4. HTTP的请求响应
  5. * HTTP工作工程
  6. HTTP 协议栈传输流

HTTP协议

Http 简介

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于WWW 服务器传输超文本到本地浏览器的传送协议,它可以使浏览器更加高效,使网络传输减少。

计算机之间的通信

TCP/IP 协议

计算机之间的通信是通过TCP/IP协议在因特网上进行的,实际上这是两个协议:

  • IP:网际协议,计算机之间的通信

    IP协议是计算机用来相互识别的通信的一种机制,每台计算机都有一个IP.用来在internet上标识这台计算机。 IP 负责在因特网上发送和接收数据包。通过 IP,消息(或者其他数据)被分割为小的独立的包,并通过因特网在计算机之间传送。IP 负责将每个包路由至它的目的地。

  • TCP:传输控制协议,应用程序之间的通信

TCP确保数据包以正确的次序到达,并且尝试确认数据包的内容没有改变。当应用程序希望通过 TCP 与另一个应用程序通信时,它会发送一个通信请求。这个请求必须被送到一个确切的地址。在双方“握手”之后,TCP 将在两个应用程序之间建立一个全双工 (full-duplex) 通信(双向同时通信,即通信的双方可以同时发送和接口信息的信息交互方式),占用两个计算机之间整个的通信线路。TCP 用于从应用程序到网络的数据传输控制,负责在数据传送之前将它们分割为 IP 包,然后在它们到达的时候将它们重组。

HTTP 所在协议层

HTTP是基于TCP协议之上的,它是应用层协议。


各层的协议

HTTP的请求响应

HTTP由请求和响应构成,是一个标准的客户端服务器模型(B/S)。HTTP协议永远都是客户端发起请求,服务器回送响应。
HTTP是一个无状态协议。无状态是指客户端和服务器不需要建立持久的连接,当客户端的请求得到了服务器的响应,连接就被关闭了,在服务器端不保留连接的有关信息,HTTP遵循请求应答模型(Request Response)。

* HTTP工作工程

1.地址解析
如果客户端浏览器请求这个页面:http://localhost:8080/index.html
从中分解出协议名,主机名,端口,对象路径等,解析结果如下:

  • 协议名:http
  • 主机名:localhost
  • 端口:8080
  • 对象路径:/index.html

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

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

3.封装成TCP包,建立TCP连接(TCP的三次握手)
在HTTP工作开始之前,客户机(Web浏览器)首先要通过网络与服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,因此Internet又被称作是TCP/IP网络。HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能进行高层协议的连接,因此,首先要建立TCP连接。

4.客户端发送请求命令
建立连接后,客户端发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息(多用途互联网邮件扩展,用于告诉浏览器服务器发送的多媒体数据的类型)包括请求修饰符、客户端信息和内容。

5.服务器响应
服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
实体消息是服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据。

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

Connection:keep-alive

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

HTTP 协议栈传输流

客户端:

  1. 将请求封装成http数据包
  2. 封装成tcp数据包
  3. 封装成ip数据包
  4. 封装成数据帧
  5. 硬件将帧数据转换成bit流(二进制数据)
  6. 通过物理硬件(网卡芯片)发送到指定地点

服务器:
先底层再高层

  1. 服务器硬件首先收到bit流
  2. 将bit流转换成ip数据包
  3. 通过ip协议解析ip数据包
  4. 发现里面为tcp数据包,通过tcp协议解析tcp数据包
  5. 接着发现是http数据,通过http协议解析得到数据
支持一下
扫一扫,支持xfan
  • 微信扫一扫
  • 支付宝扫一扫