美文网首页
什么是 HTTP?

什么是 HTTP?

作者: limengzhe | 来源:发表于2020-10-12 17:51 被阅读0次

HTTP 全称 HyperText Transfer Protocol(超文本传输协议),是一种用于分布式、协作式和超媒体信息系统的应用层协议。它是在 Web 上进行数据交换的基础。

HTTP 使用 TCP 作为通信协议

HTTP 协议是建立在 TCP(全称 Transmission Control Protocol,即传输控制协议)协议之上的一种应用。TCP 协议提供可靠的连接服务,可以保证数据不丢失。建立起一个 TCP 连接需要经过三次握手,断开需要经过四次挥手

  • 三次握手🤝:
    • 第一次握手:客户端:hi,服务器,在吗?我想和你建立连接,你能收到我的消息吗?(客户端给服务端发送了一个 SYN 和 Sequence Number=X,并进入 SYN_SEND 状态,等待服务器确认)
    • 第二次握手:服务器:hi,客户端,我在呢,我收到你的消息了,我们可以建立连接,你能收到我答复的消息吗?(服务器收到客户端的 SYN 报文,向客户端发送 SYN、Sequence Number=Y 和 Acknowledgment Number=X+1 进行确认,并进入 SYN_RCVD 状态)
    • 第三次握手:客户端:我收到你的答复了,很开心能和你建立连接。(客户端收到服务器的 SYN、Sequence Number 和 Acknowledgment Number,向服务器发送 Acknowledgment Number=Y+1 进行确认,发送完毕,客户端和服务器进入 ESTABLISHED 状态)
  • 四次挥手👋(主动方可能是客户端或服务器):
    • 第一次挥手:主动方:我们分手吧?我不想和你联系了。(发送 FIN、Sequence Number=X+2 和 Acknowledgment Number=Y+1 报文,并进入 FIN_WAIT_1 状态)
    • 第二次挥手:被动方:好的,我收到你分手的消息了,我同意分手。(发送 Acknowledgment Number=X+3 报文,并进入 CLOSE_WAIT 状态)
    • 第三次挥手:被动方:还有,我也要和你分手,再也不想和你联系了。(发送 FIN 和 Sequence Number=Y+1 报文,并进入 LAST_ACK 状态)
    • 第四次挥手:主动方:好的,我收到你同意分并提出分手的消息了,祝你幸福!(发送 Acknowledgment Number=Y+2 报文,进入 TIME_WAIT 状态)
三次握手与四次挥手

HTTP 的请求响应过程(当我们在浏览器中输入 URL 并点击回车时,发生了什么):

  1. 首先 DNS 服务器会进行域名的映射,将域名解析为 IP 地址;
  2. 根据 IP 地址去寻找相应的服务器,HTTP 客户端进程在 80 端口(默认端口)发起一个到服务器的 TCP 连接(三次握手)
  3. HTTP 客户端找到相应的资源库,并返回页面信息;
  4. 浏览器根据自身的执行机制解析页面;
  5. HTTP 服务器随即通知 TCP 断开连接(四次挥手)
  • HTTP 协议的组成
    • start line 起始行
      • 响应行
      • 请求行
    • headers
      • Request Headers 请求头
      • Response Headers 响应头
    • body
      • Request Body 请求体
      • Response Body 响应体

HTTP 的请求方法有哪些 👉 MDN

方法 描述 版本
GET 请求一个指定资源,主要用于获取数据。 1.0+
POST 将数据提交到指定的资源,例如提交表单或者上传文件。 1.0+
PUT 将数据提交到指定的资源,用于更新指定的文档的内容。 1.1+
DELETE 请求删除指定的资源。 1.1+
HEAD 与 GET 请求类似,但没有响应体。 1.0+
OPTIONS 允许客户端查看服务器的性能。 1.1+
PATCH 是对 PUT 方法的补充,用来对已知资源进行局部更新。 1.1+
TRACE 回显服务器收到的请求,主要用于测试或诊断。 1.1+
CONNECT 预留给能够将连接改为管道方式的代理服务器。 1.1+

HTTP 响应状态码 👉 MDN

  • 分类

    • 1**:指示信息
    • 2**:成功
    • 3**:重定向
    • 4**:客户端错误
    • 5**:服务器错误
  • 常见的状态码

    • 200:请求成功。一般用于 GET 与 POST 请求。
    • 301:请求的资源被永久的移动到新 URI,返回信息会包括新的URI,浏览器会自动定向到新URI。
    • 400:客户端请求的语法错误,服务器无法识别。
    • 401:请求要求用户的身份认证
    • 403:服务器理解请求客户端的请求,但是拒绝执行此请求
    • 404:请求的资源(网页等)不存在
    • 500:服务器内部错误
    • 503:超载或系统维护,服务器暂时的无法处理客户端的请求

HTTPS 👉 维基百科

HTTP 一般是明文传输,很容易被攻击者窃取重要信息。HTTPS 是 HTTP 协议的加密版本,全称 HyperText Transfer Protocol Secure(超文本传输安全协议)。HTTPS 和 HTTP 有很大的不同在于 HTTPS 是以安全为目标的 HTTP 通道,在 HTTP 的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS 在 HTTP 的基础上增加了 SSL 层,也就是说 HTTPS = HTTP + SSL。

相关文章

  • 【HTTP】什么是HTTP Referer?

    什么是Referer?Referer的作用?空Referer是怎么回事? https://www.sojson.c...

  • 什么是HTTP ?

    HTTP 协议简介 HTTP 是超文本传输协议 (Hyper Text Transfer Protocol)的缩写...

  • 什么是HTTP?

    http是计算机通过网络进行通信的规则。 http是一种无状态的协议,它不建立持久的连接,处理过程是没有记忆的。 ...

  • 什么是 HTTP?

    HTTP[https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Ov...

  • 什么是【HTTP】

    HTTP(Hyper Text Transfer Protocol)是超文本传输协议的缩写,是互联网上应用最为广泛...

  • HTTP之一:什么是HTTP

    本文仅供笔者平日学习笔记之用,侵删原文:https://mp.weixin.qq.com/s/wZONAYSlku...

  • 什么是http协议

    大家好,我是IT修真院深圳分院第5期学员,一枚正直善良的JAVA程序员。 今天给大家分享一下,修真院官网JAVA任...

  • 什么是HTTP协议?

    视频 https://v.qq.com/x/page/r05089xvzqe.html PPT https://g...

  • HTTP - 什么是Etag?

    什么是Etag? 当发送一个服务器请求时,浏览器首先会进行缓存过期判断。浏览器根据缓存过期时间判断缓存文件是否过期...

  • 什么是HTTP Headers

    什么是HTTP Headers HTTP是“Hypertext Transfer Protocol”的所写,整个万...

网友评论

      本文标题:什么是 HTTP?

      本文链接:https://www.haomeiwen.com/subject/bifppktx.html