基于网络的应用永远离不开网络,尽管工作内容大部分在前端,也不可避免地需要了解网络。上周工作中,我不止一次地想要再复习复习http。周一时,我们讨论用wml还是xhtml mp制作wap网站页面。负责服务器段程序的小盆友有些担心他原l来针对wml做的一些东西要重来了。我突然有点蒙,但还是告诉他用xml还是xhtml mp并不太影响他的工作,只影响我的工作,服务器和客户端之间的沟通主要是遵守http协议,他那边需要改动的不大。接下来的工作涉及到需要判断客户端可接受的mime类型、客户端是否为移动设备的问题,这些需要通过读取http请求报头中的内容。周五碰到最大的问题,恐怕一部分还需要通过http内容来解决:我们的编码为utf-8的页面在ucweb下显示乱码,opera mini和nokia自带浏览器正常,目前不知如何解决。距离计算机网络的考试结束大概有四年的时间,当时这门课程并不太受重视,而现在看来真怀念书里的那些东西。周末特地花了一些时间把http部分重新复习了一遍。
1. HTTP是什么
http即超文本传输协议,是一个应用层的协议。它由两部分实现:
客户端程序 ————– 服务器程序
|——交换http报文——-|
http规定了报文的格式和交换方式
1). web文档
web文档由对象组成。对象即文件,可以是html、图像、多媒体⋯⋯对象可以通过url寻址。
2). url
主机名/路径名
3). 浏览器
web应用的用户代理,实现了http协议的客户机端
4). web服务器
用于储存web对象,实现http的服务器端
2. http采用tcp传输
clint 《》 socket —tcp—-socket 《》 server
(《》表示投递、获取数据)
3. http是无状态协议
因此需要保存状态时,需要通过cookie、session等才能实现
4. http三次握手
- client:发起tcp连接
- client:通过连接发送http请求
- server:接受报文,取出文件,封装在http响应报文中并发送
- server:通知tcp断开
- client:收到响应报文,tcp关闭。提取对象,读取,得到另外n个对象的引用(例如其他的图像、css文件)
- client:对每个引用重复前4步
http并不关心client如何解释web页面,client往往会并行连接n个连接。
5. http报文格式
这部分其实是我现在最需要复习的,结果摘录得太多了⋯⋯干脆就不放上来了。下面是一些对于前端来说可能比较有用得一些参考说明:
List of HTTP status codes
List of HTTP header fields
Uniform Resource Locator
网络是一个充满了各种规约的世界,其实应用起来没有太多的技巧,就是不断的查文档、查文档。只做规定的事情,按照规定的方法来进行。
這些也未必用得上啦。協議裡面關乎前端開發的,主要是上面的cookie啊,same origin policy之類的。傳輸協議主要就是怎麼把東西扔過來嘛,置於怎麼表現甚麼的,都不在協議之中了。火柴同學,有興趣加入我們blog.nuttycoder.com麼?
嗯⋯确实是⋯其实就表现这部分来说,基本上和http关系不大。这次看过之后,用的上的也不过是报文里的一些约定。有一些手机的浏览器好像并不能理解报文里的某些内容⋯⋯这方面我还搞得不清楚
我们有些时候需要互相讨论这个问题究竟是出在前端还是服务器,要在哪里解决更容易之类的⋯⋯所以才互相都额外了解一些。现在很头大的还是uc浏览器下的乱码问题。