应用层协议:
HTTP超文本传输协议、DNS域名系统、FTP文件传输协议、TELNET远程终端协议
传输层:提供端对端的接口 TCP,UDP
网络层:IP
数据链路层:
物理层:
一、HTTPS背景
HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。
二、概念
HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效。
HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
三、HTTP请求流程
4、HTTP建立连接过程
TCP/IP协议是传输层的面向连接的安全可靠的传输协议。
连接就是三次握手之后建立的连接,套接字连接 建立资源连接(源ip port 目的ip port)
三次握手的机制是为了保证建立安全可靠的连接,第一次握手由客户端发起,客户端会发送一段报文,SYN=1表示开始建立连接,服务端收到报文后会发送确认消息包,ack=1,经过两次握手客户端已经能够明白自己既能发消息也能接受服务端的消息,但是服务端只能收到消息,不能确认客户端是否收到消息,所以需要第三次握手,客户端收到服务端的响应之后,需要继续发送一个确认消息包ack=1,这个时候连接就被安全的建立了。
四次挥手 首先由客户端发起FIN=1,表示断开连接,服务端收到消息后回应ack=1,表示消息已经收到,这个时候服务端可能还在继续发送一些内容,等发送完成后,继续向服务端发送一个断开连接的报文FIN=1 表示服务端已经做好断开连接的准备,然后客户端再向服务端发送一个确认消息的报文。四次挥手之后,都做好准备,连接可以断开了。
sudo tcpdump -nn -i ens33 port 80 #网卡监听80端口 把发送的数据包 抓取出来
五、HTTP协议版本
http/0.9
只支持GET请求。
只能返回一些html字符串。
http/1.0
增加POST/HEAD请求。
可以发送任何格式的内容。
存在的不足:
每个TCP连接只能发送一个请求,发送数据完毕,连接就关闭,如果还要请求其他资源,就必须再新建一个连接。
每次通信都必须包括头信息(HTTP header),用来描述一些元数据。
http/1.1
PUT、 PATCH、 OPTIONS、 DELETE
引入了持久连接( persistent connection),即TCP连接默认不关闭,可以被多个请求复用,不用声明Connection: keep-alive。
引入了管道机制( pipelining),即在同一个TCP连接里,客户端可以同时发送多个请求(大多数浏览器允许同时建立6个持久连接引入了管道机制),进一步改进了HTTP协议的效率。
无状态,每次请求都必须带上所有信息,浪费带宽,影响速度。
http1.0短连接的操作步骤是: 建立连接——数据传输——关闭连接…建立连接——数据传输——关闭连接
http1.1开启了长连接的操作步骤是: 建立连接——数据传输…(保持连接)…数据传输——关闭连接
对于一个系统,提升性能:
高性能:
低延迟
高吞吐/高并发
提升响应时间(优化算法等优化锁机制)
提高吞吐量 扩容(增加线程)