http和https
Posted talosant
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了http和https相关的知识,希望对你有一定的参考价值。
HTTP协议(HyperText Transfer Protocol,超文本传输协议):是一种发布和接收 html页面的方法,是规范,买卖东西一样。
HTTPS (Hypertext Transfer Protocol over Secure Socket Layer)简单讲是http的安全版,在http下加入SSL层。
HTTPS 的安全基础是SSL , 因此通过它传输的内容都是经过SSL 加密的, 它的主要作用可以分为两种:
(1)建立一个信息安全通道来保证数据传输的安全。
(2)确认网站的真实性, 凡是使用了HTTP 的网站, 都可以通过点击浏览器地址栏的锁头标志来
查看网站认证之后的真实信息, 也可以通过CA 机构颁发的安全签章来查询。
SSL(Secure Sockets Layer 安全套接层)主要用于Web的安全传输协议,在传输层对网络连接进行加密,保障在Internet上数据传输的安全。
http的端口号为80,
https的端口号为443
(一)http工作原理
网络爬虫抓取过程可以理解为模拟浏览器操作的过程。浏览器的主要功能是向服务器发出请求,在浏览器窗口中展示您选择的网络资源,
http是一套计算机通过网络进行通信的规则。
HTTP工作过程
一次HTTP操作称为一个事务,其工作整个过程如下:
1、地址解析
如用客户端浏览器请求这个页面:http://localhost.com:8080/index.htm,从中分解出协议名、主机名、端口、对象路径等部分,
对于我们的这个地址,解析得到的结果如下:
协议名:http
主机名:localhost.com
端口:8080
对象路径:/index.htm
在这一步,需要域名系统DNS解析域名localhost.com,得主机的IP地址。
2、封装HTTP请求数据包
把以上部分结合本机自己的信息,封装成一个HTTP请求数据包
3、封装成TCP包,建立TCP连接(TCP的三次握手)
TCP握手协议
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
SYN:同步序列编号(Synchronize Sequence Numbers)
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),
即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,
客户端和服务器进入ESTABLISHED状态,完成三次握手。完成三次握手,客户端与服务器开始传送数据
4、客户机发送请求命令
建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URI:Uniform Resource Identifier)、
协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。
5、服务器响应
服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,
后边是MIME信息包括服务器信息、实体信息和可能的内容。
实体消息是服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此结束,接着,
它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据
6、服务器关闭TCP连接
一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了:
Connection:keep-alive,TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。
保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。
(二)https的请求与响应
http通信由两部分组成:客户端请求消息 与 服务器响应消息
(三)浏览器http请求
1) 当用户在浏览器的地址栏中输入一个URL并按回车键之后,浏览器会向http服务器发送http请求。http请求主要分为“Get”和“Post”两种方法。
2) 当我们在浏览器输入URL http://www.baidu.com 的时候,浏览器发送一个Request请求去获取 http://www.baidu.com 的html文件,
服务器把Response文件对象发送回给浏览器。
3) 浏览器分析Response中的 HTML,发现其中引用了很多其他文件,比如Images文件,CSS文件,JS文件。
浏览器会自动再次发送Request去获取图片,CSS文件,或者JS文件。
4)当所有的文件都下载成功后,网页会根据HTML语法结构,完整的显示出来了。
URL(Uniform / Universal Resource Locator的缩写):统一资源定位符,是用于完整地描 述Internet上网页和其他资源的地址的一种标识方法。
基本格式:scheme://host[:port#]/path/…/[?query-string][#anchor]
- scheme:协议(例如:http, http, ftp)
- host:服务器的IP地址或者域名
- port:服务器的端口(如果是走协议默认端口,缺省端口80)
- path:访问资源的路径
- query-string:参数,发送给http服务器的数据
- anchor:锚(跳转到网页的指定锚点位置)
例如:
(四)客户端http请求
URL只是标识资源的位置,而http是用来提交和获取资源。客户端发送一个http请求到服务器的请求消息,
包括以下格式:请求行、请求头部、空行、请求数据四个部分组成,下图给出了请求报文的一般格式。
(五)请求方法
GET http://www.baidu.com/ http/1.1
根据http标准,http请求可以使用多种请求方法。
http 0.9:只有基本的文本 GET 功能。
http 1.0:完善的请求/响应模型,并将协议补充完整,定义了三种请求方法: GET, POST 和 HEAD方法。
http 1.1:在 1.0 基础上进行更新,新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
http 2.0(未普及):请求/响应首部的定义基本没有改变,只是所有首部键必须全部小写,而且请求行要独立为 :method、:scheme、:host、:path这些键值对。
以上是关于http和https的主要内容,如果未能解决你的问题,请参考以下文章