Http概述(一)

Http使用的是可靠的数据传输协议,因此即使数据来自地球的另一端,也能够确保数据在传输过程中不会被损坏或产生混乱。

这样用户在访问信息时就不用担心其完整性了。

web服务端与服务器是如何通信的

Web内容都是存储在web服务器上的,web服务器所使用的是http协议,因些经常会被称为Http服务器,http客户端发出请

求会话,它们会提供数据,客户端向服务器发送HTTP请求,服务器会在HTTP响应中回送请求的数据。如图

web资源

web服务器是web资源(web resource)的宿主,web资源的web内容的源头。最简单的web资源是web服务器

文件系统中的静态文件。这些文件可以包含任意内容:文本内容,HTML文件,图片等。

因特网上有数千种不同的数据类型,HTTP仔细地给每种要通过WEB传输的对象都打上了名为MIME类型(mime type)

的数据格式标签。当web浏览器从服务器中取回一个对象时,会去查看相关的MIME类型,看看它是否知道

应该如何处理这个对象。大多数浏览器可以处理数百种觉的对象类型:显示图片文件、解析并格式化HTML文件、

通过计算机声卡插入音频文件,或者运行外部插件软件来处理特殊格式的数据。

 MIME类型是一种文本标记,表示一种主要的对象类型和一个我写的子类型,中间由一条斜杠来分隔。如

  • HTML格式的文本文档由text/html类型来标记
  • 普通的ASCII文本由text/plain类型来标记
  • JPEG版本的图片为image/gpeg类型
  • GIF格式的图片为image/gif类型

常见的MIME类型有数百个,更多类型请查看 w3school

http://www.w3school.com.cn/media/media_mimeref.asp

每个web服务器资源都有一个名字,这样客户端就可以说明它们要找的资源是什么了,服务器资源名称被称为

统一资源标识符(Uniform Resource Identifier,URI)。

URI就像因特网上的身份证一样,在世界范围内唯一标识并定位信息资源

这个是是我博客上的一个图片资源URI

http://images.cnblogs.com/cnblogs_com/li-peng/578271/o_china.jpg

给出了URI,HTTP就可以解析出对象,URI有两种形式,分别称为URL和URN,

URL统一资源定位符是资源标识符最常见的形式。URL描述了一台特定服务器上某资源的特定位置。它们可以明确说明如何从一个

精确、固定的位置获取资源。

