目录
1. 了解web和网络基础
-
有客户端和服务端双方参与交互
-
客户端发送请求:request
-
服务端根据请求给出响应:response
-
请求通过URL来指定要获取都得资源
-
响应内容可以是HTML网页,或者用json表示的数据或者其他二进制文件内容
-
Web使用一种名为HTTP的协议作为规范,完成从客户端到服务端的一系列运作流程,而协议是指定规则的约定。Web是建立在HTTP协议上的通信。
1.1 web万维网和HTTP协议
www万维网诞生
诞生于:1989年3月,蒂姆·伯纳斯-李 博士的一篇论文,提出了让远隔两地的研究者们共享知识的设想。
最初的理念:借助多文档之间的相关联形成超文本(HyperText),连成可互相参阅的WWW(World Wide Web,万维网)。
HTTP:HyperText Transfer Protocol,超文本传输协议。 HTML:HyperText Markup Language,超文本标记语言。 URL:Uniform Resource Locator,统一资源定位符。
1.2 HTTP的历史和版本
1.3 当下http协议的使用现状
-
场景:除了网页,承载更多的互联网应用场景
-
前端:不再依赖浏览器,可以是手机app,客户端或者一另个服务器
-
传输方式:Ajax的兴起改变了原本的同步请求模式
-
传输内容:HTML网页,二进制文件以外也可以依靠Json表示更广泛的内容
-
数据安全:HTTP+SSL组成HTTPS协议,同时扩展更多的密码学能力
2. 与http相关的的协议
2.1 TCP/IP协议族
2.1.1 IP网际协议
-
IP(Internet Protocol)协议位于网络层,负责将数据包递给对方。
-
任何一个参与到网络上的设备都会用到IP协议,为系统分配对应的IP地址。
-
IP协议和IP地址不是一回事,IP地址是表明网络中每个设备的标签。
-
IP地址需要转换成网卡的物理地址(MAC地址)才能真正完成数据通信。实际上网络中数据传输是异常复杂的,没有人能够完全跟踪整个传输过程,网络中大小网络、广域网、城域网、局域网等嵌套,需要路由才能真正传输到目的地。
-
IP地址目前分为 IPV4 和 IPV6两个版本。
2.1.2 TCP协议
-
TCP位于传输层,提供可靠的字节流服务。
-
将大的数据分割成报文段,并将数据可靠的传输给对方。
-
保证可靠----三次握手策略
2.2 DNS协议
让IP地址更容易被记住的DNS协议
-
DNS(Domain Name System)域名服务,与HTTP一样,位于TCP/IP分层的应用层的协议,它负责提供域名到IP地址的解析服务。
-
域名:www.baidu.com, pic.baidu.com, sports.sina.com.cn
-
根域名: com cn com.cn org tech info me
-
级域名:baidu.com sina.com.cn qq.com 163.com 12306.cn
-
子域名:pic.baidu.com sports.sina.com.cn news.qq.com
-
如果要使用域名完成网络通讯,必须先从域名服务器获取域名对应的IP地址。
相关网络协议---各协议之间的关系图
2.3 SSL,HTTPS协议
2.3.1 HHTP协议安全性不足
-
公开。HTTP是一个公开的协议,任何人都可以随时了解协议的细节,并可以模仿、模拟、伪造HTTP请求获取服务端资源。
-
网络。HTTP是为网络数据传输而生的,根本职责就是传输数据,那么网络上任何一个 传输节点,包括代理、网管、路由器等都可以随时知道HTTP传输的内容。
-
明文。HTTP/1.1协议本身没有加密规则,所以整个报文体都是明文在网络上流转。
2.3.2 HTTP协议安全性的解决办法
SSL/TSL安全传输
-
SSL(Secure Socket Layer) 安全 套接层
-
TSL(Transport Layer Security)安全传输层协议
-
HTTP与SSL或TSL组合使用,建立安全通路
-
SSL+HTTP = HTTPS
-
HTTPS(HTTP Secure)超文本传输安全协议
-
-
SSL通路与TCP一样,为了安全和完整性都牺牲了一些效率
2.3.3 加密报文体
-
HTTP协议的报文分为:报文头、报文体
-
针对报文体的明文内容,结合密码学相关技术
-
只将报文体的内容进行加密,保证数据安全
-
这种方式需要客户端、服务端单独支持,提高了系统实现的复杂度
-
而密钥和加密算法可以完全私有化,安全性相对较高
实际应用中,已经更多采用两种方式结合,即加密通讯又加密报文体
3.HTTP协议
3.1 HTTP是什么?
HyperText Transfer Protocol ,超文本传输协议
-
协议
-
有两个或者多个参与者
-
定义了交互的约定和规范
-
-
传输
-
http是一个专门用来在两点之间传输内容的协议
-
包括请求方和响应方
-
-
超文本
-
http不仅可以传输文本
-
还可以传输音频、视频、文件
-
3.2 HTPP不是什么?
-
不是浏览器、不是操作系统
-
http只是浏览器等客户端传输数据时使用的规范
-
-
不是HTML
-
http和html经常一起出现但是他们不一样
-
html是超文本的载体,传输的内容
-
-
不是编程语言
-
http不是java、python这种编程语言
-
但是可以用语言来模拟http请求
-
3.3 URI与URL
URI(Uniform Resource Identifier),统一资源标识符
URL(Uniform Resource Locator),统一资源定位符,也就是网址
3.4 http报文结构
一个例子
3.5 请求方法
3.6 响应状态码
3.7 http请求头
Http首部
重要的HTTP首部参数
3.8 无状态与身份认证
4. HTTP协议总结
4.1 HTTP协议特点
-
灵活可扩展、首部、内容、状态码都可自定义
-
可靠的传输协议、基于TCP协议
-
是一个应用层协议,与ftp、smtp相比应用更广泛
-
采用请求应答通讯模式,客户端和服务端(C/S)
-
无状态的协议
-
实体数据可分段、可压缩、支持多语言、灵活编码
4.2 HTTP/1.1的优点
-
简单、灵活、容易扩展
-
应用广泛、不受编程语言、软件、硬件的约束
-
无状态减轻服务器的压力、更容易组成服务器集群
-
明文传输让协议更容易理解、更直观、调试更容易
4.3 HTTP/1.1的缺点
-
无状态需要Cookie技术支持
-
明文传输让数据毫无隐私可言、不安全
-
没有客户身份验证、容易伪装、篡改
-
请求应答模式、对高并发网络传输有挑战