HTTP

Posted skyy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP相关的知识,希望对你有一定的参考价值。

1、HTTP全称Hyper Text Transfer Protocol中文名为 超文本传输协议

2、超文本传输协议

包含有超链接(Link)和各种多媒体元素标记(Markup)的文本。这些超文本文件彼此链接,形成网状(Web),因此又被称为网页(Web Page)。这些链接使用URL表示。最常见的超文本格式是超文本标记语言HTML

协议:http://
域名:www.oldboy.com
端口:80
URI:/news/index.html
URL: http://www.oldboy.com:80/news/index.html

3、什么是超文本传输http协议?

是一种按照URL指示,将超文本文档从一台主机(Web服务器)传输到另一台主机(浏览器)的应用层协议,以实现超链接的功能。

Http工作原理

http1.0 协议使用的是短连接:建立一次tcp链接,发起一次http的请求,结束,tcp断开

http1.1 协议使用的是长连接:建立一次tcp链接, 发起多次http的请求,结束,tcp断开

http2.0 协议使用的是长连接:建立一次tcp链接,可同时发起多次http的请求,结束,tcp断开
技术图片

浏览器分析超链接中的URL

一个URL有可能会很长,以&为分隔符每一个&后面就是一个参数,如下所示:

https://www.baidu.com/
s?ie=utf-8
&f=8
&rsv_bp=1
&tn=baidu
&wd=%E5%8C%97%E4%BA%AC%E9%A2%97%E7%B2%92%E5%BA%A6%E7%A7%91%E6%8A%80%E6%9C%89%E9%99%90%E5%85%AC%E5%8F%B8
&oq=%25E5%258C%2597%25E4%25BA%25AC%25E9%25A2%2597%25E7%25B2%2592%25E5%25BA%25A6%25E7%25A7%2591%25E6%258A%2580%25E6%259C%2589%25E9%2599%2590%25E5%2585%25AC%25E5%258F%25B8
&rsv_pq=e694f1d30004f344
&rsv_t=7636UffOguVdyOuz0FAGJM%2BGb1j7dABwDlZQvxLFjX9hbaQzp4ZUmUXcjkk
&rqlang=cn
&rsv_enter=0
&rsv_dl=tb
&rsv_sug=1>

General: 基本信息

#请求的URL
Request URL: https://www.mumusir.com/class/6_web%E5%9F%BA%E7%A1%80%E4%B9%8BHTTP.html

#请求的参数
Request Method: GET

#请求的状态码
Status Code: 200 OK

#请求的地址
Remote Address: 39.104.205.72:443

#没有配置referrer
Referrer Policy: no-referrer-when-downgrade

Response Headers: 响应的头部信息

#请求的大小
Accept-Ranges: bytes

#长连接
Connection: keep-alive

#请求长度
Content-Length: 150996

#请求的文件类型
Content-Type: text/css

#服务器时间
Date: Wed, 11 Sep 2019 03:23:52 GMT

#标记
ETag: "5d5b99cf-24dd4"

#文件最后修改时间
Last-Modified: Tue, 20 Aug 2019 06:57:19 GMT

#服务版本
Server: Tengine/2.1.2

Request Headers: 请求的头部信息

#请求文件类型
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3

#文件经过处理
Accept-Encoding: gzip, deflate, br

#语言
Accept-Language: zh-CN,zh;q=0.9

#登录验证
Authorization: Basic bGhkOmxpbmhhb2RhMDIyNQ==

#缓存参数
Cache-Control: no-cache

#保持长连接
Connection: keep-alive

#访问的域名
Host: www.mumusir.com

#没开启缓存
Pragma: no-cache

#http和https缓冲
Upgrade-Insecure-Requests: 1

#访问来源信息
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36

Http状态码

状态码 含义
200 成功
301 永久重定向(跳转)
302 临时重定向(跳转)
304 本地缓存
307 内部重定向(跳转)
400 客户端错误
401 认证失败
403 找不到主页,权限不足
404 找不到内容
500 内部错误
502 找不到后端主机
503 服务器过载
504 后端主机超时

HTTP协议原理总结

1.用户输入域名 ---> 浏览器跳转 ---> 浏览器缓存 ---> Hosts文件 ---> DNS解析(递归查询|迭代查询)
    客户端向服务端发起查询 ---> 递归查询
    服务端向服务端发起查询 ---> 迭代查询

2.由浏览器向服务器发起TCP连接(三次握手)
    客户端 ---> 请求包连接 -syn=1 seq=x         服务端
    服务端 ---> 响应客户端 syn=1 ack=x+1 seq=y  客户端
    客户端 ---> 建立连接 ack=y+1 seq=x+1       服务端

3.客户端发起http请求:
    1)请求的方法是什么:         GET获取
    2)请求额Host主机是什么:     www.mumusir.com
    3)请求的资源是什么:         /index.html
    4)请求的端口是什么:         默认http是80 https是443
    5)请求携带的参数是什么:       属性(请求类型、压缩、认证、浏览器信息、等等)
    6)请求最后的空行

4.服务端响应的内容是
    1)服务端响应使用WEB服务
    2)服务端响应请求文件类型
    3)服务端响应请求的文件是否压缩
    4)服务端响应请求的主机是否进行长连接

5.客户端向服务端发起TCP断开(四次挥手)
    客户端 ---> 断开请求 fin=1 seq=x           ---> 服务端
    服务端 ---> 响应断开 fin=1 ack=x+1 seq=y   ---> 客户端
    服务端 ---> 断开连接 fin=1 ack=x+1 seq=z   ---> 客户端
    客户端 ---> 确认断开 fin=1 ack=x+1 seq=sj  ---> 服务端

用户访问网站集群架构流程

1.客户端发起http请求,请求会先抵达前端的防火墙
2.防火墙识别用户身份,正常的请求通过内部交换机在通过TCP连接后端的负载均衡,传递用户的http请求
3.负载接收到请求,会根据请求的内容进行下发任务,通过TCP连接后端的web,转发用户的http请求
4.web接收到用户的http请求后,会根据用户请求的内容进行解析,解析分为如下:
    静态请求:web直接返回给负载均衡--->防火墙--->用户
    动态请求:web向后端的动态程序建立TCP连接,将用户的动态请求传递至动态程序,由动态程序进行解析再返回给用户
5.动态程序在解析过程中,如果碰到查询数据库请求,则优先与缓存建立tcp连接,并发起数据查询操作
6.如果缓存没有对应的数据,动态程序再次向数据库建立TCP连接,并发起查询操作
7.最后数据由 数据库--->动态程序--->缓存--->web服务--->负载均衡--->防火墙--->用户。

Http相关术语

PV:30 2 2 * 1

UV:30 2 1

IP :1

SOA松耦合架构

面向服务的架构(SOA)是一个组件模型,他将应用程序的不通功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来,接口是才用中立的方式进行定义的,他应该队里于实现服务的硬件平台、操作系统和变成语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。

以上是关于HTTP的主要内容,如果未能解决你的问题,请参考以下文章

Flutter 报错 DioError [DioErrorType.DEFAULT]: Bad state: Insecure HTTP is not allowed by platform(代码片段

如何从一个片段导航到另一个片段?

这两个代码片段有啥区别?

超级有用的9个PHP代码片段

postman 自动生成 curl 代码片段

postman 自动生成 curl 代码片段