本文是 Fundamentals of Web Development 第一章的读书笔记,原书作者是 Randy Connolly 和 Ricardo Hoar。
1.1 Web 的定义和历史
什么是 Web? Web 是 Internet 的一个子集,如下图所示
1.1.1 Internet 的起源
- 电话线路是 circuit switching
- 原始的电话线路在几十年内都需要人工转接
- 于1969年建立的 ARPANET 是 packet switching
- 同时,在1979年建立了 USENET
- 虽然网络野蛮生长,但是各机器难以沟通,于是产生了一系列的通信协议
- 1981有了因特网的通信协议,其中最主要的是 TCP/IP
1.1.2 Web 的起源
- 90年代初之前的因特网和今天的因特网很不一样,因为那时只有 email 和命令行文本
- 巨大的转变来自于 World Wide Web 的出现
- 一个英国人于1990年发明了一个超文本系统
- 功能包括
- URL 定位语言
- HTTP 协议
- 网页服务器
- HTML 语言
- 使用 HTTP 发送 URL 并显示 HTML 的浏览器
- 人类第一个网页浏览器
- (HTML 在未来的几章介绍,URL 和 HTTP在本章介绍)
- Web 后来还是不太火,直到1993年 Mosaic 出现
- 第一个流行的图形界面浏览器
- 后来1994年又进化成网景浏览器,迅速变成主流
- 后来在世纪末被 IE 打败
- 人类主机爆炸增长,从2000年的千万台增长到2010年的十亿台
1.1.3 对比网页应用和桌面应用
- 网页应用的优点
- 支持任何上网设备
- 跨平台
- 更新时只需操作服务器
- 集中存储更安全
- 网页应用的缺点
- 必须联网
- 隐私传输泄露
- 在线文件的版权
- 某些网页不兼容某些浏览器
- 某些操作系统不兼容某些软件
- 比如 iOS 上面的 Adobe Flash
- 公网和私网 (Intranet) 对求职的影响
- 公网技术:PHP, MySQL, WordPress
- 私网技术:ASP.NET, JSP, SharePoint, Oracle, SAP
1.1.4 静态网页和动态网页
- 最初的网页都是静态的门户网站
- 用户请求服务器上的文本和图片
- 服务器发送文本和图片
- 用户浏览器显示 HTML
- 后来服务器上增加了数据库,与企业、金融的系统进行交互,成为了动态页面
- 用户请求服务器运行脚本文件
- (脚本文件代表语言:PHP)
- 脚本文件生成 HTML 页面,发给用户
- 用户浏览器显示 HTML
1.1.5 Web 2.0+
- 对用户来说,Web 2.0 意味着可以上传和下载页面内容
- 知名页面包括 Facebook, YouTube, Wikipedia
- 支持的功能包括:用户的评论、论坛帖子留言、社交网站朋友圈
- 对开发者来说,Web 2.0 意味着代码执行从服务器向浏览器转移
- 浏览器端代表语言:JavaScript
- 支持异步通信
- 支持用户交互的网页比静态网页要复杂得多
- 出现了分工
- 很多程序员不会设计 UI
- 很多 UI 设计师不会编程
1.2 因特网协议
- 以 TCP/IP 为代表的4级结构
- 链路层
- MAC
- 网络层
- IPv4, IPv6
- 传输层
- TCP, UDP
- 应用层
- HTTP, SSH, POP/IMAP/SMTP, DNS
- 链路层
1.3 用户-服务器模型
1.3.1 用户
- 用户发送请求并接收回复
- 主要包括 PC,笔记本,手机,平板
- 主要是通过浏览器进行请求,但是也可以由其他程序进行
- 比如游戏程序用 HTTP 打开帮助页面
- 甚至服务器也可以扮演用户
- 比如用 PHP 接口从其他服务器上请求资源
1.3.2 服务器
- 服务器 24/7 监听请求
- 每个服务员可以处理成千上万的请求
- 通过请求-响应循环与用户完成信息交换
- 服务器类型
- Web server
- 处理 HTTP 请求
- Application server
- 后端由 PHP, ASP.NET 实现
- Database server
- 由 MySQL, Oracle, SQL Server 实现
- Mail server
- Web server
- 服务器集群
- 大型网站同时运行很多的服务器
- Facebook 每秒钟处理上百万的请求
- 使用上千台主机的服务器集群
- 用负载均衡器向各主机分配用户请求
- 刀片服务器平行排列,节省体积
- 即使单台服务器运算力充足,也可选择服务器集群,目的是灾难恢复备份
- 大型网站同时运行很多的服务器
1.3+ 其他
- 1.3.3 例外:P2P 模型
- 不需要服务器,每个用户都是对等的
- 例子:视频聊天,BT 下载
- 1.4 因特网路由
- 移动设备-家用路由器-调制解调器-交换机-光纤-大厂服务器
- 1.5 DNS 域名系统
1.6 URL
全称:Uniform Resource Locator
- Domain
- com 是一级域名,funwebdev 是二级域名,www 是三级域名
- Path
- 表示脚本文件的路径,等同于根目录下的
/index.php
- 表示脚本文件的路径,等同于根目录下的
- Query string
- 未来会在 HTML 详细讨论
- 用户向服务器发送信息的一种方式
- 可以用
?
和&
表示键值对- 比如
?username=john&password=abcde
- 比如
- Fragment
- 可选
- 帮助用户快速访问页面中的某个区域
- 比如:博客和维基百科的子标题
1.7 HTTP
- HTTP 是 World Wide Web 的传输协议
- HTTP 建立在 TCP 的端口80上
1.8 web 服务器的具体实现
- 本书主要实现 LAMP 技术栈
- Linux 操作系统
- Apache web 服务器
- MySQL 数据库
- PHP 脚本语言
- 其他的技术栈
- 苹果 OSX MAMP
- 非常类似 LAMP
- 微软的 WISA
- Windows 操作系统
- IIS web 服务器
- SQL Server 数据库
- ASP.NET 服务器端开发工具
- 苹果 OSX MAMP