zoukankan      html  css  js  c++  java
  • Http协议简介

    一、何为HTTP:
        HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。
        上述是对HTTP协议的工作流程做了概述,但是在了解HTTP工作原理之前需要对两个点有所了解:TCP/IP工作原理、DNS协议原理。笔者转载一篇有关这两点的基础知识文章
    在阅读完这篇文章后,接着学习有关HTTP工作原理:
     
    二、HTTP——URL
    "hXXp://www.baidu.com:8080/docs/index.asp?PID=927&page=6#name"
    这是一段完整的URL连接,从上面可以看出一个完整URL包括以下几部分组成:
    1.协议部分:"http:" 这表示网页使用Http协议,当使用FTP协议传输时候则使用"ftp:" 后面的//为分隔符
    2.域名部分:www.baidu.com为域名 也可以使用对应IP的作为域名
    3.端口部分:域名后面则为端口 其中的冒号为分隔符,如果不带端口则采用默认端口
    4.虚拟目录部分:从第一个/ 到最后一个/ 为虚拟目录部分,上述URL中 /docs/为虚拟目录
    5.文件名部分:从域名最后一个/到?为止,是文件名部分,如果没有?则是从/到#为止,如果都没有?#那就是最后一个/到最后部分为文件名部分.这里的文件名部分为index.asp
    6.锚部分:从#开始到最后是锚部分,其中锚部分为name
    7.参数部分:从?到#之间的的部分为参数部分这里的参数为PID=927&page=6
     
    三、HTTP——请求消息Request
    客户端向服务器发送一个HTTP请求时候,如下
    1.GET方式
     
    GET /562f25980001b1b106000338.jpg HTTP/1.1
    Host img.mukewang.com
    User-Agent Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36
    Accept image/webp,image/*,*/*;q=0.8
    Referer http://www.imooc.com/
    Accept-Encoding gzip, deflate, sdch
    Accept-Language zh-CN,zh;q=0.8
     
    其中包括四部分:
    第一部分为请求行,说明请求的类型以及要访问的资源、http版本:
    GET /562f25980001b1b106000338.jpg HTTP/1.1
     
    第二部分为请求头部,第一行请求行之后的部分,用来说明服务器所使用的附加信息
     
     
    第三部分为空行 有空行意味着需要将第三部分和第四部分作为分割
     
    第四部分 请求数据:可以添加任意其他数据  上例中没有此数据
     
    2.POST方式
     
    POST / HTTP1.1
    Host:www.wrox.com
    User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
    Content-Type:application/x-www-form-urlencoded
    Content-Length:40
    Connection: Keep-Alive
    (空行,必须)
    name=Professional%20Ajax&publisher=Wiley
     
    与GET方式一致POST也是分为4部分:
    第一部分:请求行:说明POST请求,以及HTTP1.1版本
    第二部分:请求头:Host到Connection之间的部分。
    第三部分:空行
    第四部分:请求数据
     
    四、HTTP——响应消息Response
     
    HTTP/1.1 200 OK
    Date: Fri, 22 May 2009 06:07:21 GMT
    Content-Type: text/html; charset=UTF-8
    (空行,必须)
    <html>
    <head></head>
    <body>
    <!--body goes here-->
    </body>
    </html>
     
    HTTP的响应也分为四部分:
    1.状态行:HTTP为版本1.1 状态码200 状态消息为OK
    2.消息:Date与Content-Ytpe(说明MIME类型为HTML,编码格式utf-8)
    3.空行:必须
    4.响应正文:空行后面部分为响应正文
     
    五,总结工作流程
    HTTP 请求/响应的工作流程:
    1.客户端发送HTTP请求
        客户端通过TCP套接字,向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。
    2.服务器接收请求并返回HTTP响应
        Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。
    3.释放连接TCP连接
        若connection模式为close、则服务器主动关闭TCP连接。客户端被动关闭连接、释放TCP连接。若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;
    4.客户端浏览器解析HTML内容
        客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。
     
     
  • 相关阅读:
    vue使用axios调用api接口
    vue引用echarts
    C# 倒计时,显示天,时,分,秒。时间可以是从数据库捞出来
    DataGridView 控件操作大全 (内容居中显示,右键绑定菜单)
    Oracle使用row_number()函数查询时增加序号列
    Oracle 相关操作SQL
    oracle rac切换到单实例DG后OGG的处理
    oracle dg库因为standby_file_management参数导致应用停止
    oracle rac与单实例DG切换
    oracle rac搭建单实例DG步骤(阅读全篇后再做)
  • 原文地址:https://www.cnblogs.com/Tempt/p/11824976.html
Copyright © 2011-2022 走看看