【详解】URL及HTTP协议详解

1 URL(Uniform Resoure Locator)

统一资源定位符,通俗理解就是网络资源地址,通过URL能够找到对应的资源数据。

URL地址:https://www.baidu.com/10/E178J2O489FH.html?page=1&count=10

​ < 协议部分 + 域名 + 资源路径 + 查询参数 >

  • 协议部分: https://、http://、ftp://

  • 域名:IP地址的别名,它是用点进行分割使用英文字母和数字组成的名字,使用域名目的就是方便的记住某台主机IP地址。

  • 参数说明:? 后面的page表示第一个参数,后面的参数都使用 & 进行连接

2 HTTP协议

  • HTTP协议的全称是(HyperText Transfer Protocol),超文本传输协议

  • 超文本是指在文本数据的基础上还包括非文本数据,非文本数据有图片音乐视频等,而这些非文本数据会使用链接的方式进行加载显示,通俗来说超文本就是带有链接的文本数据也就是我们常说的网页数据

    HTTP协议的制作者是蒂姆·伯纳斯-李,1991年设计出来的,HTTP协议设计之前目的是传输网页数据的,现在允许传输任意类型的数据。

  • 传输HTTP协议格式的数据是基于TCP传输协议的,发送数据之前需要先建立连接。

  • TCP传输协议是用来保证网络中传输的数据的安全性的,HTTP协议是用来规定这些数据的具体格式的。

  • HTTP协议规定的数据格式是浏览器和Web服务器通信数据的格式,也就是说浏览器和Web服务器通信需要使用HTTP协议。

在这里插入图片描述

3 HTTP请求和响应报文

  • HTTP请求报文

    • GET方式的请求报文:获取Web服务器数据

      ---- 请求行 ----
      GET /a/b/c HTTP/1.1  # GET请求方式 请求资源路径 HTTP协议版本
      ---- 请求头 -----
      Host: www.itcast.cn  # 服务器的主机地址和端口号,默认是80
      Connection: keep-alive # 和服务端保持长连接
      Upgrade-Insecure-Requests: 1 # 让浏览器升级不安全请求,使用https请求
      User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36  # 用户代理,也就是客户端的名称
      Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 # 可接受的数据类型
      Accept-Encoding: gzip, deflate # 可接受的压缩格式
      Accept-Language: zh-CN,zh;q=0.9 #可接受的语言
      Cookie: pgv_pvi=1246921728; # 登录用户的身份标识
      ---- 空行 ----
      

      注意:每项数据之间使用:\r\n

    • POST方式的请求报文:向Web服务器提交数据

      ---- 请求行 ----
      POST /xmweb?host=mail.itcast.cn&_t=1542884567319 HTTP/1.1 # POST请求方式 请求资源路径 HTTP协议版本
      ---- 请求头 ----
      Host: mail.itcast.cn # 服务器的主机地址和端口号,默认是80
      Connection: keep-alive # 和服务端保持长连接
      Content-Type: application/x-www-form-urlencoded  # 告诉服务端请求的数据类型
      User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36 # 客户端的名称
      ---- 空行 ----
      ---- 请求体 ----
      username=hello&pass=hello # 请求参数
      

      注意:每项数据之间使用:\r\n

    总结:

    • 一个HTTP请求报文可以由请求行请求头空行请求体4个部分组成。

    • 请求行是由三部分组成: 请求方式 请求资源路径 HTTP协议版本

    • GET方式的请求报文没有请求体,只有请求行请求头空行组成。

    • POST方式的请求报文可以有请求行请求头空行请求体四部分组成。

      注意:POST方式可以允许没有请求体,但是这种格式很少见。

  • HTTP响应报文

    --- 响应行/状态行 ---
    HTTP/1.1 200 OK # HTTP协议版本 状态码 状态描述
    --- 响应头 ---
    Server: Tengine # 服务器名称
    Content-Type: text/html; charset=UTF-8 # 内容类型
    Connection: keep-alive # 和客户端保持长连接
    Date: Fri, 23 Nov 2018 02:01:05 GMT # 服务端的响应时间
    --- 空行 ---
    --- 响应体 ---
    <!DOCTYPE html><html lang=“en”></html> # 响应给客户端的数据
    

    注意:每项数据之间使用:\r\n

    • HTTP状态码:表示Web服务器响应状态

      状态码说明
      200服务器已成功处理了请求
      400错误的请求,请求地址或者参数有误
      404请求资源在服务器不存在
      500服务器内部源代码出现错误

    总结:

    • 一个HTTP响应报文是由响应行响应头空行响应体4个部分组成。
    • 响应行是由三部分组成:HTTP协议版本 状态码 状态描述,最常见的状态码是200

