应用层协议原理
应用程序研发核心:跑在不同端系统上的程序,能通过网络通信。
例:跑在用户主机上的浏览器程序,和跑在Web服务器上的Web服务器程序。
一、应用程序的体系结构
- 客户—服务器:
客户彼此不直接通信。
服务器:一台总是打开的、有固定的周知地址的主机。所以,客户总是能向它的IP地址发送分组来与其联系。一台主机忙不过来,数据中心data center诞生了。 - P2P
二、进程通信
同一台主机上的进程,采用进程间通信机制。
不同主机上的进程,跨越计算机网络交换报文。
- 客户和服务器进程:
成对出现,互发报文。
发起的是客户,接收的是服务器。 - 进程与计算机网络间的接口:
进程对通过套接字互发报文。
套接字socket:同一台主机中,应用层和运输层间的接口,也叫应用程序编程接口,即API。开发人员可以控制套接字在应用层端的一切,但对运输层仅限于选择运输层协议、设定几个运输层参数。 - 进程寻址:
进程1向进程2发送分组,需要知道进程2所在主机的IP地址,和进程2的端口号。
三、可供应用程序使用的运输服务
开发一个应用程序,必须选择一个运输层协议,那么运输层协议能向调用它的应用程序提供什么样的服务呢?
- 可靠数据传输
分组在计算机网络中可能丢失,而有的应用程序能容忍数据丢失,有的不能忍,当一个运输层协议提供确保数据正确、完整的交付服务时,发送进程只要将数据传递进套接字,就可以完全相信该数据能无差错地到达接收进程。 - 吞吐量
可用吞吐量就是发送进程向接收进程交付比特的速率,带宽敏感的应用对吞吐量有特定要求,而弹性应用能根据当时可用的带宽或多或少的利用可供使用的吞吐量。运输层协议可以提供一种服务:能够以特定的速率提供确保的可用吞吐量。 - 定时
一些应用对数据交付有严格的时间限制,所以运输层协议可以提供定时保证。 - 安全性
为俩进程的数据传输提供加密解密服务,防止传输过程中被小贼看见。
四、因特网提供的运输服务
当开发一个应用时,首先要选择一个运输层协议,TCP和UDP为调用它们的应用提供不同的服务集合。
- TCP服务
当某个应用程序调用TCP作为其运输协议时,就能享受面向连接服务、可靠数据传输服务。 - UDP服务
无连接的,提供最小服务的轻量级运输协议。不保证数据交付到,到了还可能乱序到,这服务员还蛮不靠谱的,一般没人用,用也是TCP在后面当备胎。 - 因特网运输协议所不提供的服务
目前不提供吞吐量和定时保证。
五、应用层协议
发送进程把报文发送给套接字俩进程就可以实现通信,报文部分交给应用层协议了。
- Web应用—>HTTP超文本传输协议
- 电子邮件应用—>SMTP简单邮件传输协议
- 主机名到IP地址转换的目录服务—>DNS域名系统
啃书笔记,不全,先啃重要的。