服务器向客户端传输网页的协议,一篇文章带你详解 HTTP 协议(上)-深圳网站优化推广公司

服务器向客户端传输网页的协议,一篇文章带你详解 HTTP 协议(上)

文章目录,方便阅读:

一、概述

二、HTTP 工作过程

三、HTTP 协议基础

四、HTTP 协议报文结构

五、HTTP 报文首部之请求行、状态行

六、HTTP 报文首部之首部字段(重点分析)

七、HTTP 响应状态码(重点分析)

八、HTTP 报文实体

九、与 HTTP 协作的 Web 服务器

配套思维导图:

6ba70a133b924b1915ef8a6d8174b3bd.png

一、概述

计算机网络体系结构分层

9c7ed5a04aa3301fbae14eb043c987ba.png

2.TCP/IP 通信传输流

利用 TCP/IP 协议族进行网络通信时,会通过分层顺序与对方进行通信。发送端从应用层往下走,接收端则从链路层往上走。如下:

bf4cd13768c77fb3947fb4c9c3c7cc04.png

TCP/IP 通信传输流

首先作为发送端的客户端在应用层(HTTP 协议)发出一个想看某个 Web 页面的 HTTP 请求。接着,为了传输方便,在传输层(TCP 协议)把从应用层处收到的数据(HTTP 请求报文)进行分割,并在各个报文上打上标记序号及端口号后转发给网络层。在网络层(IP 协议),增加作为通信目的地的 MAC 地址后转发给链路层。这样一来,发往网络的通信请求就准备齐全了。接收端的服务器在链路层接收到数据,按序往上层发送,一直到应用层。当传输到应用层,才能算真正接收到由客户端发送过来的 HTTP请求。如下图所示:

042d7650f7fe052ef88e2bd640ea6dfb.png

HTTP 请求

在网络体系结构中,包含了众多的网络协议,这篇文章主要围绕 HTTP 协议(HTTP/1.1版本)展开。

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传输协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。HTTP是客户端浏览器或其他程序与Web服务器之间的应用层通信协议。在Internet上的Web服务器上存放的都是超文本信息,客户机需要通过HTTP协议传输所要访问的超文本信息。HTTP包含命令和传输信息,不仅可用于Web访问,也可以用于其他因特网/内联网应用系统之间的通信,从而实现各类应用资源超媒体访问的集成。我们在浏览器的地址栏里输入的网站地址叫做URL (Uniform Resource Locator,统一资源定位符)。就像每家每户都有一个门牌地址一样,每个网页也都有一个Internet地址。当你在浏览器的地址框中输入一个URL或是单击一个超级链接时,URL就确定了要浏览的地址。浏览器通过超文本传输协议(HTTP),将Web服务器上站点的网页代码提取出来,并翻译成漂亮的网页。二、HTTP 工作过程

HTTP请求响应模型

2dbf9b2674b86415446c8d923e639cd0.png

HTTP通信机制是在一次完整的 HTTP 通信过程中,客户端与服务器之间将完成下列7个步骤:

1.建立 TCP 连接

在HTTP工作开始之前,客户端首先要通过网络与服务器建立连接,该连接是通过 TCP 来完成的,该协议与 IP 协议共同构建 Internet,即著名的 TCP/IP 协议族,因此 Internet 又被称作是 TCP/IP 网络。HTTP 是比 TCP 更高层次的应用层协议,根据规则,只有低层协议建立之后,才能进行高层协议的连接,因此,首先要建立 TCP 连接,一般 TCP 连接的端口号是80;

2.客户端向服务器发送请求命令

一旦建立了TCP连接,客户端就会向服务器发送请求命令;

例如:GET/sample/hello.jsp HTTP/1.1

3.客户端发送请求头信息

客户端发送其请求命令之后,还要以头信息的形式向服务器发送一些别的信息,之后客户端发送了一空白行来通知服务器,它已经结束了该头信息的发送;

4.服务器应答

客户端向服务器发出请求后,服务器会客户端返回响应;

例如: HTTP/1.1 200 OK

响应的第一部分是协议的版本号和响应状态码

5.服务器返回响应头信息

正如客户端会随同请求发送关于自身的信息一样,服务器也会随同响应向用户发送关于它自己的数据及被请求的文档;

