socket机制详解

我另外一片博客中详细解析了Linux下tcp socket通信的过程,下面是我对socket机制更深一层的学习。


服务器和客户端创建过程简单描述如下:

服务器端
  一、创建服务器套接字(CREATE)。
  二、服务器套接字进行信息绑定(BIND),并开始监听连接(LISTEN)。
  三、接受来自客户端的连接请求(ACCEPT),并创建接收进程。
  四、开始数据传输(SEND、RECEIVE)。
  五、关闭套接字(CLOSESOCKET)。
客户机端
  一、创建客户机套接字(CREATE)。
  二、与远程服务器进行连接(CONNECT),如被接受则创建接收进程。
  三、开始数据传输(SEND、RECEIVE)。
  四、关闭套接字(CLOSESOCKET)


socket函数

SOCKET socket(int af, int type, int protocol);

af:指定应用程序使用的通信协议的协议族,对于TCP/IP协议族该参数设置为AN_INET,对于UNIX可建立本地Socket

type:指定创建socket类型:

流套接字类型(SOCK_STREAM):最常见的类型,基于TCP协议

数据报套接字类型(SOCK_DGRAM):即UDP数据报

原始套接字类型(SOCK_RAW):在IP层对套接字进行编程

protocol:指定应用程序所使用的通信协议。最常用的是TCP和UDP

流套接字和数据报套接字不能完成的任务,可以在原始套接字中得以实现。


Socket从传输模式上又分为端对端和点对点的连接,流套接字和数据报套接字都属于端对端的连接,因此需要绑定端口号。而原始套接字是基于IP协议的,属于点对点的传输模式,是没有端口这个概念的。比如常用的监测网络连接ping命令,就是基于ICMP协议的,它不存在端口的概念。Socket是一种服务,与其实现的语言无关。基于这个性质,我们能实现不同服务之间,不同语言之间的互联互通。

socket实质上提供了进程通信的端点。进程通信之前,双方首先必须各自创建一个端点,否则是没有办法建立联系并相互通信的。正如打电话之前,双方必须各自拥有一台电话机一样。


更多详细内容:百度socket词条http://baike.baidu.com/link?url=PsoIpr5DfvwlKhwf4hVgxCB7UhzIYkCroynJWdUhWLMo_D9VX39oaRdpEwoaUuu-RSaSvq8gGvSfuY85zKhFOa2-2O3OGm6GpchojKLyA4G


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值