网络应用是计算机网络存在的理由,如果我们不能构想出任何有用的应用,也就没有任何必要去设计支持它们的网络协议了。
应用层协议原理#
1.1 应用层协议#
应用层协议定义了运行在不同端系统上的应用程序如何相互交换报文
每个应用层协议都是为了解决某一类应用问题,而问题的解决又往往是通过位于不同主机中的多个应用进程之间的通信和协同工作来完成的。应用层的具体内容就是规定应用进程在通信时所遵循的协议
应用层的许多协议都是基于客户服务器方式
同时特别的,应用层协议也定义了:
- 交换的报文类型
- 各种报文类型的语法
- 字段的语义
- 确定一个进程何时以及如何发送报文,对报文进行相应的规则
1.2 应用程序体系结构#
在对信息进行网络编码前,我们需要指定一份应用程序体系结构,来规定如何在端系统上组织该应用程序,这里介绍两种主流的结构:
客户-服务器体系结构(CS)
- 总有一台打开的主机,接受来自各方的请求,并将结果返回个用户
- 服务器的集合叫做数据中心
P2P体系结构
- 应用程序在间断连接的主机之间直接通信(对等方)
- 对中心服务器有最小的依赖
- 服务器一般用于追踪用户的ip地址,但报文在主机之间直接发送
1.3 进程通信#
对于操作系统来说,进行通讯的并不是程序本身,而是
进程
,同时进程间交换的信息叫做报文
对于网络应用程序来说,发起通信的一端叫做客户端,与之对应的另外一端称为服务端
进程通过一个称为套接字的软件接口来发送报文,其为应用层与运输层之间的接口,又称为
API
要向特定的地址发送信息,我们需要目的地的地址,这个一般使用IP进行标识。同时不同的应用有其自己所有的端口,来用于进行标识需要接收的内容
1.4 报文传输#
为了得到合适于报文传输的运输层协议,我们需要从以下几点进行考虑
- 可靠数据传输(确定信息容忍丢失的范围)
- 吞吐量(网络带宽的限制)
- 定时(信息传输需要的时间)
- 安全性
这里先介绍两种常用的运输层协议:
TCP (Transmission Control Protocol)
- 面向连接的服务
- 可靠的数据传输服务
- 具有拥堵控制机制
UDP (User Datagram Protocol)
- 不可靠的数据传输服务
- 能以任意速率进行传输
因此在实际的运用过程中,我们要根据实际需求,来选择合适的传输方案