客户—服务器模型
大部分网络应用程序在编写时都是假设一段时客户,另一端是服务器,其目的是为了让服务器为客户提供一些特定的服务。
可以将这种服务分为两种类型:重复性或并发型,重复型服务器通过以下步骤进行交互:
1、等待一个客户请求的到来
2、处理客户请求
3、发送响应个发送请求的客户
4、返回1步
重复性服务器主要的问题发生在第2布状态,在这个时候,他不能为其他客户机提供服务,相应的并发型服务器采用以下步骤
1、等待一个客户请求的到来
2、启动一个新的服务器来处理这个客户的请求,在这器件可能生成一个新的进程、任务或线程,并依赖底层操作系统的支持,这个步骤如何进行取决于操作系统。生成的新服务器对客户的全部请求进行处理,处理结束后,终止这个新服务器
3、返回第一步
并发服务器的优点是在于他是利用生成其他服务器的方法来处理客户的请求,也就是说,每个客户都有自己对应的服务器,如果操作系统允许多任务,那么就可以同时为多个客户服务。
对服务器,而不是对客户进行分类的原因是因为对于一个客户来说,它通常并不能够辨别自己是与一个重复型服务器或并发型服务器进行对话
一般来说,TCP服务器是并发的,而UDP服务器是重复的
端口号
TCP和UDP采用16bit的端口号来进行识别应用程序。
服务器一般都是通过知名端口号来识别的,对于某个TCPIP实现来说,FTP服务器的TCP的端口号是21,每个Telnet服务器的TCP端口号是23,每个TFTP(简单文件传送协议)服务器的UDP端口号都是69,
客户端通常对它所使用的端口号并不关心,只需保证该端口号在本机上是唯一的就可以了,客户端口号又称临时端口号(即存在时间很短暂),这时因为它通常只是在用户运行该客户程序是才存在,而服务器则只需要主机开着,其服务就运行