Web开发应当知道的开源项目与网络基础
2011-02-25 09:25:26 阿炯

构建网站和开发Web应用程序已经不仅要求开发人员是一名优秀的程序员,更需要聪明的程序员,甚至还要是对网络各方面的知识都有相当的掌握,尤其是HTTP协议。也就是说在可能的情况下,重复使用已有的代码和应用程序,而不是自己重头开始。

开源由来已久,并且很多网站的构建也使用了开源,开发人员都知道Linux、Apache、MySQL及 PHP (LAMP)。但是除那些之外的其他开源项目呢?作为一名Web开发人员,你可以借助诸多可用的项目,以节省开发时间,或提高程序性能。下面看一下哪些开源项目可供大家免费使用。

可供使用的新型数据库
传统上讲,可能习惯使用MySQL。尽管MySQL是一个非常棒的数据库,但诸多试图解决MySQL存在的问题的新型数据库已经问世。

1. MongoDB
MongoDB就是的“非关系型”数据库之一。它扩展性强、性能高。

2. Apache Cassandra
与MongoDB相似,Apache Cassandra也是一种“非关系型”数据库,它亦扩展性强、性能高。并且能够很好地处理庞大而活跃的数据集。

缓存数据
因为需要频繁使用一些数据,所以相比每次去数据库中查询,把这些数据存放在内存中更加合理。这能够大大提高Web应用程序的运行速度。

3. Memcached
Memcached是一种在内存中缓存小型数据块的简单但强大的解决方法(Facebook运行着成千上万的Memcached服务器,借以及时处理TB级的缓存数据)。

4. Redis
Redis的作用与Memcached相同,但包含更多的特性。例如它也可以存储本应当永久性保存在磁盘上的数据。

加快网络请求的速度
大多数网站使用Apache的网络服务器来提供服务。它能够很好地服务于大多数网站,但是一旦网站的访问量增大,就需要做进一步优化。

5. Nginx
Nginx是一种与Apache非常相像的网络服务器,但它的速度相当快。作为负载平衡器,它常用于处理静态内容,如图像文件。

