HTTP

作者: BubbleM | 来源:发表于2017-07-31 11:02 被阅读26次

    HTTP概念

    HTTP(HyperText Transfer Protocol)超文本传输协议,所有的WWW文件都必须遵守这个标准.是一个客户端和服务器端请求和应答的标准(TCP).设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法.现在HTTP的作用已不局限于HTML的传输,图片文件,查询结果等数据也是可以传输的。
    HTTP是基于TCP/IP通信协议来传递数据的.

    HTTP工作原理

    HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求,服务器作出响应.

    HTTP工作原理
    HTTP使用TCP而不是UDP的原因在于打开一个网页必须传送很多数据,而TCP协议提供传输控制,按顺序组织数据,和错误纠正。

    页面从输入url到页面加载显示完成发生了什么

    1. 当发送一个URL请求时,不管这个URL是Web页面的URL还是Web页面上每个资源的URL,浏览器都会开启一个线程来处理这个请求,同时在远程DNS服务器启动一个DNS查询。这能使浏览器获得请求对应的IP地址。
    2. 浏览器与远程Web服务器通过TCP三次握手协商来建立一个TCP/IP连接。该握手包括一个同步报文,一个同步-应答报文和一个应答报文,这三个报文在浏览器和服务器之间传递。该握手首先由客户端尝试建立起通信,而后服务器应答并接受客户端的请求,最后由客户端发出该请求已经被接受的报文。
    3. 一旦TCP/IP连接建立,浏览器会通过该连接向远程服务器发送HTTP的请求。GET仅请求资源,POST会包含一个Body附带用户数据.远程服务器找到资源并使用HTTP响应返回该资源,值为200的HTTP响应状态表示一个正确的响应。
    4. 处理结束回馈报头,此处如果浏览器访问过,缓存上有对应资源,会与服务器最后修改事件对比,一致则返回304;浏览器开始下载 html 文档(响应报头,状态码200),同时使用缓存;
    5. 此时,Web服务器提供资源服务,客户端开始下载资源。请求返回后,便进入了我们关注的前端模块。简单来说,浏览器会解析HTML生成DOM Tree,其次会根据CSS生成CSS Rule Tree,而JavaScript又根据DOM API操作DOM.

    客户端请求

    客户端请求包括三部分:
    第一部分叫Request line(请求行), 第二部分叫http header,第三部分是body。
    (1)请求行:包括http请求的种类,请求资源的路径,http协议版本;
    (2)http header:http头部信息;
    (3)body:发送给服务器的query信息 当使用的是"GET" 方法的时候,body是为空的(GET只能读取服务器上的信息,post能写入)


    客户端请求三部分 浏览器发送请求
    • scheme:指定底层使用的协议(例如:http, https, ftp)
    • host:HTTP服务器的IP地址或者域名
    • port#:HTTP服务器的默认端口是80,这种情况下端口号可以省略。如果使用了别的端口,必须指明.
    • path:访问资源的路径
    • Accept:我能接受这些类型的文件
    • User-Agent:我使用的是何种操作系统上的哪个类型那个版本的浏览器
    • Accept-Encoding:承认接受何种方式的压缩文件
    • Cookie:发送存储在本机的cookies信息给服务器

    示例URL:
    http://www.mywebsite.com/sj/test;id=8079?name=sviergn&x=true#stuff
    Schema: http
    host: www.mywebsite.com
    path: /sj/test
    URL params: id=8079
    Query String: name=sviergn&x=true
    Anchor: stuff

    服务端响应

    服务端响应也分为三部分,第一部分叫request line, 第二部分叫request header,第三部分是body。
    (1)request line:协议版本、状态码、message
    (2)request header:request头信息
    (3)body:返回的请求资源主体


    服务端响应结构 服务器返回响应信息
    • status:响应的状态码
    • content-type:响应的内容
      请注意:浏览器就是依靠Content-Type来判断响应的内容是网页还是图片,是视频还是音乐。浏览器并不靠URL来判断响应的内容,所以,即使URL是这样的,如:http://example.com/abc.jpg,它也不一定就是图片。

    HTTP的特点

    • 无连接
      无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间
    • 媒体独立
      这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型
    • 无状态
      指的是协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

    无状态也就是说在同一个连接中,两个成功执行的请求之间是没有关系的。这就带来了一个问题,用户没办法在一个网站进行连续的交互,比如在一个电商网站里,用户把某个商品加入了购物车中,换了一个页面后再次添加商品,两次添加商品的请求没有联系,浏览器无法知道最终用户都选择了哪些商品。两种用于保持HTTP连接状态的技术就应运而生了,一个是Cookie,而另一个则是Session。

    其他内容

    HTTP状态码
    HTTP请求方法

    相关文章

      网友评论

        本文标题:HTTP

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