http概述

本文详细介绍了HTTP协议的工作流程,包括请求的组成部分(请求行、请求头、空行、请求实体)以及GET和POST的区别。同时,讲解了HTTP响应的结构(响应行、响应报头、空行、响应实体)和HTTP请求的TCP数据包发送情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

HTTP(Hyper Text Transfer Protocol),超文本传输协议,是一种建立在TCP上的无状态连接,整个工作流程基本是由客户端(client)向服务端(server)发送一个http请求,向server端请求需要的资源,到server端收到客户端的请求后,根据请求做出相应的动作访问服务器资源,然后通过HTTP相应将结果返回给client端。

HTTP请求

http请求的格式都是固定的,一般都含有请求行、请求头、空行和请求实体四部分

请求行

包括请求方式Method、资源路径URL、协议版本Version

  • Method
  1. GET: 访问服务器的资源
  2. POST: 向服务器发送要修改的数据
  3. HEAD: 获取服务器文档的首部
  4. PUT: 向服务器上传资源
  5. DELETE: 删除服务器的资源
  • URL

服务器的资源目录

  • Version

http的协议版本

请求头

紧接着请求行(即第一行)之后的部分,用来说明服务器要使用的附加信息,包括一些访问的域名、用户代理、Cookie、连接方式等信息

  1. Accept: 指定客户端能够接收的内容格式类型
  2. Accept-Language: 指定客户端能够接受的语言类型
  3. Accept-Ecoding: 指定客户端能够接受的编码类型
  4. User-Agent: 用户代理,向服务器说明自己的操作系统、浏览器等信息
  5. Connection: 是否开启持久连接(keepalive)
  6. Host: 服务器域名
空行

请求头部后面的空行是必须的

请求实体

http请求的数据

GET和POST区别

GET请求

GET /search/detail?ct=503316480&z=0&ipn=false&word=壁纸 HTTP/1.1
Host: image.baidu.com
Accept: application/json, text/javascript, */*; q=0.01
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
Cookie: ****
Connection: Keep-Alive
空行


POST请求

POST /search/detail HTTP/1.1
Host: image.baidu.com
Accept: application/json, text/javascript, */*; q=0.01
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
Cookie: ****
Connection: Keep-Alive

ct=503316480&z=0&ipn=false&word=壁纸
官方区别
  1. GET在浏览器回退时是无害的,而POST会再次提交请求。
  2. GET产生的URL地址可以被Bookmark,而POST不可以。
  3. GET请求会被浏览器主动cache,而POST不会,除非手动设置。
  4. GET请求只能进行url编码,而POST支持多种编码方式。
  5. GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
  6. GET请求在URL中传送的参数是有长度限制的,而POST没有,因为GET是通过url提交的。
  7. 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
  8. GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
  9. GET参数通过URL传递,POST放在Request body中。
深层次
  1. GET和POST实质上都是基于TCP/IP的,本质上都是TCP连接,数据传输模式其实是一样的,给GET加上request body,给POST带上url参数,完全都可以用技术实现,上面那些不同其实都是基于HTTP的规则和浏览器/服务器的限制,导致GET和POST最终在应用上出现不同罢了

  2. GET产生1个TCP数据包,POST产生2个TCP数据包,具体来说GET会将http header和data一并发送出去,服务器响应200,而POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据),因此时间消耗上就是POST更多

HTTP响应

和请求一样,HTTP响应的格式同样含有响应行、响应报头、空行和响应实体四部分

HTTP/1.1 200 OK
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: https://image.baidu.com
Connection: keep-alive
Content-Encoding: gzip
Content-Type: text/html
Date: Sun, 21 Oct 2018 15:50:17 GMT
Search_result: OK
Server: Apache
Tracecode: ***
Tracecode: ***
Transfer-Encoding: chunked
Vary: Accept-Encoding

<html>
      <head></head>
      <body>
            <!--body goes here-->
      </body>
</html>
响应行

HTTP协议版本号Version, 状态码, 状态消息

  • Version:HTTP/1.1
  • 状态码 200
  • 状态消息 ok
响应报头

类似于http请求一样的报头一样,都是一些附加信息

空行
响应实体

空行后面的html就是响应正文

HTTP工作流程

  1. 浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;
  2. 解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接;
  3. 浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器;
  4. 服务器对浏览器请求作出响应,并把对应的html文本发送给浏览器;
  5. 释放TCP连接;
  6. 浏览器显示html文本;
Hadoop提供了HTTP接口来与集群进行交互和管理。这些HTTP接口可以用于监控集群状态、管理作业、访问文件系统等。以下是Hadoop中的一些常用HTTP接口的概述: 1. HDFS Web界面:HDFS提供了一个Web界面,可以通过浏览器来查看文件系统的状态、浏览文件和目录,并进行文件操作。默认情况下,它在http://<namenode>:50070处运行。 2. JobTracker和TaskTracker Web界面:MapReduce框架使用JobTracker和TaskTracker来管理作业和任务。JobTracker提供了一个Web界面,可以查看作业的状态、作业历史等信息。TaskTracker也有一个类似的Web界面,可以查看任务的状态、日志等信息。默认情况下,它们分别在http://<jobtracker>:50030和http://<tasktracker>:50060处运行。 3. ResourceManager和NodeManager Web界面:在YARN(Yet Another Resource Negotiator)中,ResourceManager负责全局资源管理,NodeManager负责单个节点上的资源管理。它们都提供了Web界面,可以查看集群的资源使用情况、应用程序状态等信息。默认情况下,ResourceManager的Web界面在http://<resourcemanager>:8088处运行,NodeManager的Web界面在http://<nodemanager>:8042处运行。 4. HBase Web界面:HBase是一个分布式的NoSQL数据库,它提供了一个Web界面,可以监控HBase集群的状态、表的信息、RegionServer的状态等。默认情况下,它在http://<hbase-master>:16010处运行。 除了上述的Web界面,还有一些其他的HTTP接口,如Hadoop的REST API,可以通过HTTP请求来进行文件操作、作业管理等。这些HTTP接口为Hadoop的管理和监控提供了方便的方式,可以通过浏览器或者发送HTTP请求来进行操作。具体的接口使用方法和参数可以参考Hadoop的官方文档或相关资料。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值