欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

HTTP基本原理

发布时间:2023/12/31 编程问答 67 豆豆
生活随笔 收集整理的这篇文章主要介绍了 HTTP基本原理 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

概念

超文本

超文本(hypertext)是一种含有特殊标记的文本文件,比如表示网页的HTML源代码、表示图片的二进制数据。

URI、URL和URN

  • URI即统一资源标志符(Uniform Resource Identifier),用于标识某一互联网资源名称的字符串1
  • URL即统一资源定位系统(Uniform Resource Locator),用于指定信息位置的表示方法2
  • URN——已过时3

URL和URN组成URI,URL和URN是并集,关系图4

URL格式

示例:https://www.baidu.com/s?wd=HTTP

标准格式:

[协议类型]://[服务器地址]:[端口号]/[资源层级UNIX文件路径][文件名]?[查询]#[片段ID]

完整格式:

[协议类型]://[访问资源需要的凭证信息]@[服务器地址]:[端口号]/[资源层级UNIX文件路径][文件名]?[查询]#[片段ID]

协议类型

URL协议类型最常见的有http或https,其它诸如ftp、sftp、smb等协议。

  • HTTP既超文本传输协议(Hyper Text Transfer Protocol),用于从网络传输超文本数据到本地浏览器的传送协议。
    • HTTP协议是一个无状态的协议,同一个客户端的这次请求和上次请求是没有对应关系。
    • HTTP的端口号为80。
  • HTTPS是以安全为目标的HTTP通道。
    • HTTPS在HTTP的基础下加入SSL,提供了身份验证与加密通讯方法。
    • HTTPS的端口号为443。

HTTP请求过程

简单来说,请求过程就是客户端向服务器进行request请求,服务器收到后进行处理然后response响应数据给浏览器,就完成了一次请求:

详细过程

详细过程能为工作中解决一些问题提供参考,面试时回答简单过程即可。详细过程不需要死记硬背,把它当成API类的存在即可。

当单击某个超链接或者输入访问地址访问时,HTTP的工作开始:

  • 触发。如用户点击某个超链接,软件启动时发送的请求,用户在地址栏访问网址等等。
  • 解析。浏览器解析URL,得到协议类型、域名或服务器地址、资源地址。
  • DNS查询。浏览器依次检查缓存与Hosts文件,如果没有,则向DNS服务器请求目标服务器的IP地址。
  • 握手。浏览器向服务器发起TCP的连接请求,TCP经过3次握手以后建立连接。
  • 请求。建立连接后,浏览器发送一个HTTP请求给服务器。
  • 响应。服务器处理完后响应HTTP,返回数据给html。
  • 请求Request

    请求行

    请求行由请求方法、请求地址URL和HTTP协议版本组成,用空格分割。

    • 请求地址就是URL。
    • 协议版本的格式为:HTTP/主版本号.次版本号。常用的有HTTP/1.0和HTTP/1.1。

    请求方法

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

    请求头

    名称描述示例
    Accept指定客户端可接受哪些类型的信息。application/json,*/*
    Accept-Language指定客户端可接受的语言类型。zh-CN
    Accept-Encoding指定客户端可接受的内容编码。gzip, deflate, br
    Host用于指定请求资源的主机IP和端口号
    Cookie网站为了辨别用户进行会话跟踪而存储在用户本地的数据。
    Referer用来标识这个请求是从哪个页面发过来的。如作来源统计、防盗链处理等
    User-Agent使服务器识别客户使用的操作系统及版本、浏览器及版本等信息Mozilla/5.0…
    Content-Type联网媒体类型(Internet Media Type)或者MIME类型text/plain;charset=UTF-8

    表格来源5

    请求体

    请求体是POST请求中的表单数据,而对于GET请求,请求体则为空。

    Content-Type提交数据的方式
    application/x-www-form-urlencoded表单数据
    multipart/form-data表单文件上传
    application/json序列化JSON数据
    text/xmlXML数据

    响应Response

    可以分为三部分:响应状态码(Response Status Code)、响应头(Response Headers)和响应体(Response Body)。

    响应状态码

    如200代表服务器正常响应,404代表页面未找到,500代表服务器内部发生错误。

    响应头

    名称描述示例
    Date响应产生的时间。Mon, 08 Mar 2021 11:11:05 GMT
    Last-Modified指定资源的最后修改时间。Mon, 08 Mar 2021 09:51:35 GMT
    Content-Encoding指定响应内容的编码。gzip
    Server包含服务器的信息,比如名称、版本号等。openresty
    Content-Type文档类型,指定返回的数据类型是什么text/html,application/x-javascript
    Set-Cookie设置Cookies
    Expires指定响应的过期时间

    响应体

    请求网页时,响应体是HTML网页。
    请求接口时,响应体可能是Json数据。

    Q&A

    常规问题:

  • 请简述HTTP原理
  • 常见的协议类型有哪些
  • 请简述HTTP和HTTPS,并说明它们的区别
  • 常见的请求方法有哪些
  • 细节了解:

  • 请求,也就是Request大概有些什么数据
  • 响应,也就是Response大概有些什么数据
  • 在你的记忆中请求头有哪些东西
  • 请简述请求体是什么
  • 在你的记忆中响应头有哪些东西
  • 请简述响应体是什么
  • 请简述HTTP原理

    HTTP就是客户端向服务器发送请求,服务器向客户端发送响应数据的一个过程。它包含了请求Request和响应Respouse,请求Request包含了请求头和请求体;请求头比较常用的属性是User-Agent和Content-Type,请求体是POST请求中的表单数据,而对于GET请求,请求体则为空。响应Respouse也包含了响应头和响应体,比较常见的是Content-Type和Set-Cookie。

    请简述HTTP和HTTPS,并说明它们的区别

    HTTP既是超文本传输协议,用于从网络传输超文本数据到本地浏览器的协议。HTTPS是以安全为目标的HTTP通道,在其基础上加入了证书机制进行加密。区别在于,一个有证书加密一个没有证书,在安全上具有差异;端口上1也不同,HTTP是80端口,HTTP是443端口。

    思维导图


    导图链接

    参考

    • HTTP基本原理
    • 深入理解HTTP协议、HTTP协议原理分析
    • 一次完整的http请求过程是怎样的?
    • HTTP请求的完全过程

  • URI ↩︎

  • 统一资源定位系统 ↩︎

  • 这一术语的使用已被限制更少的“URI”取代。WIKI ↩︎

  • 统一资源标志符 ↩︎

  • HTTP 请求方法 ↩︎

  • 总结

    以上是生活随笔为你收集整理的HTTP基本原理的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。