HTTP协议详解

发表于 4年以前  | 总阅读数:618 次

一、HTTP协议简介

  • HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议,所有的WWW文件都必须遵守这个标准
  • HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等
  • HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态协议
  • HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息

二、HTTP主要特点

  • 支持客户端和服务端模式: HTTP工作于客户端服务端的架构之上,浏览器作为客户端通过url向服务器及web服务器发送请求,web服务器根据接收到的请求向客户端发送响应信息
  • 简单快速: 客户端向服务器请求时,只需传送请求方法和路径,请求方法有post、get等,每种方法规定了客户端与服务端,连接的类型不同。由于HTTP协议简单,使得HTTP服务程序规模小而且通信速度很快
  • 灵活: HTTP允许传输任意类型的数据对象
  • 无连接: 无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间
  • 无状态: 无状态是指协议对事务处理没有记忆能力,意味着如果后续处理需要前面的信息,则必须被重传,这可能导致每次连接的数据量增大,另一方面不需要前面信息时,它的应答就较快

三、HTTP请求结构

HTTP请求报文由3部分组成(请求行+请求头部+请求正文)

HTTP请求结构:

3.1 请求行

请求行: 是由 请求字段、URL字段、HTTP协议版本字段 三个字段组成,他们用空格分隔,例如:GET/material/index HTTP/1.1\r\n根据HTTP标准,HTTP请求可以使用多种请求方法

HTTP1.0定义了三种请求方法:GET,POST,HEAD方法。HTTP1.1新增了五种请求方法:OPTIONS,PUT,DELETE,TRACE,CONNECT方法

方法:

1.GET:请求指定的页面信息,并返回实体主体

2.POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件),数据被包含在请求体中,POST请求可能会导致新的资源的建立或已有资源的修改

3.HEAD:类似于GET请求,只不过返回的响应中没有具体的内容,用于获取报头

4.PUT:从客户端向服务器传送的数据取代指定的文档的内容

5.DELETE:请求服务器删除指定的页面

6.CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器

7.OPTIONS:允许客户端查看服务器的性能

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

3.2 请求头部向指定资源提交数据进行处理请求(例如提交表单或者上传文件),数据被包含在请求体中,POST请求可能会导致新的资源的建立或已有资源的修改

请求头部: HTTP客户程序(例如浏览器),向服务器发送请求的时候必须指明请求类型(一般是GET或者 POST),如有必要,客户程序还可以选择发送其他的请求头。大多数请求头并不是必需的,但Content-Length除外,对于POST请求来说 Content-Length必须出现

请求报头通知服务器关于客户端求求的信息,典型的请求头有:

方法名: Content-Length 描述: 表示请求消息正文的长度

方法名: Host 描述: 请求的主机名,允许多个域名同处一个IP地址,即虚拟主机

方法名: User-Agent 描述: 发送请求的浏览器类型、操作系统等信息

方法名: Accept 描述: 客户端可识别的内容类型列表,用于指定客户端接收那些类型的信息

方法名: Accept-Encoding 描述: 客户端可识别的数据编码

方法名: Accept-Language 描述: 表示浏览器所支持的语言类型

方法名: Connection 描述: 允许客户端和服务器指定与请求/响应连接有关的选项,例如这是为Keep-Alive则表示保持连接

方法名: Transfer-Encoding 描述: 告知接收端为了保证报文的可靠传输,对报文采用了什么编码方式

方法名: Cookie 描述: 客户端可以向服务器带数据,只是非常重要的信息之一

方法名: Referer 描述: 发出请求的页面的URL

3.3 空行

他的作用是告诉服务器 请求头部信息到此为止

3.4 请求正文

  1. 若方法是 GET,则该项为空。(数据都在url 地址栏里面)
  2. 若方法是 post 字段,则通常放置的是要 提交的数据

案例:

四、HTTP响应结构

HTTP响应结构:

HTTP的响应报文是由( 状态行、响应头部、响应正文) 三部分组成

4.1 响应行

响应行: 描述了响应的状态,一般由协议版本、状态码及其描述组成 比如 HTTP/1.1200OK\r\n,其中协议版本HTTP/1.1或者HTTP/1.0,200就是它的状态码,OK则为它的描述。

五种可能的取值:

