JAVA EE初阶 8:网络原理 - HTTP_HTTPS
1.HTTP1.1HTTP--概念HTTP(全称为超文本传输协议)是一种应用非常广泛的应用层协议HTTP诞生于1991年目前已经发展为最主流使用的⼀种应用层协议。HTTP2.0及其之前是基于传输层的TCP协议实现的HTTP3.0基于UDP实现。当前我们主要使用的版本还是HTTP1.1和 HTTP2.0一个技术不是越新越好我们平时打开一个网站就是通过 HTTP协议 来传输数据的。1.2应用层协议--概念1.3HTTP协议的工作过程非常经典的“一问一答”模型注意当前搜狗主页是通过https来进行通信的https 是在 http 基础之上做了一个加密解密的工作后面再介绍。1.4HTTP 协议格式HTTP是一个文本格式的协议可以通过Fiddler抓包分析HTTP 请求/响应的细节。1安装抓包工具--Fiddler先安装下载地址https://www.telerik.com/fiddler/2抓包结果刚才已经获取到HTTP请求/响应的抓包结果双击左边蓝色部分www.sogou.com观察右侧上方HTTP请求报文切换到Raw页点击View in Notepad通过记事本打开。观察右侧下方HTTP响应报文3协议格式总结1.5HTTP 请求(Request)1认识URLURL基本格式平时我们俗称的 网址 其实就是说的URL(Uniform Resource Locator统一资源定位符)。互联网上的每个文件都有一个唯一的URL它包含的信息指出文件的位置以及浏览器应该怎么处理它。关于URL encodeURL decode 就是 URL encode 的逆过程URL encode工具https://tool.chinaz.com/Tools/urlencode.aspxhttps://tool.chinaz.com/Tools/urlencode.aspx2认识方法(method)GET方法GET是最常用的 HTTP 方法常用于获取服务器上的某个资源。POST方法POST也是一种常见的方法多用于提交用户输入的数据给服务器(例如登陆页面)。经典面试题谈谈GET和 POST 的区别PUT和DELETE方法3认识请求报头(header)Cookie中存储了一个字符串这个数据可能是客户端 / 浏览器网页)自行通过JS写入的也可能来自于服务器(服务器在HTTP 响应的 header 中通过 Set-Cookie 字段给浏览器返回数据), 往往可以通过这个字段实现 身份标识 的功能.每个不同的域名下都可以有不同的Cookie不同网站之间的Cookie 并不冲突。4认识请求正文(body)正文中的内容格式和header中的Content-Type密切相关1.6HTTP 响应(Response)1认识状态码(status code)状态码表示访问一个页面的结果访问成功、失败还是其他情况。2认识响应报头(header)与正文(body)1.7构造 HTTP 请求2.HTTPS2.1HTTPS概念HTTPS也是一个应用层协议在HTTP协议的基础上引入了一个加密层。HTTP协议内容都是按照文本的方式明文传输不安全的这就导致在传输过程中出现⼀些被篡改的情况。举例运营商劫持下载A软件未被劫持的效果点击下载按钮就会弹出A软件的下载链接。已被劫持的效果点击下载按钮就会弹出B软件的下载链接。不止运营商可以劫持其他的黑客也可以用类似的手段进行劫持来窃取用户隐私信息或者篡改内容。试想一下如果黑客在用户登陆支付宝的时候获取到用户账户余额甚至获取到用户的支付密码.....在互联网上明文传输是比较危险的事情!!!HTTPS就是在HTTP的基础上进行了加密进一步的来保证用户的信息安全。2.2“加密”概念加密和解密的过程中往往需要一个或者多个中间的数据辅助进行这个过程这样的数据称为密钥。2.3HTTPS的工作过程经典面试题既然要保证数据安全就需要进行加密。网络传输中不再直接传输明文了而是加密之后的密文。1对称加密对称加密其实就是通过同一个密钥把明文加密成密文并且也能把密文解密成明文。比较理想的做法就是能在客户端和服务器建立连接的时候双方协商确定这次的密钥是啥。2非对称加密3中间人攻击黑客可以使用中间人攻击获取到对称密钥。4引入证书服务端在使用HTTPS前需要向CA机构申领⼀份数字证书数字证书里含有证书申请者信息、公钥信息等。服务器把证书传输给浏览器浏览器从证书里获取公钥就行了证书就如身份证证明服务端公钥的权威性。5总结完整流程左侧都是客户端做的事情右侧都是服务器做的事情。