万维网WWW与HTTP协议

概念

万维网(World Wide Web)用于访问遍布于Internet上的相互链接在一起的信息。使用链接的方法能非常方便地从因特网上的一个站点访问另一个站点,从而获取丰富的信息

WWW服务以客户/服务器方式工作

www工作方式.png

WWW服务包括三部分

• Web服务器端
• 客户端
• 通讯协议

Web服务器

Web服务器结构中规定了服务器的传输设定、信息传输格式及服务器本身的基本开放结构

客户端(Web浏览器)

WWW服务客户端的用户代理被称为Web浏览器,例如Microsoft IE、Netscape Navigator。其功能是向Web服务器发送资源查询请求,并将接收到的、从Web服务器下载的万维网文档进行解释和显示。在一个客户程序主窗口上显示出的万维网文档称为页面(page)

通讯协议(HTTP协议)

Web浏览器与Web服务器之间使用HTTP(HyperText Transfer Protocol,超文本传输协议)进行通讯传输。一个超文本由多个信息源链接成,利用一个链接可使用户找到另一个文档。HTTP是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到Web浏览器。HTTP定义了Web浏览器向Web服务器发送的请求Web对象的格式,以及Web对象在Internet上的传输方式

HTML语言

为了在世界范围内发布信息,需要一种能够被普遍理解的语言。万维网使用超文本标记语言HTML(Hypertext Markup Language)。HTML包括首部和主体,由多对标签来标识一个元素

HTML的格式

每个HTML文档由两个主要元素组成:首部和主体。首部包含文档的标题以及系统用来标识文档的一些其他信息。文档的主题是HTML文档的最主要的部分。主题又由若干个更小的元素组成,如段落(paragraph),表格(table)和列表(list)等

HTML示例
HTML示例.png

Internet中的网页分类

• 静态网页
• 动态网页
• 活动网页

常用的服务器端动态网页程序设计语言

• JSP
• ASP
• PHP

怎样标志分布在整个因特网上的HTML文档?

使用统一资源定位符URL(Uniform Resource Locator)来标志万维网上的各种文档。每一个文档在整个因特网的范围内具有唯一的标识符URL

URL由三部分组成

协议://域名[: 端口][/文档路径]
• 协议类型(HTTP、FTP、TELNET等)
• 网页所在及其的地址(域名或IP地址)
• 包含网页的文件名称
例:http://www.xjtu.edu.cn:80/index.htm

=======华丽分割线===============================================================

超文本传输协议HTTP