状态码:1XX 描述: 指示信息——表示请求已接收,继续处理

状态码:2XX 描述: 成功——表示请求已被成功接收,理解,接收

状态码:3XX 描述: 重定向——要完成请求必须进行更进一步的操作

状态码:4XX 描述: 客户端错误——请求有语法错误或请求无法实现

状态码:5XX 描述: 服务端错误——服务器未能实现合法的请求

常见状态码:

状态码:200 OK 描述: 正常返回信息

状态码:400 Bad Request 描述: 客户端请求有语法错误,不能被服务器所理解

状态码:401 Unauthorized 描述: 请求未经授权,这个状态代码必须和WWW--Authenticate报头域一起使用

状态码:403 Forbidden 描述: 服务器收到请求,但是拒绝提供服务

状态码:404 Not Found 描述: 请求资源不存在,eg,输入了错误的URL

状态码:500 Internal Server Error 描述: 服务器发生不可预期的错误

状态码:503 Server Unavailable 描述: 服务器当前不能处理客户端的请求,一段时间后可能恢复正常

4.2 响应头部

响应头部: 用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理等一会儿它回送的数据。

方法: Server 描述: 服务器通过这个头告诉浏览器服务器的类型

方法: Date 描述: 表示消息发送的时间

方法: Allow 描述: 服务器支持哪些请求方法(如GET、POST等)

方法: Content-Encoding 描述: 文档的编码(Encode)方法

方法: Content-Length 描述: 表示内容长度。只有当浏览器使用持久HTTP连接时才需要这个数据

方法: Content- Type 描述: 表示后面的文档属于什么MIME类型

方法: Expires 描述: 告诉浏览器把回送的资源缓存多长时间,-1或0则是不缓存

方法: Server 描述: 服务器通过这个头告诉浏览器服务器的类型

方法: WWW-Authenticate 描述: 客户应该在Authorization头中提供什么类型的授权信息

方法: Transfer-Encoding
描述: 告诉浏览器数据的传送格式

方法: Access-Control-Allow-Origin 描述: 它的值要么是请求时Origin字段的值,要么是一个*,表示接受任意域名的请求

方法: Access-Control-Allow-Credentials 描述:该字段可选。它的值是一个布尔值,表示是否允许发送Cookie

4.3 响应体响应体就是响应的消息体,它包含了响应的内容。它可以包含HTML代码,图片,等等。主体是由传输在HTTP消息中紧跟在头部后面的数据字节组成的。

案例:

五、浏览器输入URL,回车之后请求流程

1. DNS解析:

当我们浏览器会首先搜索浏览器自身的DNS缓存,也就是我们的hosts文件中去查找,如果浏览器自身缓存找不到则会查看系统的DNS缓存,如果找到且没有过期则停止搜索解析到此结束,而如果本机没有找到DNS缓存,则浏览器会发起一个DNS的系统调用,就会向本地配置的首选DNS服务器发起域名解析请求,最终会找到我们域名对应的IP地址。

2. TCP解析:拿到域名对应的IP地址之后,User-Agent(一般是指浏览器)会以一个随机端口(1024< 端口 < 65535)向服务器的WEB程序(常用的有httpd,nginx等)80端口发起TCP的连接请求。这个连接请求到达服务器端后,进入到网卡,然后是进入到内核的TCP/IP协议栈,最终到达WEB程序,最终建立了TCP/IP的连接

3. 发送HTTP请求: 建立了TCP连接之后,发起一个http请求

4. 服务器处理请求并返回HTTP报文: 服务器接受并处理完请求,返回 HTTP 响应,一个响应报文格式基本等同于请求报文,由响应行、响应头、空行、实体组成

5. 浏览器解析渲染页面

6. 连接结束: TCP四次挥手,端口连接

六、Cookie和Session的区别

6.1 Cookie简介:
  • 是由服务器发给客户端的特殊信息,以文本的形式存放在客户端
  • 客户端再次请求的时候,会把Cookie回发
  • 服务器接收到后,会解析Cookie生存与客户端相对于的内容

Cookie的设置以及发送过程:

6.2 Session简介:
  • 服务器端的机制,在服务器上保存的信息
  • 解析客户端请求并操作session id,按需保存状态信息