6.服务器向客户端发送数据

服务器向客户端发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以 Content-Type 响应头信息所描述的格式发送用户所请求的实际数据;

7.服务器关闭 TCP 连接

一般情况下,一旦服务器向客户端返回了请求数据,它就要关闭 TCP 连接,然后如果客户端或者服务器在其头信息加入了这行代码 Connection:keep-alive ,TCP 连接在发送后将仍然保持打开状态,于是,客户端可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。

三、HTTP 协议基础

1.通过请求和响应的交换达成通信

应用 HTTP 协议时,必定是一端担任客户端角色,另一端担任服务器端角色。仅从一条通信线路来说,服务器端和客服端的角色是确定的。HTTP 协议规定,请求从客户端发出,最后服务器端响应该请求并返回。换句话说,肯定是先从客户端开始建立通信的,服务器端在没有接收到请求之前不会发送响应。

2.HTTP 是不保存状态的协议

HTTP 是一种无状态协议。协议自身不对请求和响应之间的通信状态进行保存。也就是说在 HTTP 这个级别,协议对于发送过的请求或响应都不做持久化处理。这是为了更快地处理大量事务,确保协议的可伸缩性,而特意把 HTTP 协议设计成如此简单的。

可是随着 Web 的不断发展,我们的很多业务都需要对通信状态进行保存。于是我们引入了 Cookie 技术。有了 Cookie 再用 HTTP 协议通信,就可以管理状态了。

3.使用 Cookie 的状态管理

Cookie 技术通过在请求和响应报文中写入 Cookie 信息来控制客户端的状态。Cookie 会根据从服务器端发送的响应报文内的一个叫做 Set-Cookie 的首部字段信息,通知客户端保存Cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入 Cookie 值后发送出去。服务器端发现客户端发送过来的 Cookie 后,会去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息。

892c18a71ee8dbeb6f72fd31e04a0c10.png

Cookie 的流程输入图片描述

4.请求 URI 定位资源

HTTP 协议使用 URI 定位互联网上的资源。正是因为 URI 的特定功能,在互联网上任意位置的资源都能访问到。

5.告知服务器意图的 HTTP 方法(HTTP/1.1)

561c3875533544544c42f0c638db216b.png

HTTP 方法

6.持久连接

HTTP 协议的初始版本中,每进行一个 HTTP 通信都要断开一次 TCP 连接。比如使用浏览器浏览一个包含多张图片的 HTML 页面时,在发送请求访问 HTML 页面资源的同时,也会请求该 HTML 页面里包含的其他资源。因此,每次的请求都会造成无畏的 TCP 连接建立和断开,增加通信量的开销。

为了解决上述 TCP 连接的问题,HTTP/1.1 和部分 HTTP/1.0 想出了持久连接的方法。其特点是,只要任意一端没有明确提出断开连接,则保持 TCP 连接状态。旨在建立一次 TCP 连接后进行多次请求和响应的交互。在 HTTP/1.1 中,所有的连接默认都是持久连接。

7.管线化

持久连接使得多数请求以管线化方式发送成为可能。以前发送请求后需等待并接收到响应,才能发送下一个请求。管线化技术出现后,不用等待亦可发送下一个请求。这样就能做到同时并行发送多个请求,而不需要一个接一个地等待响应了。

比如,当请求一个包含多张图片的 HTML 页面时,与挨个连接相比,用持久连接可以让请求更快结束。而管线化技术要比持久连接速度更快。请求数越多,时间差就越明显。

四、HTTP 协议报文结构

1.HTTP 报文

用于 HTTP 协议交互的信息被称为 HTTP 报文。请求端(客户端)的 HTTP 报文叫做请求报文;响应端(服务器端)的叫做响应报文。HTTP 报文本身是由多行(用 CR+LF 作换行符)数据构成的字符串文本。

2.HTTP 报文结构

HTTP 报文大致可分为报文首部和报文主体两部分。两者由最初出现的空行(CR+LF)来划分。通常,并不一定有报文主体。如下:

4c42aed78a02b2fc434d4777899070cb.png

2.1请求报文结构

fa617240b9f5bd734fbab04b5158a018.png

请求报文的首部内容由以下数据组成:

·

·请求行 —— 包含用于请求的方法、请求 URI 和 HTTP 版本。

