领略计算机网络世界6:应用层

1. 网络应用模型

1.1 应用层概述

* 应用层
	1. 主要作用
		* 应用层为应用程序的通信提供服务。

	2. 应用层协议定义
		1. 应用进程交换的报文类型,请求还是响应?
		2. 各种报文类型的语法,如报文中各个字段及其详细描述
		3. 字段的语义,即包含在字段终端信息的含义。
		4. 进程何时、如何发送报文,以及针对报文进行响应的规则

	3. 通过应用层协议定义得到应用层的功能:
		1. 文件传输、访问和管理     FTP = TCP + 53
		2. 电子邮件							 SMTP、POP3
		3. 虚拟终端                           http
		4. 查询服务和远程作用登录   DNS

在这里插入图片描述

1.2 网络应用模型

* 网络应用模型分类
	1. 客户/服务器模型 Client/Server
	2. P2P模型 Point to Point

1.2.1 客户/服务器模型 Client/Server

1. 服务器:提供计算服务的设备
	* 特点
		1. 永久性提供服务。24小时不间断
		2. 永久性访问地址/域名
2. 客户机:请求计算服务的设备,需要提前知道服务器的地址
	* 特点
		1. 与服务器通信,使用服务器提供的服务
		2. 间歇性接入网络
		3. 可能使用动态IP地址
		4. 不与其他客户机直接通信

1.2.2 P2P模型 Peer to Peer

不难看出,在C/S模型中,服务器的好坏决定了整个系统的性能,当大量用户请求服务时,服务器就必然成为系统的瓶颈。P2P的思想是整个网络中的传输内容不再被保存到中心服务器上,每个结点同时具有下载、上传的功能,其权力与义务都是大体对等的。

* P2P模型:对等模型
	* 特点:记住一点,每一台主机既做主机又做服务器。
		1. 不存在永远在线的服务器
		2. 每个主机既可以**提供服务**,也可以**请求服务**
		3. 任意端系统间可以直接通信
		4. 节点间歇性接入网络
		5. 节点可以动态改变IP
		6. 可扩展性好。一个节点坏掉,影响不大。

	* 优点:
		1. 减轻了服务器的计算压力
		2. 多个计算机间相互直接共享文件。
		3. 可扩展性好
		4. 网络健壮性强

2. 域名解析系统 DNS

通过前面的学习,我们知道网络中的两台主机的逻辑通信是通过IP实现的,但是平时,我们访问百度网站的时候并没有输入百度服务器的IP,而是输入域名www.baidu.com, 那这是怎么回事?
事实上,这是使用了DNS服务器,DNS服务器里面存放着key-value键值对,keywww.baidu.com, value为百度服务器IP。在发送www.baidu.com请求时,请求先发送给DNS服务器,DNS服务器会返回百度服务器的IP,接着主机会把数据发向这个IP。其过程描述图如下:
在这里插入图片描述
那么为什么要使用DNS服务器?主要是因为IP不便于人们记忆。

注意:

  1. 一台服务器可以没有域名,可以靠IP直接访问。
  2. 不同时间,同一域名,可能解析出不同的IP地址。
  3. 多个域名可以指向同一个IP

2.1 域名

因特网采用层次树状的命名方法,最右边是树根,域名(domain)的各个子域间用.隔开。
在这里插入图片描述
自下而上书写域名。

2.2 域名服务器/系统(DNS)

DNS是一个基于C/S模式分布式数据库系统
在这里插入图片描述

2.3 域名解析过程

分为两种:递归查询和迭代查询。递归查询用的少。
在这里插入图片描述
在这里插入图片描述
本地域名服务器的高速缓存会记录所查询的域名映射,这样减少对DNS的压力,并提高用户体验。

pc一般在开机后会加载本地服务器种的域名高速缓存内容。

注意:

  1. 主机上请求域名服务器的软件只需要知道本地域名服务器的IP,其他域名服务器不需要知道,交给本地域名服务器去完成。
  2. 无论域名服务器采用是递归查询还是迭代查询,最终都是由本地服务器将结果返回给用户。
  3. 递归查询:主机请求一次,本地域名服务器请求1次0次请求。
    迭代查询:主机请求一次,而本地域名服务器请求0次1次多次
  4. 给域名,问查询次数:
    在这里插入图片描述

3. 文件传输协议

3.1 文件传输协议 FTP(File Transfer Protocol)

  1. FTP的特点:

    1. FTP是基于C/S的模型,使用TCP协议。
    2. 提供不同种类主机系统(软硬件体系等都可以不同)之间的文件传输能力。
    3. 允许客户指名文件的类型格式,并允许文件具有存取权限
    4. 有两种使用方式:
      1. 使用权限管理的方式(账户、密码)
      2. 使用匿名的方式
  2. FTP服务进程的组成:

    1. 主进程:负责接受新的请求
    2. 若干从属进程:负责处理当个请求
  • 注意:一个ftp的服务器进程可以同时为多个客户进程提供服务。

