HTTP协议简析

作者: 起个名忒难 | 来源:发表于2016-12-05 01:02 被阅读94次

    引言

    HTTP是一个属于应用层的面向兑现的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它与1990年提出。目前使用的版本是HTTP/1.1版本。

    HTTP协议

    协议是指两台计算机之间进行通信必须共同遵守的规定或者规则。超文本传输协议是一种通信协议,它允许将超文本标记语言文档从web服务器传送到客户端的浏览器。

    特点

    1. 支持客户端/服务器模式(C/S)。
    2. 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
    3. 灵活:HTTP允许传输任意类型的数据对象,正在传输的类型由Content-Type加以标记。
    4. 无连接:无连接的含义是每次连接只能处理一个请求。服务器处理完客户的请求后,并受到客户的应答,即断开连接。
    5. 无状态:HTTP协议是无状态的。无状态是指协议对于事务处理没有记忆能力。本次的请求和上一次请求并没有关系,对于服务器来说,并不知道两次请求来自同一个客户端。

    WEB浏览器、服务器、代理服务器

    当我们输入网址之后,就能看到网页,原理是怎样的呢,简单的解析一下:

    1. 客户端与服务端通过http协议建立连接。
    2. 连接建立之后,发送request请求,请求格式为:URL,协议的版本号,客户机信息等内容。
    3. 服务器受到请求之后,作为响应,返回客户端的请求内容。
    4. 客户端浏览器收到服务的信息后,解析内容,显示在浏览器界面上。

    请求过程如下面图片所示:

    请求.png

    我们的请求又可能不是通过客户端直接和服务端连接的,中间可能会加一个代理的服务器,客户端先和代理服务器连接,之后在和目标服务器连接,这样可以隐藏客户端的ip,这种方式在爬虫中比较常用,它可以提高访问的速度,突破封锁的限制,隐藏客户端的信息。请求过程如下图所示:

    1.png

    HTTP代理服务器
    简单说,http代理服务器就是网络信息的中转站,代理服务器具有缓存的功能,有很大的存储空间。对于客户端来说,代理服务器相当于服务端,对于都服务端来说,代理服务器就是要一个客户端。

    HTTP URL组成解析

    URL描述的是网络上的资源,任何信息都可以通过URL找到它。http(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式,HTTP1.1版本中给出一种持续连接的机制,绝大多数的Web开发,都是构建在HTTP协议之上的Web应用。

    格式如下:

    http://www.test.com/search/yuluo?id=1234&name=zhangsan

    1. scheme 指定底层使用的协议(http ,https ,ftp)
    2. host 服务器的ip地址,域名 ,上例中的 www.test.con
    3. port 端口号 一般默认是80 可以不写 ,若是其他端口,如8080 必须要书写.
    4. path 访问的资源路径 /search/yuluo
    5. query-string 发送给http的数据 id=1234&name=zhangsan

    HTTP消息结构

    • request-line 请求行:请求的种类,请求的路径,http协议版本
    • http header :http 头部信息
    • body : 发送给服务器的query信息

    当时用Get方法的时候,body是空的

    1. Get:
    2. Host:
    3. Accept : 浏览器可以接受的媒体类型 / 任意类型
    4. Accept-Encoding: 申明自己接收的编码方法
    5. Accept-Language: 申明自己接收的语言
    6. Cache-Control:Response-Request遵循的缓存机制
    7. Cookie: 将cookie的值发送给服务器
    8. Referer:
    9. User-Agent:客户端使用的系统和浏览器的版本

    Post 请求

    1. Post:
    2. Host:
    3. Accept:
    4. Accept-Encoding:
    5. Accept-Language:
    6. Cache-Control:
    7. Cookie:
    8. Referer:
    9. User-Agent:
    10. body :

    Get和Post请求的区别

    Get 一般用于获取/查询资源信息,请求参数携带在url中
    Post 一般用于更新资源信息 ,url中无参数信息

    请求方法

    • GET 请求获取Request-URI所标识的资源
    • POST 在Request-URI所标识的资源后附加新的数据
    • HEAD 请求获取由Request-URI所标识的资源的响应消息报头
    • PUT 请求服务器存储一个资源,并用Request-URI作为其标识
    • DELETE 请求服务器删除Request-URI所标识的资源
    • TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断
    • CONNECT 保留将来使用
    • OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求

    常用状态码

    • 200 OK : 表明响应成功,所请求的资源发给浏览器
    • 302 found : 重定向,新的请求放在了Location中,浏览器从Location中提取连接欸,重新请求。
    • 400 Bad Request : 客户端的请求,不能被服务器所理解
    • 401 Unauthorized : 请求未经授权
    • 403 Forbidden : 服务器收到请求,拒绝提供服务
    • 404 Not Found : 找不到请求资源
    • 500 Internal Server Error : 服务器错误
    • 503 Server Unavailable 服务器当前不能处理请求

    响应消息

    客户端向服务器发送一个请求,服务器以一个状态行作为响应,响应的内容包括:消息协议的版本、成功或者错误的编码、实体元信息以及必要的实体内容。包括:

    • 状态行
    • 消息报头
    • 响应正文

    响应报头

    响应报头允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和对Request-URI所标识的资源进行下一步访问的信息。

    常用的响应报头

    • Location
      Location响应报头域用于重定向接受者到一个新的位置。Location响应报头域常用在更换域名的时候。
    • Server
      Server响应报头域包含了服务器用来处理请求的软件信息。与User-Agent请求报头域是相对应的。

    HTTP无状态问题

    1. 通过Cookie 保存状态信息 。每次请求的时候携带cookie的信息,服务端就可以知道你来自同一个浏览器。
    2. 通过session 保存状态信息。session是一种服务器端的机制。

    cookie和session的区别

    1. cookie状态保存在客户端,session状态保存在服务器端
    2. cookie是服务器端在客户端机上存储的一小段文本,并随每次请求一起发送到服务端
    3. session是针对每一个用户,变量值保存在服务器中
    4. 从安全角度讲,session的安全性更好一些


    少年听雨歌楼上,红烛昏罗帐。  
    壮年听雨客舟中,江阔云低,断雁叫西风。
    感谢支持!
                                            ---起个名忒难
    

    相关文章

      网友评论

        本文标题:HTTP协议简析

        本文链接:https://www.haomeiwen.com/subject/ypthmttx.html