网络编程
1.客户端-服务器编程模型
每个网络应用都是基于客户端-服务器编程模型的。采用这个模型,一个应用是由一个服务器进程和一个或多个客户端进程组成。服务器管理某种资源,并且通过操作这种资源来为他的客户端提供某种服务。
客户端-服务器模型中基本操作是事务。一个客户端-服务器事务由以下四步组成。
- 当一个客户端需要服务时,它向服务器发送一个请求,发起一个事务。
- 服务器收到请求后,解释它,并以适当的方式操作它的资源。
- 服务器给客户端发送一个响应,并等待下一个请求。
- 客户端收到响应并处理它。
服务器一直监听某一个端口等待请求的到来,请求到来后立即处理请求并返回响应。如何处理大量请求和加快响应速度是我们关注的要点。
客户端向服务器发送请求后等待响应。
服务器和客户端是进程,而不是机器或者主机。一台主机可以同时运行不同的客户端和服务器,而且一个客户端和服务器的事物可以在同一台或是不同的主机上。
2.因特网的连接
因特网客户端和服务端通过在连接上发送和接收字节流来通信。从连接一对进程的意义上而言,连接是点对点的 。从数据可以同时双向流动的角度来说,它是全双工的。并且从由源进程发出的字节流最终被目的进程以它发出的顺序收到它的角度来说,它也是可靠的。
一个套接字是连接的一个端点。每个套接字都有相应的套接字地址,是由一个因特网地址和一个16位的整数端口组成的,用“地址:端口”来表示。
当客户端发起一个连接请求时,客户端套接字地址中的端口是由内核自动分配的,称为临时端口。然而,服务器套接字地址中的端口通常是某一个知名的端口,是和这个服务相对应的。每个具有知名端口的服务都有一个对应的知名的服务名。
一个连接是由它的两端的套接字地址唯一确定的。这个套接字地址叫做套接字对,由下列的元组来表示
(cliaddr:cliport,servaddr:servport)
其中cliaddr是客户端的IP地址,cliport是客户端的端口;servaddr是服务器的IP,servport是服务器的端口。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。