HTTP HTTPS相关知识

HTTP

超文本传输协议
1.0
1.1(主流版本)keepline
2.0

特点

  • 支持CS模式
  • 协议简单所以简单快速 ( 只需传送方法(get head post)和路径)
  • 灵活 任意数据类型的对象
  • 无连接 每次连接只处理一个请求 请求完等待一定时间就断开
  • 无状态

请求结构

URL:
在这里插入图片描述

响应结构

在这里插入图片描述

请求/响应的步骤

  • 客户端连接到Web服务
  • 发送HTTP请求
  • 服务器接收请求并返回HTTP响应
  • 释放连接TCP连接
  • 客户端浏览器解析html内容

输入地址 按下回车后的流程

  • DNS解析
    由提供的URL经过DNS解析系统来的得到主机的IP地址
    解析过程:先搜索浏览器自身DNS缓存,如果找到没有过期的对应条目,解析结束
    否则回到操作系统的DNS缓存找,有则结束
    否则读取hosts文件有没有,有则结束
    否则向本地配置的首选DNS服务器发起域名解析请求。
  • 封装HTTP数据包
    报文的组成具体见上图:
  1. 开始行是请求行 由请求方法(get post 等等)请求资源的URL HTTP版本
    http 0.9 只能有get没有协议头 只能纯文本
    http 1.0 还在用
    http 1.1 最广泛的协议版本 与1.0的主要区别就是是否持久连接 1.0一个tcp只传输一个web对象 默认为持久连接 也可以设置成非持久连接
    http 2.0传输性能好 低延迟 叫2.0是因为新增二进制分帧层 传输的信息分割成更小的帧与消息,二进制格式编码,可以乱序发送,根据每个帧的标识符重新组装。
  2. 头部行 说明浏览器服务器报文主体的信息
    不管有没有请求正文都有一个回车符 换行符
  3. 请求正文 一般不使用
  • 封装成TCP包 建立TCP连接 发送请求报文
    HTTP请求报文作为三次握手的第三个报文的数据发送给服务器
    TCP建立后,客户端发送一个http请求给服务器,请求方法格式URL,协议版本号,MIME信息(客户端信息,实体信息)
  • 服务器接收到请求后返回响应报文
    格式是状态行 协议版本号和一个成功或者错误的代码+MIME信息(服务器信息,实体信息)
  • 浏览器解析渲染页面
  • 连接结束

HTTP 1.0中的请求方法

get post 区别

三个层面:
HTTP报文层面:GET将请求放在URL,POST放在报文体中
数据库层面:GET符合幂等性和安全性,POST不符合
其他层面:GET可以被缓存、被存储,POST不行
在这里插入图片描述

(1)PUT
向指定资源位置上传其最新内容。
(2)DELETE
请求服务器删除 request-url所标识的资源。
(3)OPTIONS
返回服务器针对特定资源所支持的HTTP请求方法。
(4)HEAD
向服务器索要与get请求相一致的响应,但是响应体将不会被返回。
(5)TRACE
回显服务器收到的请求,主要用于测试和诊断。
(6)CONNECT
预留给能够将连接改为管道方式的代理服务器。

状态码

在这里插入图片描述常见状态码:

  • 200 Ok
    get方法下 会返回资源

  • 204 No Content
    不返回资源

  • 206 Partial Content
    返回一部分资源

  • 301 Moved Permanently
    永久性重定向 请求资源分配了新的URI 如果此时保存书签则保存的新的URI

  • 302 Found
    临时性重定向 请求的资源也是分配了新的URI,但是保存成书签则不会想301去更新书签依然保留返回302的页面的URI

  • 303 See Other
    请求资源存在另外一个URI 应使用get定向获取请求资源 302 与303相同,但是303明确要使用GET方法获取资源

  • 当301 302 303状态码返回时候 几乎所有浏览器都会把post 改成 get 删除请求报文主体 自动再次发送请求

  • 400 Bad Request
    请求报文有语法错误,需要修改请求再次发送

  • 401 Unauthorized
    请求没有经过授权 请求身份验证

  • 403 Forbidden
    收到请求,但被服务器拒绝 IP禁止

  • 404 Not Found
    请求资源不存在

  • 500 Internal Server Error
    服务器的错误

  • 503 Service Unavailable
    服务器超负荷或者维护

cookie 与 session

cookiesession
Cookie 与 Session 都可以进行会话跟踪,主要作用都是在整个会话过程中,实现数据的跨页面访问,但是实现的原理不太一样。
区别:
(1)cookie在客户端记录信息确定用户身份,session在服务器端记录信息确定用户身份。
(2)Cookie是服务器发给客户端的特殊信息,cookie是以文本的方式保存在客户端,每次请求时都带上它。
(3)Session是服务器端使用的一种记录客户端状态的机制,使用上比Cookie简单一些,相应的也增加了服务器的存储压力。。
(4)cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session。
(5)session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用COOKIE。
联系:
(1)cookie和session都是用来跟踪浏览器用户身份的会话方式。
(2)session 的运行依赖 session id,而 session id 是存在 cookie 中的,如果浏览器禁用了 cookie ,同时 session 也会失效(但是可以通过其它方式实现,比如在 url 中传递 session_id)。
Session是保存在服务器端的,每个用户都会产生一个Session。如果并发访问的用户非常多,会产生非常多的Session,消耗大量的内存。 而Cookie保存在客户端,不占用服务器资源。如果并发浏览的用户非常多,Cookie是很好的选择。

