36氪|QQ,微信能聊天都靠它(socket)?

36氪|QQ,微信能聊天都靠它(socket)?

文章图片

36氪|QQ,微信能聊天都靠它(socket)?

文章图片

36氪|QQ,微信能聊天都靠它(socket)?

文章图片

36氪|QQ,微信能聊天都靠它(socket)?

文章图片

36氪|QQ,微信能聊天都靠它(socket)?

文章图片



说起网络信息交流 , 那肯定都知道微信 , QQ等即时通信软件 , 那QQ微信等聊天软件是如何实现信息传输的呢?如何实现的呢?这就不得不提本篇的主角“socket”了 。


那socket到底是什么呢?它被翻译为“套接字” , 是计算机进行交流通信的一种约定或者叫方式 , 通过socket , 两个计算机就可以互相交换数据了 。

如下图所示 , 它处于传输层与应用层之间 , 是一种抽象存在的东西 , 也正是它的存在 , 所以我们在调用TCP/IP UDP时不需要明白它们的内在原理 , 直接调用就好了 , 因为socket已经为你做好了所有的适配工作 。

在理解socket之前 , 我们先来了解网络中进程是如何进行通信的 。 以下以A电脑和B电脑为例 。
首先A电脑和B电脑得需要自己的名字(不知道名字我怎么找到你?) , 在电脑中 , 它们有自己的唯一MAC地址 , 但在网络中 , 它们需要一个网络中的身份名字 , 而这个名字就是IP , 有了IP之后 , AB电脑都有了自己的名字 , 那接下来就需要建立连接 , 而链接就需要网络 , 网络又得按照特定的协议传输 , 所以就需要一个协议标志如TCP或UDP协议 , 而在OS网络模型中 , 传输层用“协议+端口”来唯一标示主机中的应用程序(进程) , 所以至此就组成了网络传输中的三个必备要素“IP地址 , 协议 , 端口” , 进程通信完成 。

所以在选用协议的过程中 , 服务端和应用端必须使用同一种协议 , 否则就无法正常网络通信 。

那么socket原理是怎样的?
首先是服务端 , 创建socket() , 绑定好socket与端口 , 然后开始监听 , 等待着其他客户端的连接 。

然后是客户端 , 它同样需要创建socket() , 然后去寻找指定的服务端IP地址和端口 , 连接到正处于监听状态的服务端 。
服务端收到了客户端的连接请求 , 至此 , 服务端和客户端正式建立起网络连接 , 可以互相发送数据信息 。

【36氪|QQ,微信能聊天都靠它(socket)?】最后来看一下实例 , 直接socket安排(这里用的语言是python)
服务端:

客户端:

具体实现原理还需要了解socket内部的一些函数 , 这个下期会单独详细讲解(由于篇幅过长) 。