Archive for the ‘教育技术学’ Category

星期五 二月 26, 2010 15:50

超文本转移协议与万维网高速缓存

HTTP协议
HTTP是一个客户端和服务器端请求和应答的标准。从层次的角度看,HTTP是面向事务(所谓事务就是指一系列的信息交换,而这一系列交换是一个不可分割的整体,即要么所有的信息交换都完成,要么一次交换都不进行)的应用层协议,是万维网上能够可靠地交换文件的重要基础。
服务器进程不断的监听指定端口(默认端口为80),用来判断是否有浏览器(网络爬虫或其他客户进程)向它发出连接建立请求。当判断为真并建立连接之后,客户进程向源服务器(Origin Server)发出HTTP请求,源服务器响应,最后连接被释放。这样的操作交互遵循一定的规则与格式标准,而这个标准就是超文本转移协议HTTP。
HTTP虽然使用了TCP,但其本身是无状态的(stateless)。换句话说,同一个客户端第二次访问同一个服务器上的页面时,服务器的响应与第一次的相同。虽然TCP是面向连接的向上提供服务,但HTTP协议本身是无连接的。
尽管TCP/IP协议是互联网上最流行的应用,但HTTP协议并没有规定必须使用它和(基于)它支持的层。 事实上,HTTP可以在任何其他互联网协议上,或者在其他网络上实现。HTTP只假定(其下层协议提供)可靠的传输,任何能够提供这种保证的协议都可以被其使用。
HTTP报文
HTTP有两类报文,一种是请求报文,另一种是响应报文。它们都由三个部分组成。从下图不难看出,两种报文结构的开始行略有不同。

方法
空格
URL
空格
版本
CRLF

首部字段名:
空格

CRLF
 
 

首部字段名:
空格

CRLF
 
 

CRLF

实体主体(通常不用)

(a)  请求报文

版本
空格
状态码
空格
短语
CRLF

首部字段名:
空格

CRLF
 
 

首部字段名:
空格

CRLF
 
 

CRLF

实体主体(有些响应报文不用)

(b)  响应报文
1)    开始行,用于区分是请求报文还是响应报文。所有HTTP请求的第一行都是请求行,主要包含请求方法,请求资源的URL,以及HTTP的版本;而响应报文的开始行叫做状态行,主要包含HTTP的版本,状态码以及其对应的短语。它们都用空格隔开,CR代表回车,LF代表换行。
2)    首部(Head)行,用来描述浏览器(网络爬虫等)或服务器的一些信息。它可以有好几行,每一行都必须有CR与LF。整个首部行结束之后,还用一个CRLF将其与实体隔开。
3)    实体主体(Entity Body),请求报文中一般不用这个字段(只有请求方法要求时才会被放在请求消息中),而响应报文里也可以没有。
其中值得注意的是,状态代码的第一个数字代表当前响应的类型:

1xx 消息——请求已被服务器接收,继续处理
2xx 成功——请求已成功被服务器接收、理解、并接受
3xx 重定向——需要后续操作才能完成这一请求
4xx 请求错误——请求含有词法错误或者无法被执行
5xx 服务器错误——服务器在处理某个正确请求时发生错误

虽然 RFC 2616 中已经推荐了描述状态的短语,例如”200 OK”,”404 Not Found”,但是 WEB 开发者仍然能够自行决定采用何种短语,用以显示本地化的状态描述或者自定义信息。
可以看到的是,HTTP仍在不断的发展。现在的较新的版本是1999年公布的HTTP/1.1[RFC 2616],它已成为因特网草案标准。而下一代HTTP(HTTP-NG)则正在研究之中。
万维网高速缓存
万维网高速缓存(Web cache)是代理服务器的一种功能,它将最近的一些请求与响应暂存在代理服务器的本地磁盘中。如果新的请求与代理服务器的缓存吻合,则直接从代理服务器返回响应;反之,则需要按照请求的URL再次通过Internet访问该资源。其大致过程如下:
1)    客户端(浏览器)需要发送请求时,与带有Web Cache功能的代理服务器建立TCP连接,并向代理服务器发送HTTP请求报文。
2)    如果代理服务器已经存放了所请求的对象,则直接将其放入HTTP响应报文中返回给客户端(浏览器)。
3)    否则,代理服务器就代表客户端(浏览器),与Internet上的源服务器建立TCP连接,并发送HTP请求报文,源服务器把请求对象放在HTTP响应报文中返回给代理服务器。
4)    代理服务器获得该对象之后,先复制保存到本地磁盘(为其日后服务),再将该对象放在HTTP响应报文中,通过之前与客户端建立的TCP返回给用户(浏览器)。
其中,保存到本地磁盘以及返回响应之前,我们Ipv6项目还有很多事要做。

