第十一章、网络编程11.1-11.3

11.1 客户端-服务器编程模型

每个网络应用都是基于客户端-服务器模型的。

客户端-服务器模型中的基本操作是事务。一个客户端-服务器事务由四步组成:

1、当一个客户端需要服务时,它向服务器发送一个请求,发起一个事务。例如,当web浏览器需要一个文件时,它就发送一个请求给web服务器。

2、服务器收到请求后,解释它,并以适当的方式操作它的资源。例如,当web服务器收到浏览器发出的请求后,它就读一个磁盘文件。

3、服务器给客户端发送一个响应,并等待下一个请求。例如,web服务器将文件发送回客户端。

4、客户端收到相应并处理它。例如,当web浏览器收到来自服务器的一页后,就在屏幕上显示此页。

客户端-服务器事务示例

认识到客户端和服务器是进程,而不是常常提到的主机,这是很重要的。一台主机可以同时运行许多不同的客户端和服务器,而且一个客户端和服务器的事务可以在同一台或是不同的主机上运行。

11.2 网络

下图展示了一个主机和路由器如何使用互联网络协议在不兼容的局域网间传送数据的示例:


局域网传输示例

1、运行在主机A上的客户端进行一个系统调用,从客户端的虚拟地址空间拷贝数据到内存中。

2、主机A上的协议软件通过在数据前附加互联网络包头和LAN1帧头,创建了一个LAN1的帧。互联网包头寻址到互联网络主机B。LAN1帧头寻址到路由器。然后它传送此帧到适配器。注意,LAN1帧的有效载荷是一个互联网络包,而互联网络包的有效载荷是实际的用户数据。这种封装是基本的互联网络方法之一。

3、LAN1适配器拷贝该帧到网络上。

4、当此帧到达路由器时,路由器的LAN1适配器从电缆上读取它,并把它传送到协议软件。

5、路由器从互联网络包头中提取出互联网络地址,并用它作为路由表索引,确定向哪里转发这个包,在本例中是LAN2.路由器剥落旧的LAN1的帧头,加上寻址到主机B的新的LAN2帧头,并把得到的帧传送到适配器。

6、路由器的LAN2适配器拷贝该帧到网络上。

7、当此帧到达主机B时,它的适配器从电缆上读取此帧,并将它传送到协议软件。

8、最后,主机B上的协议软件剥落包头和帧头。当服务器进行一个读取这些数据的系统调用时,协议软件最终将得到的数据拷贝到服务器的虚拟地址空间。

11.3 全球IP因特网

11.3.1 IP地址

使用hostname命令确定自己主机的点分十进制地址。

11.3.2 因特网域名

因特网定义了域名集合和IP地址集合之间的映射。知道1988年,这个映射都是通过一个叫hosts的文本文件来手工维护的。从那以后,这个映射才通过分布世界范围内的数据库(DNS*)来维护。

因特网应用程序通过调用gethostbyname和gethostbyaddr函数,从DNS数据库中检索任意的主机条目。

11.3.3 因特网连接

一个套接字是连接的一个端点。每个套接字都有相应的套接字地址,是由一个因特网地址和一个16位的整数端口组成的,用“地址:端口”来表示。当客户端发起一个连接请求时,客户端套接字地址中的端口是由内核自动分配的,称为临时端口。然而,服务器套接字地址中的端口是某个知名端口(如,80表示Web服务器,25表示电子邮件)。

【参考】
[1] 《深入理解计算机系统》
欢迎转载,转载请注明出处:wenmingxing 你好呀《CSAPP》

你可能感兴趣的:(第十一章、网络编程11.1-11.3)