-
3.证书机制
-
4.总结
-
HTTP和HTTPS的区别
[](()一、计算机网络是什么?
==============================================================================
计算机网络就是将分散在不同地理位置上的具有自主处理能力的多台计算机经过传输媒介和通信设备相互连接起来,在网络操作系统和网络通信软件的控制下,按照统一的协议进行协同工作,达到资源共享目的的计算机系统。
目前比较常用的计算机网络的体系结构有三种,
第一种为OSI七层模型,即应用层,表示层,会话层,传输层,网络层,数据链路层和物理层
第二种为TCP/IP四层结构 应用层 运输层,网际层,网络接口层
第三种为5层体系结构,即应用层,运输层,网络层,数据链路层,物理层,
本文介绍的HTTP和HTTPS均为应用层的协议,是客户端和服务器之间进行交互的协议。
[](()二、HTTP
=========================================================================
[](()1.HTTP协议是什么?
HTTP(HyperText Transfer Protocol)是超文本传送协议,是当今互联网中使用最广泛的应用层协议,是用来在浏览器和WWW服务器之间传送超文本的协议。
[](()2.为什么会有HTTP协议?
我们在浏览Web网页时或者其他活动,浏览器相当于请求方,百度网站就是应答方,双方使用HTTP协议来互相通信,请求方来发送请求数据,接收方来返回一些数据,最后通过浏览器渲染在屏幕上,我们就能看到文字、图片、视频等超文本数据。
即HTTP就是在一个计算机世界中专门在两点之间传输超文本数据的约束和规范。
[](()3.HTTP协议传输过程
1.当客户端请求一个网页,会先通过HTTP协议将请求的内容封装在HTTP请求报文中发送给服务器。
2.服务器收到请求报文后根据协议规范来解析报文。
3.服务器解析完报文向客户端返回响应报文。
[](()4.HTTP常见的状态码
| 状态码 | 具体含义 | 常见的状态码 |
| — | — | — |
| 1xx | 相当于提示信息表示协议处理的中间状态,一般使用的比较少 | |
| 2xx | 表示服务成功处理了客户端的请求,也是正确的状态码 | 200 |
| 3xx | 客户端请求的资源位置发生变动,需要客户端用新的URL重新发送请求获取资源,也就是重定向 | 301,302,304 |
| 4xx | 表示客户端发送的报文有误,服务器无法处理,也就是错误码的含义 | 400,403,404 |
| 5xx | 表示客户端请求报文没有错误,但是服务器内部发生了错误,属于服务器的错误码 | 500,502,503 |
常见的状态码
200 访问成功
302 重定向 当前访问网站A ,浏览器自动跳转到网站B
403 要访问的资源没有权限
404要访问的资源没有找到
500服务器内部错误
[](()5.URL?
HTTP协议使用URL定位互联网上的资源,
URL就是资源唯一定位符,描述了互联网上资源的位置
我们平时生活中所说的“网址” 其实就 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 是说的URL
普通的URL由这几部分组成
1.方案/协议 例如 https:
2.存储该资源的主机的ip地址,一般都为域名,通过DNS将域名解析成ip地址,通过ip地址定位到资源所在位置
3.端口号 HTTP的端口号是80 HTTPS的端口号是443 端口号是用来确认服务器上一个具体的应用程序
4.带层次的其他路径,路径对应到服务器上的一个具体的资源,类似于硬盘上的目录结构
5.查询字符串 是提供给web服务器的额外参数,一般是键值对形式来表示 ,如果是GET请求,一般有请求URL参数,如果是POST请求则不会在路径后面直接加参数
6.片段标识符 :是资源本身的某一部分的一个锚点,锚点代表资源内的一种书签,它给与浏览器显示位于该“加书签”点的内容的指示。
如果URL存在特殊符号,此时就需要进行转义 例如 ?是路径和查询字符串的之间的分界,如果查询字符串中也存在问号,此时的问号就会被转义成%3F
浏览器输入一个http协议的url,如何定位服务资源?
1.首先浏览器搜索自己DNS缓存(域名和ip地址对应表)
2.如果没有找到就搜索操作系统中的DNS缓存(域名和ip地址对应表)
3.如果没有找到,就将域名发送给本地域名服务器,进行递归查询,本地域名服务器查询自己的DNS缓存。
[](()6.DNS?
计算机之间的通信是根据ip地址来通信的,但是对于我们用户来说点分十进制的ip地址还是很难记,所有通过域名解析的过程,DNS服务器通过域名来找到相应的ip地址,我们就能进入相应的网站了,这样一来我们只需要记住域名即可。
人们在输入网址来访问界面时,就是使用DNS解析的过程。通过域名来查找到ip地址。
DNS域名解析过程:
1.输入域名后,先查找自己主机对应的域名服务器,域名服务器先查找自己服务器里面的数据
2.如果没有找到,就向上级报道进行查找,依次类推进行查找,直到找到为止
3.最多回溯到根目录,一定能找到这个域名的ip地址
4最终服务器将该域名的ip地址返回给主机,进行访问
[](()7.HTTP协议的方法
| 方法 | 说明 | 支持的HTTP协议版本 |
| — | — | — |
| GET | 获取资源 | 1.0、1.1 |
| POST | 传输实体主体 | 1.0、1.1 |
| PUT | 传输文件 | 1.0、1.1 |
| HEAD | 获得报文首部 | 1.0、1.1 |
| DELETE | 删除文件 | 1.0、1.1 |
| OPTIONS | 访问支持的方法 | 1.1 |
| TRACE | 追踪路径 | 1.1 |
HTTP协议中方法有很多 最常用的就是GET和POST方法
GET一般用于从服务器中获取数据
POST一般往服务器上提交数据 大部分情况下是这样分工的少部分是相反的
GET请求一般无body POST请求一般有body
[](()8.GET和POST方法区别
整体的结论时GET和POST方法整体上没有区别,大部分情况下,GET能实现的方法,POST也能实现
只是个别情况有差别 细节上区别
1.GET把用户自定义的数据放到query string 中,而POST放在Body中即 (GET一般没有Body,而POST一般有Body)
2.GET一般设计成幂等的形式,而POST不考虑幂等的情况 (幂等就是某一个操作操作一次和操作多次效果都是一样的,例如刷新页面)
3.GET请求是可以被缓存的,而POST请求一般不可以被缓存
4.GET请求一般可以被浏览器收藏夹保存起来的而 POST请求不能被收藏夹保存 ,保存的时候Body部分缺失
[](()9.HTTP协议格式
首先协议就是一种约定,约定了请求和响应里面都是按照什么样的结构来组织数据的,要了解HTTP ,就需要研究协议格式
要研究协议格式就要使用抓包工具来了解协议格式
HTTP请求是一问一答的形式
一、HTTP请求的格式
1.首行: 【方法】+【URL】+【版本】
2.Header(请求报头):请求的属性 , 冒号分割键值对
3.空行:Header结束的标志
4.Body : 空行后面的内容都是Body,Body 允许为空字符串,如果Body存在,则在Header中会有一个属性来标识Body的长度。
二、HTTP响应的格式
1.首行: 【版本号】+【状态码】+【状态码解释】
2.Header:响应的属性 , 冒号分割键值对
3.空行:Header结束的标志
4.Body : 空行后面的内容都是Body,Body 允许为空字符串,如果Body存在,则在Header中会有一个属性来标识Body的长度。
使用fiddler 工具抓取浏览百度界面的HTTP请求
HTTP响应界面
因为HTTP协议是明文传输的,如果我们在登录某网址时,输入了用户名和密码时使用了抓包工具的话,会抓取到我们的密码,那其他人也能抓到了,下图为部分账号和密码都能被获取到很不安全。