mysql 服务器监听的套接字_监听套接字与已连接套接字

监听套接字与已连接套接字

监听套接字(listening socket)和已连接套接字(connected socket)之间的区别常会使很多人感到迷惑。本文简要描述一下这两者的区别。为了说明监听套接字与已连接套接字的区别,我们先来看一下套接字在连接中的含义。

从内核的角度来看,一个套接字就是通信的一个端点。一个连接由它两端的套接了地址唯一确定,这对套接字地址叫做套接字对(socket pair),由下列4元组来表示:

(clientip:clientport, serverip:serverport)

其中,clientip 是客户端的IP地址,clientport 是客户端的端口,serverip 是服务器的IP地址,而 serverport 是服务器的端口。

a2587f895b8ee5cfd9f55b8eacd311f8.png

上图展示了一个套接字对4元组,即一个客户端与一个服务器之间的连接。在这个示例中,客户端套接字为

128.2.194.242:51234

服务器套接字地址为

114.113.200.133:80

给定客户端和服务器地址,客户和服务器之间的连接就由下列套接字对唯一确定了:

(128.2.194.242:51234, 114.113.200.133:80)

在上面的例子中,客户端是发起连接请求的主动实体,服务器是等待来自客户端连接请求的被动实体。我们知道,socket函数可以创建一个套接字。默认情况,内核会认为socket函数创建的套接字是主动套接字(active socket),它存在于一个连接的客户端。而服务器调用listen函数告诉内核,该套接字是被服务器而不是客户端使用的,即listen函数将一个主动套接字转化为监听套接字(下文以 listenfd 表示)。监听套接字可以接受来自客户端的连接请求。

服务器通过accept函数等待来自客户端的连接请求到达监听套接字 listenfd,并返回一个已连接套接字(下文以 connfd 表示)。利用 I/O 函数,这个 connfd 可以被用来与客户端进行通信。

上面就是监听套接字与已连接套接字的基本区别了。具体来说

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值