HTTP版本之间的区别

  1. HTTP1.1与1.0
    (1)长连接
    HTTP 1.1支持长连接(PersistentConnection)和请求的流水线处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,一定程度上弥补了HTTP 1.0每次请求都要创建连接的缺点。
    (2)错误通知的管理
    在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。
    (3)带宽优化及网络连接的使用
    HTTP1.0中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能,HTTP1.1则在请求头引入了range头域,它允许只请求资源的某个部分,即返回码是206(Partial Content),这样就方便了开发者自由的选择以便于充分利用带宽和连接。
    (4)Host头处理
    在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机,并且它们共享一个IP地址。HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400 Bad Request)。
    (5)缓存处理
    在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准,HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。
  2. HTTP2.0与1.x
    HTTP 2.0最大的特点: 不会改动HTTP 的语义,HTTP 方法、状态码、URI 及首部字段这些核心概念没变,却能致力于突破上一代标准的性能限制,改进传输性能,实现低延迟和高吞吐量。
    (1)新的二进制格式(Binary Format)
    而之所以叫2.0,是在于新增的二进制分帧层。HTTP 2.0 会将所有传输的信息分割为更小的消息和帧,并对它们采用二进制格式的编码,这些帧可以乱序发送,然后再根据每个帧首部的流标识符重新组装。
    (2)多路复用(MultiPlexing)
    即连接共享,一个request对应一个id,这样一个连接上可以有多个request,每个连接的request可以随机的混杂在一起,接收方可以根据request的 id将request再归属到各自不同的服务端请求里面。
    (3)header压缩
    HTTP1.x的header带有大量信息,而且每次都要重复发送,HTTP2.0使用encoder来减少需要传输的header大小,通讯双方各自cache一份header fields表,既避免了重复header的传输,又减小了需要传输的大小。
    (4)服务端推送(server push)
    同时还可以让服务器将响应主动“推送”到客户端缓存中,以此来避免往返的延迟。

HTTPS

HTTPS传输流程

1.浏览器将支持的加密算法信息发送给服务器

2.服务器选择一套浏览器支持的加密算法,以证书的形式回发浏览器

3.浏览器验证证书合法性,并结合证书公钥加密信息发送给浏览器

4.服务器使用私钥解密信息,验证哈希,加密响应消息回发浏览器

5.浏览器解密响应消息,并对消息进行验证,之后进行加密交互数据

用户在浏览器中输入域名后 首先是浏览器自动补全http://而不是https://所以在这个时候会进行301 302跳转 会有被劫持的风险

HTTP与HTTPS的区别

(1)HTTPS协议需要到CA申请证书,一般免费证书很少,需要交费。
(2)HTTP协议运行在TCP之上,所有传输的内容都是明文,HTTPS运行在SSL/TLS之上,SSL/TLS运行在TCP之上,所有传输的内容都经过加密的。
(3)HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
(4)HTTPS可以有效的防止运营商劫持,解决了防劫持的一个大问题。
在这里插入图片描述

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
六万字是一本书的篇幅,关于HTTP知识需求较为广泛深入。HTTP是超文本传输协议(Hypertext Transfer Protocol)的缩写,是用于浏览器和Web服务器之间进行通信的协议。 首先,六万字的重点将会涵盖HTTP的基本概念和原理。这包括HTTP的发展历史、URL(Uniform Resource Locator)的结构和作用、HTTP请求和响应的格式、HTTP状态码的含义等。 其次,六万字将介绍HTTP的工作机制。这包括客户端与服务器的交互过程,包括DNS解析、TCP三次握手、建立持久连接、HTTP报文的传输等。同时也会涉及到HTTPSHTTP Secure)的使用和原理以保障通信的安全性。 此外,六万字还会探讨HTTP的特性和功能。例如,缓存机制的应用、Cookie和Session的使用、重定向、表单上传等高级特性的实现原理和应用场景。 还有,六万字将介绍HTTP的性能优化和相关技术。这包括使用CDN(内容分发网络)、使用压缩技术、HTTP/2和HTTP/3协议的特性和优势等。 最后,六万字还会指导读者如何调试和优化HTTP请求。这包括使用开发者工具、抓包工具、监控工具等进行调试,优化请求时间、减少响应大小等技巧。 总之,六万字的文章将全面介绍HTTP的基本概念、工作机制、特性和功能,以及性能优化和调试方法。对于开发者、运维人员和网络技术爱好者来说,这本书是学习和应用HTTP的必备知识
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值