HTTP协议与HTTPS / SSL协议
编辑:1zluck发布:2023-02-05 15:42:22人已围观
Http 协议
1. Http 发展
<iframe allowtransparency="true" data-google-container-id="a!4" data-google-query-id="CJ3a-cTx_fwCFcPtTAIdM6YEaw" data-load-complete="true" frameborder="0" height="0" hspace="0" id="aswift_3" marginheight="0" marginwidth="0" name="aswift_3" sandbox="allow-forms allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts allow-top-navigation-by-user-activation" scrolling="no" src="https://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-3426945312236276&output=html&h=280&adk=3892699065&adf=4001858981&pi=t.aa~a.3236464599~i.1~rp.4&w=830&fwrn=4&fwrnh=100&lmt=1675583075&num_ads=1&rafmt=1&armr=3&sem=mc&pwprc=2025465097&ad_type=text_image&format=830x280&url=https%3A%2F%2Fwww.ngui.cc%2Fel%2F3024120.html%3Faction%3DonClick&fwr=0&pra=3&rh=200&rw=830&rpe=1&resp_fmts=3&wgl=1&fa=27&uach=WyJXaW5kb3dzIiwiMTAuMC4wIiwieDg2IiwiIiwiMTA4LjAuNTM1OS43MyIsW10sZmFsc2UsbnVsbCwiNjQiLFtbIk5vdD9BX0JyYW5kIiwiOC4wLjAuMCJdLFsiQ2hyb21pdW0iLCIxMDguMC41MzU5LjczIl0sWyJHb29nbGUgQ2hyb21lIiwiMTA4LjAuNTM1OS43MyJdXSxmYWxzZV0.&dt=1675583118323&bpp=1&bdt=358&idt=-M&shv=r20230201&mjsv=m202301170101&ptt=9&saldr=aa&abxe=1&cookie=ID%3Dc42fd1f3d63a61f9-22b5fc883fd300e0%3AT%3D1652883779%3ART%3D1652883779%3AS%3DALNI_MajlyLwMg2nhpW3rn0HSjg6zRxdhg&gpic=UID%3D0000058afd60ba36%3AT%3D1652883779%3ART%3D1675583079%3AS%3DALNI_MY9wA68ZsFFM7cWUN_BWs89KI71Fg&prev_fmts=0x0%2C1200x280%2C350x280&nras=3&correlator=7316315004840&frm=20&pv=1&ga_vid=1234497283.1675583118&ga_sid=1675583118&ga_hid=1111279298&ga_fc=0&u_tz=480&u_his=5&u_h=768&u_w=1366&u_ah=728&u_aw=1366&u_cd=24&u_sd=1&dmc=8&adx=75&ady=918&biw=1349&bih=625&scr_x=0&scr_y=0&eid=44759876%2C44759927%2C44759837%2C42531706%2C31071755%2C31071765%2C44779794&oid=2&pvsid=3406068430864009&tmod=1355348283&uas=0&nvt=1&ref=https%3A%2F%2Fwww.ngui.cc%2Fel%2F3024120.html&eae=0&fc=1408&brdim=0%2C0%2C0%2C0%2C1366%2C0%2C1366%2C728%2C1366%2C625&vis=1&rsz=%7C%7Cs%7C&abl=NS&fu=128&bc=31&ifi=4&uci=a!4&btvi=2&fsb=1&xpc=Xkqi01tRrZ&p=https%3A//www.ngui.cc&dtd=7" style="margin: 0px; padding: 0px; left: 0px; position: absolute; top: 0px; border-width: 0px; border-style: initial; width: 830px; height: 0px;" vspace="0" width="830"></iframe>
<iframe allowtransparency="true" data-google-container-id="a!5" data-google-query-id="CPHO-cTx_fwCFcXjTAIdfsILsg" data-load-complete="true" frameborder="0" height="0" hspace="0" id="aswift_4" marginheight="0" marginwidth="0" name="aswift_4" sandbox="allow-forms allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts allow-top-navigation-by-user-activation" scrolling="no" src="https://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-3426945312236276&output=html&h=280&adk=3892699065&adf=2662893565&pi=t.aa~a.3236464599~i.2~rp.4&w=830&fwrn=4&fwrnh=100&lmt=1675583075&num_ads=1&rafmt=1&armr=3&sem=mc&pwprc=2025465097&ad_type=text_image&format=830x280&url=https%3A%2F%2Fwww.ngui.cc%2Fel%2F3024120.html%3Faction%3DonClick&fwr=0&pra=3&rh=200&rw=830&rpe=1&resp_fmts=3&wgl=1&fa=27&uach=WyJXaW5kb3dzIiwiMTAuMC4wIiwieDg2IiwiIiwiMTA4LjAuNTM1OS43MyIsW10sZmFsc2UsbnVsbCwiNjQiLFtbIk5vdD9BX0JyYW5kIiwiOC4wLjAuMCJdLFsiQ2hyb21pdW0iLCIxMDguMC41MzU5LjczIl0sWyJHb29nbGUgQ2hyb21lIiwiMTA4LjAuNTM1OS43MyJdXSxmYWxzZV0.&dt=1675583118323&bpp=1&bdt=358&idt=-M&shv=r20230201&mjsv=m202301170101&ptt=9&saldr=aa&abxe=1&cookie=ID%3Dc42fd1f3d63a61f9-22b5fc883fd300e0%3AT%3D1652883779%3ART%3D1652883779%3AS%3DALNI_MajlyLwMg2nhpW3rn0HSjg6zRxdhg&gpic=UID%3D0000058afd60ba36%3AT%3D1652883779%3ART%3D1675583079%3AS%3DALNI_MY9wA68ZsFFM7cWUN_BWs89KI71Fg&prev_fmts=0x0%2C1200x280%2C350x280%2C830x280&nras=4&correlator=7316315004840&frm=20&pv=1&ga_vid=1234497283.1675583118&ga_sid=1675583118&ga_hid=1111279298&ga_fc=0&u_tz=480&u_his=5&u_h=768&u_w=1366&u_ah=728&u_aw=1366&u_cd=24&u_sd=1&dmc=8&adx=75&ady=1294&biw=1349&bih=625&scr_x=0&scr_y=0&eid=44759876%2C44759927%2C44759837%2C42531706%2C31071755%2C31071765%2C44779794&oid=2&pvsid=3406068430864009&tmod=1355348283&uas=0&nvt=1&ref=https%3A%2F%2Fwww.ngui.cc%2Fel%2F3024120.html&eae=0&fc=1408&brdim=0%2C0%2C0%2C0%2C1366%2C0%2C1366%2C728%2C1366%2C625&vis=1&rsz=%7C%7Cs%7C&abl=NS&fu=128&bc=31&ifi=5&uci=a!5&btvi=3&fsb=1&xpc=t7OdFF73qg&p=https%3A//www.ngui.cc&dtd=13" style="margin: 0px; padding: 0px; left: 0px; position: absolute; top: 0px; border-width: 0px; border-style: initial; width: 830px; height: 0px;" vspace="0" width="830"></iframe>
<iframe allowtransparency="true" data-google-container-id="a!6" data-google-query-id="CLP5-cTx_fwCFZTkTAIdMzcFgw" data-load-complete="true" frameborder="0" height="0" hspace="0" id="aswift_5" marginheight="0" marginwidth="0" name="aswift_5" sandbox="allow-forms allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts allow-top-navigation-by-user-activation" scrolling="no" src="https://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-3426945312236276&output=html&h=280&adk=3892699065&adf=2483463113&pi=t.aa~a.3236464599~i.3~rp.4&w=830&fwrn=4&fwrnh=100&lmt=1675583075&num_ads=1&rafmt=1&armr=3&sem=mc&pwprc=2025465097&ad_type=text_image&format=830x280&url=https%3A%2F%2Fwww.ngui.cc%2Fel%2F3024120.html%3Faction%3DonClick&fwr=0&pra=3&rh=200&rw=830&rpe=1&resp_fmts=3&wgl=1&fa=27&uach=WyJXaW5kb3dzIiwiMTAuMC4wIiwieDg2IiwiIiwiMTA4LjAuNTM1OS43MyIsW10sZmFsc2UsbnVsbCwiNjQiLFtbIk5vdD9BX0JyYW5kIiwiOC4wLjAuMCJdLFsiQ2hyb21pdW0iLCIxMDguMC41MzU5LjczIl0sWyJHb29nbGUgQ2hyb21lIiwiMTA4LjAuNTM1OS43MyJdXSxmYWxzZV0.&dt=1675583118323&bpp=1&bdt=358&idt=1&shv=r20230201&mjsv=m202301170101&ptt=9&saldr=aa&abxe=1&cookie=ID%3Dc42fd1f3d63a61f9-22b5fc883fd300e0%3AT%3D1652883779%3ART%3D1652883779%3AS%3DALNI_MajlyLwMg2nhpW3rn0HSjg6zRxdhg&gpic=UID%3D0000058afd60ba36%3AT%3D1652883779%3ART%3D1675583079%3AS%3DALNI_MY9wA68ZsFFM7cWUN_BWs89KI71Fg&prev_fmts=0x0%2C1200x280%2C350x280%2C830x280%2C830x280&nras=5&correlator=7316315004840&frm=20&pv=1&ga_vid=1234497283.1675583118&ga_sid=1675583118&ga_hid=1111279298&ga_fc=0&u_tz=480&u_his=5&u_h=768&u_w=1366&u_ah=728&u_aw=1366&u_cd=24&u_sd=1&dmc=8&adx=75&ady=1766&biw=1349&bih=625&scr_x=0&scr_y=0&eid=44759876%2C44759927%2C44759837%2C42531706%2C31071755%2C31071765%2C44779794&oid=2&pvsid=3406068430864009&tmod=1355348283&uas=0&nvt=1&ref=https%3A%2F%2Fwww.ngui.cc%2Fel%2F3024120.html&eae=0&fc=1408&brdim=0%2C0%2C0%2C0%2C1366%2C0%2C1366%2C728%2C1366%2C625&vis=1&rsz=%7C%7Cs%7C&abl=NS&fu=128&bc=31&ifi=6&uci=a!6&btvi=4&fsb=1&xpc=5Q55dpN9BP&p=https%3A//www.ngui.cc&dtd=25" style="margin: 0px; padding: 0px; left: 0px; position: absolute; top: 0px; border-width: 0px; border-style: initial; width: 830px; height: 0px;" vspace="0" width="830"></iframe>
- HTTP/0.9
- 只有get 命令,且服务端直返HTML 格式字符串,服务器响应完毕就关闭TCP 连接
- 1991年提出
- HTTP/1.0
- 1996 提出
- 可以发送任何格式内容,包括文字、图像、视频、二进制。也丰富了命令Get、Post、Head,请求和响应的格式加入头信息
- 每个TCP 连接只能发送一个请求,而新建TCP 连接的成本很高,导致Http/1.0 性能很差
- HTTP/1.1(目前使用的最多协议)
- 1997年提出
- 引入持久连接,TCP 默认不关闭,可被多个请求复用
- SPDY(基本上没人用)
- 2012 年google 提出
- 综合了HTTP 和HTTPS两者的优点于一体的传输协议
- 必须使用HTTPS 连接
- 请求头Header 压缩
- 多路复用
- HTTP/2.0
- 2015 年提出
- 已经包括了SPDY 中的优点
- 采用二进制格式而非文本格式,解析更高效,数据更紧凑,错误更少
- 服务器可以将响应主动推送到客户端
2. Socket
- 定义:套接字,实对TCP/IP的封装,提供可供程序员做网络开发所用的接口——Socket 编程接口
3. HTTP 报文格式
- 请求信息格式
- 响应信息格式
4. HTTP 协议的代码实例
- 使用语言:java
- 使用工具:Socket、StringBuilder、InetSocketAddress(域名解析)、Http1Codec(okhttp-x.x.x.x.jar中的类,用于解析响应体)
- 访问对象:百度天气
- 编写请求信息:使用StringBuilder 构造请求行、请求头、请求空行、请求体信息
- GET请求必须加上Host 请求头,且一般没有请求体
- 注意中文编码问题
- POST请求必须加上Content-Length 请求头和Content-Type 请求头
- 注意中文编码问题
- GET请求必须加上Host 请求头,且一般没有请求体
- 创建Socket 对象并进行连接和请求
- ip地址使用InetSocketAddress进行域名解析获得
- 端口号是默认的端口号80
- 请求响应与响应信息处理
- 响应头中如果存在Content-Length,读取时按该长度去读取(Http1Codec获得响应体)
- 响应头中如果存在Transer-Encoding: chunked 则按 5 中的方法去解析数据(Http1Codec获得响应体)
5. HTTP 分块编码
- 用于响应体数据
- 当数据量很大时,一般会采用此技术
- 对应的响应头为Transfer-Encoding: chunked
- 一般当不存在Content-Length请求头的时候,会出现该请求头
- 具体格式
- 服务端返回信息:shouyue你好,我是你爷爷!
- 响应体具体内容
-
// 格式为 // 数据分块k的字符数\r\n // 数据分块k\r\n // 最后一行 // 0\r\n7\r\n shouyue\r\n 3\r\n 你好,\r\n 3\r\n 我是你\r\n 3\r\n 爷爷!\r\n 0\r\n
HTTPS/SSL 协议
1. 概述
- HTTP 的缺点
- HTTP 在传输数据时,所有传输的内容都是明文,无法保证数据的安全性
- HTTPS:即 HTTP Over TLS,运行在TLS 协议上的安全的HTTP协议
- 即在HTTP 协议的基础上通过对数据进行加密,保证数据的安全性
- 结构图
2. TLS 的发展
- 1994 ,NetScape 公司设计了 SSL 1.0
- 1995,升级为SSL 2.0
- 1996,升级为SSL3.0,并得到大规模的应用
- 1999,ISOC 接替NetScape,发布SSL的升级版 TLS 1.0版
- 2006,升级为TLS 1.1
- 2008,升级为TLS 1.2
- 2018,升级为TLS 1.3
3. SSL 握手
- SSL握手目的
- SSL握手的过程都是明文的,因此SSL握手的重点就在于怎么在不安全的网络中安全的进行密钥交换
- SSL 握手过程
- RSA 算法交换密钥(一般不会直接使用RSA,会加上其他技术)
- 客户端给出协议版本号、一个随机数(R1)以及客户端支持的加密方法(对称加密方法)
- 服务端确定使用的加密方法,并给出数字证书以及一个随机数(R2)
- 客户端确定数字证书有效,并生成一个新的随机数(premaster secret,三个随机数中唯一加密的),并使用数字证书中的公钥,利用RSA 算法加密这个随机数,发给服务端
- 服务端使用自己的私钥,获取客户端发来的随机数(premaster secret)
- 客户端和服务端根据约定的加密算法,使用前面三个随机数,生成对话密钥(master secret),用来加密接下来的整个对话过程
- 更详细的过程图
下一篇:前端学习01 HTML入门