计算机网络原理梳理丨应用层
目录
- 计算机网络应用体系结构
- 网络应用通信基本原理
- 域名系统
- 万维网应用
- Internet电子邮件
- FTP
- P2P应用
- Socket编程
计算机网络应用体系结构
C/S (客户/服务器)结构
通信只在客户与服务器之间进行,客户与客户之间不进行直接通信。
P2P (Peer to Peer)结构
每个对等端都同时兼备C/S应用的客户与服务器的特征,是一个服务器与客户的结合体,对等端之间直接通信。
混合结构
既有服务器的存在,又有对等端(客户)间的直接通信。
网络应用通信基本原理
C/S通信原理
服务器运行的是服务器进程,被动的等待客户端请求服务;客户端运行的是客户进程,主动发起通信,请求服务器提供服务。应用进程间遵循应用层协议交换应用层报文。
域名系统(DNS)
层次树状结构命名方法:
- 国家顶级域名 nTLD
- 通用顶级域名 gTLD
- 基础结构域名
域名服务器
- 域名解析:将域名映射为 IP 地址的过程
- 域名服务器:为了实现域名解析,需要建立分布式数据库,存储网络中域名与 IP 地址的映射关系,这些数据库存储在域名服务器上,域名服务器根据用户的请求提供域名解析服务。域名服务器的分类:
- 1.根域名服务器(全球13套)
- 2.顶级域名服务器
- 3.权威域名服务器
- 4.本地域名服务器
域名解析过程
- 迭代查询:只是将下一步要查询的的服务器告知查询主机或服务器。
- 递归查询:代替查询主机或其它域名服务器,进行进一步的域名查询,并将最终解释结果发送给查询主机或服务器。(缺点:多查询请求情况下影响域名服务器的性能,资源占用高)
万维网应用
万维网的数据传输采用 TCP 连接,保证传输的可靠性以获得可靠地数据。
工作过程:
1.客户端 Web 浏览器根据域名向域名服务器查询目标服务器的 IP 地址
2.根据查询出来的 IP 地址建立 TCP 连接
3.建立连接后发送 HTTP 请求报文 (携带 URL)
4.目标服务器根据 HTTP 请求报文中的 URL 信息找到对应的网页资源(HTML)作为 HTTP 响应资源返回客户端
5.浏览器解析 HTML 并展示
6.访问结束。
HTTP 请求方式
- 非持久连接:建立一个 TCP 连接,传输一个对象就断开连接
- 1.串行方式请求每个对象,且每次都要新建 TCP 连接,但不会同时建立多条连接
- 2.并行方式请求每个对象,每个请求建立一个 TCP 连接,会同时产生多条连接
- 持久连接:建立一个 TCP 连接,传输多个对象
- 1.非流水方式:建立一个 TCP 连接后,依次顺序传输所有对象,获取完毕后断开
- 2.流水方式:建立一个 TCP 连接后,同时请求所有包含对象,获取完毕后断开
HTTP 报文
- 请求报文
1.请求行:包含 方法、URL、版本号、回车符(结束标记)
2.首部行:包含所有需要上传的参数 及 回车符(结束标记)。参数以 Key:Value 形式存储,是明文 ASCII 字符,需要加密以提高安全性
3.实体主体:通常不用
请求行中方法列举:
GET:通过请求URI得到资源
POST:用于添加新的内容
PUT:用于修改某个内容
DELETE:删除某个内容
CONNECT:用于代理进行传输,如使用SSL
OPTIONS:询问可以执行哪些方法
PATCH:部分文档更改
PROPFIND,(wedav):查看属性
PROPPATCH, (wedav):设置属性
MKCOL, (wedav):创建集合(文件夹)
COPY, (wedav):拷贝
MOVE, (wedav):移动
LOCK, (wedav):加锁
UNLOCK (wedav):解锁
TRACE:用于远程诊断服务器
HEAD:类似于GET, 但是不返回body信息,用于检查对象是否存在,以及得到对象的元数据
- 响应报文
1.状态行:版本、状态码、短语、回车符(结束标记)
2.首部行:包含所有需要返回的参数 及 回车符(结束标记)。参数以 Key:Value 形式存储,是明文 ASCII 字符,需要加密以提高安全性
状态行中状态码列举:
Internet电子邮件
电子邮件系统结构
包括邮件服务器、简单邮件传输协议(SMTP)、用户代理、邮件读取协议(POP3 / IMAP)
SMTP
SMTP 是 Internet 电子邮件中信心应用层协议,实现邮件服务器之间或用户代理到服务器之间的邮件传输。
SMTP 使用传输层 TCP 实现可靠数据传输,端口号为25
SMTP 通过3个阶段的应用层交互完成邮件传输,分别是握手阶段、邮件传输阶段、关闭阶段
SMTP 的基本交互方式是 SMTP 客户端发送命令,命令后面可能携带参数, SMTP 服务器对命令进行应答。
SMTP 通讯过程
具体过程:
c 发送 TCP 连接请求
s 响应 220 携带域名 表示接受连接
c 发送 hello 命令 携带握手参数
s 响应 250 表示能够接受握手
进入邮件传输阶段
c 发送 MAIN_FROM 命令 携带邮件来源
s 响应 250 表示接收成功
c 发送 RCPT_TO 命令 携带发送目标
s 响应 250 表示接收成功
c 发送 DATA 命令,表示即将发送邮件主体
s 响应 354 ,表示可以接受主体
c 开始逐行发送邮件主体内容
c 发送结束标记 “.” + “回车”
s 响应 250 表示接收成功
c 发送 QUIT 命令,表示退出指令
s 响应 221 邮件通讯全部完成
电子邮件格式与MIME
电子邮件格式:
电子邮件内容分为三个部分:首部、空白行、主体。
首部关键词: TO 发送目标、 Subject 邮件主题、 Cc 抄送人、 From 发信人、 Date 发送日期、 Replay-To 回复地址
MIME(多用途互联网邮件扩展)
在邮件内容中支持多媒体文件的传输,比如图片、视频。它将非7位的ASCII码文本内容转换为7位ASCII码文本内容,然后再利用 SMTP 进行传输。
首部中会增加 MIME 首部行,说明主体内容原本的数据类型和采用的编码标准,接收方根据这些参数解码数据,得到原始数据。
邮件读取协议
POP3
第三版邮局协议(Post Office Protocol - Version 3,POP3):原理为相当于邮件下载
IMAP
互联网邮件访问协议(Internet Mail Access Protocol , IMAP ):直接维护邮件服务器内容
HTTP
产文本传输协议(Hyper Text Transfer Protocol,HTTP):通过浏览器即可访问邮件,不依赖客户端软件
FTP (文件传送协议)
可实现两个主机间文件互传的应用层协议,依赖传输层的 TCP 协议。
它与其它(SMTP、HTTP)服务不同的是,它需要两种连接:控制连接、数据连接
控制连接:负责传输控制命令,端口号 21
数据连接:负责传输文件内容,端口号 20
P2P 应用(对等模式)
充分利用了端系统的计算能力以及网络传输带宽,对服务器的依赖很小
Socket 编程基础
Socket 编程原理
网络应用进行通信时,需要通过 API 接口请求底层协议的服务。可以创建数据报类型套接字、流式套接字和原始套接字三种
数据报套接字:SOCK_DGRAM, 对应 UDP ,不可靠传输
流式套接字:SOCK_STREAM, 对应 TCP ,可靠传输
原始套接字:SOCK_RAW 对应, 对应 IP ,不具备传输层的服务
Socket 编程工作过程
基于TCP的Socket编程
基于UDP的Socket编程