星期天 十月 18, 2009 01:20

WMEncoder批处理功能实现

这段时间的学习和工作很难用乐观的言语表述。从接到这个任务的那天开始,不知不觉的,提交一份完整可用的代码变成了我生活的中心。可怕的是,周围的人都用异样的眼光看待我宅代码的行为。我能猜到他们在想什么,但,我就是不自觉的被这个中心左右着。
如果接下来的周一和张博后的交流没有问题,那么这个批处理功能的实现,应该就是我功成身退的礼物。第一次做转换工具,第一次看全英文的sdk,第一次和博后级的牛人交流,第一次用c#建立一个工程文件夹,很多个第一次都将变成美好的回忆…
很自然地,做项目的过程中,看到了自己很多知识还很不到位:本科时,《操作系统》完全没怎么重视,只是等到考试才临时抱佛脚,而今遇到有关线程的问题,又要重头来过;基础的算法思想没有打牢,没有打牢的直接后果是,代码臃肿而低效。工具语言没摸透,使用起来,生搬硬套…哎,说得自己一无是处了。
不过好在,接下来的日子里,我还有有机会…呃,希望在转角,命运在手中,笑一个吧?
update: 今天把技术文档写了下,呃,这里是在线浏览地址

星期六 十月 10, 2009 15:49

六十岁的中国,二十岁的我(2)

这个假期的大部分时间,主要还是宅code。正如上次提到的,我的具体任务是:研制现有资源向移动学习终端系统显示模式的资源转换工具,以及相关的全套技术文档。接单之后,任务很自然的被我分解为:视频、图片和html三个处理模块。(移动学习终端方面,是用的TCL的IOpen来做测试的)。截止至7号凌晨5点16分,整个任务的基本功能全部实现。
图片处理这块,毫无疑问的,我是走了一大圈弯路。 不敢说自己是一个java程序员,但让一个学习了java的人转过头来搞c#,这无疑会带着很复杂的感情。正如Jesse在他的著作里谈的那样:
Java programmers may look at C# with a mixture of trepidation, glee, and resentment. It has been suggested that C# is somehow a “rip-off” of Java. I won’t comment on the religious war between Microsoft and the “anyone but Microsoft” crowd, except to acknowledge that C# certainly learned a great deal from Java. But [...]

星期一 九月 7, 2009 22:51

数码乌托邦

毋庸置疑的是,这是微软的设计师为我们勾勒的一副后信息时代的动态场景。你不必意识到计算机的存在,即可在anytime,anywhere,做 anything了。当然,那也是无时不刻,无处不在的浸泡在他们的产品之中。好了,抛开微软那个不光彩的垄断主义不谈,现在可以轻松的使用“你不必…你不必…”这个句式,仿造刚才我写的来造句。上面的podcast已经为你提供了丰富的素材,不是吗?
让我记忆犹新的是,华师大的赵呈领教授在我们研究生考试之前应邀来学校做了一个题为《泛在学习,泛在计算》的演讲。可惜的是,当时忙于备考,无法搜集到当时他的演讲稿。这里只对几个关键字做出注释,有兴趣的朋友,可以通过链接进行延伸阅读。
泛在计算|Ubiquitous computing // 泛在学习|Ubiquitous learning
我们如果把由经验引起的相对持久的行为、态度等方面的变化叫做学习的话,那么可以看到的是,泛在计算实际上为我们构建了一个良好的ubiquitous learning environment (ULE)。虽然,这些数码概念的最终实现面临的是困难重重,但同样是在若干年以前,我们也无法想象今天信息时代的便利景象。实现或者是超越?数码乌托邦令人神往!