4 查看HTTP协议的通信过程

  • 通信原理

    在这里插入图片描述

注意:每一次浏览器和服务器的数据通讯,都是成对出现的即请求和响应,

同时每一次请求和响应都必须符合HTTP协议的格式

  • 谷歌浏览器开发者工具的使用

    在这里插入图片描述

    • 标签选项说明:

      • 元素(Elements):用于查看或修改HTML标签
      • 控制台(Console):执行JS代码
      • 源代码(Sources):查看静态资源文件,断点调试JS代码
      • 网络(Network):查看http协议的通信过程
    • 使用说明:

      ①点击Network标签选项

      ②在浏览器地址栏输入百度的网址,就能看到请求百度首页的HTTP的通信过程

      ③这里的每项记录都是请求+响应的一次过程

      在这里插入图片描述

      • 查看HTTP协议的通信过程

在这里插入图片描述

总结:

  • 谷歌浏览器的开发者工具是查看http协议的通信过程利器,通过Network标签选项可以查看每一次的请求和响应的通信过程,调出开发者工具的通用方法是在网页右击选择检查。

  • Headers选项总共有三部分组成:

    General: 主要信息

    Response Headers: 响应头

    Request Headers: 请求头

  • Response选项是查看响应体信息的

  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HTTP 协议(Hypertext Transfer Protocol)是一种用于传输超文本的应用层协议,是万维网数据传输的基础。它采用客户端-服务器模式,客户端发起请求,服务器返回响应。下面对 HTTP 协议进行详细解析。 HTTP 协议以简洁的请求-响应模型为基础。客户端发送请求报文给服务器,报文包含请求方法、URL协议版本等信息。服务器收到请求后,根据请求内容进行相应处理,并返回响应报文给客户端。响应报文包含协议版本、状态码、响应头和响应体等信息。客户端接收到响应后,根据状态码判断请求是否成功,并解析响应内容。 HTTP 协议的特点主要包括:无状态、可靠性差、传输效率低。无状态指的是服务器不会保存任何客户端的状态信息,每次请求都是单独的。可靠性差是因为 HTTP 使用 TCP 进行数据传输,TCP 协议本身也有一定的不可靠性。传输效率低是由于 HTTP 建立连接的开销较大,并且每次请求都需要重新建立连接。 HTTP 协议的工作流程如下:客户端发送一条请求到服务器,服务器接收并解析请求,处理请求并生成响应,将响应发送给客户端,客户端接收并解析响应。 HTTP 协议的主要优点包括:易于使用、灵活性强、便于扩展。易于使用指的是 HTTP 的语法规则简单明了,易于理解和实现。灵活性强指的是可以通过设置请求头、传递参数等方式来定制请求。便于扩展指的是可以根据需要添加新的功能或特性。 总之,HTTP 协议作为互联网应用最常用的协议之一,它的设计简洁、易于使用,为用户提供了方便、快速的网络通信方式。同时,由于协议本身的一些限制,HTTP 协议的传输效率相对较低,因此在一些对效率要求较高的场景下,可能需要使用其他协议替代。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值