上一篇博客中从OSI模型出发讲了总体上面的各层功能,今天从应用层开始来具体讲述每一层的理解。第二篇:对网络应用层的理解(一)。
网络应用体系结构
- 客户机/服务器结构(C/S)
- 点对点结构(P2P)
- 混合结构(Hybrid)
C/S结构:按照功能不同将主机划分为客户机和服务器,服务器用来提供服务,客户机使用服务器提供的服务。
服务器:
- 7*24小时提供服务
- 永久性访问地址/域名
- 利用大量服务器实现可扩展性
客户机:
- 与服务器通信,使用服务器提供服务
- 间歇性接入网络
- 可能使用动态IP地址
- 不会与其他客户机直接通信
例如:
P2P结构:例如文件共享下载服务
特点:
- 没有永远在线的服务器
- 任意端系统/节点之间可以直接通讯
- 节点间歇性接入网络
- 节点可能改变IP地址
混合结构:Napster(一款可以在网络中下载自己想要的MP3文件的软件。它同时能够让自己的机器也成为一台服务器,为其它用户提供下载。)
- 文件传输使用P2P结构
- 文件的搜索采用C/S结构-集中式
进程间通信:socket
同一主机上运行的进程之间通信:进程间通信机制/操作系统提供
不同主机上运行的进程之间通信:消息交换/报文交换
socket:操作系统提供的一种抽象,将网络硬件基础设施以及网络协议栈,比如说链路层,网络层,传输层抽象为一个叫socket套接字的东西。如下图:进程间通信利用socket发送/接受消息实现
HTTP协议
web应用遵循HTTP协议(HyperText Transfer Protocol),采用C/S结构,是一个无状态协议,也就是说服务器不维护任何有关客户端过去所发请求的消息,使用TCP传输服务,具体如下:
- 服务器在80端口等待客户的请求
- 浏览器发起到服务器的TCP连接(创建套接字Socket)
- 服务器接受来自浏览器的TCP连接
- 浏览器与web服务器交换http消息
- 关闭TCP连接
HTTP连接的两种类型
非持久化连接(HTTP1.0版本使用,每个TCP连接最多允许传输一个对象)
持久化连接(HTTP1.1版本使用,每个TCP连接允许传输多个对象)
HTTP消息
请求消息格式:method-请求方法,url-请求路径,version-版本号
对比get和post请求方法
GET | POST |
参数携带在url的后面 | url不携带参数 |
效率高 | 效率低 |
能够被缓存 | 默认不会被缓存 |
数据量小 | 数据量大 |
产生一个tcp数据包(header+data) | 产生两个tcp数据包(先发送header,再发送data) |
响应消息格式
其中两个时间点:Date(Date头域表示消息发送的时间,服务器响应中要包含这个头部,因为缓存在评估响应的新鲜度时要用到,其时间的描述格式由RFC822定义)Last-Modified(WEB服务器认为对象的最后修改时间,比如文件的最后修改时间,动态页面的最后产生时间等等)
响应状态码
1XX | 表示请求已经接收,继续处理 |
2XX | 请求被正常处理 |
3XX | 表明浏览器要执行某种附加操作以完成请求 |
4XX | 客户端发生错误 |
5XX | 服务器发生错误 |
常用状态码
200 | 表示客户端请求成功 |
301 | 永久性重定向 |
302 | 临时性重定向 |
304 | 从客户端的缓存中取资源 |
400 | 客户端请求有语法错误 |
401 | 请求需要认证 |
403 | 服务端拒绝服务 |
404 | 找不到对应资源 |
500 | 服务器端发生故障 |
503 | 服务器正在维护 |
cookie技术
由服务端产生保存在客户端,用来跟踪用户会话,弥补http协议无状态的不足。某些网站为了辨别用户身份、进行session跟踪而存储在用户本地终端上的数据(通常经过加密)。
cookie的原理
这里通过这个图大致描述一下过程:假设有一个从未访问过亚马逊网站的用户访问该网站,这里浏览器本身在cookie文件中有一条信息叫做ebay:8734,这个我们先不管它。客户端第一次访问服务器的时候使用的是常规访问方法,也就是不携带任何cookie信息的。服务器第一次接受请求后发现这个用户是第一次访问的,于是服务器给这个用户创建了一个ID:1678,然后将这个用户的信息以及ID一起存储在数据库中记录下来。当服务器给客户机第一次返回时,在常规响应行基础上加上set-cookie:1678返回,浏览器收到响应时,会将这段信息解析出来并且给自己的cookie文件中加上用户在这个网站上的唯一标识号1678。当用户在一次访问时,会携带它的cookie信息1678请求,服务器再一次收到请求后会识别出该用户,然后可以做一些面向这个用户的特殊行为,比如说我在这个网站上买东西,这时候就会识别出我买过什么,然后给出相似的物品推荐。再相隔一周或者更长时间,只要我的cookie有效,那么再次访问这个网站时,还会重复上述第二次的过程。
所以这也就不得不提出cookie的弊端,最大的弊端就是 隐私问题,还拿上面购物的例子举例,一些非法的商家可能会时不时推送一些广告或者是其他信息给用户,造成个人隐私的泄露,导致不安全问题。
cookie的字段
name | cookie名称 |
value | cookie的值 |
domain | cookie的域名,默认为请求的地址 |
path | cookie的页面路径 |
size | cookie的大小 |
expires | cookie的过期日期 |
secure | cookie安全 |
httponly | cookie的读写性 |