欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

HTTP协议简介

程序员文章站 2022-07-10 15:41:50
...

HTTP协议简介

1.HTTP协议,

HTTP协议,中文名称为超文本传输协议(HyperText【'haɪpɚ'超】 Transfer Protocol  ['protə'kɔl]),HTTP协议位于TCP/IP协议族中第七层,即应用层。主要作用是规定网络上两台需要通信的计算机(即服务器和客户端)的通信格式,HTTP协议默认使用80端口

2.网络七层模型

7 应用层(application layer [ˈler]层)【HTTP SSH Whonis】
6 表示层(presentation layer)【XDR SMB NCP】
5 会话层(session layer)
4 传输层(transport layer)【TCP UDP RTP】
3 网络层(network layer)【IP ICMP IPX】
2 数据链路层(data link layer)【以太网 UEEE 802.11】
1 物理层(physical layer)【线路 无线电 光纤】

3.TCP/IP四层模型

(1)应用层:决定向用户提供应用服务时通信的活动
(2)传输层:提供处于网络连接中两台计算机(即服务器和客户端)数	 据传输,著名的TCP/	 UDP协议都在这一层
(3)网络层:处理流动的网络数据包,规定数据包经什么路径从出发点	 到达目的地
(4)链路层:处理网络连接相关硬件工作
当一个HTTP请求被发起时,应用层把数据交给传输层,传输层收到数据后将数据分割打上标记序号和端口号后将数据交给网络层,网络层增加通信目的地的MAC地址后发给链路层,链路层将其发送出去;同理,服务端接收到数据后,逐层向上传递,解除每一层的部首信息,将报文拼接成原始的样子后进行处理

4.与HTTP协议关系密切的协议

在TCP/IP协议族中,有3个协议与HTTP有非常密切的关系:
(1)IP协议,位于网络层,负责数据包的投递。主要依靠IP、MAC以及ARP协议;
(2)TCP协议,提供可靠的字节流服务,主要用于分割数据,并确保数据投递到达目的地。该协议有著名的‘三次握手’策略
(3)DNS服务,位于应用层,提供域名到IP地址的解析服务(MAC地址需要靠IP地址进行反查得到)
HTTP协议的特点
(1)简单快速:客户向服务器请求服务时,只需传输方法和路径。请求方法常用的有GET HEAD POST
(2)灵活:HTTP允许传输任意类型的数据对象
(3)无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间
(4)无状态:HTTP协议是无状态协议。无状态是指协议对于事物处理没有记忆能力。再次处理事物需要重新传输。(cookie session解决)

5.简单的HTTP协议

首先明确以下三点基础知识:
(1)两台计算机在使用HTTP协议进行通信时,一端必须为服务器(server),另一端必须为客户端(client);
(2)HTTP协议规定请求(request)由客户端发起,服务器负责响应(response)并返回数据
(3)HTTP协议是无状态协议,需由Cookie/session技术实现状态保持
示例请求:
GET /HTTP/1.1    (GET是请求方法,HTTP/1.1协议及版本号)
Host:www.baidu.com(请求的服务器主机地址),接下来是
请求首部字段
请求参数(即请求主体)
示例响应:
HTTP/1.1 200 OK (协议版本 状态码 状态码原因短语)
响应首部字段
一行空格(用CR+LF表示换行)
响应主体

6.HTTP方法

(1)在HTTP/1.1当中,提供了若干种不同的方法对应不同的需求,下面简	要介绍一下(重点需要了解GET和POST方法,其他比较少用):
	GET方法:获取资源。请求参数附在地址栏后面,可见的;
	POST方法:传输实体主体。一般用于提交表单等操作,且表单的内容在地址栏是不可见的
(2)get请求和post请求的区别
	a.区别在于一个修改资源和获取资源
	b.get可以用于保存收藏连接地址
	c.post请求可以把请求的内容放在报文里面

7.cookie技术

(1)客户端第一次请求:服务器生成cookie记住该客户端,生成后将cookie在响应当中返回给客户端,客户端自动保存
(2)第二次请求:客户端在请求上主动加上cookie,服务器根据该cookie可判断客户端身份,达到状态保持的效果

8.HTTP报文内的HTTP信息