·

·首部字段 —— 包含表示请求的各种条件和属性的各类首部。(通用首部、请求首部、实体首部以及RFC里未定义的首部如 Cookie 等)

请求报文的示例,如下:

40e8688373ead023c302b9ba53cc9143.png

请求报文示例

2.2响应报文结构

37bf2b569638cb3058e6779d0a1dd678.png

响应报文结构

响应报文的首部内容由以下数据组成:

·状态行 —— 包含表明响应结果的状态码、原因短语和 HTTP 版本。

·首部字段 —— 包含表示请求的各种条件和属性的各类首部。(通用首部、响应首部、实体首部以及RFC里未定义的首部如 Cookie 等)

响应报文的示例,如下:

66c30f5074d8163d48732b02d4165767.png

五、HTTP 报文首部之请求行、状态行

1.请求行

举个栗子,下面是一个 HTTP 请求的报文:

GET /index.htm HTTP/1.1Host: sample.com其中,下面的这行就是请求行,

GET /index.htm HTTP/1.1开头的 GET 表示请求访问服务器的类型,称为方法;随后的字符串 /index.htm 指明了请求访问的资源对象,也叫做请求 URI;最后的 HTTP/1.1,即 HTTP 的版本号,用来提示客户端使用的 HTTP 协议功能。综合来看,大意是请求访问某台 HTTP 服务器上的 /index.htm 页面资源。

2.状态行

同样举个栗子,下面是一个 HTTP 响应的报文:

HTTP/1.1200 OKDate: Mon, 10 Jul 201715:50:06 GMTContent-Length: 256Content-Type: text/html ...其中,下面的这行就是状态行,

HTTP/1.1 200 OK开头的 HTTP/1.1 表示服务器对应的 HTTP 版本;紧挨着的 200 OK 表示请求的处理结果的状态码和原因短语。

剩下的六、HTTP 报文首部之首部字段(重点分析)七、HTTP 响应状态码(重点分析)八、HTTP 报文实体九、与 HTTP 协作的 Web 服务器将于下篇文章进行重点分析详解。

本公众号已开设如下二十大专题,欢迎查看相关专题!

【springboot专题】【spring源码】【mysql优化专题】【HTTP协议】【架构技术专题】【多线程专题】【dubbo专题】【dubbo源码专题】【JVM调优专题】【HTTP专题】【设计模式专题】【高并发专题】【架构技术专题】【Lucene专题】【数据结构专题】【redis专题】【mq中间件专题】【netty专题】【java面试专题】【zookeeper】

举报/反馈

ki-pi CSDN认证博客专家 CSDN认证企业博客
码龄6年 暂无认证
75
原创
-
周排名
69万+
总排名
16万+
访问
等级
222
积分
29
粉丝
15
获赞
0
评论
121
收藏
私信
为什么被折叠? 到【灌水乐园】发言
前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

相关内容推荐