6. Varnish
Varnish是位于常规网络服务器之前的高速缓存器。它将所有热门内容放入内存,直接对其处理,无须将所有内容都传给网络服务器。(编注: Facebook用Varnish 处理图片和用户照片,每天都要处理十亿级的请求。

轻松管理内容
如果你在构建一个允许用户添加及编辑内容的网站,那么你可能需要一个内容管理系统(CMS)。CMS能够帮助开发人员轻松地管理博客及网站,并且提供大量的能够扩展网站功能的插件。

7. WordPress
虽然WordPress是个博客平台,但它也能用于管理大大小小的网站。

8. Drupal
Drupal是一个可用于构建强扩展性、高灵活性网站的完整平台。

交互式的网络UI
可以使用JavaScript和AJAX技术,开发一个类似桌面应用程序那样的以多种方式运行的网络应用。使用JavaScript框架,能够轻松地开发大型的网络应用程序。

9. JQuery
JQuery是一个带插件的框架,这些插件有主构建包含AJAX交互及动画的动态网站。

10. MooTools
MooTools就和jQuery一样,是一个使用JavaScript构建强大网络应用程序的框架。

其他比较炫的资源
当你开始开发一个复杂的网络应用程序时,很多软件、库及模型能够帮你解决难题,如果不参考这些资源,你可能会花费大量的时间。以下是两个入门的例子。

11. Node.js
Node.js是一个事件驱动的输入/输出框架,支持用JavaScript编写应用程序,并在V8 JavaScript引擎上运行。这是一种开发快速、可扩展网络程序的很棒的方式。

12. RabbitMQ
RabbitMQ是一种可靠的、可扩展的信息传送系统,它能够处理高吞吐量。如果需要在系统之间或应用程序之间交换数据,比起传统的解决方案或直接将数据存储在数据库中,信息传送系统的更能胜任这一工作。

使用框架来加速开发进程
不管你是使用PHP还是其他的编程语言,有很多不同的可用框架能够帮助你加速开发进程,并能够更加轻松地管理代码。

13. Symfony
Symfony是一个PHP框架,它包含很多能够加速开发复杂网络应用程序的组件及工具。同时它包含社区提供的1000多个插件。

后话 - 合理利用时间

开发人员有必要花费时间不断了解哪些新软件是可用的,这样对轻松地解决复杂的任务大有裨益。而且在项目开发之初,花费一些时间做计划和调查也是非常有必要的,因为这样可以明确即将面临的问题,并确定其最佳解决方案。自己编程来解决每个问题的时代已经结束,如今更多的是灵活使用现有技术来解决问题。


计算机网络基础学习指南

计算机网络基础是网络/运维工程师都需掌握的知识,但往往会被忽略。这里献上一份详细 & 清晰的计算机网络基础学习指南,涵盖 TCP/UDP协议、Http协议、Socket等。

作者:Carson_Ho

1. 计算机网络体系结构

1.1 简介

定义:计算机网络的各层+其协议的集合。

作用:定义该计算机网络的所能完成的功能。

1.2 结构介绍

计算机网络体系结构分为3种:OSI体系结构、TCP/IP体系结构、五层体系结构。

OSI 体系结构:概念清楚 & 理念完整,但复杂 & 不实用;

TCP/IP 体系结构:含了一系列构成互联网基础的网络协议,是Internet的核心协议 & 被广泛应用于局域网和广域网;

五层体系结构:融合了OSI 与 TCP/IP的体系结构,目的是为了学习 & 讲解计算机原理。


低三层为通信子网,负责数据传输; 高三层为资源子网,相当于计算机系统, 完成数据处理;传输层承上启下。

TCP/IP的体系结构详细介绍



由于 TCP/IP体系结构较为广泛,故主要讲解。

OSI的体系结构详细介绍



2. TCP协议

Transmission Control Protocol,即传输控制协议

属于传输层通信协议

基于TCP的应用层协议有HTTP、SMTP、FTP、Telnet 和 POP3。

关于TCP的其他知识:如三次握手、四次挥手、无差错控制原理等。

3. UDP协议 3.1 定义

User Datagram Protocol,即用户数据报协议

属于传输层通信协议,基于UDP的应用层协议有 TFTP、SNMP 与 DNS

3.2 特点

无连接的、不可靠的、面向报文、无拥塞控制,具体介绍如下:

TCP 拥塞控制拯救了互联网

该文章介绍了 TCP 拥塞控制如何拯救互联网。在2023年的 SIGCOMM 会议上,尽管关于 TCP 拥塞控制的第一篇论文已经发表了 35 年,但拥塞控制仍然在会议议程中占有一个小时的时间。

关于 TCP/IP 协议为何比同时代的协议更成功,有许多理论,但这些理论并不容易验证。互联网协议的成功很可能有很多因素。文章观点认为,拥塞控制是使互联网从中等规模发展到全球规模的关键因素之一。在 David Clark 的论文 “DARPA 互联网协议的设计哲学” 中,一个明确的设计目标是:“互联网架构必须允许其资源进行分布式管理。” 这个目标有许多不同的含义,但 Jacobson 和 Karels 首次在 TCP 中实现拥塞控制就是一个很好的例子,体现了他们对这个原则的重视。

文章之所以将互联网的成功归功于拥塞控制算法,其中一个原因是,互联网的失败之路在 1986 年就已清晰可见。Jacobson 描述了一些早期的拥塞崩溃事件,导致吞吐量下降了三倍。



3.3 优缺点

优点:速度快

缺点:消息易丢失(特别是网络质量较差时)

3.4 应用场景(对应应用层协议)

要求通信速度高

如:域名转换:DNS协议 文件传输:FTP协议 网络管理:SNMP协议 远程文件服务器:NFS协议

3.5 报文段格式

UDP的报文段共有2个字段:数据字段 & 首部字段
下面主要介绍首部(8字节、4个字段)



3.6 TCP、UDP协议的区别


4. HTTP协议

简介


5. Socket 5.1 简介

即套接字,是应用层 与 TCP/IP 协议族通信的中间软件抽象层,表现为一个封装了 TCP/IP协议族 的编程接口(API)


Socket不是一种协议,而是一个编程调用接口(API),属于传输层(主要解决数据如何在网络中传输)

即:通过Socket,我们才能在Andorid平台上通过 TCP/IP协议进行开发

对用户来说,只需调用Socket去组织数据,以符合指定的协议,即可通信。

成对出现,一对套接字:Socket ={(IP地址1:PORT端口号),(IP地址2:PORT端口号)}

一个 Socket 实例唯一代表一个主机上的一个应用程序的通信链路。

6. 其他知识

6.1 在浏览器中输入url地址 ->> 显示主页的过程

打开一个网页,整个过程会使用哪些协议


6.2 IP地址(IPv4地址)

定义
连接在Internet中的每一台主机(或 路由器)的全球唯一的标识符

组成
IP地址 = 32位 = 网络号 + 主机号;即IP地址::={<网络号>,<主机号>}

其中: 网络号:标志主机(或路由器)所连接到的网络。一个网络号在整个因特网范围内必须是唯一的。 主机号:标志该主机(或路由器)。一个主机号在它面前的网络号所指明的网络范围必须是唯一的。

不同类型的IP地址,其主机号 & 网络号所占字节数不同;故:一个IP地址在整个网络范围内是唯一的。

分类
传统的IP地址是分类的地址,分为A,B,C,D,E五类

区别在于网络号 & 主机号占的字节数不同


特别注意:在各类IP地址中,有一些IP地址用于特殊用途,不能用于做主机IP地址


6.3 ICMP协议

定义
Internet Control Message Protocol,即 网际控制报文协议

属于IP层协议

注:ICMP报文不是高层协议,而是作为IP层数据报的数据,加上数据报首部,组成IP数据报发出去

作用
更有效地转发IP数据包 & 提高交付成功的机会

同时允许主机/路由器报告差错 & 异常情况

分类
ICMP差错报告报文 & ICMP询问报文

主要应用
PING(分组网间探测)、Traceroute(跟踪1个分组从源点到终点的路径,原理 = 从源主机向目的主机发送一连串的IP数据报)

下面,将主要介绍Ping的过程。

6.4 Ping的过程

定义
Packet InterNet Groper,即分组网间探测

是 ICMP报文的1个重要应用:使用了IPCM回送请求 & 回送回答报文

是应用层直接使用网络层ICMP的1个例子,无经过传输层的TCP、UDP

作用
测试2个主机的连通性

原理

向目的主机发送多个ICMP回送请求报文

根据 目的主机返回的ICMP回送回答报文中的时间戳,从而计算出往返时间

最终显示的结果:发送到目的主机的IP地址、发送 & 收到 & 丢失的分组数、往返时间的最小、最大 & 平均值

过程
假设有两台主机:
(目的主机)PC1:IP = 192.168.1.1
(源主机)PC2:IP = 192.168.1.2


6.5 路由器与交换机的区别


6.6 Cookie 与 Session

简介


区别 & 对比


6.7 Cookie 与 Token

简介


基于Cookie的身份验证 & 验证流程


基于Token的身份验证 & 验证流程