常见的网络体系结构分为:C/B-S结构 与 P2P结构。
需要一个中心服务器,具有固定且周知的IP地址。如Google。
所有设备都是对等方,如skype。
P2P结构的挑战有三:
发起通信的进程被标识为客户,等待联系的进程是服务
当一个客户寻求服务时,他首先要找到服务的地址。有了这个地址,它就能找到对应的服务器。这就是IP地址,它也唯一标识了主机。
但一个服务器可能要同时服务多种客户。每个客户需要找到服务主机上自己需要的服务,即服务主机上的接受进程。这个就是端口号。
在www.iana.org上可以看到对应的公共的端口号。
socket是应用程序进程和运输层之间的接口。通过socket我们可以:
在不同的应用场景中,数据丢失的容忍度,可能会决定我们使用什么协议。运输层的协议可以分类为:可靠数据传输和不可靠数据传输。在容忍丢失应用中,我们就可以选择不可靠数据传输。
吞吐量是发送进程能够向接收进程交付比特的速率。传输层的协议可以分类为能够保持特定吞吐量和不能够保持特定吞吐量两种。而他们对应的应用场景,分别为:带宽敏感应用(如网络电话)和弹性应用(如文件传输)。
运输层协议提供了能够保证时延的协议和不能保证时延的协议。对于高实时的场景,我们需要使用能够保证时延的协议,反之则可以使用不能保证时延的协议。
运输协议能为应用程序提供一种或多种安全性服务。如数据加密、数据完整性和端点鉴别。
不提供不必要服务的轻量级运输协议。无连接、不保证数据正确,也不保证数据顺序正确。
我们确定了运输层,就是确定了我们的信息的运输方式。但我们运输的内容是什么样的,如何才能让客户端和服务端互相理解运输的内容,这就是应用层的事情了。
应用层协议定义了运行在不同端系统上的应用程序进程如何相互传递报文。特别定义的有: