计算机网络系统学习笔记(3)---网络应用层

网络应用的体系结构

  • 客户机/服务器结构(C/S结构)
    服务器特点:1、服务器24小时开机 2、永久可访问的域名/地址 3、大量服务器之间具有可扩展性来承担大批量请求。
    客户机特点:1、暂时的接入网络,与服务器之间进行通信 2、可以使用动态的IP地址 3、客户机与客户机之间不能进行通信
  • 客户机/客户机结构(P2P结构)
    特点:
    1、没有永远在线的服务器
    2、任意端系统/节点之间可以直接通讯
    3、节点间歇性接入网络
    4、节点可能改变IP地址
  • Napster结构(混合结构)
    特点:文件传输使用P2P结构、文件的搜索采用C/S结构

网络应用的进程间通信

进程(Process): 主机上正在运行的程序,我们成为进程。
在网络上的进程间通信是通过“消息交换”来实现的,细节将在下文解释。
主要说的是C/S结构下的,客户机进程与服务器进程。

套接字(Socket): 我们进行网络通信时,有操作系统提供的API,在建立网络通信链路的时候,创建套接字是必然的过程。
套接字的功能:我们把套接字理解成操作系统为了给我们提供不同协议,不同数据的请求的一系列方法。

寻址进程方法:
在前面我们进行主机寻址时,使用的时IP地址和Mac地址的结合,但是在一个主机中不同进程之间的寻址,我们提供的一个新的标识符就是端口(Port).
进程的寻址方法:利用 “IP地址+端口号”

netstat -ano //Windows上IP地址与端口查询的方法

在这里插入图片描述
指的注意的端口号:HTTP服务器:80端口,Mail服务器:25端口在这里插入图片描述

应用层的HTTP协议

协议就是一个对通信过程的规范。
消息类型: 1、请求消息 2、响应消息
语法: 如下所示
在这里插入图片描述
解释:
第一行指示的是请求方法 、URL 、http请求的版本
下一部分我们成为请求头
字段:字段值;(不同的字段值规定了不同的控制信息,具体可以去查看RFC文档查询
然后就是请求体,向服务器提交的一些数据,可以没有。

注意:get方法和post方法的区别,深入理解get和post很重要,其他的一些倒不是重点。

有些get其实和post的作用一样:比如以下域名

https://www.baidu.com/baidu?
isource=infinity
&iname=baidu
&itype=web
&tn=02003390_42_hao_pg
&ie=utf-8&wd=%E7%9F%A5%E4%B9%8E

问号后面就是post提交的信息 但是他用get方法,在url里面直接加入下面信息,所以我感觉其实实际上post和get是同一种请求方法哈哈哈哈。
在这里插入图片描述

Web应用概述

Web应用遵循:HTTP传输协议,并使用TCP协议进行文本传输,
基本步骤概述如下:

  1. 服务器在80端口等待客户端提交请求消息。
  2. 客户端提交请求消息发起服务器TCP建立连接(创建套接字)
  3. 服务器收到请求后,检查客户端提交的信息,符合要求后,建立连接,回执同意连接
  4. 服务器与客户端之间进行数据通信。
  5. 通信完成后,关闭TCP连接。

值得注意的是:服务器不维护任何有关客户端过去所发请求的信息。(无状态性)
也就是说我们进行20次操作过后,只能保留最后一次操作内容,这个是很明显不符合我们的需求的,所以诞生了Cookie技术(后文解释,很久很久的技术)。

HTTP连接方式

HTTP有两种连接方式,
1、非持续性连接
2、持续性连接

从上面TCP的通信过程我们发现,通信的过程结束后,服务器会将通信通道关闭,这里就涉及到一个问题,我们知道,每次通信请求只能请求一个对象,如果一个网页有20个对象(文本、图像、音频……),那么就要进行20次关闭和20次开启,这样就非常浪费时间,这就是 非持续连接 的问题。

为了解决上述问题,在HTTP1.1版本时,我们采用了持续性连接。
持续性连接,在通信链路上由于使用的是分组交换,在数据不进行传输时,链路时间上也不被数据占用。

持续性连接可以分为两类:
1、非流水(pipelining)的持续性连接,只有前面的数据到达在发送第二个文件。
2、带有流水机制的持续性链接,一次性全部输出数据文件。

Cookie技术

为了解决,无状态管理机制造成的问题,我们简单介绍一下Cookie技术是个干什么的,怎么运作的。
在这里插入图片描述
原理如上图所示,客户端第一次进行访问amazon的时候,会提交一个Cookie文件,里面有你的一个标识符ebay:8734,然后服务器会将你的账号记录下来,并非配给你一个Set-cookie:1678,存储到数据库里面。
一周之后,你再进行请求通信的时候,由于你已经拥有了amazon设置的cookie号:1678,直接从数据库检索你的信息,记录了你的相关信息。
问题:
这种方法,造成了一些问题,导致一个人的浏览记录,浏览内容完全暴露在后台,用户的信息会泄露给Web应用提供商,这就会导致一些隐私问题。

Web缓存/代理服务器技术和条件GET

每次去原始服务器访问(original server)都会花费一定的事件,可能会影响链路阻塞,为了节约成本,提高性能,我们发明了这个缓存/代理服务器技术(proxy server),大概强大的原因如下:
在这里插入图片描述
由上图我们可以发现,他绕过了1.5Mbps的链路,而是在局域网中,直接访问了数据,大大增加了性能。
但是这里还有个问题就是,如何判断如果需要的数据更新了怎么处理呢?
这里就产生了条件GET,结构如下:
在这里插入图片描述
上述所示,与Last-Modified字段进行一个对比,确认为最新内容,如果为最新内容,则不用从原始服务器请求数据,如果不是,则要从原始服务器请求数据,然后代理服务器也要进行相应的数据更新。

思维导图

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值