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
键值对,key
为www.baidu.com
, value
为百度服务器IP
。在发送www.baidu.com
请求时,请求先发送给DNS服务器,DNS服务器会返回百度服务器的IP,接着主机会把数据发向这个IP。其过程描述图如下:
那么为什么要使用DNS服务器?主要是因为IP不便于人们记忆。
注意:
- 一台服务器可以没有域名,可以靠IP直接访问。
- 不同时间,同一域名,可能解析出不同的IP地址。
多个域名可以指向同一个IP
。
2.1 域名
因特网采用层次树状的命名方法,最右边是树根,域名(domain)的各个子域间用.
隔开。
自下而上书写域名。
2.2 域名服务器/系统(DNS)
DNS是一个基于C/S模式的分布式数据库系统。
2.3 域名解析过程
分为两种:递归查询和迭代查询。递归查询用的少。
本地域名服务器的高速缓存会记录所查询的域名映射,这样减少对DNS的压力,并提高用户体验。
pc一般在开机后会加载本地服务器种的域名高速缓存内容。
注意:
- 主机上请求域名服务器的软件只需要知道本地域名服务器的IP,其他域名服务器不需要知道,交给本地域名服务器去完成。
- 无论域名服务器采用是递归查询还是迭代查询,最终都是由本地服务器将结果返回给用户。
- 递归查询:主机请求一次,本地域名服务器请求
1次
或0次
请求。
迭代查询:主机请求一次,而本地域名服务器请求0次
,1次
或多次
- 给域名,问查询次数:
3. 文件传输协议
3.1 文件传输协议 FTP(File Transfer Protocol)
FTP的特点:
- FTP是基于
C/S
的模型,使用TCP
协议。- 提供
不同种类主机系统
(软硬件体系等都可以不同)之间的文件传输能力。- 允许客户指名文件的
类型
和格式
,并允许文件具有存取权限
。- 有两种使用方式:
- 使用
权限管理
的方式(账户、密码)- 使用
匿名
的方式FTP服务进程的组成:
- 主进程:负责
接受新的请求
- 若干从属进程:负责
处理当个请求
。
- 注意:一个ftp的服务器进程可以同时为多个客户进程提供服务。
注意:ftp协议是控制信息是带外传送的协议。带内指数据传送通道,ftp的控制信息与数据的传输使用的是两个不同的通道,所以其是控制信息是带外传送的协议。其他协议基本上都是控制信息与数据传输是同一个连接。
注意:匿名ftp访问通常使用“anonymous”作为用户名。
3.1.1 FTP工作原理
* 文件传输的工作步骤:
1. 服务器打开熟知端口21(也可以更改)。
2. 等待客户发送请求
3. 主进程接受请求后,将请求交给从属进程处理,从属进程处理完请求后终止。
注意:主进程与从属进程是并发执行的。(多个请求下)
5. 回到等待状态,继续接受其他客户的请求。
* 注意:ftp服务器必须在整个会话期间保留用户的状态信息,比如账户密码等信息,具体体现在控制进程中。
注意:控制进程和连接进程都属于从属进程。
- 主进程接受到客户连接请求后,fork一个子进程(即控制连接进程,因为是子进程,依旧使用21号端口),建立控制连接,双方进入会话状态,这时主服务器进程进入堵塞状态,等待新的客户ftp请求。
- 如果此时,客户控制进程向服务器发送数据请求,此时,控制连接fork一个新的进程(新的进程肯定不为21号端口),专门用来进行数据传输,与客户端所建立的连接就是数据连接。
控制连接始终保持,只要连接不释放。
数据连接只是在具体传文件时保持一会,数据传输完毕后立马释放,如果有新的数据,有需要再建立连接…
注意:数据连接的端口不一定是20
- 如果是主动方式使用TCP20端口,
- 如果是被动方式,由服务器和客户端自行协商决定(端口>1024)
- 控制连接和数据连接都是基于TCP协议的。
- 主动方式
- 用户向FTP服务器发送一个连接请求,服务器响应给客户端TCP的21端口,并立马进行第2步操作。
- 服务器立马发送使用20端口与客户端建立数据传送的请求。
- 被动方式
- 用户向FTP服务器发送一个连接请求,服务器响应给客户端TCP的21端口。然后服务器不立马发送数据连接请求,而是等客户端发送数据连接请求。
- 客户端发送数据连接请求,服务器端随机使用一个>1024的端口响应。
那么为什么要设计两个独立的连接?
是因为使用两条独立的连接可以使ftp变得更加的简单、更容易被实现、更有效率。同时,在文件的传输过程中,还可以利用控制连接控制传输过程,比如客户可以请求终止、暂停等。
3.1.2 FTP传输模式
- 文本模式:ASCII模式,以文本序列传输数据。
- 二进制模式:Binary模式,以二进制序列传输数据。
3.2 简单文件传输协议 TFTP(Trivial File Tranfsfer Protocol)
* 优点:
1. 适用于UDP环境-程序或文件同时被许多终端下载
2. 代码占内存小-适用于特殊内存小的设备
3. 面向小文件
4. 电子邮件
电子邮件组成
- 信封
- 邮件内容
- 邮件头
- 邮件体:实际要传送的信函内容。
电子邮件的格式:收件人邮箱名@邮箱所在主机域名,如abc@qq.com 其中收件人邮箱名即用户名。
abc在qq.com上必须是唯一的
。
注意:
- 首部中包含一些首部行,每个首部行由一个关键字后跟冒号再后跟值组成。有些关键字是必须的,有些是可选的。
有些是自动生成的,比如发件人
,时间
,有些是需要用户填写的,比如To:
、Subject:
- 必填
1. To:
2. From:- 选填
1. Subjedt: 主题- 传输层使用的是
明文
来传输密码的。
4.1 电子邮件运转流程
注意:
- 无论是用户代理与服务器间,还是服务器与服务器间,发送邮件都是使用的SMTP协议,只有真正的需要接受邮件的用户接受邮件时使用的POP3或IMAP协议。
- 每个邮件服务器既可以做服务器,也可以做用户。
- 邮件发送过程
- 发送方使用SMTP将邮件发送给发送端邮件服务器
- 发送方邮件服务器定时扫描缓存中是否有待发送的邮件,有就向接收端邮件服务器进程发送建立TCP连接请求。
- 如果接收端邮件服务器现在能够处理,就建立TCP连接,SMTP客户开始向远程SMTP服务器进程发送邮件。当所有待发送给该邮局的邮件发送完毕后,就关闭此次TCP连接。
- 接受方邮件服务器进程接受到邮件后,将邮件放入收信人的用户邮箱,等待收信人在方便时进行读取。
- 收件人打算收信时,调用用户代理,使用POP3(或者IMAP)协议将自己的邮件从接收方服务器的用户邮箱中取回。
4.2 SMTP协议和MIME协议(SMTP的改进)
SMTP协议使用的是:TCP连接,25号端口,C/S模型。
SMTP通信的三个阶段:
具体过程如下:
虽然,SMTP能够传送邮件,但是其传送的内容有一些限制:
- SMTP不能传送可执行文件或者其他二进制对象。
- SMTP只能传送7位ASCII码,不能传送其他非英语国家的文字。
- SMTP服务器会拒绝超过一定长度的邮件。
上面的缺点显然是我们不能容忍的,为了解决上面的几个问题,我们一般是使用对SMTP加强的MIME协议。其处理过程如下:
这样使得电子邮件可以支持声音、图像视频、多国语言等,使得传输内容更加丰富。
4.3 POP3协议与IMAP协议
POP3的3指的是使用POP协议的第三版本。
POP3协议使用TCP连接
,端口号为11
0,使用C/S
模型。
POP3工作方式:
- 下载并保留(在服务器上)
- 下载并删除
由此可见,POP3协议不是很符合实际情况,为了加强用户体验,出现了一种新的协议:网际报文存储协议IMAP。
注意:
POP3
在传输层使用明文
来传输帐号、密码
,并不对其加密- 该协议只能传输
ASCII
码的,其他的都不能发,连二进制数据
也不行。如果要传输非ASCII码数据,可以通过MIME转。
IMAP协议比POP协议要复杂的多。其主要有如下两个主要功能:
- 当用户pc上的IMAP客户程序打开IMAP服务器的邮箱时,用户可以看到邮箱的首部,若用户需要打开某个邮件,该邮件才上传到用户的计算机上。
- 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
- HTTP协议特点:
- HTTP协议是
无状态
的。比如两次请求同一个页面是一样的。
- 好处:简化了服务器的设计,更容易支持高并发的HTTP请求。
- 通过
Cookie
记录用户状态。cookie是存储在客户端的。- HTTP采用
TCP
作为运输层协议,但HTTP
协议本身是无连接
的(重点),因为运输层的TCP面向连接的。
- HTTP不必考虑数据在传输过程中被丢弃后怎么重传。通信双方在交换HTTP报文之前不需要建立连接。
- HTTP可以使用持久连接也可以使用非持久连接。
- 注意:
HTTP/1.0
只支持非持久
连接。
5.2.1 HTTP连接方式
HTTP的连接方式
- 持久连接:在建立一次TCP连接之后,一段时间后再释放连接,以便有其他文件继续传,节省时间。
- 非流水线
- 流水线
- 非持久连接:每次请求/响应(这里是请求和该请求对应的响应)都需要建立TCP连接,接受完毕后立即释放连接。
- 每次文件传输时间 = 2RTT + 文件传输时间
- 读取一个100个图片的页面,需要建立101次TCP连接。
HTTP/1.0
只支持非持久
连接。
连接类型的标志:
- 在首部行中
- Connection: close ->非持久连接
- Connection: keep-alive ->持久连接
持久连接传输文件的效率更高。
同样的多的请求,流水式处理这些请求更加快。
5.2.2 HTTP报文
* HTTP报文分类:
1. 请求报文reques
* 分类
1. get
2. post
3. put
4. head ->服务器不会返回响应报文,主要作用是调试
...
2. 响应报文response
* 请求和响应报文都是由三部分组成:
1. 开始行:用来区分是请求还是响应报文
2. 首部行:可有多行(说明浏览器、cookie等信息),最后有一个空行与实体主体隔开。
3. 实体主体
* 请求报文一般不用,响应报文一般使用
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/84627.html