计算机网络---万维网(WWW)
(一)WWW的概念与组成结构
万维网(World Wide Web,WWW)是一个分布式、联机式的信息存储空间,在这个空间中:一样有用的事物称为一样“资源”,并由一个全域“统一资源定位符”(URL)标识。这些资源通过超文本传输协议(HTTP)传送给使用者,而后者通过单击链接来获取资源。
万维网使用链接的方法能非常方便地从因特网上的一个站点访问另一个站点(即“链接到另一个站点”),从而主动地按需获取丰富的信息。超文本标记语言(HyperText Markup Language,HTML)使得万维网页面的设计者可以很方便地用一个超链接从本页面的某处链接到因特网上的任何一个万维网页面,并能够在自己的计算机屏幕上显示这些页面。
万维网的内核部分是由三个标准构成的:
统一资源定位符(URL):负责标识万维网上的各种文档,并使每个文档在整个万维网的
范围内具有唯一的标识符URL。超文本传输协议(HTTP):一个应用层协议,它使用TCP连接进行可靠的传输,HTTP是万维网客户程序和服务器程序之间交互所必须严格遵守的协议。
超文本标记语言(HTML):一种文档结构的标记语言,它使用一些约定的标记对页面上的各种信息(包括文字、声音、图像、视频等)、格式进行描述。
URL是对可以从因特网上得到的资源的位置和访问方法的一种简洁表示。URL相当于一个
文件名在网络范围的扩展。 URL 的一般形式是:<协议>://<主机>:<端口>/<路径>
<协议>指用什么协议来获取万维网文档,常见的协议有http、ftp等;<主机>是存放资源的主机在因特网中的域名或IP地址;<端口>和<路径>有时可省略。在URL中不区分大小写。
万维网以客户/服务器方式工作。浏览器是在用户主机上的万维网客户程序,而万维网文档所驻留的主机则运行服务器程序,这台主机称为万维网服务器。客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档。工作流程如下:
①Web用户使用浏览器(指定URL)与 Web 服务器建立连接,并发送浏览请求。
②Web 服务器把URL转换为文件路径,并返回信息给 Web浏览器。
③通信完成,关闭连接。
万维网是无数个网络站点和网页的集合,它们在一起构成了因特网最主要的部分(因特网也包括电子邮件、Usenet 和新闻组)。
(二)超文本传输协议(HTTP)
HTTP定义了浏览器(万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。从层次的角度看,HTTP是面向事务的(Transaction-oriented)应用层协议,它规定了在浏览器和服务器之间的请求和响应的格式与规则,是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。
Ⅰ HTTP 的操作过程
从协议执行过程来说,浏览器要访问WWW 服务器时,首先要完成对WWW 服务器的域名解析。一旦获得了服务器的 IP 地址,浏览器就通过 TCP 向服务器发送连接建立请求。
万维网的大致工作过程如图6.11所示。每个万维网站点都有一个服务器进程,它不断地监听TCP的端口80(默认),当监听到连接请求后便与浏览器建立TCP连接。然后,浏览器就向服务器发送请求获取某个 Web 页面的 HTTP请求。服务器收到请求后,将构建所请求Web页的必需信息,并通过HTTP 响应返回给浏览器。浏览器再将信息进行解释,然后将Web 页显示给用户。最后,TCP 连接释放。
在浏览器和服务器之间的请求与响应的交互,必须遵循规定的格式和规则,这些格式和规则就是HTTP。因此 HTTP有两类报文:请求报文(从Web客户端向Web服务器发送服务请求)和响应报文(从Web 服务器对 Web 客户端请求的回答).
用户单击鼠标后所发生的事件按顺序如下(以访问清华大学的网站为例):
① 浏览器分析链接指向页面的URL(http://www.tsinghua.edu.cn/chn/index.htm)。
② 浏览器向 DNS 请求解析 www.tsinghua.edu.cn 的 IP 地址.
③ 域名系统 DNS 解析出清华大学服务器的IP地址。
④ 浏览器与该服务器建立TCP连接(默认端口号为80)。
⑤ 浏览器发出 HTTP 请求:GET /chn/index.htm。
⑥ 服务器通过HTTP响应把文件index.htm发送给浏览器。
⑦ 释放TCP连接。
⑧ 浏览器解释文件index.htm,并将Web页显示给用户。
Ⅱ HTTP 的特点
HTTP使用TCP作为运输层协议,保证了数据的可靠传输。HTTP不必考虑数据在传输过程中被丢弃后又怎样被重传。但是,HTTP 本身是无连接的(务必注意)。换言之,虽然 HTTP使用了TCP连接,但通信的双方在交换HTTP报文之前不需要先建立HTTP连接。
HTTP 是无状态的。换言之,同一个客户第二次访问同一个服务器上的页面时,服务器的响应与第一次被访问时的相同。因为服务器并不记得曾经访问过的这个客户,也不记得为该客户曾经服务过多少次。
HTTP 的无状态特性简化了服务器的设计,使服务器更容易支持大量并发的HTTP 请求。在实际应用中,通常使用 Cookie 加数据库的方式来跟踪用户的活动(如记录用户最近浏览的商品等)。Cookie 的工作原理:当用户浏览某个使用 Cookie 的网站时,该网站服务器就为用户产生一个唯一的识别码,如“123456”,接着在给用户的响应报文中添加一个 Set-cookie 的首部行“Set cookie:123456”。用户收到响应后,就在它管理的特定Cookie 文件中添加这个服务器的主机名和 Cookie 识别码,当用户继续浏览这个网站时,会取出这个网站的识别码,并放入请求报文的Cookie 首部行“Cookie:123456”。服务器根据请求报文中的Cookie 识别码就能从数据库中查询到该用户的活动记录,进而执行一些个性化的工作,如根据用户的历史浏览记录向其推荐新产品等。
HTTP 既可以使用非持久连接,也可以使用持久连接(HTTP/1.1支持)。
对于非持久连接,每个网页元素对象(如JPEG图形、Flash等)的传输都需要单独建立一个TCP连接,如图6.12所示(第三次握手的报文段中捎带了客户对万维网文档的请求)。请求一个万维网文档所需的时间是该文档的传输时间(与文档大小成正比)加上两倍往返时间RTT(一个RTT用于TCP连接,另一个RTT用于请求和接收文档)。每个对象引用都导致2xRTT的开销,此外每次建立新的TCP连接都要分配缓存和变量,使万维网服务器的负担很重。
所谓持久连接,是指万维网服务器在发送响应后仍然保持这条连接,使同一个客户(浏览器)
和该服务器可以继续在这条连接上传送后续的HTTP请求和响应报文,如图6.13所示。
持久连接又分为非流水线和流水线两种方式。对于非流水线方式,客户在收到前一个响应后才能发出下一个请求,服务器发送完一个对象后,其TCP连接就处于空闲状态,浪费了服务器资源。HTTP/1.1 的默认方式是使用流水线的持久连接,这种情况下,客户每遇到一个对象引用就立即发出一个请求,因而客户可以逐个地连续发出对各个引用对象的请求。如果所有的请求和响应都是连续发送的,那么所有引用的对象共计经历1个RTT延迟,而不是像非流水线方式那样,每个引用都必须有 1 个 RTT 延迟。这种方式减少了 TCP 连接中的空闲时间,提高了效率。
Ⅲ HTTP的报文结构
HTTP是面向文本的(Text-Oriented),因此报文中的每个字段都是一些ASCII码串,并且每个字段的长度都是不确定的。有两类 HTTP 报文:
请求报文:从客户向服务器发送的请求报文,如图2.1 所示。
响应报文:从服务器到客户的回答,如图2.2所示。
HTTP请求报文和响应报文都由三个部分组成。从上两图可以看出,这两种报文格式的区别就是开始行不同。
开始行:用于区分是请求报文还是响应报文。在请求报文中的开始行称为请求行,而在响应报文中的开始行称为状态行。开始行的三个字段之间都以空格分隔,最后的“CR”和“LF”分别代表“回车”和“换行”。请求报文的“请求行”有三个内容:方法、请求资源的URL及 HTTP的版本。其中,“方法”是对所请求对象进行的操作,实际上,这些方法也就是一些命令。下表给出了HTTP请求报文中常用的几个方法。
HTTP 请求报文中常用的几个方法
方法(操作) 意义 GET 请求读取由URL标识的信息 HEAD 请求读取由 URL 标识的信息的首部 POST 给服务器添加信息(如注释) CONNECT 用于代理服务器
首部行:用来说明浏览器、服务器或报文主体的一些信息。首部可以有几行,但也可以不使用。
在每个首部行中都有首部字段名和它的值,每一行在结束的地方都要有“回车”和“换行”。整
个首部行结束时,还有一空行将首部行和后面的实体主体分开。
实体主体:在请求报文中一般不用这个字段,而在响应报文中也可能没有这个字段。
图6.15所示为使用 Wireshark 捕获的 HTTP请求报文的示例,下面对请求报文(图中下部分)进行分析。
根据帧的结构定义,在图6.15所示的以太网数据帧中,第1~6个字节为目的MAC地址(默认网关地址),即 00-0f-e2-3f-27-3f;第7~12个字节为本机 MAC 地址,即 00-27-13-67-73-8d;第13~14个字节 08~00为类型字段,表示上层使用的是IP数据报协议。第15~34个字节(共20B)为IP数据报的首部,其中第 27~30个字节为源IP地址,即 db-df-d2-70,转换成十进制为219.223.210.112;第31~34个字节为目的IP地址,即 71-69-4e-0a,转换成十进制为 113.105.78.10。第35~54个字节(共20B)为TCP报文段的首部。
从第55个字节开始才是TCP数据部分(阴影部分),即从应用层传递下来的数据(本例中即请求报文),GET对应请求行的方法,/face/20.gif对应请求行的URL,HTTP/1.1对应请求行的版本,左边数字是对应字符的 ASCII码,如'G'=0x47、'E'=0x45、'T'= 0x54 等。图6.15的请求报文中首部行字段内容的含义,建议读者自行了解,也可以自己动手抓包分析。
右下角开始的“…?'.' .gs…E..%..@.@..0…pgi”等是上面介绍过的第1~54个字节中对应的ASCII码字符,而这些字符在这里不代表任何意义。
常见应用层协议小结:
应用程序 | FTP数据连接 | FTP控制连接 | TELNET | SMTP | DNS | TFTP | HTTP | POP3 | SNMP |
使用协议 | TCP | TCP | TCP | TCP | UDP | UDP | TCP | TCP | UDP |
熟知端口号 | 20 | 21 | 23 | 25 | 53 | 69 | 80 | 110 | 161 |
计算机网络---万维网(WWW)相关推荐
- 计算机网络 万维网WWW
万维网概述 万维网 WWW (World Wide Web) 并非某种特殊的计算机网络. 万维网是一个大规模的.联机式的信息储藏所. 万维网用链接的方法能非常方便地从互联网上的一个站点访问另一个站点, ...
- 计算机网络——万维网WWW
文章目录 1.万维网概述 2.万维网文档 3.超文本传输协议HTTP 3.1 HTTP的连接方式 3.2 HTTP的报文格式 3.3使用Cookie在服务器上记录用户信息 4.万维网缓存和代理服务器 ...
- 计算机网络 万维网的文档
超文本标记语言 HTML 超文本标记语言 HTML 中的 Markup 的意思就是"设置标记". HTML 定义了许多用于排版的命令(即标签). HTML 把各种标签嵌入到万维网的 ...
- 计算机网络--万维网实验
[实验目的] 理解WWW站点. 理解上层应用与下层通信网络的关系. 掌握简单的WWW服务器. [实验平台] Cisco Packet Tracer [实验内容 ] (1)设计拓扑,网络共划分为3个网段 ...
- 万维网 WWW(计算机网络-应用层)
目录 万维网概述 超文本与超链接 万维网的工作方式 万维网必须解决的问题 统一资源定位符 URL URL 的一般形式 使用 HTTP 的 URL 动态万维网文档 活动万维网文档 B/S方式 万维网概述 ...
- 计算机网络复习资料(前六章谢希仁版)
计算机网络复习 作者:why will kill it 第一章 概述 internet和Internet的区别 以小写字母"i"开始的internet(互联网)是一个通用名词,它泛 ...
- 【计算机网络】应用层 : 总结 ( 网络应用模型 C/S P2P | 域名解析 DNS | 文件传输协议 FTP | 电子邮件 | 万维网 与 HTTP ) ★★★
文章目录 一.网络应用模型 ★ 二.域名解析过程 ★ 三.FTP 文件传输协议 四.电子邮件★ 五.万维网 和 HTTP 协议★ 一.网络应用模型 ★ 网络应用模型 : ① 客户 / 服务器 模型 ( ...
- 计算机网络(三十一)万维网WWW介绍
计算机网络(三十一)万维网WWW介绍 1.万维网概要 2.WWW基本概念 3.URI 4.HTML 5.HTTP 6.JavaScript.CGI .Cookie a.JavaScript b.CGI ...
- 【计算机网络】计算机网络、互联网、互连网、因特网、万维网
计算机网络 由若干结点(node)和连接这些结点的链路(link)组成 互联网 (Internet): 以大写字母 "I" 开始的Internet(互联网或因特网)是一个专用名词, ...
最新文章
- KGK荧光喷码机编程指南
- ubuntu下解决Ruby安装后缺少openssl的问题
- 微信编辑照片到底该不该增加滤镜功能?
- 沟通篇:产品经理如何与UI进行沟通
- 跟我一起写 Makefile(一)【转】
- Flash务实主义(五)——AS3的垃圾回收(转)
- FastDFS配置手册trackerstorage
- Kinect开发笔记之三Kinect开发环境配置详解
- Java 8函数式编程:延迟实例化
- HCIE-Security Day16:防火墙双机热备实验(四)防火墙直路部署,上行连接路由器(OSPF),下行连接交换机
- java list 排序_java 对list进行排序
- StringBuilder 使用方法
- Dojo笔记(较旧)
- 算法:求数组区间的和Range Sum Query - Immutable
- easyui框架中动态改变表头
- java怎么打hello,java hello word怎么打
- IPC网络高清摄像机基础知识1(IPC芯片市场分析以及“搅局者”华为海思 “来自2013年”)
- 为什么我的电脑显示rpc服务器不可用,电脑提示RPC服务器不可用解决办法
- 我的第一个WFF项目
- 2022年全网最全的Oracle数据库技术附练习题以及答案 循序渐进
热门文章
- 如何将音视频等文件转换成超链接格式
- Xbox One+Kinecet2.0,微软正在打造的体感操作系统
- 视频播放php,HTML 视频(Video)播放
- 【黑马程序员】 学习笔记 - Java新技术 - 反射
- 小米平板6什么时候上市?2023年参数配置发布时间最新消息一览
- 十一期间 极品飞车13:变速 通关了
- PHP网站设计 ---- 网盘(实现用户注册、登录,文件上传、下载、删除、查看等功能)
- iTunes Connect相关
- matlab与excel标准差不一样,matlab计算结果和excel完全不一样
- angularjs php上传文件,学习使用AngularJS文件上传控件_AngularJS