HTTP是什么?
HTTP是超文本传输协议的缩写
该协议工作在客户端--服务端框架
浏览器作为HTTP客户端通过URL向HTTP服务端(Web服务器)发送请求
服务端(Web服务器)接收到请求之后,向客户端发送响应消息
HTTP协议的组成
请求:
请求行(请求方法,url,http版本 )
请求头
请求体(请求的报文)
响应:
状态行(http版本,状态码,状态码描述)
响应头
响应体
HTTP协议头的内容
请求头:
accept:text/xml; (客户端希望接受到的响应类型-请求报文头)点这里
accept-charset:utf-8;(客户端接受的字符集)
accept-encoding;(客户端接收的编码方式)
accept-languague(客户端接受的语言)
connection:keep-alive (使用的连接类型) http1.1默认keep-alive,http1.0默认close;
cookie
content-length:(以8进制表示请求体的长度)
content-type:application/xml (客户端发送的格式)
date:发送的日期和时间
host:服务器的地址和端口
响应头
connection
content-dispsition (对资源的处理,如下载、打开)
content-encoding
content-languague
content-length
content-type
date
server
location 用于在进行重定向,或在创建了某个新资源时使用。
Set-Cookie
HTTP协议的特点
HTTP协议是一种无连接、无状态的协议
无连接:限制每一次连接只处理一个请求。服务器处理完客户的请求,收到客户应答后,断开连接。(可以节省传输时间)
无状态:HTTP是一种无状态的协议。
无状态指协议对于事务的处理没有记忆的能力。
缺少状态指如果后续处理需要前面的信息,必须重新传输。
HTTP状态码
1xx:指示信息–表示请求已接收,继续处理
2xx:成功–表示请求已被成功接收、理解、接受
3xx:重定向–要完成请求必须进行更进一步的操作
4xx:客户端错误–请求有语法错误或请求无法实现
5xx:服务器端错误–服务器未能实现合法的请求
HTTP的工作原理
HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。
HTTP协议采用了请求/响应模型
客户端向服务器发送一个请求报文(内含请求的方法、URL、协议版本、请求头、请求数据)
服务器端以一个状态行作为响应(内容包含协议的版本、成功\错误代码、服务器信息、响应头、响应数据)
HTTP请求/响应过程:
1、客户端连接到Web服务器
客户端与Web服务器的HTTP端口(默认为80端口)建立一个TCP连接
2、发送HTTP请求
通过TCP连接。客户端向Web服务器发送一个文本的请求报文(请求头、请求行、空行、请求数据)
3、服务器接收请求并返回HTTP响应
Web服务器解析请求、定位请求资源。服务器将资源拷贝到TCP连接通道中,由客户端进行读取。客户端做出响应(状态行、响应头、空行、相应数据)
4、释放资源
如果连接状态为close,服务器主动关闭TCP连接、客户端被动关闭连接,释放TCP连接
如果连接状态为keepalive,则连接会继续保持一段时间,时间内可以继续接收请求
客户端浏览器解析HTML内容
1、客户端浏览器首先解析状态行,查看请求是否成功的状态码
2、解析响应头(告知以下为xxx字节的HTML文档和文档的字符集)
3、客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口显示
浏览器输入一个地址URL之后会有以下的流程
1、浏览器向DNS服务器(域名解析服务器)请求解析URL中的域名中对应的IP地址
2、解析完成后,根据解析出的IP地址和默认端口80,与服务器建立TCP连接
3、浏览器发出读取文件(URL中对应的文件)的HTTP请求,该请求报文作为TCP三次握手的第三个报文数据发送给服务器
4、服务器对浏览器请求作出响应,并把对应的HTML文本发送给浏览器
5、释放TCP连接
6、浏览器将HTML文本的内容显示出来
HTTP和HTTPS的区别?
一句话理解:HTTPS是安全版的HTTP,在HTTP下加入了SSL层,对SSL层进行加密。
HTTPS的主要作用:
1、建立一个信息安全通道,保证数据传输的安全
2、确然网站的真实性
区别:
A、HTTPS协议需要申请证书,HTTP不需要
B、HTTP信息是明文传输,HTTPS具有安全性的SSL加密传输协议
C、连接方式不同,端口不同 HTTP:80 HTTPS:443
D、HTTP连接简单、无状态;HTTPS由SSL+HTTP构建的可加密传输,更安全
HTTPS协议的安全性是如何实现的?
1、客户使用https的URL访问Web服务器,请求与Web服务器建立SSL连接。
2、Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。
3、客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。
4、客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。
5、Web服务器利用自己的私钥解密出会话密钥。
6、Web服务器利用会话密钥加密与客户端之间的通信。
session和cookie
面试题:
说说Cookie和Session的区别?
1、Cookie和Session都是会话技术,Cookie是运行在客户端,Session是运行在服务器端。
2、Cookie有大小限制以及浏览器在存cookie的个数也有限制,Session没有大小限制和服务器的内存大小有关。
3、Cookie有安全隐患,通过拦截或通过本地文件找得到你的cookie后可以进行攻击。
4、Session保存在服务器端上会存在一段时间才会消失,如果session过多会增加服务器的压力。