大部分URL都遵循一种标准格式,这种格式包含三个部分

  • URL的第一部分被称为方案(scheme)说明了访问资源所使用的协议类型。这部分通常就是HTTP协议(http://).
  • 第二部分给出了服务器的因特网地址(如:www.images.cnblogs.com)
  • 其余部分指定了Web服务器上的某个资源(如:cnblogs_com/li-peng/578271/o_china.jpg)

URN统一资源名。URN是作为特定内容的唯一名称使用的。它与当前的资源所在地无关。使用这些与位置无关的URN,就可以将资源四处搬移。通过URN,还可以用同一个名称能过多种网络协议来访问资源。

Urn还处于试验阶段,这里不详细介绍了

事务

一个http事务由一条请求命令和一个(从服务器发回客户端的)响应结果组成。这种通信是通过名为HTTP报文(http message)的格式化数据进行的

方法

HTTP支持几种不同的请求命令,这些命令被称为HTTP方法。每条HTTP请求报文都包含一个方法。这个方法会告诉服务器要执行什么动作(获取一个web页面、运行一个网关程序、删除一个文件等)。下面列出了五种常见的HTTP方法

GET

从服务器向客户端发送发送命名资源

PUT

将来自客户端的数据存储到一个命名的服务器资源中去

DELETE

从服务器中删除命名资源

POST

将客户端数据发送到一个服务器网关应用程序

HEAD

仅发送命名资源响应中的HTTP首部

这些方法在以后会详细讨论。

状态码

每条HTTP响应报文返加时都会携带一个状态码,状态码是一个三们数字的代码告知客户端请求是否成功,或者是否需要采取其他动作

下表列出了几种常用的状态码

200

OK,文档正确返回

302

Redirect(重定向),到其他地方去获取资源

404

Not Found(没找到)。无法找到这个资源

 详细http://www.w3school.com.cn/tags/html_ref_httpmessages.asp

Web页面中可以包含多个对象

应用程序完成一项任务时通常会发布多个HTTP事件。比如,Web浏览器会发布一系列HTTP事务来获取并显示一个包含了丰富图片的WEB页面。

浏览器会执行一个事务来获取描述页面布局的HTML“框架”,然后发布另外的HTTP事务来获取每个嵌入式图片、图像面板、java小程序,这些嵌入式资源甚至可能位于不同的服务器上。

复全Web页面要为每个嵌入式资源使用一个单独的事务

报文

先简单说一个HTTP请求和响应报文结构,以扣会深入研究HTTP报文

HTTP报文是由一行一行的简单字符串组成。HTTP报文都是纯文本,不是二进制代码,所以人们可以

很方便地对其进行读写。

从WEB客户端发往WEB服务器的HTTP报文称为请求报文(request message)从服务器发客户端的报文称为响应报文

(response message) ,此外没有其他类型的HTTP报文。HTTP请求和响应报文的格式很类似

HTTP报文包含以下三个部分

  • 起始行

报文的第一行就是起始行,在请求报文中用来说明要做什么,在响应报文中说明出现了什么情况

  • 首部字段

起始行后面有零个或多个首部字段。每个首部字段都包含一个名字和一个值,为了便于解析,两者之间用冒号(:)分隔。首部以一个空行结束。添加一个首部字段和添加新行一样简单

  • 主体

空行之后就是可选的报文主体了,其中包含了所有类型的数据。请求主体中包括了要发送给Web服务器的数据;响应主体中装载了要返回给客户端的数据。起始行和首部都是文本形式且都是结构化的而主休则不同,主休中可以 包含任意的二进制数据(比如图片、视频、软件程序)。当然,主体中也可以包含文本

请求的一个实例 

我们就打开ORACLE的主页http://www.oracle.com/cn/index.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏蘑菇先生的技术笔记

浅谈C#网络编程(一)

在现今软件开发中,网络编程是非常重要的一部分,本文简要介绍下网络编程的概念和实践。 Socket是一种网络编程接口,它是对传输层TCP、UDP通信协议的一层封...

13630
来自专栏Java成神之路

Java_异常_01_org.apache.commons.lang.exception.NestableRuntimeException

异常信息: The type org.apache.commons.lang.exception.NestableRuntimeException cannot...

9110
来自专栏前端杂货铺

服务端事件EventSource揭秘

服务端推 服务端推,指的是由服务器主动的向客户端发送消息(响应)。在应用层的HTTP协议实现中,“请求-响应”是一个round trip,它的起点来自客户端,因...

34350
来自专栏FreeBuf

解密攻击者如何利用D-Link路由器构建僵尸网络

在这篇文章中,我们将跟大家讨论我们在几台顶级D-Link路由器中发现的安全漏洞,受影响的路由器型号如下: -DIR890L -DIR885L -DIR895L...

27980
来自专栏backend技术总结

微信小程序demo开发总结

github: https://github.com/tencentyun/wafer-session-server

53840
来自专栏编程

小白爬虫之爬虫快跑

使用多线程时好像在目录切换的问题上存在问题,可以给线程加个锁试试 Hello 大家好!我又来了。 你是不是发现下载图片速度特别慢、难以忍受啊!对于这种问题一般解...

20480
来自专栏HansBug's Lab

【前端】Ubuntu16下nodejs+npm+vue环境配置

笔者最近在学习vue.js,不过一直都是在runoob上面各种尝试。今天笔者在本机(Ubuntu16.04)尝试部署了nodejs+npm+vue开发环境,接下...

38450
来自专栏Jackie技术随笔

基本TCP套接口编程

为了执行网络I/O,一个进程(无论是服务端还是客户端)必须做的第一件事情就是调用socket函数。

45260
来自专栏草根专栏

.NET Core TDD 前传: 编写易于测试的代码 -- 全局状态

全局状态, 也可以叫做应用程序状态, 它是一组变量, 这些变量维护着应用程序的高级状态.

10430
来自专栏日常工作总结

Redis运维总结

【持久化设置】 对于redis,有两种持久化方式:rdb和aof rdb:后台定期生成一个dump文件,保存当前redis内存中所有的数据 aof:类似日志,记...

25040

扫码关注云+社区

领取腾讯云代金券