http和https协议
第一部分:Http协议
1.1 http协议简介:
http协议是超文本传输协议,是基于请求与响应的,无状态,无连接的协议,常基于TCP/IP协议传输数据,默认是端口是80,https默认端口是443
1.2 http协议工作原理:
HTTP是基于客户端/服务端(C/S)的架构模型,客户端的浏览器通过TCP协议与服务器建立连接,建立连接后,客户端向web服务器发送请求;
web服务器接受到请求后,向客户端的发送响应信息;
客户端接收到服务器返回的响应信息后,通过浏览器显示在用户的显示器上,然后客户端与服务器断连接。
1.3 http协议的特点:
1)http是无状态:http协议是无状态协议。无状态协议是指:协议对客户端没有状态存储,即对事物的处理没有“记忆”能力,比如访问一个网站需要重复的登录操作;j解决方法:1通过cookies/session会话保存;2持久连接(HTTP keep-alive)方法,只要任意一端没有明确提出断开连接
2)http是无连接:无连接的含义是指限制每次只处理一个请求,服务器处理完客户的请求,并接收到客户的应答后,服务器就会断开宇客户端的连接。采用这种方式可以节省传输时间。
3)http是基于请求和响应:基本特性就是客户端发送请求,服务端响应。
4)通信使用明文,请求和响应不会对通信方式进行确认,无法保证数据的完整性。
5)简单快速、灵活。
1.4 http信息结构
1.4.1 客户端发送的请求信息
客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成;
1.4.2请求头部字段信息:
Host :请求的资源在哪个主机的端口上
Connection:该请求支持长连接(heep_alive)
Content-Length:正文内容长度
Content-Type:客户端传入参数的数据格式
User-Agent:声明用户的操作系统和浏览器版本信息
Accent:发起了请求
Referer:当前页面是从哪个页面跳转过来的
Accept-Encoding:接受的编码
Accept-Language:接受的语言类型
Cookie:用于在客户端存储少量信息,通常用于实现会话(session)功能
Aceept:客户端可以接收的数据格式
1.4.3 服务端的响应信息
Http响应部分有四个部分组成:状态行、消息头、空行和响应正文;
1.5 http 请求方法
1.5.1 get和post的区别:
1)get重点是从服务器上获取资源,post重点是想往服务器发送资源;
2)get方式数据传输量比较小,最多才1024个字节,而post则没有限制,所以有时候上传文件时只能用post方式
3)get方式传参数据时参数都显示在URL上,而post的参数则在请求体中,post比get更安全。
1.5.2 cookies机制和session机制的区别:
1)cookies数据保存在客户端,session数据保存在服务端;
2)cookies可以减轻服务器的压力,但是不安全,容易进行cookies欺骗;
3)session安全一点,但是会占用服务器资源。
1.5.3 http与https的区别:
https协议就是身披SSL外壳的http;
1)https有ca证书,http一般没有
2)http是超文本传输协议,信息是明文传输,而HTTPS则是具有安全性的SSL加密的传输协议
3)http默认端口是80,HTTPS默认端口是443
1.5.4 http简答题:浏览器输入一个地址,到页面展示中间经过哪些东西?
1)浏览器输入url,先进行解析url是否合法;
2)浏览器检查是否有缓存(浏览器缓存--系统缓存---路由器缓存),如果有缓存,则直接显示;如果没有缓存,在浏览器发送http请求前,需要进行域名解析(DNS解析),解析获取相对应的ip地址;
3)浏览器想向务器发起TCP链接,与浏览器经历TCP三次握手,完成链接
4)链接成功后,浏览器向服务器发送http请求以及请求数据包
5)服务器收到处理的请求后,将响应数据返回至浏览器
6)浏览器收到http响应后,并解析响应,如果响应可以缓存则进行缓存
7)浏览器发送异步请求获取嵌入在HTML中的资源,对于未知类型,会弹出对话框
8)页面全部渲染结束并关闭链接。
1.6 http 响应码
常见状态码: 200:请求被正常处理 204:请求被受理但是没有资源可以返回 206:客户端只请求资源的一部分,服务器只对请求的部分资源执行get方法,相应报文中通过Content-Range指定范围资源 301:永久性重定向 302:临时重定向 303:临时重定向 与302类似,只是它希望客户端在请求一个URI的时候,能通过get方法重定向到另一个URI上 304:发送附带条件的请求时,条件不满足时返回,与重定向无关 307:临时重定向,与302类似,只是强制要求使用post方法 400:请求报文语法有误,服务器无法识别 401:请求需要认证 403:请求的对应资源禁止被访问 404:服务器无法找到对应资源 500:服务器内部错误
502: 网关错误 503:服务器正忙
第二部分:HTTPS协议
2.1 什么是https协议
https协议就是身披SSL外壳的Http协议。https协议是一种通过计算机网络进行安全通信的传输协议,经由http进行通信,利用SSL/TLS进行加密数据包。https默认的端口号是443。
有两种基本的加解密算法类型:
1)对称加密:密钥只有一个,加密解密为同一个密码,且加解密速度快,典型的对称加密算法有DES、AES等;
2)非对称加密:密钥成对出现(且根据公钥无法推知私钥,根据私钥也无法推知公钥),加密解密使用不同密钥(公钥加密需要私钥解密,私钥加密需要公钥解密),相对对称加密速度较慢,典型的非对称加密算法有RSA、DSA等。
2.2 https协议特点
基于http协议,通过SSL或TLS提供加密数据处理、验证对方身份以及数据完整性保护。
1)内容加密:采用混合加密技术,中间者无法直接查看明文内容;
2)验证身份:通过证书认证客户端访问的是自己的服务器;
3)保证数据的完整性:防止传输的数据被中间人冒充或者篡改。
2.3 HTTPS的实现原理
大家可能都听说过 HTTPS 协议之所以是安全的是因为 HTTPS 协议会对传输的数据进行加密,而加密过程是使用了非对称加密实现。但其实,HTTPS 在内容传输的加密上使用的是对称加密,非对称加密只作用在证书验证阶段。
HTTPS的整体过程分为证书验证和数据传输阶段,具体的交互过程如下:
- 证书验证阶段
浏览器向服务器发起Https请求,服务器接收到请求后,将会携带CA证书(包括公钥)返回给客户端,客户端解析证书并验证证书是否合法,如果不合法则提示警告,反之则准备进行数据传输;
- 数据传输阶段
当证书验证合法后,取出公钥生成随机数,然后通过公钥对随机数进行非对称加密,并把加密后的随机数发送给服务器端,服务器端使用私钥对随机数进行解密,解密后服务器端对客户端传入的随机数进行对错加密,最后把对此加密后的内容传输给客户端。
2.3.1 为什么数据传输是用对称加密
首先,非对称加密的加解密效率相对于对称加密比较低,而http的应用场景通常是端对端之间的存在大量的交互,非对称加密是无法接受的;
其次,在https的场景中只有服务端保存了私钥,一对公私钥只能实现单向的加解密,所以https中内容传输加密方式采用对称加密,而不是非对称加密。
2.4 HTTPS 的缺点(对比优点)
- https协议握手阶段比较耗时,会使页面加载时间延长
- https协议连接缓存不如http高效,会增加数据开销,甚至已有的安全措施也是也会因此受到影响
- SSL证书需要绑定IP,不能在同一个IP上绑定多个域名,IPV4资源不可能支撑这个消耗
- 增加成本
感谢https://blog.csdn.net/xiaoming100001/article/details/81109617
感谢:https://blog.csdn.net/qq_35642036/article/details/82788421
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现