2_第二章_ 应用层协议原理
应用层的目标:网络应用的原理:网络应用协议的概念和实现方面传输层的服务模型客户-服务器模式对等模式(peer-to-peer)内容分发网络网络应用的实例:互联网流行的应用层协议HTTPFTPSMTP / POP3 / IMAPDNS编程:网络应用程序Socket API一些网络应用的例子:E-mail、Web、文本消息、远程登录、P2P文件共享、即时通信、多用户网络游戏、流媒体(YouTube,
应用层的
目标
:网络应用的原理:网络应用协议的概念和实现方面
- 传输层的服务模型
- 客户-服务器模式
- 对等模式(peer-to-peer)
- 内容分发网络
网络应用的实例:互联网流行的应用层协议
- HTTP
- FTP
- SMTP / POP3 / IMAP
- DNS
编程:网络应用程序
- Socket API
一些网络应用的例子:
E-mail、Web、文本消息、远程登录、P2P文件共享、即时通信、多用户网络游戏、流媒体(YouTube, Hulu, Netflix) 、Internet 电话、实时电视会议、社交网络、搜索 ……
体系架构
C/S
(客户器-服务器模式):资源全在服务端、可扩展性强、随着访问的用户增加服务器性能断崖式下降P2P
(对等模式):每个节点既是客户端也是服务器,性能平滑下降,管理困难,在每个会话上也有客户端与服务端之分混合体
(客户端-服务端和对等体系结构):每个客户端向服务器请求链接时,提供自己所拥有的资源
C/S 体系架构
P2P 体系结构
C/S 和 P2P 体系结构的混合体
进程通信
进程
:在主机上运行的应用程序
客户端进程
:发起通信的进程
服务器进程
:等待连接的进程
在同一个主机内,使用 进程间通信机制 通信(操作系统定义)
不同主机,通过 交换报文(Message) 来通信
- 使用 OS 提供的通信服务
- 按照应用协议交换报文(借助传输层提供的服务)
分布式进程通信需要解决的问题
标识
:标识自己是唯一的,与别人不同
寻址
:让别人能找到自己
# 问题1:对进程进行编址(addressing)
任何应用进程间的通信都可以使用两个端节点(end point)
来标识
传输层如何区分不同的应用程序:
- 第1个:你在哪,即你的 ip
- 第2个:你在哪跑,即 tcp 还是 udp(都有提供端口号,16个比特,65536个)
- 第3个:你在哪个端口上 port
例如:常用的 web 应用跑在 80 端口上,FTP 跑在21号端口,tomcat 跑在23号端口
# 问题2:传输层提供的服务-需要穿过层间的信息
缺点
:每次传输都需要提供ip和端口,比较麻烦,使用 Socket API
# 问题2: 传输层提供的服务-层间信息的代表
如果 Socket API 每次传输报文,都携带如此多的信息,太繁琐易错,不便于管理
用个代号 标示 通信的双方或者单方:socket
类比:就像 OS 打开文件返回的句柄一样,对句柄的操作,就是对文件的操作
TCP Scoket
一个
本地标识
(只有本操作系统知道);应用层和传输层的一个约定,方便管理,使用的时候会返回一个整数,代表我的 ip/端口号,以及对方的 ip/端口号。
从物理层面上看代表的是一个整数,实际上是代表会话关系
的一个本地关系,四元组
传输层知道本地的ip和端口号,当拿到对方的ip和端口号的时候,就可以从应用层创建Socket的时候生成的一张表中,根据两方ip/端口信息,找到那个整数
与不同的应用进程之间通信:
UDP Socket
使用 Socket API ,即一个整数来代表本地的 ip 和端口(
本地标识
),不代表会话关系
。2元组
所以应用层在进行传输的时候必须要交给传输层3样东西:
- UDP Socket
- 传输的数据
- 传输给谁(对方的ip和端口号)
# Q: 具体 Socket 是如何实现的呢 ? (后面会讲到)
进程
向套接字发送报文或从套接字接收报文套接字 <—> 门户
- 发送进程将报文 推出 门户,发送进程依赖于传输层设施在另外一侧的门将报文交付给接受进程
- 接收进程从另外一端的门户 收到 报文(
依赖于传输层设施
)
# 问题3:如何使用传输层提供的服务实现应用?
协议:在对等层的应用进程进行通信的过程中应该遵循的规则集合
定义应用层
协议
:报文格式,解释,时序等编制程序,通过 API 调用网络基础设施提供通信服务传报文,解析报文,实现应用时序等
应用层协议
定义了:运行在不同端系统上的应用进程如何相互交换报文
- 交换的
报文类型
:请求和应答报文- 各种报文类型的
语法
:报文中的各个字段及其描述- 字段的
语义
:即字段取值的含义- 进程何时、如何发送报文及对报文进行响应的
规则
应用协议仅仅是应用的一个组成部分,一个应用除了协议(
应用实体
)之外,还有用户界面、IO、内部的处理逻辑等等,例如:
- Web应用:HTTP协议 + web客户端 + web服务器 + HTML
协议分类:
公开协议
:由 RFC 文档定义,允许互操作,如 HTTP, SMTP专用(私有)协议
:协议不公开,如:Skype
# 如何描述传输层的服务?(几个侧面指标)
常见应用对传输服务的要求:
Internet 传输层提供的服务
# Q 为什么要有 UDP? UDP存在的必要性?
# Q: 常见 Internet 应用 及 其应用层协议和传输协议 ?
# Q: 要实现安全的 TCP,可以怎么做?
更多推荐
所有评论(0)