zoukankan      html  css  js  c++  java
  • HTTP

    1. http协议简介

    超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。

    HTTP的发展是由蒂姆·伯纳斯-李于1989年在欧洲核子研究组织(CERN)所发起。HTTP的标准制定由万维网协会(World Wide Web Consortium,W3C)和互联网工程任务组(Internet Engineering Task Force,IETF)进行协调,最终发布了一系列的RFC,其中最著名的是1999年6月公布的 RFC 2616,定义了HTTP协议中现今广泛使用的一个版本——HTTP 1.1。

    2014年12月,互联网工程任务组(IETF)的Hypertext Transfer Protocol Bis(httpbis)工作小组将HTTP/2标准提议递交至IESG进行讨论,于2015年2月17日被批准。 HTTP/2标准于2015年5月以RFC 7540正式发表,取代HTTP 1.1成为HTTP的实现标准。

    http是:

     超文本传输协议(应用层的,基于tcpip协议的)
     
     特点:无状态,无连接(短连接)
     
     请求消息格式:请求行请求头部空行请求数据
      请求头之间的分割是
      请求头和请求体之间的分割是
      请求行:GET 路径 HTTP/1.1
     
     响应消息格式:响应行响应头部空行响应数据
      响应头之间的分割是
      响应头和请求体之间的分割是
      响应行: HTTP/1.1 状态码 状态描述
     

    常见的请求头都有哪些?

     user-agent:用什么浏览器访问的
     
     content-type:请求体的数据格式是什么?(服务端按照请求格式进行解析)

    请求方法

     请求方法:getpostputdeleteheadoptionstraceconnect
     
     get请求和post的请求的区别
      get,数据放在url上,有长度限制,一般用于获取数据
      post请求,数据放在请求数据部分,没有长度限制,一般用于提交数据
     

    状态码

     状态码:
      1xx请求被接受但是还在处理当中
      2xx请求成功
      3xx重定向(301永久重定向和302临时重定向)
      4xx客户端错误(请求错误)
      5xx服务器错误

     

     

    2. http协议概述

    基于HTTP协议搭建的服务称为web服务

    默认HTTP协议对应的端口号为80

    更加安全的一种类似HTTP的协议称为HTTPS协议,默认端口为443

    实现通过HTTP协议能够看到页面信息,需要编写相应网站代码文件,网站代码文件称为html文件

    3. http工作原理

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

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

    1. 客户端连接到Web服务器 一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。

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

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

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

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

     

    4. 用户访问网站的过程

    1.利用DNS协议进行域名解析

    2.建立tcp协议三次握手过程

    3.客户端发出访问网站相应页面请求(发出http协议请求报文)

    4.系统架构部署情况

    CDN缓存加速服务器

    服务端发出响应访问页面的请求信息(发出http协议响应报文)

    5.断开tcp协议四次挥手过程

    6.浏览器将html文本显示

     

    5. http请求方法

    HTTP/1.1协议中共定义了八种方法(也叫“动作”)来以不同方式操作指定的资源:

     

    GET

    向指定的资源发出“显示”请求。使用GET方法应该只用在读取数据,而不应当被用于产生“副作用”的操作中,例如在Web Application中。其中一个原因是GET可能会被网络蜘蛛等随意访问。

    HEAD

    与GET方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回资源的本文部分。它的好处在于,使用这个方法可以在不必传输全部内容的情况下,就可以获取其中“关于该资源的信息”(元信息或称元数据)。

    POST

    向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)。数据被包含在请求本文中。这个请求可能会创建新的资源或修改现有资源,或二者皆有。

    PUT

    向指定资源位置上传其最新内容。

    DELETE

    请求服务器删除Request-URI所标识的资源。

    TRACE

    回显服务器收到的请求,主要用于测试或诊断。

    OPTIONS

    这个方法可使服务器传回该资源所支持的所有HTTP请求方法。用'*'来代替资源名称,向Web服务器发送OPTIONS请求,可以测试服务器功能是否正常运作。

    CONNECT

    HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。通常用于SSL加密服务器的链接(经由非加密的HTTP代理服务器)。

    注意事项:

    1. 方法名称是区分大小写的。当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405(Method Not Allowed),当服务器不认识或者不支持对应的请求方法的时候,应当返回状态码501(Not Implemented)。

    2. HTTP服务器至少应该实现GET和HEAD方法,其他方法都是可选的。当然,所有的方法支持的实现都应当匹配下述的方法各自的语义定义。此外,除了上述方法,特定的HTTP服务器还能够扩展自定义的方法。例如PATCH(由 RFC 5789 指定的方法)用于将局部修改应用到资源

     

    6. 请求报文结构

    ①. 请求的方法(get方法没有请求主体内容 post方法会有请求主体信息)

    ②. 请求的数据信息(默认请求index.html首页文件)

    ③. 请求http协议版本

    tcp协议分为长连接(http1.1)和短连接(http1.0)

     

    查看请求报文与响应报文详细结构信息方法:(2种方法)

    curl -v www.baidu.com --- 利用curl命令进行网站访问

    -v --- 详细显示请求报文结构和响应报文结构信息

    wget --debug www.baidu.com

     

    7. HTTP协议资源类型和名词概念介绍

    1.媒体资源类型

    对于web服务可以处理的用户请求资源信息(请求html xml我都可以处理)

    2.url

    全称为Uniform Resource Location,中文翻译为统一资源定位符,也被称为网页地址(网址)

    3.uri

    URI,全称为Uniform Resource Identifier,中文翻译为统一资源标识符

     

    8. 静态网页资源

    纯粹HTML格式的网页(可以包含图片、视频JS(前端功能实现)、CSS(样式)等)通常被称为“静态网页”

    静态资源特点

    1. 纯文本类程序或文件,如.html、.htm、.xml、.shtml、.js、.css等;

    图片类文件或数据文档,如.jpg、.gif、.png、.bmp、.txt、.doc、.ppt等;

    视频类流媒体文件,如.mp4、.swf、.avi、.wmv、.flv等。

    1. 每个网页的内容都是保存在网站服务器文件系统上的,

    也就是说,静态网页是实实在在保存在服务器上的文件实体

    1. 网页内容是固定不变的,因此,容易被搜索引擎收录 (优点)

    2. 因为网页没有数据库的支持,所以在网站制作和维护方面的工作量较大,(缺点)

    当网站信息量很大时,完全依靠静态网页比较困难

    1. 网页的交互性较差,在程序的功能实现方面有较大的限制 (缺点)

    2. 网页程序在用户浏览器端解析

    当客户端向服务器请求数据时,服务器会直接从磁盘文件系统上返回数据(不做任何解析) (优点)

     

    1.6 动态网页资源

    所谓的动态网页是与静态网页相对而言的,

    也就是说,动态网页的URL后缀不是.html、.htm、.xml、.shtml、.js、.css等静态网页的常见扩展名形式,

    而是.asp、.aspx、.php、.js、.do、.cgi等形式的

     

    动态资源特点:

    1. 网页扩展名后缀常见为:.asp、.aspx、.php、.js、.do、.cgi等

    动态资源网页中会出现? &等特殊符号信息

    1. 网页一般以数据库技术为基础,大大降低了网站维护的工作量。

    2. 采用动态网页技术的网站可以实现更多的功能,

    如用户注册、用户登录、在线调查、投票、用户管理、订单处理、发博文等

    1. 动态网页并不是独立存在于服务器上的网页文件

    2. 动态网页资源不便于被搜索引擎收录

    3. 网页程序在服务架构端进行解析

     

    伪静态网页

    取长补短(伪静态资源实质是动态资源)

     

  • 相关阅读:
    win10 安装anaconda+tensorflow
    CNN 理论
    mac 调出任何来源方法
    git忽略文件权限检查
    ios plist获取权限
    Vue-从入门到第三次世界大战_1
    libc++abi.dylib: terminating with uncaught exception of type NSException
    unity3d导出xcode项目使用afnetworking 3框架导致_kUTTagClassMIMEType 问题解决方案
    ios cannot use "@throw" with objective-c exceptions disabled 问题解决方案
    关于iOS APP转让
  • 原文地址:https://www.cnblogs.com/zdqc/p/9435749.html
Copyright © 2011-2022 走看看