对网络应用层的理解(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/shenmill/article/details/75087239

上一篇博客中从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的读写性

web缓存技术

我在之前的博客中 写过,这里就不再具体总结了,详情:http://blog.csdn.net/shenmill/article/details/71080926

没有更多推荐了,返回首页