1、了解HTTP协议
HTTP协议的概念
- 超文本传输协议(HTTP)是一种通信协议,他允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器
- HTTP是一种属于应用层的面向对象的协议,由于其简捷,快速的方式,适用于分布式超媒体信息系统
DNS的介绍
- 通常我们访问一个网址,使用的是主机名或者域名来进行访问的,相对于ip地址,域名更加容易让人记住,但是TCP/IP协议使用的是IP地址进行访问的,所有必须有一个机制或者服务把域名解析为IP地址,DNS就是来解决这个问题的。
HTTP事务处理过程
当客户端访问web站点时,首先会通过DNS服务器查询到域名的IP地址,然后浏览器根据ip地址生产HTTP请求,并通过TCP/IP协议发送给Web服务器。Web服务器接受到请求后会根据请求生产的响应内容,并通过TCP/IP协议返回给客户端
2、HTTP协议的特点
1.支持客户/服务器模式
客户/服务器模式工作的方式是由客户端向服务器发出请求,服务器端响应请求,并进行相应服务
2. 简单快速
1、客户向服务器请求服务时, 只需传送请求方法和路径
2、请求方法常用的有GET, PUT, POST, DELETE。每种方法规定了客户与服务器联系的类型不同
3、由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快
3.灵活
1、HTTP允许传输任意类型的数据对象
2、正在传输的类型由Content-Type加以标记
4.无连接
1、无连接的含义是限制每次连接只处理一个请求
2、服务器处理完客户的请求,并收到客户的应答后,即断开连接
3、采用这种方式可以节省传输时间
5.无状态
1、HTTP协议的无状态协议
2、无状态指的是客户端向服务器发送请求之后,服务器仅传回响应,并不对请求做任何的保留和记忆
3、无状态意味着如果后续处理需要前面的信息,则必须重传,这样可能导致每次传送的数据量增大
3、区分URI和URL
- URI像一个标识,可以分为URL和URN
- URN作用就像一个人的名字,URL就像一个人的地址
- URN确定了东西的身份,URL提供了找到它的方式
- URL是URI的一种,不是所有的URI都是URL
- URI和URL最大的差别的访问记住,有访问机制,比如Http协议、ftp协议的是URL
4、HTTP报文结构分析
1.请求报文结构
2.响应报文结构
3.HTTP报文头
HTTP的报文头大体可以分为四类,分别是:通用报文头、请求报文头、响应报文头、实体报文头
请求方的http报头结构:通用报头|请求报头|实体报头
响应方的http报头结构:通用报头|响应报头|实体报头
- 通用报文头
- 请求报文头
- 响应报文头
- 实体报文头
4.常见报文头字段
Accept
- 作用:浏览器可以接受的媒体类型
- Accept:text/html 代表浏览器可以接受服务器返回的类型为text/html,也就是我们说的html文档,如果无法返回,服务器应该返回一个406错误(Non Acceptable)
- Accept:
*/*
代表浏览器可以处理所有类型 - 如果想给显示的媒体类型设置优先级,则使用q=权重值表示;q的范围是0-9,且最大值为1,不指定权重时,默认权重q=1.0,当服务器提过多种内容时,将会首先返回权重值最高的媒体类型
Accept-Encoding
- 作用:浏览器声明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持声明压缩方法
Accept-Language
- 作用:浏览器声明自己接收的语言
Connection
- Connection: keep—alive 当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接
- Connection: close 代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭,当客户端再次发送Request,需要重新建立TCP连接
Host
- 作用:请求报头域主要作用于指定被请求资源的Internet主机和端口号,他通常从HTTP URL中提取出来的
User-Agent
- 作用:告诉HTTP服务器,客户端的基本信息,比如使用的操作系统和浏览器的名称和版本
Content-Type
- 作用:说明了报文体内对象的媒体类型
- 常见的类型
text/html :HTML格式
text/plain :纯文本格式
text/xml :XML格式
image/gif :gif图片格式
image/jpeg :jpg图片格式
image/png :png图片格式
application/xhtml+xml :XHTML格式
application/xml :XML数据格式
application/atom+xml :Atom XML聚合格式
application/json :JSON数据格式
application/pdf :pdf格式
application/msword :Word文档格式
application/octet-stream :二进制流数据(如常见的文件下载)
multipart/form-data : 需要在表单中进行文件上传时,就需要使用该格式
5、Http请求方法分析
1.GET
GET方法会将提交到参数显示在URL中,不安全
http://localhost/login.php?username=aa&password=1234
浏览器对于提交URL的长度也有所限制
2.POST
数据放在请求体中,没有直接放在请求头的URL中,较为安全,一般用于提交表单的数据,理论上URL的长度没有限制
3.PUT
从客户端向服务器传送的数据取代指定的内容
PUT方法与POST方法最大的不同是: PUT是幂等的,而POST不是幂等的
幂等表示取代同一个地方的内容,即更新数据,如更换头像
非幂等如论坛发表评论,不会取代之前已发的内容
4.HEAD
一般用来测试某个地址是否可以连通
类似于GET请求,只不过返回的响应中没有具体的内容,用于获取报头
5.DELETE
请求服务器删除指定的资源
6.OPTIONS
用来查询请求头的URL所指定的资源支持的请求方法
7.TRACE
回显服务器收到的请求,主要用于测试或诊断
8.CONNECT
开启一个客户端与所请求资源之间的双向沟通的通道,它可以用来创建隧道
6、HTTP响应状态码
类别 | 原因短语 | |
---|---|---|
1XX | 信息性状态码 | 接收的请求正在处理 |
2XX | 成功状态码 | 请求正常处理完毕 |
3XX | 重定向状态码 | 需要进行附加操作以完成请求 |
4XX | 客户端错误状态码 | 服务器无法处理请求 |
5XX | 服务器错误状态码 | 服务器处理请求出错 |
以2xx为开头的都表示成功响应
状态码 | 含义 |
---|---|
200 | 成功响应 |
204 | 请求处理成功,但是没有资源可以返回 |
206 | 对资源某一部分进行响应,由Content-Range 指定范围的实体内容。 |
以
3xx
为开头的都表示需要进行附加操作以完成请求
状态码 | 含义 |
---|---|
301 | 永久性重定向,该状态码表示请求的资源已经重新分配 URI,以后应该使用资源现有的 URI |
302 | 临时性重定向。该状态码表示请求的资源已被分配了新的 URI,希望用户(本次)能使用新的 URI 访问 |
303 | 该状态码表示由于请求对应的资源存在着另一个 URI,应使用 GET 方法定向获取请求的资源 |
304 | 该状态码表示客户端发送附带条件的请求时,服务器端允许请求访问资源,但未满足条件的情况。 |
307 | 临时重定向。该状态码与 302 Found 有着相同的含义 |
以
4xx
的响应结果表明客户端是发生错误的原因所在
状态码 | 含义 |
---|---|
400 | 该状态码表示请求报文中存在语法错误。当错误发生时,需修改请求的内容后再次发送请求。 |
401 | 该状态码表示发送的请求需要有通过 HTTP 认证(BASIC 认证、DIGEST 认证)的认证信息。 |
403 | 该状态码表明对请求资源的访问被服务器拒绝了。 |
404 | 该状态码表明服务器上无法找到请求的资源 |
以
5xx
为开头的响应标头都表示服务器本身发生错误
状态码 | 含义 |
---|---|
500 | 该状态码表明服务器端在执行请求时发生了错误。 |
503 | 该状态码表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。 |
7、HTTP的长连接与短链接
-
HTTP协议是基于请求/响应模式的,因此只要服务端给了响应,本次HTTP请求就结束了
-
HTTP的长连接和短链接本质上是TCP长连接和短链接
-
HTTP/1.0,默认使用的是短链接,也就是说浏览器和服务器没进行一次HTTP操作,就建立一次连接,结束就中断连接
-
HTTP/1.1起,默认使用长连接,用以保持连接特性
-
HTTP的长连接格式 Connection:keep-alive
-
HTTP长连接与短连接简要过程
短连接:
建立连接一数据传输一关闭连接 … 建立连接一数据传输一关闭连接
长连接:
建立连接—数据传输…(保持连接)…数据传输—关闭连接