为了使超文本的链接能够高效率地完成,使用HTTP协议来传送信息。HTTP协议由一套从浏览器发往服务器的请求和一套从服务器发往浏览器的响应组成。http1.0、http1.1,非持久连接和持久连接。超文本传输协议定义了浏览器(万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。它是万维网上能够可靠地交换文件(包括文本,声音,图像等各种多媒体文件)的重要基础

消息头

消息头告诉对方这个消息是干什么的,消息体告诉对方怎么干。HTTP传输的消息也是这样规定的,每一个HTTP包都分为HTTP头和HTTP体两部分,后者是可选的,而前者是必须的

往返HTTP数据包

客户端给服务器发送的HTTP数据包
客户端给服务器发送的HTTP数据包.png

第一行、“GET”表示我们所使用的HTTP动作,其他可能的还有“POST”等,GET的消息没有消息体,而POST消息是有消息体的,消息体的内容就是要POST的数据。后面/simple.htm就是我们要请求的对象,之后HTTP1.1表示使用的是HTTP1.1协议。
第二行、表示我们所用的浏览器能接受的响应内容类型(Content-type)
第三四两行、是能接受的响应内容的语言和编码信息
第五行、显示出本机的相关系信息,包括浏览器类型、操作系统信息等,很多网站可以显示出你所使用的浏览器和操作系统版本,就是因为可以从这里获取到这些信息
第六行、表示我们所请求的主机和端口
第七行表示是否需要持久连接。Keep-Alive:告诉WEB服务器或者代理服务器,在完成本次请求的响应后,保持连接,等待本次连接的后续请求。如果浏览器请求保持连接,则该头部表明希望 WEB 服务器保持连接多长时间(秒),如Keep-Alive:300。Close:告诉WEB服务器或者代理服务器,在完成本次请求的响应后,断开连接,不要等待本次连接的后续请求了

服务器发回的完整HTTP消息
服务器发回的完整HTTP消息.png

我用“<CR>”来表示回车。可以看到,这个消息也是用空行切分成消息头和消息体两部分,消息体的部分正是我们前面写好的HTML代码<html><body>hello world</body></html>
第一行、“HTTP/1.1”也是表示所使用的协议,后面的“200 OK”是HTTP返回代码
第二行、表示这个服务器使用的WEB服务器软件,这里是IIS 5.1
第三行、是ASP.Net的一个附加提示,没什么实际用处
第四行、是处理此请求的时间
第五行、返回的消息的content-type,浏览器会根据它来决定如何处理消息体里面的内容,例如这里是text/html,那么浏览器就会启用HTML解析器来处理它,如果是image/jpeg,那么就会使用JPEG的解码器来处理
第九行、“Content-Length”表示消息体的长度,从空行以后的内容算起,以字节为单位,浏览器接收到它所指定的字节数的内容以后就会认为这个消息已经被完整接收了

特点

  1. 无连接的,但是因为使用了面向连接的TCP作为传输层协议,因此保证了数据的可靠传输。
  2. 无状态的,即同一个客户第二次访问同一个服务器上的页面时,假定服务器还没有把该页面更新的情况下,服务器
    的响应与第一次被访问时相同。因为服务器不记得曾经访问过的这个客户,也不记得为该客户曾经服务过多少次
  3. 基于请求和响应:由客户端发起请求,服务端响应
  4. 通信使用明文、请求和响应不会对通信方进行确认、无法保护数据的完整性
  5. 用的端口为 80端口

现有的被测对象大部分是网站(b/s全部使用的HTTP协议)和 客户端软件(c/s大部分是http协议)。现在大部分的性能测试的脚本都是通过模拟http请求的方式的实现的;安全测试的模拟很多时候也是需要通过http协议来绕过页面来完成的;对于功能性测试,通过http协议我们可以知道功能是否正常、信息发送是否正常、同时回复是否正常、以及如果出现错误,是什么造成的等等都可以通过http请求及响应来了解到,所以http协议对测试而言非常重要

http举例

http举例.png

http响应状态码和短语

位于(服务器→客户端)响应报文的第一行

分类描述

1** 信息,服务器收到请求,需要请求者继续执行操作
2** 成功,操作被成功接收并处理
3** 重定向,需要进一步的操作以完成请求
4** 客户端错误,请求包含语法错误或无法完成请求
5** 服务器错误,服务器在处理请求的过程中发生了错误

样例

• 200 OK:请求成功,被请求的对象在报文中
• 301 Moved Permanently:被请求的对象被移动过,新的位置在报文中有说明(Location:)
• 302 临时移动。与301类似。但资源只是临时被移动
• 304 访问过的网页资源被缓存到了客户端(状态码:200),再次访问该网页资源的时候,如果该网页资源在服务器上没有被更新的话,客户端缓存响应给客户,不需要服务器响应客户端,这时会出现该状态码
• 400 Bad Request:服务器不懂请求报文
• 401 请求要求用户的身份认证(需要登录才能访问)
• 403 服务器理解请求客户端的请求,但是拒绝执行此请求(没有权限访问)
• 404 Not Found:服务器上找不到请求的对象
• 505 HTTP Version Not Supported

Http常用方法

Http常用方法.png

怎么解决Http协议无状态协议?

利用Cookie,session和token

1.Cookie:

是保存在客户端(我们自己的本地电脑)的纯文本文件,比如txt文件。当我们使用自己的电脑通过浏览器进行访问网页的时候,服务器就会生成一个证书并返回给我的浏览器并写入我们的本地电脑。这个证书就是cookie。一般来说cookie都是服务器端写入客户端的纯文本文件。
Cookie工作原理:首先当我们访问某个网站时,服务器首先根据浏览器的编号生成一个cookie 返回给客户端。客户端下次再访问时就会将自己本地的cookie 加上url访问地址一同给服务器。服务器读出来以此来辨别用户的状态。cookie文件也可以用来存放用户的登录信息。只有第一次登录的时候访问数据库,只要设置了过期时间,下次再登录后直接读取cookie存储的登录信息,即可达到不登录就可以访问网页的效果。

2.Session:

是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。如果说Cookie机制是通过检查客户身上的“通行证”来确定客户身份的话,那么Session机制就是通过检查服务器上的“客户明细表”来确认客户身份。Session相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表就可以了。

用session只需要在客户端保存一个id,大量数据都保存在服务器端,如果全部用cookie,数据量大的客户端是没有那么多空间的。如果只用cookie不用session,那么账户信息全部保存在客户端,一旦被劫持,全部信息都会泄露

3.token:

是服务器端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。最简单的token组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,由token的前几位+盐以哈希算法压缩成一定长的十六进制字符串,可以防止恶意第三方拼接token请求服务器)。服务端不需要保存Token,只需要对Token中携带的信息进行验证即可

工作流程如下:
用户输入登陆凭据;
服务器验证凭据是否正确,然后返回一个经过签名的token;
客户端负责存储token,可以存在local storage,或者cookie中;
对服务器的请求带上这个token;
服务器对JWT进行解码,如果token有效,则处理该请求;
一旦用户登出,客户端销毁token

WWW的客户/服务器模型

在每个WEB服务器上有一个服务进程在TCP的80端口上监听由浏览器发来的建立连接的请求;在连接建立之后,浏览器和服务器之间使用HTTP协议进行信息传输;浏览器确定URL,通过DNS解析IP地址,建立TCP连接。向服务器发出HTTP的GET请求取回网页,释放连接,并显示网页中所有的文本。然后浏览器逐一取回网页中的图像

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容

  • 前言 前面水了两篇文章,下面开始介绍应用层另一个非常重要的协议——HTTP协议。 1 万维网 万维网WWW(Wor...
    HRADPX阅读 4,459评论 2 7
  • www (万维网缩写) 转载自百度百科 本词条由“科普中国”百科科学词条编写与应用工作项目 审核 。 WWW是环球...
    李仁平阅读 1,350评论 0 0
  • URL的一般形式:<协议>://<主机>:<端口>/<路径> 超文本传输协议HTTP 请求一个万维网文档所需时间:...
    恒星的背影阅读 319评论 0 0
  • 万维网起源 1983年3月欧洲粒子物理研究所为让其分布在世界各地的成员能够方便的交流Tim Berners Lee...
    晨起不知露重阅读 3,314评论 0 3
  • www (万维网缩写) 转载自百度百科 本词条由“科普中国”百科科学词条编写与应用工作项目 审核 。 WWW是环球...
    一直以来都很好阅读 1,477评论 0 1