TCP和UDP服务器的设计

TCP服务器的设计

大多数TCP服务器是并发的,当一个新的连接请求到达服务器,服务器接受这个请求,并调用一个新的进程来处理这个新的客户请求。不同的操作系统使用不同的技术来调用新的服务器进程。在Unix系统下常用fork函数来创建新的进程,如果系统支持也可以用轻型进程,即线程。

1)TCP服务器端口号

首先使用netstat命令来观察端口状态

例如 Proto Recv-Q Send-Q Local Address           Foreign Address         State  

        tcp        0      0 10.21.168.157:60352     10.21.3.63:4999         ESTABLISHED
tcp        0      0 10.21.168.157:33689     10.21.3.66:6379         ESTABLISHED
tcp6       0      0 :::6379                 :::*                     LISTEN     
tcp6       0      0 :::22                   :::*                     LISTEN     
tcp6       0      0 :::11169                :::*                     LISTEN   

其中:::* 星号通常称为通配符,这表示传入的连接请求SYN将被任何一个本地接口所接受。如果该主机是多接口主机我们可以制定其中一个IP地址为本地IP地址,并且只接受来自这个端口的连接。 远程地址显示:::* 表示还不知道远端IP地址和端口号,因为该端还处于LISTEN状态。处于LISTEN状态的服务器进程仍然存在。这个服务器进程用于接收其他连接请求,当传入的连接请求到达并被接受时,系统内核的TCP模块就创建一个处于ESTABLISHED状态进程。只有处于LISTEN状态的进程能够接受新的连接请求,不能接受数据报文段,处于ESTABLISHED的进程不能接受SYN报文段。

2)限定的本地IP地址

如果为一个程序指定一个IP地址或主机名并作为他的服务器,那么该IP地址就成为处于LISTEN服务器的本地IP地址。例如,10.21.168.157:60352  

3)限定的远端IP地址

本地地址 远端地址 描述

localIP.lport foreifnIP.fport 限制到一个客户进程

localIP.lport *.* 限制为到达一个本地接口:Local IP的连接

*.lport *.* 接受发往LPort的所有连接

第一行将最先尝试,最后一个最不常用

4)呼入连接请求队列

一个并发服务器调用一个新的进程来处理每个客户请求,因此处于被动连接请求的服务器应该始终准备下一个呼入连接请求,但仍可能出现当服务器在创建一个新的进程时或操作系统正忙于处理优先级更高的进程,到达多个连接请求。用到了呼入连接请求队列。


UDP服务器的设计

大多数UDP服务器是交互服务器,也就是说,单个服务器进程对单个UDP端口上的所有客户请求进行处理。

1)客户IP地址及端口号

2)目的IP地址

3)UDP输入队列

4)限制本地IP地址

5)限制远端IP地址

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值