6.3 Cookie和Session的区别
  • Cookie数据 存放在客户的浏览器上,Session的数据放在服务器上
  • Session相对于Cookie更安全
  • 若考虑减轻服务器负担,应当使用Cookie

七、总结

到这里呢,HTTP协议就讲解完成了,以上就是小农对于HTTP的认识,有小伙伴觉得不对或者可以更优化的地方,可以在留言提出,对于文中有不懂的小伙伴可以留言进行提问,今天的HTTP协议详解就到这里了,大家加油~

 相关推荐

刘强东夫妇:“移民美国”传言被驳斥

京东创始人刘强东和其妻子章泽天最近成为了互联网舆论关注的焦点。有关他们“移民美国”和在美国购买豪宅的传言在互联网上广泛传播。然而,京东官方通过微博发言人发布的消息澄清了这些传言,称这些言论纯属虚假信息和蓄意捏造。

发布于:1年以前  |  808次阅读  |  详细内容 »

博主曝三大运营商,将集体采购百万台华为Mate60系列

日前,据博主“@超能数码君老周”爆料,国内三大运营商中国移动、中国电信和中国联通预计将集体采购百万台规模的华为Mate60系列手机。

发布于:1年以前  |  770次阅读  |  详细内容 »

ASML CEO警告:出口管制不是可行做法,不要“逼迫中国大陆创新”

据报道,荷兰半导体设备公司ASML正看到美国对华遏制政策的负面影响。阿斯麦(ASML)CEO彼得·温宁克在一档电视节目中分享了他对中国大陆问题以及该公司面临的出口管制和保护主义的看法。彼得曾在多个场合表达了他对出口管制以及中荷经济关系的担忧。

发布于:1年以前  |  756次阅读  |  详细内容 »

抖音中长视频App青桃更名抖音精选,字节再发力对抗B站

今年早些时候,抖音悄然上线了一款名为“青桃”的 App,Slogan 为“看见你的热爱”,根据应用介绍可知,“青桃”是一个属于年轻人的兴趣知识视频平台,由抖音官方出品的中长视频关联版本,整体风格有些类似B站。

发布于:1年以前  |  648次阅读  |  详细内容 »

威马CDO:中国每百户家庭仅17户有车

日前,威马汽车首席数据官梅松林转发了一份“世界各国地区拥车率排行榜”,同时,他发文表示:中国汽车普及率低于非洲国家尼日利亚,每百户家庭仅17户有车。意大利世界排名第一,每十户中九户有车。

发布于:1年以前  |  589次阅读  |  详细内容 »

研究发现维生素 C 等抗氧化剂会刺激癌症生长和转移

近日,一项新的研究发现,维生素 C 和 E 等抗氧化剂会激活一种机制,刺激癌症肿瘤中新血管的生长,帮助它们生长和扩散。

发布于:1年以前  |  449次阅读  |  详细内容 »

苹果据称正引入3D打印技术,用以生产智能手表的钢质底盘

据媒体援引消息人士报道,苹果公司正在测试使用3D打印技术来生产其智能手表的钢质底盘。消息传出后,3D系统一度大涨超10%,不过截至周三收盘,该股涨幅回落至2%以内。

发布于:1年以前  |  446次阅读  |  详细内容 »

千万级抖音网红秀才账号被封禁

9月2日,坐拥千万粉丝的网红主播“秀才”账号被封禁,在社交媒体平台上引发热议。平台相关负责人表示,“秀才”账号违反平台相关规定,已封禁。据知情人士透露,秀才近期被举报存在违法行为,这可能是他被封禁的部分原因。据悉,“秀才”年龄39岁,是安徽省亳州市蒙城县人,抖音网红,粉丝数量超1200万。他曾被称为“中老年...

发布于:1年以前  |  445次阅读  |  详细内容 »

亚马逊股东起诉公司和贝索斯,称其在购买卫星发射服务时忽视了 SpaceX

9月3日消息,亚马逊的一些股东,包括持有该公司股票的一家养老基金,日前对亚马逊、其创始人贝索斯和其董事会提起诉讼,指控他们在为 Project Kuiper 卫星星座项目购买发射服务时“违反了信义义务”。

发布于:1年以前  |  444次阅读  |  详细内容 »

苹果上线AppsbyApple网站,以推广自家应用程序

