HTTP的工作原理

1.HTTP简介
HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本都浏览器的传送协议。他可以使浏览器更加高效,较少网络传输。不近保证计算机正确快速的传输超文本文档,还确定传输文档中的那一部分,以及哪部分内容首先显示(如文办先于图形)等。在了解HTTP如何工作之前我们先了解计算机之间的通信。


2计算机相互之间的通信
互联网的关键技术就是TCP/IP协议。两台计算机之间额通信是通过TCP/IP协议早因特网上进行的。实际是两个协议
TCP: Transmission Control Protocol 传输控制协议和IP:Internet Protocol 国际协议。

IP:计算机之间的通信
IP协议是计算机用来相互识别的通信的一种机制,每台计算机都有一个IP用来在Internet上标识这台计算机。IP负责在因特网上发送和接收数据包。通过IP,消息(或者其他数据)被分割为小的独立的包,并通过因特网在计算机之间传送。IP负责将每个包路由至他的目的地。
IP协议仅仅是允许计算机相互发消息,但他并不检查消息是否以发送的次序到达而且没有损坏(只检查关键的头数据)。为了提供消息检验功能呢,直接在IP协议上设计了传输控制协议TCP。

TCP:应用程序之间的通信
TCP确保数据包以正确的次序到达,并且稀罕事确认数据把的内容没有改变。TCP在IP地址上加上端口(port),他运行计算机通过网络提供各种服务。一些端口号为不同服务保留,而且这些端口号是众所周知。
服务或者守护进程:在提供服务的机器上,有程序监听特定端口上的通信流。例如大多数电子邮件通信流出现在端口25上,用于WWW的HTTP通信流出现在80端口上。
当应用程序希望TCP与另一个应用程序通信时,他会发送一个通信请求。这个请求必须被送到一个确切的地址。在双方“握手”之后,TCP将两个应该程序之间建立一个全双工(full-duplex)的通信,占用两个计算机之间整个的通信线路。TCP用于从应用程序到网络的数据传输控制。TCP复杂在数据传送之前将他们分割为IP包,然后咋他们到达的时候将他们重组。
TCP/IP就是TCP和IP两个协议在一起协同工作,有上下层次的关系。
TCP负责应用软件(比如你的浏览器)和网络软件之间的通信。IP负责计算机之间的通信。TCP负责将数据分割并装入IP包,IP包负责将包发送至接受者,传输过程要经过IP路由器负责根据通信量、网络中的错误或者其他参数来进行正确的寻址,然后再他妈到达的时候重新组合他们。


3.HTTP协议所在的协议层
HTTP是基于TCP协议之上的。在TCP/IP协议参考模型的各层对应的协议如图。其中HTTP是应用层的协议
在这里插入图片描述


4.HTTP请求响应模型
HTTP由请求和乡音构成,是一个标准的客户端服务器模型(B/S)。HTTP协议永远都是客户端发出请求,服务器回送响应。如图:
在这里插入图片描述
HTTP是一个无状态的协议。无状态是指客户机(WEB浏览器)和服务器之间不需要简历持久的链接,这意味着当一个客户端向服务器端发出请求,然后服务器返回响应(response),链接就被关闭了,在服务器端不保留链接的有关信息。HTTP遵循请求(request)/应答(response)模型。客户机(浏览器)向服务器发送请求,服务器处理请求并返回适当的应答。所有HTTP链接都被构造成一套请求和应答。


