3-中科大计网-第二章-应用层
本章分为三个部分:
- 原理
- 传输层的服务模型
- 客户-服务器模式
- 对等模式(peer-to-peer)
- 内容方法网络
- 实例
- HTTP
- FTP
- SMTP/POP3/IMAP
- DNS
- 编程
- Socket API
应用层协议原理
客户-服务器模式(C/S:client/server)
- 主要在于扩展性差,且客户端多于阈值,服务器的性能会断崖式地下降
- 可靠性也差
对等模式(P2P)
混合体:CS和P2P体系结构
进程通信
进程:在主机上运行的应用程序
客户端进程:发起通讯的进程
服务器进程:等待连接的进程
- 在同一个主机内,使用进程间通信机制通信(操作系统定义)
- 不同主机,交换报文(Message)来通信
- 使用OS提供的通讯服务
- 按照应用协议交换报文
- 借助传输层提供的服务
- 注意:P2P架构的应用也有客户端进程和服务器进程之分
分布式进程通讯需要解决的问题
- 问题1:进程标示和寻址问题**(服务用户)**
- 问题2:传输层-应用层提供服务是如何**(服务)**
- 位置:层间界面的SAP(TCP/IP:socket)
- 形式:应用程序接口API(TCP/IP : socket API)
- 问题3:如何使用传输层提供的服务,实现应用进程间的报文交换,实现应用**(用户使用服务)**
- 定义应用层协议:报文格式,解释,时序等
- 编制程序,使用OS提供的API,调用网络基础设备提供通讯服务传报文,实现使用时序等
问题1:对进程进行编址(addressing)
进程为了接收报文,必须有一个标识即SAP(发送也需要标示)
- 主机:唯一的32位IP地址
- 仅仅有IP地址不能够唯一标示出一个进程;在一台端系统上有很多应用进程在运行
- 所采用的传输层协议:TCP or UDP
- 端口号(Port Numbers)
- 主机:唯一的32位IP地址
一些知名端口号的例子
- HTTP:TCP 80 Mail: TCP25 ftp:TCP 2
一个进程:用IP+port标示 端节点
本质上,一对主机进程之间的通讯由2个端节点构成
问题2:传输层提供的服务-需要穿过层间的信息
- 层间接口必须要携带的信息
- 要传输的报文(对本层来说:SDU)
- 谁传的:自己的应用进程标示:IP+TCP(UDP)端口
- 传给谁:对方的应用进程标示:对方的IP+TCP(UDP)端口号
- 传输层实体(tcp或udp实体) 根据这些信息进行TCP报文段(UDP数据报)的封装
- 源端口号,目标端口号,数据等
- 将IP地址往下交IP实体,用于封装IP数据报:源IP, 目标IP
问题2:传输层提供的服务-需要穿过层间的代表
如果Socket API 每次传输报文,都携带如此多的信息,太繁琐易错,不便于管理
- 所以使用socket来替代自己和对方的IP的信息
用个代号标示通信的双方或者单方:socket
就像OS打开文件返回的句柄一样
- 对句柄的操作,就是对文件的操作
TCP socket:
- TCP服务,两个进程之间的通信需要之前要建立连接
- 两个进程通信会持续一段时间,通信关系稳定
- 可以用一个整数表示两个应用实体之间的通信关系,本地标示
- 穿过层间接口的信息量最小
- TCP socket:源IP,源端口,目标IP,目标IP,目标端口
- TCP服务,两个进程之间的通信需要之前要建立连接
TCP之上的套接字(socket)
- 对于使用面向连接服务(TCP)的应用而言,套接字是4元组的一个具有本地意义的标示
- 4元组:**(源IP,源port,目标IP,目标port)**
- 唯一的指定了一个会话(2个进程之间的会话关系)
- 应用使用这个 ,与远程的应用进程通信
- 不必在每一个报文的发送都要指定这4元组
- 就像使用操作系统打开一个文件,OS返回一个文件句柄一样,以后使用这个文件句柄,而不是使用这个文件的目录名、文件名
- 简单,便于管理
TCP socket是存在本地的,因此应用层传给传输层后,传输层会查socket表来得到IP
问题2:传输层提供的服务-层间信息代码
- UDP socket:
- UDP服务,两个进程间的通讯需要前无需建立连接
- 每个报文都是独立传输的
- 前后报文可能给不同的分布式进程
- 因此,只能用一个整数表示本应用实体的标示
- 因为这个报文可能传给另外一个分布式进程
- 穿过层间接口的信息大小最小
- UDP socket: 本IP, 本端口
- 但是传输报文时,必须要提供对方IP,port
- 接收报文时:传输层需要上传对方的IP,port
- UDP服务,两个进程间的通讯需要前无需建立连接
UDP之上的套接字(socket)
- 对于使用无连接服务(UDP)的应用而言,套接字是2元组的一个具有本地意义的标示
- 2元组:IP,port (源端指定)
- UDP套接字指定了应用所在的一个端节点(end point)
- 在发送数据报时,采用创建好的本地套接字(标示ID),就不必在发送每个报文中指明自己所采用的ip和port
- 但是在发送报文时,必须要指定对方的ip和udp port(另外一个段节点)
套接字(Socket)
- 进程向套接字发送报文或从套接字接收报文
- 套接字 <-> 门户
- 发送进程将报文推出门户,发送进程依赖于传输层设施在另一侧门将报文交付给接收进程
- 接收进程从另一侧门收到报文(依赖于传输层设施)
问题3:如何使用传输层提供的服务实现应用
- 定义应用层协议: 报文格式,解释,时序等
- 编制程序,通过API调用网络基础设施提供通信服务传报文,解析报文,实现应用时序等
应用层协议
应用需要传输层提供什么样的服务?如何描述传输层的服务?
- 数据丢失率
- 吞吐
- 延迟
- 安全性
常见应用对传输服务的要求
Internet传输层提供的服务
UDP存在的必要性
- 能够区分不同的进程,而IP服务不行
- 在IP提供的主机到主机端到端功能的基础上,区分了主机的应用进程
- 无需建立连接,省去了建立连接时间,适合事务性应用
- 不做可靠性的工作,例如检错重发,适合那些对实时性要求高且正确率要求不高的应用
- 因为未了实现可靠性(正确性,保序等),必须付出时间代价
- 没有拥塞控制和流量控制,应用能够按照设定的速度发送数据
- 而在TCP上面的应用,应用发送数据的速度和主机向网络发送的实际数据是不一致的,因为有流量控制和拥塞控制
Internet应用及其应用层协议和传输层协议
安全TCP
Web and HTTP
一些术语
HTTP概况
HTTP:超文本传输协议
- Web的应用层协议
- 客户/服务器模式
- 客户:请求、接收和显示Web对象的浏览器
- 服务器:对请求进行响应,发送对象的Web服务器
- HTTP 1.0: RFC 1945
- HTTP 1.1: RFC 2068
- 使用TCP:
- 客户发起一个与服务器的TCP连接(建立套接字),端口号为80
- 服务器接受客户的TCP连接
- 在浏览器(HTTP客户端)与Web服务器(HTTP服务器server)交换HTTP报文(应用层协议报文)
- TCP连接关闭
- HTTP是无状态的
- 服务器并不维护关于客户的任何信息
HTTP连接
非持久HTTP
最多只有一个对象在TCP连接上发送
下载多个对象需要多个TCP连接
HTTP/1.0使用非持久连接
持久HTTP
多个对象可以在一个(在客户端和服务器之间的)TCP连接上传输
HTTP/1.1默认使用持久连接
非持久HTTP连接
响应时间模型
持久HTTP
HTTP请求报文
通用格式
提交表单输入
方法类型
HTTP响应报文
HTTP响应状态码
cookies
Web缓存(代理服务器)
实例
条件GET方法
FTP*
Email、SMTP、POP3、IMAP
Email电子邮件
三个组成部分
- 用户代理
- 邮件服务器
- 简单邮箱传输协议:SMTP
用户代理
- 又名“邮件阅读器”
- 撰写,编辑和阅读邮件
- 如Outlook
- 输出和输入邮件保存在服务器上
邮件服务器
- 邮件中管理和维护发送给用户的邮件
- 输出报文队列保持待发送邮件报文
- 邮件服务器之间的SMTP协议: 发送email报文
- 客户:发送方邮件服务器
- 服务器:接收端邮件服务器
Email: SMTP{RFC 2821}
- 使用TCP在客户端和服务器之间传送报文,端口号为25
- 直接传输:从发送方服务器到接收方服务器
- 传输的3个阶段
- 握手
- 传输报文
- 关闭
- 命令/响应交互
- 命令:ASCII文本
- 响应:状态码和状态信息
- 报文必须为7位ASCII码
例子
简单的SMTP交互
SMTP:总结
邮件报文格式
报文格式:多媒体扩展
邮箱访问协议
- SMTP:传送到接收方的邮件服务器
- 邮件访问协议:从服务器访问邮件
- POP:邮局访问协议(Post Office Protocol)[RFC 1939]
- 用户身份确认(代理<->服务器)并下载
- IMAP: Internet邮件访问协议(Internet Mail Access Protocao)[RFC 1730]
- 更多特性
- 在服务器上处理存储的报文
- HTTP:Hotmailm Yahoo! Mail等
- 方便
- POP:邮局访问协议(Post Office Protocol)[RFC 1939]
POP3协议
POP3与IMAP
DNS(域名解析)
P2P应用
CDN
TCP套接字(Socket)编程
UDP套接字编程
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 云泥小窝!
评论