| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> Http与Https协议的爱恨情仇 -> 正文阅读 |
|
[网络协议]Http与Https协议的爱恨情仇 |
目录一.http和https发展历史?1.HTTP超文本传输协议,是一个基于请求于响应,无状态的,应用层的协议,常基于Tcp/IP协议 传输数据,互联网上应用最为广泛的一种网络协议,所有的www文件都必须遵守这个标准 ,设计http的初衷是为了提供一种发布和接收HTML页面的方法。 HTTP/0.9:不涉及数据包传输,规定客户端和服务器之间通信格式,只能GET请求 HTTP/1.0:传输内容格式不限制,增加PUT,PATCH,HEAD,OPTIONS,DELETE命令 HTTP/1.1:持久连接,节约带宽,HOST域,管道机制,分块传输编码 HTTP/2:多路复用,服务器推送,头信息压缩,二进制协议等 http报文格式 ? 2.HTTPSHTTPS是身披SSL外壳的HTTP。HTTPS是一种通过计算机网络进行安全通信的传输协议, 经由HTTP进行通信,利用SSL/TLS建立全信道,加密数据包。https使用的主要目的是提供 对网络服务器的身份认证,同时保护交换数据的隐私与完整性。
http特点: 1.无状态:协议对客户端没有状态存储,对事物处理没有“记忆”能力,比如访问一个网站需要反复进行登录操作 2.无连接:HTTP/1.1之前,由于无状态特点,每次请求需要通过TCP三次握手四次挥手,和服务器重新建立连接。 3.基于请求和响应:基本的特性,由客户端发起请求,服务端响应 4.简单快速、灵活 5.通信使用明文、请求和响应不会对通信方进行确认、无法保护数据的完整性 (注意)HTTP协议传输数据以明文形式显示 对于无状态的一些解决方法: 通过Cookie/Session技术 HTTP/1.1持久连接方法,只要任意一端没有明确提出断开连接,则保持TCP连接状态,在请求首部字段中的Connection: keep-alive即为表明使用了持久连接 https特点: 基于http协议,通过SSL或TLS提供加密处理数据,验证对方身份以及数据完整性保护 数据不是明文传输,且有如下特点: 内容加密:采用混合加密技术,中间者无法查看明文内容 验证身份:通过证书认证客户端访问的是自己的服务器 保护数据完整性:防止传输的内容被中间人冒充或者篡改 二.http通信传输客户端输入URL回车,DNS解析域名得到服务器的IP地址,服务器在80端口监听客户端请求,端口通过TCP/IP协议(可以通过Socket实现)建立连接。HTTP属于TCP/IP模型中的运用层协议,所以通信的过程其实是对应数据的入栈和出栈。 ? 报文从运用层传送到运输层,运输层通过TCP三次握手和服务器建立连接,四次挥手释放连接。 为什么需要三次握手呢? 为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。比如:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段,但是server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求,于是就向client发出确认报文段,同意建立连接。假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了,由于client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送数据,但server却以为新的运输连接已经建立,并一直等待client发来数据。所以没有采用“三次握手”,这种情况下server的很多资源就白白浪费掉了。 为什么需要四次挥手呢? TCP是全双工模式,当client发出FIN报文段时,只是表示client已经没有数据要发送了,client告诉server,它的数据已经全部发送完毕了;但是,这个时候client还是可以接受来server的数据;当server返回ACK报文段时,表示它已经知道client没有数据发送了,但是server还是可以发送数据到client的;当server也发送了FIN报文段时,这个时候就表示server也没有数据要发送了,就会告诉client,我也没有数据要发送了,如果收到client确认报文段,之后彼此就会愉快的中断这次TCP 连接。 三.https实现原理
? ? |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/28 5:14:31- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |