zoukankan      html  css  js  c++  java
  • (一)http协议介绍

    HTTP协议详解

    (一) 介绍

    • HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。
    • HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。
    • HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。HTTP默认端口号为80,但是你也可以改为8080或者其他端口。
    • 三点注意事项:

     

    (二) 工作原理

    1. HTTP是无连接:

    无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。(一个request只能有一个response,而且这个response也是被动的,不能主动发起)

    2.HTTP是媒体独立的:

    意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。

    3.HTTP是无状态的:

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

     

    HTTP工作原理详解:

    HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。

    以下是 HTTP 请求/响应的步骤:

      1、客户端连接到Web服务器

      一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。例如,http://www.oakcms.cn。

      2、发送HTTP请求

      通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。

      3、服务器接受请求并返回HTTP响应

      Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。

      4、释放连接TCP连接

      若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;

      5、客户端浏览器解析HTML内容

      客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。

    例如:在浏览器地址栏键入URL,按下回车之后会经历以下流程:

    1、浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;

    2、解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接;

    3、浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器;

    4、服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器;

    5、释放 TCP连接;

    6、浏览器解析html文本并显示内容;

     

    (三) 特点

    1.支持客户/服务器模式(包括B/S和C/S)。

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

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

    4.无连接、无状态。

    5.明文传输内容,安全性比较差。

     

    (四) HTTP消息结构

    1.http消息结构

    • HTTP是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议。
    • 一个HTTP"客户端"是一个应用程序(Web浏览器或其他任何客户端),通过连接到服务器达到向服务器发送一个或多个HTTP的请求的目的。
    • 一个HTTP"服务器"同样也是一个应用程序(通常是一个Web服务,如Apache Web服务器或IIS服务器等),通过接收客户端的请求并向客户端发送HTTP响应数据。
    • HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。
    • 一旦建立连接后,数据消息就通过类似Internet邮件所使用的格式[RFC5322]和多用途Internet邮件扩展(MIME)[RFC2045]来传送。

    2.客户端请求

    • 请求消息:由请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。请求报文的一般格式:

       

        

      请求行:请求方法、请求地址、协议版本CRLF;如:/hello.txt为要访问的资源,其中CRLF表示回车和换行(除了作为结尾的CRLF外,不允许出现单独的CR或LF字符)。

      请求头部:HOST指出请求的目的地。User-Agent,服务器端和客户端脚本都能访问它,它是浏览器类型检测逻辑的重要基础.该信息由你的浏览器来定义,并且在每个请求中自动发送等等

    3.服务器响应消息

    • HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。

        

      状态行:协议的版本,响应状态代码,状态代码的文本描述

  • 相关阅读:
    sun.misc.BASE64Encoder找不到jar包的解决方法
    mybatis中的#和$的区别
    mysql , oracle 从记录中查询出 楼盘下只有 no 公司的 楼盘
    Windows+Git+TortoiseGit+COPSSH 安装 教程
    oracle job 定时执行 存储过程
    如何在PL/SQL中修改ORACLE的字段顺序
    oracle创建数据库连接dblink
    oracle数据库去掉重复记录;只保留一条数据
    Oracle中like查询下划线等特殊字符的处理
    START WITH CONNECT BY PRIOR子句实现递归查询
  • 原文地址:https://www.cnblogs.com/mind18/p/12712242.html
Copyright © 2011-2022 走看看