5.1加密
5.2,SSL和TLS
5.3,什么是https:
5.4,HTTPS握手的过程
5.5,HTTP的安全缺点:
5.6,HTTP和HTTPS的区别:
一,计算机网络体系结构:就是计算机网络的各层和一些协议的集合。
其中包括7层OSI体系结构:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层;
4层TCP/IP体系结构:应用层,传输层,网络层,数据链路层;
五层体系结构:融合了OSI与TCP/IP体系结构,可以更好的学习计算机网络原理,现在只介绍五层体系结构(应用层=>运输层=>网络层=>链路层=>物理层)
基于TCP/IP协议,按层次可以划分为应用层,传输层,网络层,数据链路层
应用层:决定了向用户提供应用服务时候的通信活动。如文件传输,电子邮件等,TCP/IP协议如HTTP,FTP,DNS等协议。
第一步:发送URL请求,URL由以下元素组成
(1)传送协议:http: 或者 https: 等
(2)层级URL标记符号:// 固定不变
(3)访问资源需要的凭证信息(可省略)
(4)服务器地址。通常为域名,也可以为IP地址,实际通信是通过IP地址访问,DNS服务器会解析域名为IP地址
(5)端口号,默认:80(可省略)
(6)路径,以单斜杠“/ ”来区分目录名称
(7)查询。以“?”为起点,get模式每个参数以“&”隔开,再以“=”赋值。
(8)片段。以“#”字符为起点,使用片段标识符
第二步:DNS对请求的URL域名进行解析
DNS(Domain Name System)服务和Http协议都是位于应用层的协议,它提供域名到IP地址之间的解析服务。可通过域名查找IP地址,也可逆向查找。
第三步:生成HTTP请求报文
HTTP协议(超文本传输协议)决定从客户端到服务端等一系列通信内容和方式。
传输层:对应用层提供网络连接时的两台计算机的数据传输,机提供端对端的接口,有两个协议:TCP和UDP
第四步:TCP连接建立数据
TCP协议(传输控制协议)位于传输层
首先是三次握手建立连接
网络层:处理网络中流动的数据包,规定通过怎样的传输路径将数据包传递到对方计算机,即为数据包选择路由,如IP协议。
第五步:数据传输到IP地址
IP(Internet Protocol)网际协议的作用在于实现数据包传递到对方计算机的IP地址,IP间的通信依赖于MAC地址(网卡所属地址),需要再通过ARP协议根据通信方的IP地址反查出对应的MAC地址。
第六步:服务器接收并解析请求报文回传响应报文
数据链路层和物理层:处理网络连接中的硬件部分,以二进制数据形式在物理媒体上传输数据,如FDDI协议。
二,TCP协议:传输控制协议
属于传输层通信协议,基于TCP的应用层协议有:万维网HTTP,电子邮件SMTP、POP3,文件传输FTP,远程终端接入Telnet。
特点:面向连接,面向字节流,全双工通信,可靠。优点是数据传输可靠,缺点是效率慢,因需建立连接,发送确认包等。
TCP报文段格式
报文段=首部+数据2部分,是TCP传送的数据单元
首部:前20个字符固定,后面有4n个字节是根据需而增加的选项,所以首部最小长度=20字节
TCP连接三次握手:
(目的:防止服务器因接收了早已失效的连接请求报文,从而一直等待客户端请求,最终形成死锁,浪费)
握手前:客户端处于CLOSE状态,客户端打开连接后,服务端有CLOSE状态转为LISTEN状态,等待握手。
第一次:客户端向服务器发送一个连接请求的报文段:SYN=1,seq=x(随机选择一个起始序号)。这时候不携带数据,因为SYN被设置为1的报文段不能携带数据,但需要消耗一个序号。此时客户端进入同步已发送状态(SYN_SEND)。
第二次:服务端收到请求连接的报文,若同意连接发送报文段:SYN=1,ACK=1,seq=y(随机选择一个起始序号),ack=x+1(确认号字段),仍然不携带数据。此时服务器进入同步已接收状态(SYN_RCVD)。
第三次:客户端发出连接确认报文段:ACK=1,seq=x+1,ack=y+1,可携带数据(因为SYN为1,若不携带数据则不消耗序号),此时客户端服务端都进入已创建状态(ESTABLISHED),可开始发送数据。
成功进行三次握手后就建立起一条TCP连接,即可传送应用层数据,三次握手期间,任何一次未收到对面的回复,则都会重发。
四次挥手:确保双方都释放连接
挥手前:都处于ESTABLISHED状态。
第一次:客户端向服务端发送连接释放报文段:FIN=1,seq=u(u为前面的数据最后一个字节的序号+1),可携带数据,然后客户端进入终止等待1状态(FIN_WAIT_1),表示没有数据发给服务端了。
第二次:服务器向客户端发回连接释放确认的报文段:ACK=1,seq=v,ack=u+1,此时服务器进入关闭等待状态(CLOSE_WAIT),客户端进入终止等待2状态,等待服务器发出释放连接请求。至此,客户端到服务端的TCP连接已断开,服务端向客户端的还未断开。
第三次:服务器无需向客户端发数据了,则发出释放连接的报文段:FIN=1,ACK=1,seq=w,ack=u+1,可携带数据,此时服务器进入最后确认状态(LAST_ACK)
第四次:用户端向服务器发回连接释放确认的报文段:ACK=1,seq=u+1,ack=w+1,可携带数据,客户端进入时间等待状态(TIME_WAIT),客户端进入CLOSE状态。此时TCP连接还未释放,需经过时间等待计时器设置的时间2MSL后,客户端才能进入连接关闭状态,也就是服务器关闭的要比客户端早一些。
无差错传输:无论对方以多快的速度发送数据,接收方都能来得及处理收到的数据。
发动窗口:任意时刻,发送方维持的一组连续的,允许发送帧的帧序号,主要是对发送方进行流量控制。
接收窗口:任意时刻,接收方维持的一组连续的,允许接收帧的帧序号,主要控制可接受(不可接收)哪些数据帧,接收方只有当收到的数据帧的序号落入接收窗口内才允许将该数据帧收下,否则一律丢弃。
三,UDP协议
用户数据报协议,属于传输层通信协议,基于UDP的应用层协议有TFTP(文件传输),SNMP(网络管理),DNS(域名转换),NFS(远程文件服务器)。
特点是无连接的(不需建立UDP连接),不可靠的(不管对方是否收到),面向报文(数据以数据报文,也就是包的形式传输),无拥塞控制(因为不管是否到达接收方,所以不需拥塞控制)。优点是速度快,缺点是消息易丢失。
报文段格式:
源端口:需对方回信时使用,不需时则设为全0;
目的端口:重点交付报文时需使用到;
长度:UDP用户数据报的长度,最小值是8(仅有首部);
校验和:检测UDP用户数据报在传输中是否有错,若有错则丢弃。
伪首部:计算校验和,不向下传送也不向上递交,实际上不属于UDP首部。 |
TCP和UDP区别:
TCP:面向连接,可靠,传输形式为字节流,效率慢,所需资源多,要求数据可靠时使用,首部字节为20-60;
UDP:无连接,不可靠,传输形式为数据报文段,效率高,所需资源少,要求通信速度高时使用,首部字节为8.
四,HTTP:
4.1,工作流程:
客户端 服务端
4.2,HTTP报文
HTTP在应用层交互数据方式为报文,报文分为请求报文和响应报文。
请求报文:
请求行:声明请求方法,主机域名,资源路径,协议版本;为请求方法+请求路径+协议版本。 请求方法:GET,POST,HEAD,DELETE,PUT等八种。 请求头:声明 客户端、服务器/报文的部分信息(采用header:value形式); 请求体:存放需发送的数据信息(可选部分,如get请求就没有请求数据),数据使用方式有数据交换、键值对、分部分3种。 |
请求头通用header | 常见请求header |
4.3,响应报文:
包括状态行、响应头、响应体。
状态行:
五,HTTPS
5.1加密
(1)对称加密(私钥加密):加密和解密使用相同的密钥的加密算法,就是加密密钥和解密密钥能从对方那儿推算出来。其实在大多数的对称算法中,加密密钥和解密密钥是相同的,常见的对称密钥有DES、AES、RC4。
(2)非对称加密(公钥加密):指的是加密和解密的算法不同,有公开密钥和私有秘钥两个秘钥。加密秘钥和解密秘钥是成对出现的,一个秘钥是公开的叫公钥,另一个不公开的叫私钥。非对称加密算法对加密内容有长度限制,不能超过公钥长度。常见的非对称加密有RSA。
5.2数字摘要:采用单项Hash函数将需要加密的明文“摘要”成一串固定长度(128位)的密文,是HTTPS能确保数据完整性和防篡改的根本原因。常用的摘要有MD5、SHA1等。
5.3 数字签名:是对“非对称加密”和“数字摘要”两项技术的应用,将摘要信息用发送者的私钥加密,与原文一起传送给接受者。接受者只有用发送者的公钥才能解密被加密的摘要信息,然后用Hash函数对收到的信息产生一个摘要信息,与解密的摘要信息对比,如果相同,则说明收到的信息是完整的,否则说明信息被篡改过,因此数字签名能验证信息的完整性。过程是:明文->hash运算->摘要->私钥加密->数字签名。
5.4数字证书:一个权威的值得信赖的第三方机构(一般是由政府机构审核并授权的机构)来统一对外发送主机机构的公钥,请求方从这种机构获取公钥。
5.2,SSL和TLS
5.2.1,SSL(Secure Socket Layer,安全套接字层):ssl协议可分为两层:
(1)SSL记录协议:建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。
(2)SSL握手协议:建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密秘钥等。
5.2.2,TLS(Transport Layer Security,传输层安全协议):用于两个应用程序之间提供保密性和数据完整性。TLS1.0建立在SSL3.0协议规范之上,是其后续版本,可以理解为SSL3.1,该协议由TLS记录协议和TLS握手协议两层组成。
5.2.3,SSL/TLS协议的作用:
认证用户和服务器,确保数据发送到正确的客户端和服务端;加密数据以防止数据中途被窃取;维护数据完整性。
5.3,什么是https:
基于安全套接字层的超文本传输协议,HTTPS可以理解为HTTP+SSL。SSL最高版本是3.0,之后的被称为TLS,现在用的一般是TLS,一般指的SSL也就是TLS。
HTTPS不是应用层协议,只是HTTP通讯接口部分用SSL和TLS协议代替,通常HTTP直接和TCP通信,HTTPS是HTTP先和SSL通信,SSL再和TCP通信。
5.4,HTTPS握手的过程
大致分为验证证书有效性,握手生成会话秘钥,利用会话秘钥进行内容传输。可以分为8次握手:
(1)客户端首次发出请求:发送的信息有:本地支持的协议版本,如TLS1.0版本;随机产生一个随机数,在本地保存并传给服务器,稍后用于生成“对话秘钥”;支持的加密算法,如RSA公钥加密;支持的压缩方法。
(2)服务器的配置:采用HTTPS协议的服务器会有一套数字证书,可以是自己制作也可以是CA证书,区别就是自己的证书需要客户端验证通过才可访问,CA证书不会弹出提示页面。这套证书是一堆公钥和私钥,公钥给别人加密使用,私钥给自己解密使用。服务器接收到客户端请求后,需要确定加密协议的版本以及加密的算法,然后也随机生成一个随机数。
(3)服务器首次回应:将上阶段生成的加密协议版本、加密的算法、服务器生成的随机数以及自己的证书一起发给客户端。