zoukankan      html  css  js  c++  java
  • 【网络编程】HTTP简介&URL


    前言

    后面会把之前做的MQTT、TCP/IP网络编程基础笔记都发出来,分享给同学们参考,指正,因为主要是方便自己出门在外查看哈哈。有空就补上一些标有的demo(大部分都是基于linux的)。

    原文链接:李柱明博客:https://www.cnblogs.com/lizhuming/p/14992365.html

    1. http 简介

    1.1 概念

    HTTP协议是 Hyper Text Transfer Protocol(超文本传输协议)的缩写。
    用于从万维网(WWW:World Wide Web)服务器传输超文本到本地浏览器的传送协议。

    1.2 原理

    原理

    • HTTP是一个基于 TCP/IP通信协议 来传递数据(HTML 文件, 图片文件, 查询结果等)。
    • 是基于 客户端-服务器 模型运作的。
    • 是一个应用层协议

    通信过程

    • HTTP 客户端(如浏览器)通过 URL 向 HTTP 服务端(如web服务器)发送请求。
    • HTTP 服务端 接收到请求后,向客户端发送响应信息。

    web服务器

    • Apache服务器。
    • IIS服务器(Internet Information Services)。
    • etc

    1.3 特点

    HTTP协议的特点

    • 简单:客户端向服务器请求服务时,只需要传送请求方法资源路径即可获得资源。
    • 快捷:由于HTTP协议简单,所以HTTP服务器程序规模小,通信快。
    • 灵活:HTTP允许传输任意类型的数据对象,传输的类型由Content-Type加以标记。
    • 无连接:服务器每处理客户端的一个请求,响应并获得客户端的应答后,断开连接。(断开TCP连接)。
      • 注意:HTTP1.1 后便有了持久连接的方法。即是任意一端只要没有提出断开连接,则保持TCP连接
    • 无状态:HTTP协议对于事务处理没有记忆能力,即无法根据之前的状态进行本次的请求处理。如果后续处理需要前面的信息,它必须重传数据。
      • 解决:引入Cookie技术,让服务器知道用户上一次的操作,并且记录存储在客户端之中。

    2. URL 简介

    2.1 概念

    URLUniform Resource Locator 的缩写。统一资源定位器。

    URL 是一个网页地址:

    • 可以由字母组成,如 baidu.com
    • 也可以是物联网协议(IP)地址:180.76.76.76

    2.2 URL 通用格式

    一个URL的组成有多个不同的组件,一个URL的通用格式如下:
    <scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>

    说明

    组件 名称 描述
    scheme 方案 指定访问服务器获取资源时使用哪种协议,有HTTP、HTTPS、FTP、SMTP等协议。
    user 用户 某些访问资源时候需要指定用户名,才有权限获取资源。
    password 密码 用户名后面可能需要密码进行验证,用户名与密码直接使用“:”冒号分隔连接。
    host 主机 资源宿主服务器的主机名或者IP地址(点分十进制)。
    port 端口 资源宿主服务器正在监听的端口号。
    path 路径 服务器本地资源的路径。
    params 参数 某些方案会使用这个组件来输入参数,可以拥有多个参数,使用“;”符号 与路径分隔开。
    query 查询 某些方案会使用这个组件传递参数以激活应用程序,查询组件的内容没有通 用的格式,用 ? 字符与其他组件分隔开
    frag 片段 这个字段是在客户端内部使用,不会发送到服务器,通过“#”字符与其他组件分隔开 。

    注意

    • 以上组件不是全部都必须填上的,根据方案填写需要的组件即可。
    • 端口port:端口号,可以不用自己填写,比如HTTP默认使用80端口,HTTPS默认使用443 端口。端口不是一个URL必须的部分。

    2.3 网页地址 实例说明

    网页地址https://www.cnblogs.com/lizhuming/p/13834535.html

    • https:方案scheme。安全超文本传输协议。
    • www.cnblogs.com:主机host。博客园的域名。
    • lizhuming/p/13834535.html:路径path。博客园服务器上的路径。
      • 13834535.html:资源文件。html格式。
    • 端口省略,即是默认使用https的默认端口 443。

    在浏览器中按 F12 进入浏览器控制台,可以看到很多 URL。

    3. HTTP 消息结构

    3.1 客户端请求消息

    客户端请求消息由四部分组成:

    如图:

    头部信息参考:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers

    //请求报文
    <method> <request-URL> <version>
    <headers>
    
    <entity-body>
    

    3.2 服务器响应消息

    服务器响应消息也是由四部分组成:

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

    如图:

    //响应报文
    <version> <status> <reason-phrase>
    <headers>
    
    <entity-body>
    

    响应状态码说明

    范围 已定义范围 描述
    100 : 199 100 : 101 信息提示
    200 : 299 200 : 206 成功
    300 : 399 300 : 305 重定向
    400 : 499 400 : 415 客户端错误
    500 : 599 500 : 505 服务器错误

    tips具体的状态码到参考链接了解

    3.3 实例

    打开浏览器,F12 进入后台,点击 network 查看。

    4. HTTP 请求方法

    HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD方法。

    HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。

    方法 描述
    GET 请求指定的页面信息,并返回实体主体。
    HEAD 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头。
    POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。
    PUT 从客户端向服务器传送的数据取代指定的文档的内容。
    DELETE 请求服务器删除指定的页面。
    CONNECT HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。
    OPTIONS 允许客户端查看服务器的性能。
    TRACE 回显服务器收到的请求,主要用于测试或诊断。
    PATCH 是对 PUT 方法的补充,用来对已知资源进行局部更新 。

    5. HTTP 响应头信息

    应答头 描述
    Allow 服务器支持哪些请求方法。
    Content-Encoding 文档的编码(Encode)方法。
    Content-Length 内容长度。只有当浏览器使用持久HTTP连接时才需要这个数据。
    Content-Type 表示后面的文档属于什么MIME类型。
    Date 当前的GMT时间。
    Expires 文档有效期截止时间。过期不缓存。
    Last-Modified 文档的最后改动时间。
    Location 表示客户应当到哪里去提取文档。
    Refresh 表示浏览器应该在多少时间之后刷新文档。单位 秒。
    Server 服务器名字。
    Set-Cookie 设置和页面关联的Cookie。
    WWW-Authenticate 客户应该在Authorization头中提供什么类型的授权信息。

    tips使用应答头参数时,建议到参考链接了解其作用

    参考

  • 相关阅读:
    $("*")选取所有的元素
    $("p") 选取多有的元素
    $(".test")选取所有class为test的元素
    $("#test")选取id为test的元素
    数据分析工具的深度对比:FineBI vs PowerBI
    Kafka是如何处理Netflix每天2万亿条消息的?
    新补丁更新(RU和RUR),新的版本(Release 18和19)
    Cinder 的 I/O QoS
    Web前端绘制0.5像素的几种方法
    Web前端绘制0.5像素的几种方法
  • 原文地址:https://www.cnblogs.com/lizhuming/p/14992365.html
Copyright © 2011-2022 走看看