计算机网络——应用层-Web&HTTP

计算机网络——应用层-Web&HTTP,第1张

计算机网络系列博文——目录

20世纪90年代初

因特网应用

Web应用的组成

对象组成。对象是一个文件,如HTML文件,JPEG图像,Java程序,视频片段等。

对象可通过一个URL地址寻址。

Web页面常由一个HTML基本文件和多个引用对象构成。

URL(Uniform Resoure Locator):统一资源定位器 RFC1738

用以寻址Web对象

由一个存放对象的服务器主机名和对象路径名构成。

HTTP 由客户端程序和服务端程序实现,二者通过交换HTTP报文会话。

HTTP规范定义了HTTP客户端和服务端之间的通信协议。

Web浏览器实现HTTP客户端,请求、接收、展示Web对象

Web服务器实现HTTP服务端,响应客户的请求,发送对象

HTTP使用TCP作为支撑运输层协议。

端口:80

无状态协议 服务器不保存关于客户的任何信息

服务器向客户发送被请求的文件,而不存储任何关于客户的状态信息。

往返时间(Round-Trip Time,RTT)

一个短分组从客户到服务器然后再返回客户所花费的时间。

某客户和服务器的一次会话中,每个请求/响应对通过一个单独的TCP连接传输

HTTP 10版本使用非持续性连接

对多个待获得的web对象,客户端一次只请求一个对象,待前一个对象接收完毕后再发送对下一个对象的请求。

时间分析

浏览器通常支持并行的TCP连接。并行TCP连接数通常为5~10个。

对多个待获得的web对象,客户端一次可同时建立多个TCP连接,以同时请求多个web对象。

时间分析

某客户和服务器的一次会话中,所有请求/响应对经同一TCP连接传输

HTTP 11版本在默认方式下采用持续连接,但也可由客户端/服务器配置为非持续连接。

客户端只有收到前一个响应后才发送新的请求

可理解为同个TCP内的串行

时间分析

客户端只要遇到一个引用对象就尽快发出请求

可理解为同个TCP内的并行

HTTP 11的默认选项

时间分析

TCP 三次握手

1客户向服务器发送一个小TCP报文段;

2服务器用一个小TCP报文段做出确认和响应;

3客户向服务器返回确认和一个HTTP请求报文;

4服务器返回相应HTML文件;

HTTP规范

RFC 1945 , RFC 2616

用ASCII文本书写

HTTP协议有两类消息,请求消息(request)和响应消息(response)

请求行 HTTP请求报文的第一行

方法

首部行 请求行后继的其它行,包含一些会话信息

空行 回车换行,分隔首部行和实体体

实体体(entity body)

GET方法下实体体为空

POST方法下实体体包含表单信息

状态行

常见状态码

首部行

空行

实体体

包含了所请求的对象

HTTP是无状态协议,但cookie技术允许服务器识别用户

cookie在无状态的HTTP之上建立一个用户会话层

参见 [RFC 6265]

cookie组件

cookie技术的争议在于它可能泄露用户的隐私

代表原Web服务器来响应HTTP请求的网络实体

Web缓冲器通常由ISP购买并安装

允许缓存器证实其缓存的副本是新的。

如果缓存器有web对象最新的版本,则初始服务器不需要向缓存器发送该web对象

在HTTP请求消息中声明所持有版本的日期

If-modified-since: <date>

如果缓存的版本是最新的,则响应消息中不包含对象

HTTP/10 304 Not Modified

内容分发网络(Content Distribution Network,CDN)

基于缓存器技术,CDN公司在因特网上安装许多地理上分散的缓存器,使得大流量本地化。

有共享CDN(Akamai,Limelight),专用CDN(谷歌,微软)

HTML(超文本标记语言)是网页的核心,学好HTML是成为Web开发人员的基本条件。HTML很容易学习的,但也很容易误用,要学精还得费点功夫。

随着HTML5的发展和普及,了解HTML5也将成为Web开发人员的必修课。

涉及到网页外观时,就需要学习CSS了,它可以帮你把网页做得更美观。

利用HTML和CSS模拟一些你所见过的网站的排版和布局(色彩,,文字样式等等)。

第二步:学习javascript,了解DOM

JavaScript是一种能让你的网页更加生动活泼的程序语言。学习JavaScript的基本语法,学会用javascript操作网页中dom元素。

接着学习使用一些javascript库,比如jquery是大部分WEB开发人员都喜欢用的,通过Jquery可以有效的提高JavaScript的开发效率。

第三步:了解Web服务器

你不必在这上面花太多精力,但对IIS、Apache基本配置要掌握,这方面的知识学起来也相对容易,不会花多长时间。

学习一点Unix和Linux的基本知识,因为大部分Web服务器都运行在Unix和Linux平台上。

第四步: 学好一门服务器端脚本语言  服务器端脚本编程(后台开发)也是Web开发人员的基本功之一,你只需挑选一个服务器端脚本语言,然后学好它。