注意:ftp协议是控制信息是带外传送的协议。带内指数据传送通道,ftp的控制信息与数据的传输使用的是两个不同的通道,所以其是控制信息是带外传送的协议。其他协议基本上都是控制信息与数据传输是同一个连接。
在这里插入图片描述

在这里插入图片描述

注意:匿名ftp访问通常使用“anonymous”作为用户名。

3.1.1 FTP工作原理

* 文件传输的工作步骤:
	1. 服务器打开熟知端口21(也可以更改)。
	2. 等待客户发送请求
	3. 主进程接受请求后,将请求交给从属进程处理,从属进程处理完请求后终止。
		注意:主进程与从属进程是并发执行的。(多个请求下)
	5. 回到等待状态,继续接受其他客户的请求。

* 注意:ftp服务器必须在整个会话期间保留用户的状态信息,比如账户密码等信息,具体体现在控制进程中。

在这里插入图片描述

注意:控制进程和连接进程都属于从属进程。

  • 主进程接受到客户连接请求后,fork一个子进程(即控制连接进程,因为是子进程,依旧使用21号端口),建立控制连接,双方进入会话状态,这时主服务器进程进入堵塞状态,等待新的客户ftp请求。
  • 如果此时,客户控制进程向服务器发送数据请求,此时,控制连接fork一个新的进程(新的进程肯定不为21号端口),专门用来进行数据传输,与客户端所建立的连接就是数据连接

控制连接始终保持,只要连接不释放。
数据连接只是在具体传文件时保持一会,数据传输完毕后立马释放,如果有新的数据,有需要再建立连接…

注意:数据连接的端口不一定是20

  1. 如果是主动方式使用TCP20端口,
  2. 如果是被动方式,由服务器和客户端自行协商决定(端口>1024)
  3. 控制连接和数据连接都是基于TCP协议的。
    在这里插入图片描述
  1. 主动方式
    1. 用户向FTP服务器发送一个连接请求,服务器响应给客户端TCP的21端口,并立马进行第2步操作。
    2. 服务器立马发送使用20端口与客户端建立数据传送的请求。
  2. 被动方式
    1. 用户向FTP服务器发送一个连接请求,服务器响应给客户端TCP的21端口。然后服务器不立马发送数据连接请求,而是等客户端发送数据连接请求。
    2. 客户端发送数据连接请求,服务器端随机使用一个>1024的端口响应。

那么为什么要设计两个独立的连接?

是因为使用两条独立的连接可以使ftp变得更加的简单、更容易被实现、更有效率。同时,在文件的传输过程中,还可以利用控制连接控制传输过程,比如客户可以请求终止、暂停等。

3.1.2 FTP传输模式

  1. 文本模式:ASCII模式,以文本序列传输数据。
  2. 二进制模式:Binary模式,以二进制序列传输数据。

3.2 简单文件传输协议 TFTP(Trivial File Tranfsfer Protocol)

* 优点:
	1. 适用于UDP环境-程序或文件同时被许多终端下载
	2. 代码占内存小-适用于特殊内存小的设备
	3. 面向小文件

4. 电子邮件

  1. 电子邮件组成

    1. 信封
    2. 邮件内容
      1. 邮件头
      2. 邮件体:实际要传送的信函内容。
  2. 电子邮件的格式:收件人邮箱名@邮箱所在主机域名,如abc@qq.com 其中收件人邮箱名即用户名。
    abc在qq.com上必须是唯一的

注意:

  1. 首部中包含一些首部行,每个首部行由一个关键字后跟冒号再后跟值组成。有些关键字是必须的,有些是可选的。
    有些是自动生成的,比如发件人时间,有些是需要用户填写的,比如To:Subject:
    1. 必填
      1. To:
      2. From:
    2. 选填
      1. Subjedt: 主题
  2. 传输层使用的是明文来传输密码的。

4.1 电子邮件运转流程

在这里插入图片描述

注意:

  1. 无论是用户代理与服务器间,还是服务器与服务器间,发送邮件都是使用的SMTP协议,只有真正的需要接受邮件的用户接受邮件时使用的POP3或IMAP协议。
  2. 每个邮件服务器既可以做服务器,也可以做用户。
  • 邮件发送过程
    1. 发送方使用SMTP将邮件发送给发送端邮件服务器
    2. 发送方邮件服务器定时扫描缓存中是否有待发送的邮件,有就向接收端邮件服务器进程发送建立TCP连接请求。
    3. 如果接收端邮件服务器现在能够处理,就建立TCP连接,SMTP客户开始向远程SMTP服务器进程发送邮件。当所有待发送给该邮局的邮件发送完毕后,就关闭此次TCP连接。
    4. 接受方邮件服务器进程接受到邮件后,将邮件放入收信人的用户邮箱,等待收信人在方便时进行读取。
    5. 收件人打算收信时,调用用户代理,使用POP3(或者IMAP)协议将自己的邮件从接收方服务器的用户邮箱中取回。
      在这里插入图片描述

4.2 SMTP协议和MIME协议(SMTP的改进)

