HTTP超文本传输协议----记录

最近时不时会看到一些HTTP的帖子,所以自己也写一个,拿来备忘

1. 什么是超文本传输协议

HTTP中文全称就叫“超文本传输协议”
之前一直都是看过就完了,这两天看到几篇文章,详细解释了一下这个名字,所以我也就跟着大概理解了一下。
超文本传输协议,分为三个词:“超文本”,“传输”,“协议”
超文本:互联网初期只能传递文字文本信息,后来加了图片、视频、音频等信息,再后来,里面加了超链接,可以通过超链接跳转,到这里,就已经不是简单地纯文本信息了,语义扩大之后就被称为“超文本”‘。
传输:我通常理解为“寄快递”,只是“寄”的东西是数据,现实生活中是某个物品,这个时候,出来2个概念,一个“请求方”,一个“应答方”
在这里,我们HTTP的请求是参见上网过程,请求百度:请求方发起请求并传递数据,响应方对请求执行并返回数据,这里是一来一回的交互
协议:就是我们之间约定好的一种行为方式。协议也分很多种,我们经常使用的QQ,使用就是QICQ协议,其实就是一种准则,我告诉你,我接受json格式的数据,你给我一个二进制的格式数据,那我就用不了,不知道你想说什么(举例就是我告诉你只会中文,你给我写了一封日文信,我就读不懂)

2、HTTP传输过程

目前我们计算机的数据传输,无论是不是HTTP,还是其他的数据,其实 都要经过分层传递,这就又到了四层模型,五层模型,七层模型了,这里不展开,贴个图,看看就行。
在这里插入图片描述

3、浏览器

HTTP请求,常见的使用是浏览器上,这里简单了解一下浏览器的内核。
目前市面上,我们经常看到360浏览器,谷歌浏览器,百度浏览器,搜狗浏览器,火狐浏览器,Safari(苹果系统的浏览器)等等,会看到很多,但是其实很多浏览器,本质上都是使用的别人的内核,他们只是做了优化,如界面、功能增删、响应速度等等。
那么就大概了解一下主流的几款浏览器内核吧。

  • IE
  • Firefox
  • Chrome
  • Safari
  • Opera

4、HTTP状态码

这个地方,作为测试而言,是一个面试的考点吧,还是要知道的
1XX:等待执行,是一种中间状态,实际情况用到的比较少
2XX:请求成功
3XX:重定向
4XX:请求方错误
5XX:服务端错误

5、HTTP几种请求

  • GET
  • POST
  • DELETE
  • PUT
  • HEAD
  • OPTIONS
  • TRACE
  • CONNECT
    一般使用最多的是GET和POST,其次是PUT和DELETE,另外的几个了解即可,此处,我想多提一下GET和POST请求。
    有一个比较常见的问题是:GET和POST的区别。
    在这里,需要了解2个词:安全幂等
    幂等解释一下概念:多次请求,返回相同的值,就是幂等
    get请求是向服务器获取数据,常见的如查询列表的功能
    post是提交一个数据,常见的是登录,编辑等功能
    那么就可以看到:
    GET是“只读”,无论你操作多少次,都不会影响服务器上的数据,而且每次的结果都是相等的,所以GET幂等且安全
    POST,是新增或者提交,那么就会修改服务器上的数据,一般会创建资源(例如新增用户),所以POST不幂等,且不安全

6、HTTP请求常见字段

  • 请求头
    Request URL: url(这个地方还有个延伸:URL和URI,但是 我也没了解,就不写了
    Request Method: 请求方式
    Status Code: 状态码
  • 请求body
    content-length:字节长度
    content-type:用于服务器回应时,告诉客户端,本次数据是什么格式
    date:本次请求的时间
    set-cookie:cookie
    status:状态

7、三次握手和四次挥手

因为HTTP请求是基于TCP传输协议进行传输的(HTTP/3 把 TCPP 层换成了基于 UDP 的 QUIC),所以这个地方延伸一下TCP请求的三次握手和四次挥手,不想详细讲,讲了又有很多东西,贴个图看看吧

  • 三次握手
    在这里插入图片描述
  • 四次挥手
    在这里插入图片描述

8、HTTP请求特点

HTTP 最突出的优点是:
简单、灵活和易于扩展、应用广泛和跨平台

  • 简单:
    结构就是header+body
    参数就是key:value
  • 灵活和易于扩展
    从HTTP本身来说,开发人员可以自行添加数据,状态码,字段都没有固定死
    从结构上来说,HTTP在应用层,那么下层可以 随意变动
  • 应用广泛和跨平台
    用户端有web,app,手机网页,等等
    广泛的跨平台

缺点:
无状态和不安全

  • 无状态
    无状态的好处就是减少资源,毕竟你要存储状态也是需要字段的
    无状态的缺点就是需要验证身份的操作,你需要无限循环登录
    解决这个问题,我们增加了cookie
  • 不安全
    因为HTTP是明文传输(抓包是能看到你传输的信息的)那么就导致不安全
    解决这个问题,我们增加了HTTPS

9、HTTPS

因为HTTP的不安全性,导致后续出现一个HTTPS
HTTPS = HTTP + SSL
那么问题来了,HTTPS和HTTP请求的区别是什么?
在这里插入图片描述

  • 安全性
    HTTP请求是明文的
    HTTPS进行了SSL加密
  • 连接建立
    HTTP直接进行TCP三次握手即可
    HTTPS除了TCP三次握手外,还需要进行SSL握手
  • 端口
    HTTP端口默认80
    HTTPS端口默认443
  • CA证书
    HTTP不需要CA证书
    HTTPS需要CA证书确认身份

猜你喜欢

转载自blog.csdn.net/Waste_youth/article/details/106309971
今日推荐