HTTP工作原理详解
Http的通信基础
互联网的通讯基础就是TCP/IP协议,两台计算机在网络上进行通信就是这两个协议协同工作所完成的,TCP/IP协议是两个协议一起协同工作的简称。
TCP(transmission control protocol):传输控制协议。
IP(internet protocol):网际协议
计算机之间的通信:IP
IP是负责计算机之间的通信,IP协议是计算机相互识别的一种机制,每台计算机在网络中都有一个IP地址用来标识他。IP负责计算机之间数据包的发送和接受,IP协议将消息分装成比较小得独立的包,并通过英特网在计算机之间的传输,IP负责计算机路由到目的地址,但是IP只有发送和接受包的能力,对包的检测,只有头部的检测,没有对整个包检测的能力。
应用程序之间的通信:TCP
TCP是确保数据包正确无误的到达,并且尝试检查包内容是否一致。TCP在IP上应用端口,将已经正确的数据传送到对应的程序上去。当一个程序想通过TCP与另外一个程序通信时,他会发送一个通信请求,这个请求有一个确定的地址,TCP使两个程序建立全双工的通信,占用计算机的整个通信线路。TCP在数据传输时负责将数据拆分成IP数据包,让他们到达指定位置后开始重组。
TCP/IP协议其实是两个协议协同工作,具有一定的层次关系;TCP负责应用程序的通信,IP负责计算机之间的通信;TCP负责将数据拆分成IP数据包和将IP数据包还原成原本的数据,IP负责把TCP交给他的数据发送到指定的位置。
HTTP、TCP、IP几个协议所在层
HTTP和FTP等协议都处在于应用层,TCP和UDP一起存在于传输层,IP存在于网络层。
HTTP工作的过程
HTTP是由请求和应答组成,显然是一个B/S客户端服务器模型,HTTP的请求永远都是客户端发起请求,服务器端应答请求。HTTP是一个无状态的协议,指HTTP连接不会持续太长时间,服务器端应答客户端后就会主动的断开连接。一次HTTP的请求简称为一次事务,以下是http工作的过程。
- 地址解析
在http发起请求后,服务器会对URL会进行地址解析,最终会解析出:协议名、主机、端口、对象路径。例如http://promax.com/mymall/toIndex.action进行地址解析得:
协议名:http
主机:promax.com
端口:80
对象地址:mymall/toIndex.action
2.封装HTTP请求数据包
将以上信息结合本机信息封装成一个HTTP请求包
3.封装成TCP包,简历TCP通信连接
4.客户机发送请求命令
5.服务器相应
服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
6.服务器关闭TCP连接
HTTPS实现原理
HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL。其所用的端口号是443。
目前HTTPS有两种主要算法,对称加密(DES、AES)和非对称加密(RSA、DSA)
通讯过程
过程大致如下:
- SSL客户端通过TCP和服务器建立连接之后(443端口),并且在一般的tcp连接协商(握手)过程中请求证书。即客户端发出一个消息给服务器,这个消息里面包含了自己可实现的算法列表和其它一些需要的消息,SSL的服务器端会回应一个数据包,这里面确定了这次通信所需要的算法,然后服务器向客户端返回证书。(证书里面包含了服务器信息:域名。申请证书的公司,公共秘钥)。
- Client在收到服务器返回的证书后,判断签发这个证书的公共签发机构,并使用这个机构的公共秘钥确认签名是否有效,客户端还会确保证书中列出的域名就是它正在连接的域名。
- 如果确认证书有效,那么生成对称秘钥并使用服务器的公共秘钥进行加密。然后发送给服务器,服务器使用它的私钥对它进行解密,这样两台计算机可以开始进行对称加密进行通信。
https通信的优点:
- 客户端产生的密钥只有客户端和服务器端能得到;
- 加密的数据只有客户端和服务器端才能得到明文;
- 客户端到服务端的通信是安全的。
ps:本篇博客是参照博主真实的归宿学习所写,如有不足请多指教