HTTP协议

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长连接与短连接简要过程

    短连接:

    建立连接一数据传输一关闭连接 … 建立连接一数据传输一关闭连接

    长连接:

    建立连接—数据传输…(保持连接)…数据传输—关闭连接

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值