zoukankan      html  css  js  c++  java
  • HTTP协议基础

    一 http协议


    url 完整结构
    < screme>://< user>:< pwd>@< host>:< port>/< path>< params>?< query>#< frag>
    (1.1)scheme 协议

    常见协议默认端口号协议基本作用
    FTP 21 文件上传下载
    SSH 22 完全的远程登录
    TELNET 23 远程登录
    SMTP 25 邮件传输
    DNS 53 域名解析
    HTTP 80 超文本传输
    POP3 110 邮件接收
    HTTPS 443 加密传输的HTTPS

    (1.2)< user>< pwd>

    (1.3)< host>

    主机名称:

    127.0.0.1  IP地址

    www.baidu.com  域名

    表示了你要访问的服务器在网络上的具体的门牌号码

    (1.4) port 端口号

    127.0.0.1:8080

    主机名      端口号

    任何一个程序安装在电脑上都会自动生成一个端口号

    在主机上,程序开启服务会对应一个唯一的端口号

    端口号理论最大值:2^16-1(65535),0-1024系统占用了

    (1.5)path 路径

    资源在服务器上存放的具体位置

    (1.6)params

    跟踪状态的参数:cookie/session  保存跟踪状态的参数

    (1.7)query:

    get 方法提交请求时,问号后面的查询字符串

    (1.8)# frag

    锚点

    2 HTTP协议

    超文本传输协议---hypertext transform  protocol

    规范了数据如何打包和传递的(专门用于传输html文件)

    目前使用的版本---http/1.1

    3 WEB请求的原理

    浏览器DNS查询发送请求,DNS服务器把域名转换成IP地址发回给请求的浏览器.这时浏览器开始向服务器发送请求,服务器请求文件夹系统,或者请求数据库,又或者向其他服务器请求数据,最终发送给浏览器.

    4 消息/报文message

    是客户端与服务器端相关传递的数据块

    这个数据块必须符合特定的格式,才能被彼此理解

    (4.1)请求消息: Request Message(客户端发送给服务器的数据块)

    (4.1.1)请求起始行

    (4.1.1.1)请求方法

    方法特点
    get 无请求主体.客户端向服务器请求数据的时候使用.地址栏明文传参,查询字符串,后台req.query.uname. 
    post 有请求主体.客户端向服务器提交数据的时候使用.通过请求主体传递数据,后台req.body.uname
    put 向服务器发送文件的时候使用
    delete 从服务器上删除资源的时候使用

    option  |预请求(询问访问)

    Restful API规则,利用http已有的4个方法(不算option)的四个方法定义了4个行为,使用这4个行为发送请求.

    方法特点
    get 查询数据时,无请求主体
    post 新建时,有请求主体
    put 修改时,有请求主体
    delete 删除时,无请求主体

    (4.1.1.2)协议版本号

    HTTP1.1

    (4.1.1.3)请求的URL

    url

    (4.1.2)请求头

    ①host:www.baidu.com

    告诉服务器,我请求的主机名称

    ②Connection:Keep-alive

    告诉服务器,请开启持久链接

    ③User-Agent:

    告诉服务器,我这个浏览器的类型和版本号

    ④Accept-Encoding:

    告诉服务器,浏览器可以接收的压缩文件的类型

    ⑤Accept-Language:zh-CN

    告诉服务器,我这个浏览器可以接收的自然语言的类型

    ⑥refer:http://www.tmooc.cn

    告诉服务器,当前请求是源于哪个页面

    (4.1.3)请求主体

    form-data:

    uname=abc&upwd=123456

    加上问号就是查询字符串

    (4.2)响应消息: Response Message

    服务器发送给客户端的数据块

    (4.2.1)响应起始行

    ①协议版本号:http/1.1

    ②响应状态码:响应状态码

    ③原因短句:对响应状态码的简短解释

    (4.2.2)响应头信息

    ①Date:告诉浏览器,响应的时间

    Tue, 31 Dec 2019 05:05:15 GMT

    ②Connection:Keep-alive

    告诉服务器,已经开启持久链接

    ③Content-Type:告诉浏览器,响应的主体类型是什么

    类型对应
    text/html 响应回来的数据是html文本
    text/css 响应回来的数据是css文本
    text/plain 响应回来的是普通文本
    application/javascript 响应回来的是一个js文件
    application/xml 响应回来的是xml字符串
    application/json 响应回来的是json字符串
    image/jpg | png | gif 响应回来的是图片

    (4.2.3)响应主体

    服务器传送给浏览器的数据

    5  缓存

    客户端将服务器响应回来的数据进行自动保存,再次访问时就直接使用缓存的数据.

    缓存的优点:

    ①减少冗余的数据传输,节省客户端流量

    ②节省服务器带宽

    ③降低了对服务器资源的消耗和运行的要求

    ④降低了由于远距离传输而造成的加载延迟

    缓存的原理

    ①请求--无缓存--连接服务器--存缓存--客户端渲染

    ②请求--有缓存--够新鲜--使用缓存--客户端渲染

    ③请求--有缓存--不够新鲜--链接服务器确认是否过期--没过期--更新缓存新鲜度--客户端渲染

    ④请求--有缓存--过期--链接服务器--存缓存--客户端渲染

    (1)与缓存相关的消息头

    (需要前后端配合)

    Catch-Control:max-age=0s

    从服务器将文档传到客户端上时起,此文档处于新鲜的秒数,0就是不缓存

    前端设置缓存消息:

    < meta http-equiv="Catct-Control" content="max-age=3600">

    所有的请求消息都可以通过meta设置:

    语法:   < meta http-equiv="消息头属性名称" content=>

    6 HTTP性能优化

    http的链接过程

    发起请求--建立链接--服务器处理请求--访问资源--构建响应--发送响应--记录日志

    http链接优化原则:

    ①减少链接创建的次数(开启持久链接)

    ②减少请求的次数(代码设计更合理)

    ③提高服务器端的运行速度

    ④尽可能减少响应数据的长度

    7 HTTPS:安全的http协议

    S:ssl

    ①客户端发送请求---ssl层加密---服务器接收到加密文件---ssl层解密---服务器端得到请求明文,对请求做出处理

    ②服务器响应数据---ssl层加密---客户端接收到加密文件---ssl层解密---客户端得到响应明文,解析执行响应的内容

  • 相关阅读:
    UILabel 设置字体间的距离 和 行与行间的距离
    IB_DESIGNABLE 和 IBInspectable 的使用
    干货博客
    GitHub克隆速度太慢解决方案
    实时(RTC)时钟,系统时钟和CPU时钟
    折腾了好久的vscode配置c/c++语言环境(Windows环境下)
    c语言中的malloc函数
    记录一下关于在工具类中更新UI使用RunOnUiThread犯的极其愚蠢的错误
    记录关于Android多线程的一个坑
    Android中限制输入框最大输入长度
  • 原文地址:https://www.cnblogs.com/codexlx/p/12461748.html
Copyright © 2011-2022 走看看