网络应用:体系结构、进程、套接字与传输需求
网络应用
网络应用程序是指能够运行在不同端系统并通过网络彼此通信的程序。例如在Web应用程序中,有两个互相通信的程序,一个是运行在用户主机上的浏览器程序,另一个是运行在Web服务器主机上的服务器程序。
应用程序体系结构包括Client-Server和P2P(Peer-to-Peer)两种体系结构。在Client-Server中,服务器主机一直运行处理客户端的请求。因为服务器需要有一个固定的IP地址,因此客户端能够通过IP地址发送分组与其联系。著名的Client-Server应用程序包括Web、FTP、Telnet和电子邮件等。在Client-Server应用中,经常会出现一台单独的服务器主机不堪重负,跟不上所有客户请求的情况。例如搜索引擎(如Google、Bing、Baidu)、电商(如Amazon、eBay、Alibaba)、电子邮件(如Gmail、Yahoo!)、社交媒体(如Facebook、Instagram、Twitter、WeChat)都分布了多个数据中心,每个数据中心都有数十万台服务器,必须要持续供电和维护。而在P2P中,主机之间的通信不必通过专门的服务器,很多流量密集型的应用都是P2P体系结构的,包括对等方协助下载加速器(如迅雷)、文件共享(如BitTorrent)。
在中心服务器离线时修复分发
解锁完整互动实验、进阶解析与精选参考答案。
进程通信
在同一个端系统中,多个进程可以通过进程间通信的机制相互通信,然而在不同的端系统(可能有不同的操作系统)中,需要通过网络交换报文(message)。进程通过套接字(socket)接口向网络发送或接收报文。
发送主机
接收主机
应用通过套接字交付数据,下层负责在主机之间传送字节。
在进程发送分组的过程中,必须要标识IP地址和端口号(port number)才能将分组发送给另一主机的进程。其中IP地址用于标识主机,端口号用于指定运行在目的主机上的接收进程。由于一台主机上会运行多个应用程序,因此端口号是不可或缺的信息。一些著名的应用已经被分配了特定的端口号,例如Web服务器使用端口号80、邮件服务器(SMTP协议)进程使用端口号25。
把报文交付给正确进程
解锁完整互动实验、进阶解析与精选参考答案。
知识测验
发送端在使用socket时必须选择一种传输层协议,不同的协议会提供不同的服务。
一个传输层协议可以通过四个方面进行分类:
-
可靠数据传输(reliable data transfer):分组在网络传输中可能会因溢出或损坏等原因丢失,对于电子邮件、文件传输和金融相关的应用来说,数据丢失会造成灾难性的后果,这种情况下就必须采用可靠数据传输。对于一些可以容忍丢失(loss-tolerant)的应用,例如多媒体音视频,它们能够承受一定量的数据丢失,这只会造成小干扰,而非致命性的问题。
-
吞吐量(throughput):传输层协议能够以特定的速率提供服务。
-
定时(timing):传输层协议提供定时保证。例如在网络电话或多人游戏中,较长的时间延迟会出现不自然的停顿或失去真实感。
-
安全性(security):传输层协议保证数据安全。例如在发送端将数据加密,并在接收端解密数据,以防在传输中途被窃听。
| 应用 | 数据丢失 | 吞吐量 | 时间敏感 |
|---|---|---|---|
| 文件传输 | 不允许丢失 | 弹性 | 不 |
| 电子邮件 | 不允许丢失 | 弹性 | 不 |
| 网络电话 | 容忍丢失 | few kbps ~ 1 Mbps | 100 ms |
| 视频会议 | 容忍丢失 | 10 kbps ~ 5 Mbps | 100 ms |
| 交互式游戏 | 容忍丢失 | few kbps ~ 10 kbps | 100 ms |
TCP / UDP
TCP(Transmission Control Protocol)的特点包括:
-
面向连接服务(connection-oriented service):在应用层数据包开始发送之前,TCP让客户端和服务器之间互相交换传输层控制信息,让它们为分组的到来做好准备。在此之后,两个进程的socket就能建立起TCP连接,并可以发送报文了。在发送结束后,该TCP连接会被拆除。
-
可靠数据传输:TCP确保了通信进程交付的数据无差错、不丢失、不重复、不乱序。
-
拥塞控制(congestion control)
UDP(User Datagram Protocol)的特点包括:
-
无连接(connectionless)
-
不可靠数据传输:UDP不保证报文能够到达接收端,同时报文也有可能是乱序到达的。
-
无拥塞控制
| 应用 | 传输协议 |
|---|---|
| 文件传输 | TCP |
| 电子邮件 | TCP |
| 网络电话 | UDP |
| 视频会议 | UDP |
| 交互式游戏 | UDP |
知识测验
寻址同一主机上的两个服务
主机198.51.100.20在TCP 80端口运行HTTP,在TCP 25端口运行SMTP,8000端口没有监听者。分别写出获取网页和传送邮件的目的端点,解释使用8000端口的问题,并判断TCP本身是否保证100 ms内完成传输或避免明文被观察。只使用题目给定的服务映射。