5.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三次握手)
在HTTP工作开始之前,客户机(Web浏览器)首先要通过网络与服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议组,因此Internet 又被称为是TCP/IP网络。HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能进行高层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80,这里是8080。
4)客户机发送请求
建立连接后,客户机发送一个请求给服务器,请求方式的格式为:同一资源标识符(URL)、协议版本号、后边是MIME信息包括请求修饰符、客户机信息和可能的内容。
5)服务器响应
服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或者错误的代码,后边是MIME信息包括服务信息、实体信息和可能的内容。
实体消息是服务器向浏览器发送头信息后,他会发送一个空白行来表示头信息的发送到此结束,接着,他就以Content-Type应答头信息所描述的格式发送用户请求的实际数据。
6)服务器关闭TCP连接
一般情况下,一旦Web服务器向浏览器发送了请求数据,他就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码:Connection:keep-alive,TCP连接在发送后将任然保持打开状态,于是,浏览器可以基础通过相同的链接发送请求。保持练级节省了为每个请求建立新连接所需的时间,还节约了网络带宽。


6.HTTP协议栈中各层数据流
首先看一下客户端请求的时候,数据在各层协议的数据组织图:
在这里插入图片描述
而服务器解析客户机请求就是反向操作的过程,如图:
在这里插入图片描述
客户机发起一次请求的时候:
客户机会将请求封装成http数据包–>封装成TCP数据包–>封装成IP数据包–>封装成数据帧–>硬件将帧数据转换成bit流(二进制数据)–>最后通过无硬件(网卡芯片)发送到指定地点。
服务器硬件首先受到bit流–>然后转换成IP数据包,通过IP协议解析IP数据把,然后又发现里面的TCP数据包,就通过TCP协议解析TCP数据包,接着发现是http数据包,通过http协议再解析http数据包得到数据。


7.HTTPS实现原理
HTTPS(全称:Hypertext Transfer Protocol over Secure Scocket Layer),是以安全为目标的HTTP通道,简单讲师HTTP的安全版。即HTTP 下加入SSL层,HTTPS的安全基础是SSL。其所用端口号的443。
SSL:安全套接层,是Netscape公司设计的主要用于web的安全传输协议。这种协议在web上获得了广泛的应用。通过证书认证来确保客户端和网络服务器之间的通信数据是加密安全的。

有两种基本的加密算法类型;
1)对称加密(symmetrcic encryption):秘钥只有一个,加密解密为同一个密码,且加密速度快,典型的堆成加密算法有DES、AES、RC5、3DES等。
对称加密主要问题是共享秘钥,除非你的计算机(客户端)知道另外一台计算机(度武器)的私钥秘钥,否则无法对通信流进行加密解密。解决这个问题的方案非对称秘钥。
2)非对称秘钥:使用两个秘钥,公共秘钥和私有秘钥。私有秘钥由一方密码保存(一般是服务器保存),另一方任何人都可以获得公共秘钥。
这种秘钥成对出现(且根据公钥无法推知私钥,根据私钥也无法推知公钥),加密解密使用不同秘钥(公钥加密需要私钥解密,私钥加密需要公钥解密),相对对称加密速度较慢,典型的非对称加密算法有RSA、DSA等。

下面看一下http的通信过程:
在这里插入图片描述
1)SSL客户端通过TCP的服务器建立连接之后(443端口),并在TCP连接协商(握手)过程中请求证书。
即客户端发出一个消息给服务器,这个消息里面包含了自己可以实现的算的列表和其他一些需要的消息,SSL的服务器端会回应一个数据包,这里面确定了这次通信所需要的算法,然后府而去向客户端返回证书。(证书里面包含了服务器信息:域名。申请证书的公司,公共秘钥)。
2)Client 在收到服务器返回的证书后,判断签发这个证书的公共签发机构,并使用这个机构的公共秘钥确认前面是否有效,客户端还会确保证书中列出的域名就是他正在连接的域名。
3)如果确认证书有效,那么生成对称秘钥并使用服务器的公共秘钥进行加密。然后发送给服务器,服务器使用他的私钥对他进行解密,这样两台计算机可以开始进行对称加密进行通信。

https通信的优点:
1)客户端产生的秘钥只有客户端和服务器端能得到;
2)加密的数据只有客户端和服务器端才能得到明文;
3)客户端到服务器端的通信是安全的;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值