HTTP协议介绍
-
协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。
- HTTP协议,即超文本传输协议(Hypertext transfer protocol)。是一种详细规定了浏览器和万维网(WWW = World Wide Web)服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。
- HTTP协议是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。
- HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。
- 在Internet中所有的传输都是通过TCP/IP进行的。HTTP协议作为TCP/IP模型中应用层的协议也不例外。HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS
C/S体系结构
C/S是Client/Server的缩写,即客户端/服务器结构,.在这种结构中,服务器通常采用高性能的PC机或工作站,并采用大型数据库系统(如Oracle或SQL Srever),客户端中则需要安装专用的客户端软件.这种结构可以充分利用两端硬件环境的优势,将任务合理分配到客户端和服务器,从而降低了系统的通信开销.在2000年以前,C/S结构占据网络程序开发领域的主流
B/S体系结构
B/S是Browser/Server的缩写,即浏览器/服务器结构,在这种结构中,客户端不需要开发任何用户界面,而同一采用如IE,Firefox,Chrome等浏览器,通过web浏览器向Web服务器发送请求,由Web服务器进行处理,并将处理结构逐级传回客服端.这种结构利用不断成熟和普及的了浏览器技术实现原本需要复杂专用软件才能实现的强大功能,从而节约了开发成本,是一种全新的软件体系结构.这种体系结构以及称为当今应用软件的首选体系结构
HTTP协议请求
HTTP协议(Hypertext Transfer Protocol,超文本传输协议),是一个客户端请求和回应的标准协议,这个协议详细规定了浏览器和万维网服务器之间互相通信的规则.用户输入地址和端口号之后就可以从服务器上取得所需要的网页信息.
通信规则规定了客服端发送给服务器的内容格式,也规定了服务器发送给客户端的内容 格式.客户端发送给服务器的格式叫"请求协议":服务器发送给客户端的格式叫"响应协议".
浏览器中的书写格式
在B/S体系架构中,客户端都同一成了浏览器,要请求服务器端资源需要头弄个浏览器进行,此时由刘浏览器将我们给出的请求解析为满足HTTP协议的格式并发出.则我们发出的请求格式需要按照浏览器规定的格式来书写,在浏览器中书写格式如下:HTTP:\ \ 127.0.0.1:8080 \myweb\servlet1 ? name=test
当浏览器获取到信息以后,按照特定格式解析并发送即可.接受到服务器端给出的响应时,也按照HTTP协议进行解析获取到各个数据,最后按照特定格式展现给用户
HTTP协议的主要特点
-
支持客户/服务器模式
- 简单快速:客户想服务器请求福时,只需传送请求方式和路径.请求方法常用的有GET.POST.每种方法规定了客户与服务器联系的类型不同,由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快
- 灵活:HTTP允许传输任意类型的数据对象.正在传输的类型由Content-Type 加以标记
- HTTP1.1 支持持续连接.通过这种连接,就有可能在建立衣柜TCP连接后,发送请求并得到回应,然后发送更多的请求并得到更多的回应,通过吧建立和释放TCP连接的开销分摊到多个请求上,则对于每个请求而言,由于TCP而造成的相对开销被大大地降低了,而且,还可以发送流水线请求,也就是说在发送请求1之后的回应到来之前就可以发送请求 2.也可以认为,一次连接发送多个请求,有客户机确认是否关闭连接,而服务器会认为这些请求分别来自不同的客户端.
- 无状态:HTTP协议是无状态协议,无状态是指协议对于事物处理没有记忆能力,缺少状态意味着如果后续处理需要钱吗的信息,则它必须重传,这样可能导致每次连接传送的数据量增大.另一方面,在服务器不需要先前信息时它的应答的较快
HTTP之URL
-
http(超文本传输协议)是一个基于请求与响应模式的,应用层的协议,常基于TCP的连接方法,绝大多数的Web开发,都是构建在HTTP协议智商的Web应用
-
HTTP URL(URL是一种特殊类型的URL,包含了用于查找某个资源的足够的信息)的格式.
http://host[":"port][abs_path]
-
http表示要通过http协议来定位网络资源:host表示合法的internet主机域名或者IP地址:port指定一个端口号,为空贼使用缺少端口 80:ads_path指定请求资源的URL:如果URL中没有给出abs_path,那么当它作为请求URL时,必须必"/"的形式给出,通常这个工作浏览器自动帮我们完成.
-
HTTP请求
1. http请求由三部分组成,分别是:请求行,请求头,请求正文 2. 通过chrome浏览器,F12->Network查看 3. get(没有请求体) 4. post有请求体
-
格式
- 请求行
- 请求头1
- 请求头2
- …
- 请求空行
- 请求体
-
请求行以一个方法符号开头,以空格分开,后面跟着请求的URL和协议的版本,格式如下:Method Request-URL HTTP-Version CRLF 其中Method 表示请求方式:Request-URL 是一个统一资源标识符:HTTP-Version表示请求的HTTP协议版本:CRLF 表示回车和换行
HTTP响应
-
在接收和解释请求消息后,服务器返回一个HTTP响应消息.HTTP响应也是由三个部分组成,分别是:状态行,消息报头,响应正文
- 格式
- 状态行
- 响应头1
- 响应头2
- …
- 响应空行
- 响应体
- 格式
消息头
HTTP消息由客户端到服务器的请求和服务器到客户端的响应组成,请求消息和响应消息都是由开始行(对于请求消息,开始行就是请求行,对于响应消息,开始行就是状态行),消息报头(可选),空行(只有CRLF的行),消息正文(可选)组成
每一个报头域都是由名字+": "+空格+值组成的,消息报头域的名字是大小写无关的.
请求头
请求报头允许客户端想服务器端传递请求的附加信息以及客户端自身的信息
Referer:该请求头指名请求从哪里来
如果是地址栏中输入地址访问的都没有该请求头,地址栏输入地址,通过请求可以看到,此时多了一个Referer的请求头,并且后面的值为该请求从哪里发出,百度竞价,只能从百度来的才有效果,否则不算;通常用来做统计工作,防盗链
响应头
响应报头允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和对Request-URL所表示的资源进行下一步访问的信息
Location:Loaction响应白头域用于重定向接受者到一个新的位置.Location响应报头域,常用在更换域名的时候
response.sendRedirect(“http://www.shsxt.com”);
Refresh:自动跳转(单位是秒),可以在页面通过meta标签实现,也可以在后台实现
<meta http-equiv=”refresh” content=”3;url=http://www.shsxt.com”>