用于HTTP协议交互的信息被称为HTTP报文。客户端的HTTP报文叫做请求报文,服务器的HTTP叫做响应报文。HTTP报文是有多行数据构成的字符串文本,大致可分为:报文部首(必有的)、报文主体(不一定非要有)
(1)HTTP报文主体用于传输请求或者响应的实体主体。
(2)状态码,HTTP状态码的类别如下:
	1XX 信息状态码(information) 接收到的请求正在处理
	2XX 成功状态码(Success) 请求正常处理完毕
	3XX 重定向状态码(Redirection) 需要进行附加的操作完成请求
	4XX 客户端错误状态码(Client Error) 服务器无法处理请求
	5XX 服务器错误状态码(Server Error) 服务器处理请求出错

9.HTTP首部

(1)HTTP报文部
一个完整的HTTP报文应该有以下结构:
	a.(HTTP)报文部首
	b.空行(CR+LF)
	c.(HTTP)报文主体
(2)HTTP首部字段
	HTTP首部字段是构成HTTP报文的要素之一
	首部字段的结构如下:
	首部字段名称:字段值
	//example
	Content-Type/html
	Keep-Alive:timeout=15,max=100
	
	a.通用首部字段,请求和响应报文都会使用的部首
	b.请求首部字段,客户端使用的首部,补充请求的附加信息
	c.响应首部字段,服务器使用的首部,补充响应的附加信息
	d.实体首部字段,针对报文实体使用的首部,补充资源内容更新等于	  实体有关信息
(3)cookie服务的首部字段
	首部字段名:Set-Cookie 说明:开始状态管理所使用的Cookie信	息  首部类型:响应首部字段
	Cookie 服务器收到的Cookie信息,请求首部字段
	其中需要注意的一个属性是expires,它指定了浏览器可发送Cookie的有效期。过了有效期,则无法状态保持,需要重新登陆传输
(4)session
	Cookie特点就是存在客户端中,而session则是存在于服务器中 
(5)CSRF攻击
	CSRF是什么?(Cross Site Request Forgery,跨站域请求伪造)是一种网络的攻击方式
	CSRF攻击理解:攻击者盗用了你的身份,以你的名义发送恶意请求。
	攻击者要完成CSRF攻击,受害则必须依次完成两个步骤:
	登陆受信任网站A,并在本地生成Cookie;在不登出A的情况下,访问危险网站B。只要这两个步骤其中一个不发生就不会受到CSRF攻击;因此要防范CSRF攻击可以在登陆授信网站后注销登陆(注意关闭浏览器不等于结束了一个回会话或者注销了登陆)。或者不访问其他危险网站
	
	POST方法:传输实体主体
	POST类型的CSRF
	<form action=http://wooyun.org/csrf.php method=POST>
	<input type="text" name="xx" value="11" />
	</form>
	<script> document.forms[0].submit(); </script>
	防护:在表单中加入token来防护

10.https

安全套接字(Secure [sə'kjʊr] Socket ['sɑkɪt] Layer,即SSL)协议是web浏览器与web服务器之间安全交换信息的协议
SSL协议的三个特性:
(1)保密:在握手协议中定义了会话秘钥后,所有的消息都被加密;
(2)鉴别:可选的客户端认证,和强制的服务器端认证;
(3)完整性:传送的消息包括消息完整性检查(使用MAC)
HTTPS基于SSL的HTTP协议
https(全称:Hyper Text Transfer Protocol over Secure Socket Layer)是以安全为目标的HTTP通道,简单讲是HTTP的安全版;即HTTP下加入SSL层
简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。

HTTPS和HTTP的区别主要如下:
a.https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
b.http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
c.http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
d.http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。 HTTPS交互过程: 客户端请求建立SSL连接,并将自己支持的一套加密规则发送给网站。 网站从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息 获得网站证书之后浏览器要做以下工作:
e.验证证书的合法性
f.如果证书受信任,浏览器会生成一串随机数的密码,并用证书中提供的公钥加密。
g.使用约定好的HASH计算握手消息,
h.使用生成的随机数对消息进行加密,最后将之前生成的所有信息发送给网站。 网站接收浏览器发来的数据之后要做以下的操作:
i.使用自己的私钥将信息解密取出密码
j.使用密码解密浏览器发来的握手消息,并验证HASH是否与浏览器发来的一致。
k.使用密码加密一段握手消息,发送给浏览器 浏览器解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手结束。 使用随机密码和对称加密算法对传输的数据加密,传输。
相关标签: HTTP协议