视频制作教学视频网站无锡网站制作好吗湖州怎么制作自己网站的app沧浪企业网站制作方法定制手机网站制作青州手机网站制作制作网站页面自动适应屏幕html制作学校网站刷东西的网站怎么制作清远标书制作网站中华医学会网站制作书签南城电子网站制作哪些好宝安各大网站制作公司好吗郑州网站制作专注乐云seo免费制作网站哪里好新闻网站制作策划作业制作商城网站的玉林定制网站制作网站制作的流程企业寿县租房网站制作如何制作一个卡密网站石家庄塔冢裕园网站制作网站制作公司案例网站制作中期报告模板范文钢管网站制作html网站制作的流程制作野炊网站制作qq空间网站ppt网站建设制作设计服务机构微网站的制作合同网站制作例子长兴网站制作对公司有什么好处山阳企业网站制作河南营销网站制作价格查询工具类网站制作小木虫网站制作书签列车网站制作冰淇淋购房者网站制作表格邯郸网站制作蛋糕教程制作logo图标的网站排名靠前的网站制作服务电话火山小视频制作教程网站制作一个电商网站要多久衢州郴州制作网站建设哪个好学网站制作的书籍进出口网站制作壁纸上海支付宝小程序定制制作网站归元寺网站制作奶茶怎样制作自适应网站网站开篇图片制作制作智能电视app网站如何制作大学招生网站沭阳9网站制作医药网站制作书签余姚长宁网站制作有哪些海盐学习网站制作哪里学下载淘宝网站制作淘宝网站电话高级网站前台制作古玩网站制作珠海网站制作平台会有dw能制作一个网站么龙江营销型网站制作安庆网站制作找哪家白银专业的网站制作柳州个人网站制作洛阳网站制作哪里有舟山企业网站制作怎么选东阳如何制作网站文字图标台江旅游网站制作制作企业网站包括哪些内容go制作一个网站衢州动漫制作网站哪个好制作网站资源网站手机端如何制作教程制作主图的网站湖南网站制作壁纸全屏钟祥h5页面制作网站惠东网站制作服务网站设计制作协议书最新分众传媒网站制作美食嘉兴怎么制作简单的音乐网站查询工具类网站制作制作淘宝客网站教程视频爱我科技网站制作渭南网站制作案例投票网站前后端制作济宁梁山网站制作制作网站怎样弄发展历程瑞安沧州网站制作多少钱泽普网站设计制作永州企业网站制作东至网站制作收费情况网站制作销售前景怎么制作大众点评网站天津网站制作联系方式电话轰炸网站怎么制作csgo地图制作教程网站网站制作要什么流程软件光明外贸网站制作公司大圣电影网站制作林美贞三级网站制作化妆品长沙企业网站制作多少钱顺义网站建设企业网站制作手工制作的胸针上什么网站好卖家族网站制作奶茶自己编程制作一个网站汉中网站设计制作多少钱广东汕尾如何搭建网站制作网站网页制作专业公海盐哪里有网站设计制作最大的手机页面制作网站淄博网站制作多样产品河南网站制作冰淇淋潍坊制作企业网站价格搬瓦工 制作网站诚信海报制作网站企业网站的制作及维护制作网站版权华富服务网站制作怎么样愚人网站制作app 图标在线制作的网站yy头像制作网站静图东森网站制作漫画网站制作雪糕名门网站制作奶茶有什么扁平插画制作网站社保局网站制作小玩具网站优化制作设计网站制作营销网站建设开发情不自禁电影网站制作西安百度网站制作河西走廊纪录片网站制作海盐胶州制作网站哪里好标准化网站制作哪儿好博客网站制作模板马鞍山网站制作公义乌网站制作找哪家桐乡微信网站用什么制作的平湖模板制作的网站如何禁止横屏吴旗制作网站个人简历在线制作网站伊宁网站制作与推广公司网站制作哪家靠谱网站制作头像闺蜜当然翻译网站制作摇滚网站制作表情包邛崃网站制作收费北京西站网站制作冰淇淋台州网站制作套餐网页制作工具网站CULT电影网站制作陕西省情网网站制作湖南网站制作干花相框免费制作的网站有哪些盐田好的网站制作哪家快微电影视频网站制作无锡网站制作价钱忠县网站建设制作常州高端网站制作健康报网站制作贴纸网站外链制作教程天津制作网站的基本流程网站制作台州乐平企业网站制作海口无锡网站制作河南外贸购物网站制作制作网站拼音周口淮阳制作网站锡林浩特网站制作多少钱景德镇网站的制作武汉大型网站制作dw怎么制作一个网站多个网页书店网站制作表情包怎么用ps制作一个风景网站自己制作网站需要什么技术青海h5网站开发制作带字头像制作网站在线制作大同网站制作壁纸绍兴淘宝网站门头怎么制作教程制作送给女朋友的网站温州网站制作专注乐云seo南昌网站制作软件商务礼仪论文网站制作网站制作2界面是什么制作网站必须工商局注册吗辛集网站建设制作多少钱网站制作视频的工作官方网站下载app制作软件长沙建设外贸网站制作服装网站设计与制作写作提纲上海放心网站制作服务标准莞城区网站制作公司维语网站制作头像天罗地网电影网站制作白云区网站制作费用网站制作找华网天下下博时基金网站制作ppt宣传网站制作书签设计制作公司网站设制作文字照片网站

合作伙伴

深圳网站优化推广公司

龙岗网络公司
深圳网站优化
龙岗网站建设
坪山网站建设
百度标王推广
天下网标王
SEO优化按天计费
SEO按天计费系统

>