目前流行的服务器脚本语言有:php、aspnet、jsp、ruby、python、等。

第五步:学习数据库及SQL语法

要构建动态页面通常会使用到数据库,常用的数据库有SQLServer、Oracle、MySQL 等,它们都会遵循标准的SQL原则。

通常aspnet 程序使用SqlServer数据库,PHP、java使用Oracle、MySQL数据库。

第六步:综合实战

选一个你喜欢的后台编程语言,结合之前学到的html,css,javascript 前端技术,实现一个简单的留言本、论坛程序、进而实现一个简单的CMS(内容管理系统)

第七步:学习使用Web框架

当你掌握了HTML,CSS,JavaScript和服务器端脚本语言后,就应该找一个Web框架加快你的Web开发速度,使用框架可以节约你很多时间。

比如net的MVC,JAVA 的SSH,php的cakephp、CodeIgniter、zend,ruby的ROR,python的dijango等等,其实里面都有一些相通之处。

整个开发过程你还可能会学习到一些工具的使用:

Visio,Dreamweaver,Vistual Studio、elipse、(Vim, EditPlus, Notpad++)、sqlserver、phpmyadmin,各种浏览器以及FireBug的插件,IE下的WebDevelopmentHelper、IETester等。如果你足够用心,你还发掘出很多不错的资源,例如MSDN,W3cSchool,一些前辈的博客,一些技术论坛等等,这都是你未来前进道路上的财富。如还想深入研究,学学http协议,理解什么是无状态,不然你永远做不好WEB开发,研究web程序服务端运行原理,还有tcp/ip,udp协议等。

从最简单的HTML到Web框架,内容还是不少,要想精通这里的每一样技术,都得下苦功夫才行。半年的时间,足够你对web开发产生一个有效的认识,这个时候,再思考你进一步学习的方向吧。

客户向URL所指定的WEB服务器发出了请求, WEB服务器根据请求的程序返回相应的内容至客户端,二者就是按HTTP协议进行交互的。客户端发出一个以HTTP开头的URL请求时,WEB服务器端的程序可能是CGI程序、或静态网页,或SERVLET程序,也可能是其他服务器端程序,但它们均以HTML格式将相应的内容返回给客户,这样客户就可在浏览器上的看到返回的内容。

如今的Web服务器有很多种,大家在做项目的时候根据自己的需求进行灵活的选择。下面我就给大家分享一下目前都有哪些Web服务器以及他们的优缺点。

01

Apache

Apache也被叫做httpd服务器,是目前使用最广泛的web服务器,它被应用于各种平台之中。Apache刚开始被推出的时候有很多的缺陷,如今已经被修复的越来越完善,如果你是web服务器的钻研者,我建议你一定要学习一下Apache的使用。

优点:小巧,灵活,可扩展,稳定。

缺点:软件开源,所以很多的漏洞可能很容易被人查找到。

02

Nginx

Nginx是Linux平台下的优秀Web服务器,我以前用过这个服务器,它让本来运行很慢的应用程序提升了很大的速度。

优点:压缩率高,支持负载均衡,速度快

缺点:需要掌握熟练的Linux命令才能应用

03

IIS

IIS是微软平台的Web服务器,是针对Windows平台的服务器。它和NET语言非常的搭配,新手掌握起来也比较快。

优点:安装配置简单,学习起来容易

缺点:平台适用性单一,安全性有待提高

04

WebLogic

WebLogic是专门应用于企业级开发的web服务器,比较常见的是和Java语言搭配,使用起来和Apache差不多,同时它的架构也非常的优秀。

优点:安全性高,专业性强,耦合度低

缺点:不容易掌握,需要有一定的专业积累才能熟练应用

05

Tomcat

Tomcat是很多Java学习者都非常熟悉的web服务器,一般刚开始学习Java Web开发的人都会使用Tomcat作为服务器进行练习。它既有可视化的操作界面,也有命令语句,是不错的入门级服务器。

优点:简单易掌握,部署容易,应用广泛

缺点:扩展性不强,可配置性弱,大并发能力不强

06

Lighttpd

Lighttpd是一款开源的web服务器,比较的轻巧,功能也很多。目前在使用率上比较少,还没有推广起来。

优点:小巧精致,功能强大

缺点:漏洞较多,学习资源不多

07

Sun

Sun是一款针对Solaris的web服务器,应用范围不是很广泛,只应用于Sun公司的相应web产品。另外一般的开发者轻易的用不了这款服务器。

优点:针对性强,并发性高,速度快,效率高

缺点:掌握难,适应性不高

08

Jetty

Jetty是专门针对Java Web的服务器,它被用来运行Servlet程序,是众多服务器中最局限的一个了。我并不建议大家掌握这款服务器。

优点:内容简单,容易掌握

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 计算机网络——应用层-Web&amp;HTTP

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情