http协议

HTTP

Hyper Text Transfer Protocol(超文本传输协议),用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议

HTTP协议主要特点

简单快速、灵活、无连接、无状态

1、简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

2、灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

3、无连接限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间

4、无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快
5、支持B/S及C/S模式

url各部分组成

HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接
在这里插入图片描述

http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name

虚拟目录部分:从域名后的第一个“/”开始到最后一个“/”为止。虚拟目录也不是一个URL必须的部分。本例中的虚拟目录是“/news/”

文件名部分:从域名后的最后一个“/”开始到“?”为止,是文件名部分,如果没有“?”,则是从域名后的最后一个“/”开始到“#”为止,是文件部分,如果没有“?”和“#”,那么从域名后的最后一个“/”开始到结束,都是文件名部分。本例中的文件名是“index.asp”。文件名部分也不是一个URL必须的部分,如果省略该部分,则使用默认的文件名

锚部分:从“#”开始到最后,都是锚部分。本例中的锚部分是“name”。锚部分也不是一个URL必须的部分

参数部分:从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分。本例中的参数部分为“boardID=5&ID=24618&page=1”。参数可以允许有多个参数,参数与参数之间用“&”作为分隔符。

HTTP报文的组成部分

请求报文:请求行、请求头、空行、请求体
响应报文:状态行、响应头、空行、响应体

请求行:
request URL: 请求地址字符串
request Method: 本次请求的类型
status Code: 响应状态码

HTTP方法:

GET——获取资源
POST——传输资源
PUT——更新资源
DELETE——删除资源
HEAD——获得报文首部

HTTP请求/响应的步骤:

1、客户端连接到web服务器;
2、发送HTTP请求;
3、服务器接受请求并返回HTTP响应;
4、释放连接TCP连接;
5、客户端浏览器解析HTML内容。

HTTP协议POST与GET区别:
  • GET在浏览器回退时是无害的,而POST会再次提交请求;
  • GET产生的URL地址可以被收藏,而POST不可以;
  • GET请求会被浏览器主动缓存,而POST不会,除非手动设置;
  • GET请求只能进行url编码,而POST支持多种编码方式;
  • GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留;
  • GET请求在url中传送的参数是有长度限制的,而POST没有限制;
  • 对参数的数据类型,GET只接受ASCII字符,而POST没有限制;
  • GET比POST更不安全,因为参数直接暴露在url上,所以不能用来传递敏感信息;
  • GET参数通过url传递,POST放在Request body中。
HTTP状态码

1xx:指示信息–表示请求已接收,继续处理
2xx:成功–表示请求已被成功接收、理解、接受
3xx:重定向–要完成请求必须进行更进一步的操作
4xx:客户端错误–请求有语法错误或请求无法实现
5xx:服务器端错误–服务器未能实现合法的请求

*常见状态码:

200 - 请求成功
301 - 请求的资源已被永久的移动到新URI
404 - 请求的资源(网页等)不存在
500 - 内部服务器错误

400 Bad Request——客户端请求有语法错误,不能被服务器所理解
401 Unauthorized——请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
403 Forbidden——服务器收到请求,但是拒绝提供服务
404 Not Found ——请求资源不存在,eg:输入了错误的URL
500 Internal Server Error——服务器发生不可预期的错误
503 Server Unavailable——服务器当前不能处理客户端的请求,一段时间后可能恢复正常

更多状态码见 状态码大全

持久连接

HTTP协议采用“请求-应答”模式:

  • 当使用普通模式,即非keep-Alive模式时,每个请求/应答客户和服务器都要新建一个连接,完成之后立即断开连接(HTTP协议为无连接的协议);
  • 当使用keep-Alive模式(又称持久连接、连接重用)时,keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,keep-Alive功能避免了建立或重新建立连接。

注意:http1.0不支持持久连接

管线化(学习整理,待理解)
  • 管线化机制通过持久连接完成,仅HTTP1.1支持此技术;
  • 只有GET和HEAD请求可以进行管线化,而POST则有所限制;
  • 初次创建连接时不应启动管线机制,因为对方(服务器)不一定支持HTTP/1.1版本的协议;
  • 管线化不会影响相应到来的顺序,如上面的例子所示,响应返回的顺序并未改变;
  • HTTP/1.1要求服务器端支持管线化,但并不要求服务器端也对响应进行管线化处理,只是要求对于管线化的请求不失败即可;
  • 由于上面提到的服务器端问题,开启管线化很可能并不会带来大幅度的性能提升,而且很多服务器端和代理程序对管线化的支持并不好,因此现代浏览器如chrome和Firefox默认并未开启管线化支持。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值