`
放羊的星星
  • 浏览: 5067 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Socat套接字中的TCP编程模式-与UDP编程模式-

阅读更多


TCP编程模式针对面向连接的网络应用,这类应用在传输层采用的是TCP协议。通信双方在传输数据前需要建立连接,在传输数据结束后需要释放连接。服务器是提供某种网络服务的应用进程,它通过熟知端口号向客户机提供服务。服务器的熟知端口始终处于侦听状态,不断检查是否有客户机发送的连接请求。客户机与服务器在建立连接时经过三次握手:客户机首先向服务器发送连接请求,服务器接收连接请求并向客户机返回响应,客户机再向服务器发送对该响应的确认。

TCP编程模式相对固定。客户机与服务器之间要进行通信,需要依次调用Socket接口提供的不同函数。但是,服务器编程比客户机编程要复杂得多,这是因为服务器需要并发处理多个服务请求。图2-8给出了TCP编程模式的工作流程。其中,客户机首先调用socket()函数建立套接字,然后调用connect()函数请求与服务器建立连接,在连接建立后可以调用send()与recv()函数分别发送与接收数据,最后调用closesocket()函数关闭套接字。

服务器首先调用socket()函数建立套接字,然后调用bind()函数将某个端口与套接字相绑定,再调用listen()函数在套接字绑定的端口上侦听连接建立请求。当服务器侦听到有连接建立请求到达时,调用accept()函数创建新的临时套接字与客户机建立连接,同时服务器使原有的套接字返回侦听状态。服务器使用新创建的子线程与客户机建立连接。在连接建立后可以调用send()与recv()函数分别发送与接收数据,最后调用closesocket()函数关闭临时套接字与原有套接字。

客户机向服务器发送服务请求完全是随机的,并且可能有多个客户机同时发送请求。服务器需要随时通过熟知端口来侦听服务请求,并且要具备同时处理多个并发请求的能力,这是服务器与客户机设计中的最大区别。服务器并发处理的解决方案基本分为两种:并发服务器与重复服务器。这两种方案分别适合于不同的服务类型。其中,并发服务器(Concurrent Server)采用的是工作在后台的守护进程(daemon),当有服务请求到达时将会激活该进程来进行处理。

并发服务器本身始终要处于等待并侦听的状态。当服务器接收到客户机发送的服务请求时,它根据该请求的进程号去激活子进程提供服务,而服务器自身会回到等待状态继续侦听请求。在这里,并发服务器自身被称为主(master)服务器,它激活的子进程被称为从(slave)服务器。因此,服务器必须拥有一个全网熟知的进程地址。图2-9给出了并发服务器的工作原理。由于不同的从服务器可以并发、独立地处理不同客户机的服务请求,因此并发服务器比较适合于面向连接的服务类型。

 
(点击查看大图)图2-8   TCP编程模式的工作流程
UDP编程模式

UDP编程模式针对无连接的网络应用,这类应用在传输层采用的是UDP协议,通信双方在传输数据前不需要建立连接。服务器是提供某种网络服务的应用进程,它通过熟知端口向客户机提供服务。服务器的熟知端口始终处于侦听状态,不断检查是否有客户机发送的连接请求。服务器采用重复服务器方式处理多个服务请求。

UDP编程模式也相对固定。客户机与服务器之间进行通信,需要依次调用Socket接口提供的不同函数。但是,服务器编程比客户机编程要复杂得多。图2-10给出了UDP编程模式的工作流程。客户机与服务器都首先调用socket()函数建立套接字,然后调用sendto()与recvfrom()函数分别发送或接收数据,最后调用closesocket()函数关闭套接字。服务器在发送与接收数据之前,调用bind()函数将某个端口与套接字绑定。


 
图2-10   UDP编程模式的工作流程
重复服务器(Interactive Server)采用请求队列来存储到达的服务请求,并根据先到先服务的原则顺序处理服务请求。重复服务器处理客户机请求的数量受队列长度的限制,但是可以有效控制对服务请求的处理时间,因此它比较适合于无连接的服务类型。图2-11给出了重复服务器的工作原理。客户机与服务器首先形成自己的半相关的三元组,客户机根据服务器的熟知端口建立全相关的五元组。
 
图2-11   重复服务器的工作原理
摘自http://book.51cto.com/art/201007/209377.htm
 
分享到:
评论

相关推荐

    socat源码加了中文注释

    这些测试用例应覆盖 socat 的各种使用模式,如TCP、UDP、UNIX域套接字等,并在不同的操作系统版本上进行验证,以确保跨平台兼容性。 总的来说,这个项目涉及了网络编程基础、操作系统接口、命令行解析、软件设计...

    socat 使用手册

    socat 是一个多功能的网络工具,用于在不同协议之间建立连接,它可以创建数据传输管道,支持TCP、UDP、SSL/TLS、UNIX域套接字等多种协议,并能实现端口转发、隧道连接、文件传递等功能。在网络安全和系统管理中,...

    socat端口转发工具

    它支持多种协议,包括TCP、UDP、UNIX域套接字、串行端口等,使得它成为系统管理员和开发人员进行网络调试、数据迁移、内网穿透等任务的得力助手。 socat的端口转发功能是其核心特性之一。通过端口转发,你可以将一...

    factorish-syslog:一个基于 socat 的小型系统日志服务器

    工厂/系统日志关于一个非常简单的基于socat的 syslog 服务器,旨在侦听TCP 、 UDP或 UNIX 套接字/syslog/sock并将任何消息打印到stdout以便它们被日志系统接收,并且可以通过诸如工具进行访问。用法 $ docker run -d...

    linux下socat源码包

    在Linux系统中,socat是不可或缺的工具,它支持TCP、UDP、UNIX域套接字、管道、文件、串行端口等多种通信方式,使得系统管理员和开发者在处理网络和系统交互时拥有更大的灵活性。 【 socat 1.7.2.4 版本特点 】 ...

    rabbitmq-3.9.7-1&erlang-24.0.3&socat-1.7.3.2.rar

    它可以用于连接TCP、UDP、Unix域套接字、文件、管道、设备等多种数据源。"socat-1.7.3.2-2.el7.x86_64.rpm"同样是RPM格式的安装包,适用于64位的RHEL/CentOS 7系统。在RabbitMQ的场景中,虽然不是直接相关,但socat...

    socat中转工具

    首先,socat能够处理多种类型的连接,包括TCP、UDP、UNIX域套接字、串行端口、管道、文件、TFTP、SSL/TLS等。这使得它可以在不同的网络协议间进行转换,为复杂的网络环境提供解决方案。例如,当需要将一个TCP端口的...

    socat强大的小工具windows版

    它可以创建网络连接,支持TCP、UDP、UNIX域套接字、串行端口等多种通信协议,还能处理管道和文件。这意味着你可以用socat来转发网络流量,建立代理服务器,或者在不同类型的输入和输出之间建立桥梁。 1. **远程登录...

    RabbitMQ用到的三个rpm包.zip

    在RabbitMQ中,socat可能被用来作为代理,创建套接字连接,或者在某些情况下,用于调试和测试网络通信。它支持多种协议,包括TCP/IP,UDP,UNIX域套接字等,是RabbitMQ运行时的一种辅助工具。 接下来,`rabbitmq-...

    brt.rar_socket linux_socket命令行_socket文件_socket文件传输_文件传输

    然而,"socket文件"可能指的是Unix域socket(也称为本地域socket或套接字文件),这种类型的socket用于在同一台机器上的进程间通信(IPC)。Unix域socket不涉及网络,而是通过文件系统中的路径名进行通信。在Linux下...

    审核网络安全的十大必备工具.docx

    最为有趣的一个实现程序是Socat,它对Netcat开展了扩展,以支持许多其它的套接字类型,SSL加密,SOCKS代理等等。还有Chris Gibson's Ncat,它提供了更多的特性,同时又保持灵活性和简洁性。现在有许多支持Netcat的...

Global site tag (gtag.js) - Google Analytics