基于socket通信的C/S通信

socket是通信系统双方建立的一个标准约定,即“接头暗号”,其内部封装有各种网络通信所需要的功能函数。系统中的应用层功能的实现是需要通过传输层进行服务中转的,分布式的系统决定了网络系统中同一时间内应用程序可能是多个的,但是传输层只能有一个,此时传输层就需要同时为多个应用程序进程提供并发服务。socket接口能够为不同的应用程序进程和网络连接创建各自的身份标识,规范应用程序与TCP/IP协议之间的数据交互。

1、socket通信原理

应用程序进程间的网络通信和连接的身份主要通过目标IP地址、传输层协议和端口号三个参数标识。每个socket都绑定有IP地址、端口、端口号这3个参数。传输层借助socket服务,区分不同的应用程序进程或网络连接,并分别对其提供对应的数据传输服务。

在这里插入图片描述

网络系统中的每一个基于TCP/IP协议进行通讯的程序都配置有唯一的端口和端口号。端口是用来存储socket中输入和输出的数据信息,端口号是一个范围为0-65535的16位无符号整数,主机上的每一个程序都有唯一的端口号。一般来说,主机中的标准应用程序使用256以下的端口号。

基于socket的C/S通信模式如上图所示。socket是2个应用程序进行网络通信的“中间人”,而且是成对存在的。一端的应用程序把需要传输的数据信息写入相对应的socket中,该socket将数据信息传送给与之配对的另外一个socket中,进而使数据信息流转到目标程序中。正常情况下,一个server需要为很多client提供服务,这意味着服务器端需要维护多个socket,一个socket负责与一个客户端通信。

2、socket类别

socket套接字主要有SOCK_STREAM和SOCK_DGRAM两类。

SOCK_STREAM能够为应用程序提供可靠的网络连接,适用于连续的数据流传输,使用TCP作为下层协议。此类型使用最普遍,HTTP、SMTP、POP3等都是使用此类套接字。

SOCK_DGRAM是无连接的套接字,使用UDP作为下层协议,可以设置最大缓冲区的容量。对数据传输的可靠性要求不高且发送的数据包较小的应用程序使用SOCK_DGRAM,比如音频和视频应用程序。

不同于SOCK_STREAM,SOCK_DGRAM比较注重传输效率,是以保证传输速度为第一目标的,既不能保障数据传输的可达性,也无法确保数据包传输顺序的正确性。

声明:本文参考张宏帅的硕士论文《基于 TCP/IP 协议的 FANUC-DNC 系统研究与
开发》

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值