1、 1 王青 大学城中山大学软学院 广州,500006 现代 Web 程序设计 (未完成样稿) 作者 王青 李文军 潘茂林 徐亚波 2 3 i 未完稿前言 如今的时代,是互联网的时代;如今的互联网,Web 是最主要的应用。新闻站 点、电子商务、论坛社区、信息服务、在线影视、社交网络这些大家喜闻乐见、耳 熟能详的应用都是 Web 应用,这些应用丰富了我们的生活,给我们带来了前所未有 的便利;也从根本上改变着我们的生产生活方式与社会组织结构,引领我们步入信 息时代的新纪元。 Web 程序设计在这样的时代背景下,日渐重要。作为 Web 的重要技术发源地 和策动者,Google 公司支持中山大学软件学
2、院建设了 SE805 Web 2.0 Programming 课程,推广 Web 技术和促进 Web 技术人才的培养。有别于目前已有课程,该课程 将产业界最新的 Web 技术带入课堂,以“Learning by Doing”的理念,引导学生快 速学习各种 Web 技术。该课程于 2010 年春季在中山大学软件学院开设,并受到了 学生的喜爱和好评,取得了良好的教学成果。 2010 年 7 月,基于 SE805 成功的教学实践,在 Google 公司的资助下,中山大 学软件学院成功举办了“Web 2.0 程序设计课程教学研讨会” 。研讨会上,来自北京 大学、上海交通大学等 22 所高等学校的教师参
3、加了师资培训和教学研讨,并对 SE805 课程给予了高度评价。 鉴于 SE805课程内容翔实、反映了目前 Web 程序设计的最新进展和发展方向, Google 公司经过认真的评估和考查,于 2010 年9 月在 Google Code University 上发 布了 SE805 课程课件 ,与斯坦福大学、普林斯顿大学、华盛顿大学等国际名校一 起全球分享课程。这也是来自中国的大学第一次在 Google Code University 上发布课 程。 Google公司还进一步于2010年11月授予中山大学软件学院SE805课程组 “2010 年度 Google Research Award”奖项
4、,鼓励课程组再接再厉,编写教材,举办课程师 资培训、教学研讨,建立课程网上社区,将此课程进一步推广。 本教材正式这一工作的一部分,也是整个 SE805 Web 2.0 Programming 课程丰 富资源的重要组成部分。这些资源包括教材,详尽的中英文课程讲义、实验、作业、 课程设计等等,还包括历次授课作业、课程设计、教学探讨的积累与便捷高效的 MyWeb2.0 教学协同应用。这些丰富资源以网上社区的形式存在,通过Wiki、BBS、 Web 应用的方式提供给本书读者和广大师生使用。 本教材目前正在撰写中,计划写作 4 部分共 15 章,目前只初步完成了第一部 分的 4 章。粗陋浅薄之处,恳请请
5、各位前辈方家提出宝贵意见。 i 概要目录 第一部分 Web 程序设计基础 第 1章 互联网与 Web 第 2章 HTML基础知识 第 3章 层叠样式表 CSS入门 第 4章 网页布局技术 第二部分 服务器简单编程 第 5章 PHP语言快速入门 第 6章 HTML表单 第三部分 浏览器编程基础 第 7章 交互式网页与 JAVASCRIPT 第 8章 DOM概述 第 9章 高级 WEB客户端编程技术 第四部分 现代Web编程技术 第 10章 AJAX技术 第 11章 WEB SERVICES 与 MASHUP 第 12章 富客户端技术 第 13章 WEB安全与 WEB工程 第 14章 WEB技术发
6、展趋势 第 15章 WEB创业与运营 ii i 目录 第 1 章 互联网与 WEB - 3 - 1.1 互联网 - 4 - 1.1.1 计算机网络 - 4 - 1.1.2 互联网发展简史 - 5 - 1.1.3 技术组织 - 6 - 1.1.4 技术堆栈 - 7 - 自测题 - 14 - 1.2 WEB(WWW) - 14 - 1.2.1 客户端与服务器 - 15 - 1.2.2 URL 与DNS - 15 - 1.2.3 HTTP 协议 - 19 - 自测题 - 23 - 1.3 现代 WEB:WEB 2.0、云计算和HTML5 - 23 - 1.3.1 WEB 2.0 - 24 - 1.3
7、.2 云计算 - 24 - 1.3.3 HTML5 - 25 - 小结 - 27 - 练习题 - 28 - 进一步阅读 - 28 - 第 2 章 HTML基础知识 - 30 - 2.1 案例:晓鸣的登山俱乐部 - 31 - 2.2 HTML简介 - 31 - 2.2.1 历史 - 32 - 2.2.2 HTML 语言目的与特点 - 37 - 2.2.3 HTML 文档基本结构 - 39 - 自测题 - 41 - 2.3 基本 HTML 元素 - 41 - 2.3.1 块元素 - 42 - 自测题 - 51 - 2.3.2 行内元素 - 52 - 自测题 - 60 - 2.4 更多 HTML 元
8、素 - 60 - 2.4.1 列表 - 61 - 现代Web程序设计 ii 2.4.2 表格 - 65 - 2.4.3 图表 - 68 - 2.4.4 引用元素 - 69 - 2.4.5 时间和地址 - 72 - 2.4.6 特殊内容元素 - 75 - 自测题 - 78 - 2.4.7 多媒体 HTML 元素 - 79 - 自测题 - 92 - 2.5 其它 HTML 元素 - 93 - 2.5.1 编辑状况元素 - 93 - 2.5.2 特定对象元素 - 95 - 2.5.3 文字方向元素 - 96 - 自测题 - 99 - 2.6 HTML元素公共属性 - 99 - 2.6.1 基本属性(
9、ID、CLASS、STYLE、TITLE) - 99 - 2.6.2 导航属性(ACCESSKEY、TABINDEX) - 102 - 2.6.3 特性开关属性(CONTENTEDITABLE、DRAGGABLE、SPELLCHECK、 HIDDEN) - 105 - 2.6.4 语种排版属性(LANG、DIR) - 107 - 2.6.5 自定义数据属性(DATA-*) - 109 - 自测题 - 110 - 2.7 网页元数据(META元素) - 110 - 2.7.1 META元素属性 - 111 - 2.7.2 CHARSET属性 - 111 - 2.7.3 NAME、CONTENT属
10、性对 - 112 - 2.7.4 HTTP-EQUIV、CONTENT属性对 - 112 - 自测题 - 113 - 2.8 WEB标准 - 114 - 2.8.1 标准的意义 - 115 - 2.8.2 达标验证 - 116 - 2.8.3 HTML5 标识 - 116 - 自测题 - 117 - 案例研究:会当凌绝顶 - 117 - 自测题 - 119 - 小结 - 120 - 练习题 - 120 - 进一步阅读 - 120 - 第1章 互联网与Web 3 第 1 章 互联网与 WEB 本章重点: Web 与互联网 Web 技术架构 TCP/IP URL 与 DNS HTTP Web 2.
11、0 现代Web程序设计 4 Web 是互联网(Internet)上最主要的应用。它有赖于互联网提供通信服务, 将网页传送到用户。因此,了解互联网的基本结构和工作方式,对于学习 Web 编程 很重要。本章将简要回顾互联网的发展史,讲述其技术构成和工作原理。同时,为 了更好地学习 Web 程序设计,本章还将简要讲述各种与 Web 程序设计有关的互联 网通信协议,包括:TCP/IP、URL、DNS和 HTTP(S)等 1 。 底层知识与开发调试 Web程序员必须清楚 Web服务器如何产生网页, 该网页又如何通过 Internet传 送到用户浏览器,又是如何被浏览器解析和显示。只有弄清楚了这些底层知识
12、,Web 程序员才能够理解开发调试中可能遇到的相关问题,例如,各种浏览器消息,包括: 连接超时、服务器内部错误等等,才能够正确应对和排除。 1.1 互联网 毫无疑问,互联网(Internet)是人类 21 世纪最伟大的发明之一。从人类文明 发展史来看,这一发明的意义不亚于文字和印刷术的发明。Internet 英文原文可以 从字面直译为“互联 网“或者“网际网“,它是由全世界范围内数量庞大的各种网络通 过互联网协议(TCP/IP 协议族)连接而成的“网络的网络“,它使得我们能够以前所 未有的高速度和低成本在全世界范围内传播信息和传输数据。 Internet首字母大小写的区别: 首字母小写英文的
13、internet与首字母大写 的英文 Internet 意义不同,前者泛指任何由多个网络连接而成的网络,而后者则 特指全世界独一无二的互联网。 1.1.1 计算机网络 多个计算机(计算设备)之间通过特定的通信渠道连接在一起,互相传递消息, 共享数据和计算资源,就构成了计算机网络,简称网络。这里的通信渠道可以是有 线的连接,例如我们经常可以看到的“网线” 2 ,也可是无线的连接,例如我们常常 使用的无线电波。这些网络最基础的设备间连接常常被称为物理连接。 1网络协议内容庞杂, 本章的各种协议均未全面讲述, 而仅仅涉及了与 Web 编程相关的内容。 2最常见的是无屏蔽双绞线(UTP,Unshiel
14、ded Twisted Pair) ,参考: http:/ 第1章 互联网与Web 5 通过物理连接,网络设备间能够传递物理信号,例如:电脉冲、载波信号等等。 通过这些信号,设备就可以传递数据和信息。当然,前提是传递、通信的双方必须 就信号的编码和解读、和信号传递的方式(开始、结束、中断、重发、取消等等) , 达成一致。这种通信双方都遵循的约定,称为通信协议,简称协议。显然,协议是 网络的基础。使用不同协议就构成了不同类型的网络,同一个网络内的设备则遵循 相同的协议。 网络通信有着一系列复杂的问题,这些问题常常被分为不同层次,通过不同的 协议来解决。简单地说,设备间物理连接的问题被归结到物理层
15、(Physical Layer) , 由物理层协议和标准解决。设备间数据传递的问题被归结到数据链路层(Data Link Layer) ,由数据链路层的协议解决(参见图 12) 。 1.1.2 互联网发展简史 一个网络能够在网络内部的设备间分享数据和计算资源,但却无法与外界、与 其它网络的设备分享。为了在多个网络之间分享数据和计算资源,人们创造了网络 的网络(internet) 。互联网(Interneet)就是网络的网络中的最大、最成功的一个, 它遍及全世界,使得所有连接到它的计算机和其它计算设备 3 ,包括:智能手机、移 动终端、智能设备等等,都能够快捷地分享信息和使用信息服务。 互联网不
16、是单纯的网络,而是网络的网络。 互联网是一系列技术发展演进的结果。它的雏形是上世纪 60 年代美国国防部 远景研究规划局(Advanced Research Projects Agency)为军事实验用而建立的网络, 名为 ARPANET(阿帕网) 。不同于其它简单的计算机网络,ARPANET 的设计目标是 当网络中的一部分因战争原因遭到破坏时,其余部分仍能正常运行。 包交换技术(packet switching) :ARPANET基于包交换技术是互联网发展的第一 个里程碑。包交换技术由麻省理工学院 Kleinrock 教授1961 年提出 4 ,与之前的电路 交换技术相比,它在技术上更为便捷
17、,经济上更加可行,并由此产生了跨网络通信 的可能。 互联网信息传输协议(TCP/IP) :互联网发展中的第二个里程碑是互联网信息传 输协议(TCP/IP) ,它实现了跨网络通信。网络在类型上有多种,诸如卫星传输网络、 地面无线电传输网络等等。不同网络使用不同的物理层和数据链路层协议,信息传 输在网络内部没有问题,而要跨越网络,在不同类型的网络之间进行,则会遭遇很3准确地说,是计算机和设备接入互联网服务商的网络,而这个网络通过互联网技术接入互 联网。 4L. Kleinrock, “Information Flow in Large Communication Nets,” RLE Quarte
18、rly Progress Report, July 1961. 现代Web程序设计 6 大技术困难。 为解决此问题, 美国国防部先进项目研究局 (DARPA, Defense Advanced Research Projects Agency)研究员 Kahn 在 1972 年提出了开放式网络架构思想,并根 据这一思想,在包交换技术的基础上,设计出沿用至今的 TCP/IP 协议。80 年代初期 ARPANET及其后继, 美国国家科学基金会网络 (NSFNET, National Science Foundation NET)开始使用 TCP/IP。 互联网公共商业化:80 年代中期,NSFNE
19、T 向社会开放,商业公司和其它组织 开始接入,NSFNET 就此成为了第一个全世界范围的公共网际网。90 年代以后,随 着大量商业公司和其它组织的加入,NSFNET 逐渐从科研网络转型成为商业网络,成 为了现在的互联网。 Web 出现:互联网发展的第三个里程碑事件是 Web(又名WWW,World Wide Web)技术。早期的互联网应用十分简单粗糙,在互联网上传输数据信息或者查询 资料需要进行许多复杂的指令操作,这些操作只有对电脑非常了解的技术人员才能 熟练运用,因而当时“上网”只局限在高级技术研究人员这一狭小的范围内。 1989 年欧洲原子能研究机构(CERN,European Organ
20、ization for Nuclear Research)的物理 和计算机学家Tim BernersLee 发明了 Web。Web 通过超文本(Hypertext)把分布 在网上的文件链接在一起,并通过简单高效的 HTTP 协议(Hypertext Transfer Protocol)传递这些文件。Web 使得普通互联网用户无须掌握复杂的计算机指令和 操作,就可以方便地访问互联网上大量的文件,寻找自己需要的信息。这一关键应 用(killer application)使得互联网迅速步出实验室,走入人们的日常生活。 互联网和 Web 快速发展:Web 出现之后,能渲染图片的浏览器(Mosaic 5
21、 )的 出现、现代搜索引擎(Google 6 )的问世、Web 2.0技术、HTML5 技术(参见 1.3 节) , 一波又一波的技术发明,不断推动着 Web 和互联网的发展和扩张,使得它很快成为 了人类社会有史以来最为重要的信息载体,并且持续高速发展、引领着信息革命的 浪潮。 更多互联网的发展历史,参见进一步阅读当中的互联网发展史。 1.1.3 技术组织 互联网能够迅速发展、遍及全世界,根本原因在于它是开放的、自由的。技术 上,互联网是开放的。任何符合互联网通信协议和技术标准的设备都能够接入互联 网。使用时,互联网是自由的,任何符合互联网协议和标准设备都可以随时接入互 联网,与互联网上其它终
22、端通信;同样,它们也可以自由离开互联网,而不受限制。 互联网的运营管理十分特殊。事实上,并没有一个组织或者机构来集中运营、 控制互联网。所有互联网设备、网络、应用和运营商都基于开放的标准和协议来实 现互联互通;所有互联网用户都可以自由选择自己的服务商来接入互联网。 另一方面,互联网标准和协议作为互联网的技术基础,需要一些技术组织来管 理。这些组织负责公开征集、讨论、草拟、审定、颁布各种互联网标准和协议,并51993年,http:/www.ncsa.illinois.edu/Projects/mosaic.html。 61998年,http:/ 第1章 互联网与Web 7 在发展过程中予以维护、
23、更新和升级。这些维护和管理互联网标准的国际技术组织 包括: IETF (Internet Engineering Task Force) 7 , ICANN (Internet Corporation for Assigned Names and Numbers) 8 ,和 W3C(World Wide Web Consortium) 9 。其中,IETF 负责 互联网络通信协议,ICANN 负责在全球范围内协调和管理域名地址,W3C负责各种 Web 语言与技术的标准。 图 1 - 1各互联网国际组织 lo g o 1.1.4 技术堆栈 互联网技术采用层次化技术架构(Layered Archi
24、tecture) 。国际标准化组织 (ISO,International Organization for Standardization) 10 提出的开放系统互 联参考模型(OSI,Open Systems Interconnection reference model) 11 ,和互联 网实际使用的 TCP/IP 协议族都属于这种架构。在典型的互联网应用中,例如:Web (服务器 + 浏览器) 、互联网即时通讯工具(QQ、MSN)等等,应用程序所发送的 数据会经由多个不同层次,最终抵达目的地。按照互联网的实际状况,这些层次和 协议和标准包括: 应用层:包括 OSI 模型中的会话(Sess
25、ion) 、表示(Presentation)和应 用(Application)三层。这一层的协议保障互联网应用的客户端和服务 端之间,能够正确地发送、接收、解读数据。例如:用于 Web 的 HTTP 协 议,用于电子邮件的 POP3/IMAP 协议,以及 SSH、FTP 协议等等; 传输层/网络层(互联网层) :这一层使得不同网络的设备之间能够通信和 传递数据。协议包括:IP 协议、TCP协议、UDP 协议等等; 计算机网络层:这一层将独立的计算机和设备组成计算机网络。包括: 数据链路层:使得同一网络的设备之间能够通信。例如:以太网 (Ethernet)协议、WiFi协议、DSL的 PPP 协
26、议等等; 物理层:在物理层面上实现网络设备间的连接。例如:双绞线、光纤 线路、调制解调器、无线电波收发器等等。 7http:/www.ietf.org/ 8http:/www.icann.org/ 9http:/www.w3.org/ 10http:/www.iso.org/ 11http:/standards.iso.org/ittf/PubliclyAvailableStandards/s020269_ISO_IEC_74981_1994(E).zip 现代Web程序设计 8 图 1 - 2 O S I参考模型与互联网技术层次 12(最底层淡黄色区域计算机网络技术的范围,中间淡紫色区域是互
27、联网技术的范围,最 上面淡蓝色区域是应用技术的范围) 互联网是网络的网络,解决的网络之间互联的问题。狭义的互联网技术并没有 涵盖图 12中所有层次,而仅仅包括图中间淡紫色部分,是一种网络层与传输层的 技术,具体而言就是 TCP/IP 协议族技术。 如何在一个网络内部实现通信,是计算机网络的问题(数据链路层和物理层) , 不是互联网技术关心的问题。同样,如何利用互联网的通信能力,构造各种应用, 是应用层的问题,也不是互联网技术关心的问题。 Web 程序设计与网络程序设计:Web 程序设计编程解决 Web(应用层)的问 题,开发网站和 Web应用。网络程序设计编程解决应用层之下各层次的问题,编程
28、实现各类通信协议。 a) IP 协议 互联网跨越网络, 实现在两个不同网络的设备间通信, 首先需要解决地址问题。12基于http:/ 中 OSI 参考模型修改。 第1章 互联网与Web 9 如同大家的通信地址,所有接入互联网的设备都需要一个全互联网唯一的地址,这 样才能够区分出不同的设备, 通信才有唯一、 确定的目的地。 互联网协议 (IP, Internet Protocol)定义了这一地址,即 IP 地址。互联网协议定义了 IP 地址的格式和分配方 法,此外,还定义了 IP 数据包(Packet)的格式,用以统一通信双方对所传输数据 的理解和协调双方的通信操作。 IP地址(IP Addre
29、ss)是互联网设备在互联网上唯一的标识。互联网设备和应用 通过IP地址来标明自己的身份和标识通信的对象。 现行的IP地址有IPv4 (version 4, 第四版)和 IPv6 (version 6,第六版)两个不同的版本。 IPv4 中 IP 地址是一个 32 位 2 进制数,为了便于人们阅读,常将其分成 4 段, 每段的二进制数用对应的十进制数表示,整个地址也就表示为以小数点分隔的 4个 0 255 的 10 进制数,参见图 13。 图 1 - 3 I P v 4地址 使用 IPv4,互联网理论上可容纳的设备数为 2 32 个 13 ,也就是四十多亿个。随着 互联网扩张,大量设备迅速接入,
30、包括手机、各种智能家电、各种智能传感器等等, 这使得 IPv4 的容量很快会被耗尽(参考进一步阅读中的 IPv4地址耗尽问题) 。 IPV6:为了应对这一问题,1998 年 IETF 颁布了 IPv6。IPv6 用一个 128位 2进制 数做地址,可用容量是 ipv4 的 2 96 倍,多到可以为地球上每一粒沙子分配一个地址, 近期内应该完全够用 14 。 13准确地说,是互联网直接可见设备。不包括使用私有地址(private address) ,通过网关 (Gateway)接入互联网的内网设备。参考进一步阅读 1、2。 14假设宇宙有 40亿个银河、每个银河有 40亿个星球,每个星球有 40
31、亿人口,那IPv6所编 出的网址,可让全宇宙每个人分配到 40亿个网址。 现代Web程序设计 10 图 1 - 4 I P v 6地址 15为了便于阅读,IPv6 地址常常表示成用“:”冒号分隔的 8 个 4 位 16 进制数, 其中连续出现的多个零可以缩写成“:” ,参见图 14。 互联网上所有提供各种应用服务(Web 服务、FTP 服务、POP3 服务等等)的服 务器都有自己的 IP 地址。同样,每个接入互联网计算机,也都有自己的 IP 地址。 访问 16 网站,可以看到目前所用计算机在互联网上的 IP 地址(公网 IP) 。此外,通过操作系统提供的命令 ipconfig(Windows
32、)或 者 ifconfig(Mac/Linux) , 也可以得到目前计算机的地址(内网 IP) 。 环回地址 127.0.0.1 (IPv4) 和:1 (IPv6) 是个特殊的 IP地址, 称为环回地址 (loopback) , 指向当前设备本身,操作系统一般还配置了这个地址的特定域名为 localhost。因 此,在开发调试 Web程序时,我们常常使用环回地址或其域名,访问部署在本机的 Web服务器。 IP数据包(IP Packet) :尽管不同通信协议对传输的数据单元称呼不同,包括数 据帧(Frame) 、数据包(Packet) 、数据报(Datagram) 、数据段(Segment) 、
33、消息 (Message)等等;这些数据单元大都有相似的格式都有头部(Header)和数据 (Data) 。头部内常常含有说明该数据单元的元信息 17 ,例如:发送者、接受者等等, 同时还有一些用以协同通信双方行为的控制信息。数据部分则用以装载真正要传输 的内容。 IP协议定义了 IP数据包(Packet)的格式,表 11 给出了 Ipv4 的数据包格式。15翻译改编自 http:/en.wikipedia.org/wiki/Ipv6 16http:/ 17元信息(Meta Information)指描述信息的信息,例如,对于一则新闻,其撰写作者、使用 语言等信息就是这则新闻的元信息。 第1章
34、互联网与Web 11 ipv6 的数据包格式请参考进一步阅读中的 IETF IPv6 协议。 表 1 - 1 IPv4数据包格式 18Heade r Bit offset 03 47 813 14-15 1618 1931 0 Version Header Length Differentiated Services Code Point Explicit Congestion Notification Total Length 32 Identification Flags Fragment Offset 64 Time to Live Protocol Header Checksum 96
35、 Source IP Address 128 Destination IP Address 160 Options ( if Header Length5 ) Data 160 or 192+ Data 其它IP层协议: 按照 OSI 技术架构层次, IP协议属于网络层协议 (参见图 12) 。 在这一层上,互联网还有其它协议,包括:ICMP 、 ICMPv6、 IGMP、 IPsec 等等。 IP协议和这些协议常常被人们一起称为 IP协议族(IP Suite) 。它们构成了互联网的 网络层标准。 网络层解决了互联网设备地址编码和分配问题,为互联网数据传输提供了技术 基础,使得互联网设备和应用
36、能够将数据封装在 IP数据包内,通过互联网,跨越网 络,发送到在另一个网络中的目的设备和应用。 路由(routing) 互联网通信常常将数据包跨越多个网络传递到目的地,选择传递路径的过程叫 做路由,负责选择路由的设备叫做路由器(router) 。 路由器连接多个不同的网络,当某个网络中的设备要向其它网络中的设备发送 IP 数据包时,路由器决定数据包下一站传递到哪里。具体而言,路由器按照 IP 数 据包头部中目的地的 IP 地址(Destination IP Address,参见表 11) ,判断目的 地所在网络,进而做出选择。如果目的地与本路由器相连,则直接把数据包发送给 目的地;否则,路由器
37、根据路由表,将其转发给下一个负责的路由器。 由此可见,互联网的通信有赖于路由器选定路由,在不同网络间的转发。因此, 互联网也可以说是由路由器连接而成的网络的网络。 更多路由与路由器知识,参考章末进一步阅读。 但是, 值得注意的是, 网络层并未真正解决互联网设备和应用通信的所有问题。 例如:以下问题网络层无法解决: 1. 数据丢失:传输中,由于设备故障等原因,造成数据包丢失。 2. 数据损坏:因为设备故障等原因,接收者收到的数据,可能在传输过程中 被改变或损坏,不同于发送者发送的数据。 18参见 http:/en.wikipedia.org/wiki/Ipv4 现代Web程序设计 12 3. 重
38、复:接收者两次甚至多次重复收到来自发送者的同一个数据包。 4. 乱序: 接收者收到多个数据包, 但是其接收顺序不同于发送者的发送顺序。 互联网中,上述问题由传输层负责解决。具体而言,由 TCP/UDP 等协议来解决。 b) TCP 协议 TCP (Transmission Control Protocol,传输控制协议)是互联网传输层的协议之 一(参见图 12) 。TCP 是一种有连接的通信方式,它解决了 a)中 IP协议尚未解决的 通信问题,提供了端到端的可靠、无数据丢失和损坏的、有序的通信渠道。 有连接与无连接 有连接通信指通信双方在正式通信前,建立专用通信渠道,保障通信可靠和数 据完整与
39、有序。例如,我们平时打电话就是这样的通信方式。 无连接通信则相反,通信双方不需要在通信前接触,也不需要建立专用通信渠 道。通信网只是尽力将数据传输给接收方,但即不保证传达,也不保证数据到达的 次序与发送时一致。例如,邮政信件就是这样的通信方式。 TCP 数据段(TCP Segment) :TCP 协议定义了 TCP 数据段的格式。实践中,TCP 协议 19 接受来自发送者应用层的数据, 将他们分割成段后加上相应的头部 (Header) , 形成 TCP 数据段。TCP 数据段头部给出了进行传输控制所需要的信息(参见 表 12) 。发送者的 TCP 协议将封装好的数据段作为数据交给 IP协议负责
40、处理, 发送给接收者。接收者的 IP 协议收到 IP 数据包后,将数据取出交给 TCP 协议处理 (参考图 15) 。其 TCP 协议进而根据收到的 TCP 数据段头部的控制信息,判断是否 出现了各种通信问题,并做出相应的反馈和操作,与发送者的 TCP 协议协同,最终 实现可靠有序的通信。 表 1 - 2 TCP 数据段格式 20He ad er Bit offs et 0 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 0 Sou
41、rce port Destination port 32 Sequence number 64 Acknowledgment number (if ACK set) 96 Data offset Reserved C E U A P R S F Window Size 19这里,真正完成工作的是实现了 TCP 协议的软件。 20参见 http:/en.wikipedia.org/wiki/Transmission_Control_Protocol 第1章 互联网与Web 13 W C R C S S Y I R E G K H T N N 128 Checksum Urgent pointer
42、 (if URG set) 160 Options (if Data Offset5) padding . . Da ta Data 图 1 - 5 I P 、TCP 头部 端口(Port) :互联网上,一台设备可能同时运行多个互联网应用。例如,一个 服务器同时提供 Web 服务和 FTP 服务;又如,一个互联网用户同时运行电子邮件客 户端和使用浏览器浏览 Web。这些应用都需要通过互联网进行通信,然而,IP地址 却仅仅能够标识设备本身,而无法区分在同一设备上运行的多个应用。为了解决这 个问题,传输层协议引入了端口(参见 表 12)概念。端口是一个整数(0 65535) ,用以标识同一设备上的
43、不同应用。 这样,多个应用就可以复用同一个 IP地址,并通过端口来区分彼此。 TCP 端口分为 3 类,从0 到 1023 的端口为熟知端口(Well Known Ports) ,1024 到 49151 为注册端口 (Registered Ports) , 49152 到 65535 为动态/私有端口 (Dynamic and/or Private Ports) 。熟知端口和注册端口由 ICANN 管理,为各类常见和通用的应 用协议和程序所使用, 表 13 部分常见应用协议端口列出了部分常见应用所使用的 端口。动态/私有端口可由应用程序自行灵活使用。 (参考进一步阅读中 TCP 端口号 分配
44、) 表 1 - 3 部分常见应用协议端口 端口 协议;应用 80 HTTP 协议;Web 应用 21 FTP 22 SSH(Secured Shell,安全终端) 25,110 SMTP,POP3;电子邮件 443 HTTPS(Secured Web,安全 Web)现代Web程序设计 14 TCP/IP协议族: 传输层是互联网层次化体系结构中直接和应用程序接口的部分。 互联网应用程序利用传输层协议实现跨越互联网的通信,例如,Web 应用的 HTTP 协议就使用 TCP 协议来发送 HTTP 消息。 TCP 协议是最常用的互联网传输协议,它总是运行在 IP协议之上,二者构成了 互联网最主要核心技
45、术,因此人们常常把将所有互联网技术协议称为 TCP/IP 协议族 (TCP/IP Suite) 。 互联网传输层的另外一种重要协议是 UDP(User Datagram Protocol,用户数据 报协议) 。不同于 TCP 提供端到端有连接的通信,UDP提供一种无连接的通信方式。 UDP仅仅用数据校验和(Checksum)来检查数据完整性,而不能保证数据可靠、按 顺序地到达接收者。相对于 TCP,UDP 的通信传输开销更小。因此,UDP 常常用于 数据完整性要求不高,而实时性要求高的应用,例如:各种即时通讯软件(如:QQ、 MSN) 、网上流媒体应用等等。 互联网传输层还存在其它协议,包括:
46、TLS/SSL、UDP、DCCP、SCTP、RSVP、ECN 等等。 自测题 1. 互联网(Internet)和 Web(WWW,World Wide Web)相同吗,它们是什么关 系? 2. 那个互联网组织负责网页和各种 Web 语言的标准? 3. 互联网的技术架构是什么类型,由哪些部分构成? 4. IP协议解决了什么问题? 5. TCP 协议解决了什么问题? 6. 下列哪些是合法的 IP地址? a) b) 154.36.27.11 c) 123.456.789.10 d) 241.33.27 e) 0.0.0.0 7. 你计算机的 IP地址是什么,它是内网地址,还是公网地址? 8. 什么
47、是有连接,什么是无连接,列举两个相应的通信协议。 1.2 Web(WWW) Web,World Wide Web,WWW,中文也称为“万维网” 。Web 是全球范围内网 页(Web Page)的集合。网页是用超链接标记语言(HTML,Hypertext Markup Language) 、层叠样式表(CSS,Cascade Style Sheet)和 JavaScript 撰写的文档。Web 建立在互联网上,用户通常使用浏览器访问 Web。由于互联网和浏览器的普及, Web 是目前用户群最大的计算机应用。 第1章 互联网与Web 15 Web 使用 HTTP(S)协议进行传播,通过多种技术和编
48、程语言来呈现其丰富的文 本、数据和多媒体内容,包括图片、音频和视频等等。网页通过超链接(Hyperlink) 彼此引用、链接是 Web 的基本特点。 1.2.1 客户端与服务器 Web 服务器(Web Server)负责提供网页,而客户端(Client) ,通常是浏览器 (Browser) ,负责获取网页,并将其内容解析、渲染成为我们看到的丰富多彩的网 页。 Web 服务器和客户端本质上都是软件。Web 服务器可以运行在普通计算机上, 不过,为了服务于全世界网民,很多 Web 服务器运行在计算能力更强的专用服务器 乃至服务器集群上。浏览器是使用最为广泛的软件,大部分台式计算机、笔记本计 算机、
49、平板电脑,乃至智能手机等计算设备都安装了浏览器。 Web 服务器一般监听 TCP 80 端口(参见表 13) ,等待来自浏览器的请求,然 后新建一个 TCP 连接和浏览器通信,将其需要的网页传送给它。 目前,有很多种 Web 服务器,较为流行的包括 Apache 基金会(Apache Foundation)的开源项目 Apache 21 ,微软公司(Microsoft Inc.)的 IIS 22 (Internet Information Server)和后起之秀开源高性能 Web 服务器 nginx 23 ,以及最近很受关注 的基于 JavaScript 语言的 node.js 24 Web 服务器。 同样,也有很多种浏览器。目前最