web内容都是存储在web服务器上的,其所使用的是http协议,因此常被称为http服务器。客户端想服务器发送http请求,服务器会在http响应中会送所请求的数据,如图1:
1.媒体类型
http给每个通过web传输的对象都打上了MIME类型的数据标签。MIME类型是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间有/隔开。如:
Content-type:image/jpeg
2.URL、URI、URN
URI---服务器资源名,称为统一资源标识符,在世界范围内唯一标识并定位信息资源,分为URL和URN或者两者的结合。URL类似于住址,它告诉你一种寻找目标的方式(在这个例子中,是通过街道地址找到一个人)。要知道,上述定义同时也是一个URI。
关于URL:
URL是URI的一种,不仅标识了Web 资源,还指定了操作或者获取方式,同时指出了主要访问机制和网络位置。
eg: http://bitpoetry.io/posts/hello.html
关于URN:
URN是URI的一种,用特定命名空间的名字标识资源。使用URN可以在不知道其网络位置及访问方式的情况下讨论资源。
eg: bitpoetry.io/posts/hello.html
3.事务
一个http事务由一条请求和一个响应组成的,这种通信是通过http报文的格式化数据块进行的,如图2:
http支持不同的请求方法,常见的有get、put、delete、post、head五种,get方法不包含主体,post包含主体(参数位置)。响应报文中会携带一个状态码,如200请求成功,文档正确返回,404not found 无法找到资源等。报文包括以下3个部分:
起始行:第一行,请求报文中说明要做什么,响应报文中说明出现什么情况;
首部字段;起始行后有零个或者多个首部字段,每个字段包含一个名字和一个值。
主体:请求主体包括要发送给服务器的数据,响应主体装载要返回客户端的数据。主体中除了文本,还可以包含任意的二进制数据(图片、视频、音乐等)。
4.链接
http是应用层协议,其不操心网络通信的具体环节,其都交给了通用可靠的网络传输协议TCP/IP。TCP传输是可靠的,按顺序的将任意尺寸的数据传输。https是在下图http和tcp之间加入TSL或者SSL,SSL后面解释,如图3
第一个URL:http://207.200.82.29:80/index.html使用了机器的ip地址
第二个URL: http://www.taiyonghai.com/index.html使用了域名,主要通过域名服务DNS将域名(主机名)转换为Ip,端口号默认为80。
主要步骤:
-----浏览器从URL中解析出服务器的主机名
-----通过DNS将主机名转换为ip地址
-----将端口号从URL中解析出来
-----浏览器建立一条与web服务器的TCP连接
-----浏览器向服务器发送一条请求报文
-----服务器想浏览器回送一条响应报文
-----关闭连接,浏览器显示文档
5.web的结构组件
代理:客户端和服务器之间的http中间实体,用于转发客户端的http请求,可能会对http请求过滤或者修改。
缓存:使常用页面的副本可以保存在离客户端更近的地方,如代理缓存
网关:连接其他应用程序的特殊web服务器,作为其他服务器的中间实体使用,通常将http流量转换成其他协议,网关接受请求就像自己是资源的源端服务器一样。客户端可能并不知道自己正在与宇哥网关通信。
隧道:隧道是建立起来之后,就会在两条链接之间对原始数据进行盲转发的http应用程序且转发时不会窥探数据。http隧道的一种常见用途是通过http链接承载加密的安全套接字层SSL流量。HTTP/SSL隧道收到一条请求,要求建立一条到目的地址和端口的输出链接,然后在http信道上通过隧道传输加密的SSL流量,这样就可以将其转发到目的服务器上去了。
agent代理:发起自动http请求的半智能web客户端。比如网络蜘蛛会在无人监视的情况下发布http书屋并获取内容,搜集信息构建有效的web内容档案。
6.通用URL组件
大多数URL方案的URL语法都建立在9个部分构成:
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>
比如,ftp://taiyonghai:hai2450180@www.wushisb.com:80/index.html,其方案是http,用户为taiyonghai,密码为hai2450180,主机为www.wushisb.com,端口为80,路径/index.html。
7.常见的方案
http: 超文本传输协议方案,没有用户名和密码,与通用URL格式相符,端口默认80
http://www.wushisb.com:80/index.html
https: 方案与http一致,唯一区别是使用了网景的SSL,SSL给传输提供加密机制,比http安 全,默认端口为443。
https://www.wushisb.com:80/index.html
mailto: 指向E-mail地址
mailto:hai@woshisb.com
ftp: 文件传输协议URL可以从FTP服务器上下载和上传文件,并获得FTp服务器上的目录结 构内容的结构内容的列表。
ftp://taiyonghai:hai2450180@www.wushisb.com:80/index.html
file: 指定一台主机,如果省略主机名,默认使用URL的本地主机
file://OFFICE-FS/taiyonghai/kannimei.doc