据消息,为推广自家应用,苹果现推出了一个名为“Apps by Apple”的网站,展示了苹果为旗下产品(如 iPhone、iPad、Apple Watch、Mac 和 Apple TV)开发的各种应用程序。

发布于:1年以前  |  442次阅读  |  详细内容 »

特斯拉美国降价引发投资者不满:“这是短期麻醉剂”

特斯拉本周在美国大幅下调Model S和X售价,引发了该公司一些最坚定支持者的不满。知名特斯拉多头、未来基金(Future Fund)管理合伙人加里·布莱克发帖称,降价是一种“短期麻醉剂”,会让潜在客户等待进一步降价。

发布于:1年以前  |  441次阅读  |  详细内容 »

光刻机巨头阿斯麦:拿到许可,继续对华出口

据外媒9月2日报道,荷兰半导体设备制造商阿斯麦称,尽管荷兰政府颁布的半导体设备出口管制新规9月正式生效,但该公司已获得在2023年底以前向中国运送受限制芯片制造机器的许可。

发布于:1年以前  |  437次阅读  |  详细内容 »

马斯克与库克首次隔空合作:为苹果提供卫星服务

近日,根据美国证券交易委员会的文件显示,苹果卫星服务提供商 Globalstar 近期向马斯克旗下的 SpaceX 支付 6400 万美元(约 4.65 亿元人民币)。用于在 2023-2025 年期间,发射卫星,进一步扩展苹果 iPhone 系列的 SOS 卫星服务。

发布于:1年以前  |  430次阅读  |  详细内容 »

𝕏(推特)调整隐私政策,可拿用户发布的信息训练 AI 模型

据报道,马斯克旗下社交平台𝕏(推特)日前调整了隐私政策,允许 𝕏 使用用户发布的信息来训练其人工智能(AI)模型。新的隐私政策将于 9 月 29 日生效。新政策规定,𝕏可能会使用所收集到的平台信息和公开可用的信息,来帮助训练 𝕏 的机器学习或人工智能模型。

发布于:1年以前  |  428次阅读  |  详细内容 »

荣耀CEO谈华为手机回归:替老同事们高兴,对行业也是好事

9月2日,荣耀CEO赵明在采访中谈及华为手机回归时表示,替老同事们高兴,觉得手机行业,由于华为的回归,让竞争充满了更多的可能性和更多的魅力,对行业来说也是件好事。

发布于:1年以前  |  423次阅读  |  详细内容 »

AI操控无人机能力超越人类冠军

《自然》30日发表的一篇论文报道了一个名为Swift的人工智能(AI)系统,该系统驾驶无人机的能力可在真实世界中一对一冠军赛里战胜人类对手。

发布于:1年以前  |  423次阅读  |  详细内容 »

AI生成的蘑菇科普书存在可致命错误

近日,非营利组织纽约真菌学会(NYMS)发出警告,表示亚马逊为代表的电商平台上,充斥着各种AI生成的蘑菇觅食科普书籍,其中存在诸多错误。

发布于:1年以前  |  420次阅读  |  详细内容 »

社交媒体平台𝕏计划收集用户生物识别数据与工作教育经历

社交媒体平台𝕏(原推特)新隐私政策提到:“在您同意的情况下,我们可能出于安全、安保和身份识别目的收集和使用您的生物识别信息。”

发布于:1年以前  |  411次阅读  |  详细内容 »

国产扫地机器人热销欧洲,国产割草机器人抢占欧洲草坪

2023年德国柏林消费电子展上,各大企业都带来了最新的理念和产品,而高端化、本土化的中国产品正在不断吸引欧洲等国际市场的目光。

发布于:1年以前  |  406次阅读  |  详细内容 »

罗永浩吐槽iPhone15和14不会有区别,除了序列号变了

罗永浩日前在直播中吐槽苹果即将推出的 iPhone 新品,具体内容为:“以我对我‘子公司’的了解,我认为 iPhone 15 跟 iPhone 14 不会有什么区别的,除了序(列)号变了,这个‘不要脸’的东西,这个‘臭厨子’。

发布于:1年以前  |  398次阅读  |  详细内容 »
 相关文章
Android插件化方案 5年以前  |  237231次阅读
vscode超好用的代码书签插件Bookmarks 2年以前  |  8065次阅读
 目录