文章图片
文章图片
文章图片
文章图片
文章图片
说起网络信息交流 , 那肯定都知道微信 , 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内部的一些函数 , 这个下期会单独详细讲解(由于篇幅过长) 。
- Find X5 Pro和iPhone能掰手腕吗?实测视频拍摄能力
- 这一份常用车品合集要收好,总能找到你想要的
- 骁龙870|目前还能“再战四年”的3款骁龙870手机,优点明显诚意满满
- dev|圈铁真无线耳机,既想搞定降噪,又要跟音质死磕,体验能好吗?
- 智能手机|公司曾市值千亿美元,手握阿里40%股权,如今没落而退出中国市场
- 高通骁龙|新骁龙8的升级绝不止性能这一点,体验上的升级更为明显
- 无限极|买手机只看性能配置?不堆硬件也能有好销量,Reno7告诉你为什么
- 月入1万,在北上广深能过什么样的生活?
- 微信五大超实用秘籍!第一个就震撼我妈一整年
- 交换机|vivox70pro+值得买吗?性能怎么样?通过质量看性价比