SMTP协议使用的是:TCP连接,25号端口,C/S模型。

SMTP通信的三个阶段:
在这里插入图片描述
具体过程如下:
在这里插入图片描述
虽然,SMTP能够传送邮件,但是其传送的内容有一些限制:

  1. SMTP不能传送可执行文件或者其他二进制对象。
  2. SMTP只能传送7位ASCII码,不能传送其他非英语国家的文字。
  3. SMTP服务器会拒绝超过一定长度的邮件。

上面的缺点显然是我们不能容忍的,为了解决上面的几个问题,我们一般是使用对SMTP加强的MIME协议。其处理过程如下:
在这里插入图片描述

这样使得电子邮件可以支持声音、图像视频、多国语言等,使得传输内容更加丰富。
在这里插入图片描述
在这里插入图片描述

4.3 POP3协议与IMAP协议

POP3的3指的是使用POP协议的第三版本。

POP3协议使用TCP连接,端口号为110,使用C/S模型。

POP3工作方式:

  1. 下载并保留(在服务器上)
  2. 下载并删除

由此可见,POP3协议不是很符合实际情况,为了加强用户体验,出现了一种新的协议:网际报文存储协议IMAP。

注意:

  1. POP3在传输层使用明文来传输帐号、密码,并不对其加密
  2. 该协议只能传输ASCII码的,其他的都不能发,连二进制数据也不行。如果要传输非ASCII码数据,可以通过MIME转。
    在这里插入图片描述
    在这里插入图片描述

IMAP协议比POP协议要复杂的多。其主要有如下两个主要功能:

  1. 当用户pc上的IMAP客户程序打开IMAP服务器的邮箱时,用户可以看到邮箱的首部,若用户需要打开某个邮件,该邮件才上传到用户的计算机上。
  2. IMAP可以让用户在不同的地方使用不同的计算机随时上网阅读处理邮件,还允许只读取邮件中的某个部分。(比如先看正文,附件自定义下载)

4.4 基于万维网的电子邮件

在这里插入图片描述
特点:与用户代理接触使用http协议。

在这里插入图片描述

5. 万维网和HTTP协议

5.1 万维网概述

* 万维网概述
	1. 万维网www是一个大规模的、联机式的信息存储所,是无数个网络站点和网页的集合。
	2. URL:统一资源定位符->唯一标识“页面“资源
		* 形式
			<协议>://<主机>:<端口>/<路径>
			eg:https://www.baidu.com
		* 注意:
			1. 端口和路径可以省略
			2. URL中不区分大小写
	3. 万维网使用超文本标记语言HTML,使得用户能够从一个界面跳到另一个界面。
	4. 万维网中使用http/https协议以超链接的形式提供给用户。
		* HTTP协议有响应报文和请求报文两种。
	5. 万维网以C/S方式工作。

5.2 超文本传输协议HTTP

在这里插入图片描述

  1. HTTP协议特点:
    1. HTTP协议是无状态的。比如两次请求同一个页面是一样的。
      • 好处:简化了服务器的设计,更容易支持高并发的HTTP请求。
    2. 通过Cookie记录用户状态。cookie是存储在客户端的。
    3. HTTP采用TCP作为运输层协议,但HTTP协议本身是无连接的(重点),因为运输层的TCP面向连接的。
      • HTTP不必考虑数据在传输过程中被丢弃后怎么重传。通信双方在交换HTTP报文之前不需要建立连接。
    4. HTTP可以使用持久连接也可以使用非持久连接。
      • 注意:HTTP/1.0 只支持非持久连接。

5.2.1 HTTP连接方式

  1. HTTP的连接方式

    1. 持久连接:在建立一次TCP连接之后,一段时间后再释放连接,以便有其他文件继续传,节省时间。
      1. 非流水线
      2. 流水线
    2. 非持久连接:每次请求/响应(这里是请求和该请求对应的响应)都需要建立TCP连接,接受完毕后立即释放连接。
      • 每次文件传输时间 = 2RTT + 文件传输时间
      • 读取一个100个图片的页面,需要建立101次TCP连接。
      1. HTTP/1.0 只支持非持久连接。
        在这里插入图片描述
        在这里插入图片描述
  2. 连接类型的标志:

    1. 在首部行中
      1. Connection: close ->非持久连接
      2. Connection: keep-alive ->持久连接

在这里插入图片描述
持久连接传输文件的效率更高。
在这里插入图片描述
同样的多的请求,流水式处理这些请求更加快。

5.2.2 HTTP报文

* HTTP报文分类:
	1. 请求报文reques
		* 分类
			1. get
			2. post
			3. put
			4. head ->服务器不会返回响应报文,主要作用是调试
			   ...
	2. 响应报文response

在这里插入图片描述

* 请求和响应报文都是由三部分组成:
	1. 开始行:用来区分是请求还是响应报文
	2. 首部行:可有多行(说明浏览器、cookie等信息),最后有一个空行与实体主体隔开。
	3. 实体主体
		* 请求报文一般不用,响应报文一般使用

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ElegantCodingWH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值