套接字编程是一种主要用于网络通信的技术。
那么什么是网络通信呢?比如你在百度搜索《小猪佩奇》动画片的名字,浏览器就会搜索到。 浏览器进程与Web服务器通信吗?再举个例子,如果你用微信聊天,微信进程如何与你朋友的微信进程通信呢?
让我们解释一下什么是套接字。要了解Socket,首先必须了解以下概念:
网络中的进程如何通信?什么是套接字?套接字的作用是什么?小编接下来就为大家一一揭晓。
一、 网络进程通信
说到网络进程通信,就不得不说一下网络通信所依赖的TCP/IP协议。例如,网络通信过程是,当你点外卖时,如果配送员需要配送外卖,他或她必须选择一条路径来配送。这意味着您需要TCP/IP。协议完成。将食物从餐厅送到顾客家门口是一个沟通的过程。
我们知道TCP/IP协议依赖于OSI的5层网络模型(实际上是7层网络模型,主要采用以下5层模型):
物理层:比特流传输数据链路层:提供环路接入网络层:提供寻址和路由传输层:建立主机之间的端到端连接应用层:提供应用程序间通信五层模型的每一层较低层提供基于第一层提供的服务向上层提供服务。
从上图可以看出,下层需要向上层提供服务,为了在计算机上的应用程序之间直接相互发送信息,需要使用传输层TCP和网络来提供服务。需要层IP协议。但是我们要在哪里讨论TCP/IP 协议中的套接字呢? 古代有送信的道路,但旅馆在哪里?
二、接下来我们就来理解第二个问题,什么是Socket?
我知道socket编程是基于TCP/IP网络编程的,但是socket属于ISO 7层模型的哪一部分?经过数据查询,得到了socket的位置。
其实Socket是对TCP/IP协议的封装,只有通过Socket才能使用TCP/IP协议,而Socket是通过一些基本的接口函数来完成TCP/IP的。调用完成一次网络通信功能。
Socket通信依靠接口函数来完成通信功能。
现在,让我们看一下套接字的基本功能是什么。
三、 socket 函数
下图显示了所使用的接口功能。
从该图中可以看到Socket调用的函数包括connect()、write()、read()、bind()、accept()和listen()。
三、 Socket 建立网络连接的步骤
套接字连接至少需要一组套接字,其中一个位于客户端,并且是ClientSocket。 另一种是在服务器端,ServerSocket。这对socket之间的连接过程分为服务器监听、客户端请求、连接确认。
服务器监控:服务器端socket实时监控网络状况并等待客户端的连接请求。客户端请求:是指客户端socket发送连接请求,向服务器端socket发出请求。如果请求发生在客户端套接字上,则必须像在服务器套接字上一样发送连接请求,包括服务器套接字的地址和端口号。请确保连接对象正确。连接验证:当服务器端Socket监听到客户端Socket有连接请求时,立即响应客户端Socket的请求,建立一个新的线程,并将服务器端Socket的描述发送给客户端。一旦客户端确认了这个描述,双方就正式建立连接。服务器端套接字保持监听状态,并继续接收来自其他客户端套接字的连接请求。
结论是:
正如我在文章开头所写的,在百度上搜索佩奇的照片。
socket通信原理:百度服务器端设置一个监听线程,专门用于监听客户端对于socket请求是否有响应。此时,一个套接字请求被发送到客户端。也就是说,它搜索页面上的图像。客户端的socket必须包含服务socket的地址和端口号,以保证能够准确连接到百度服务器上的socket。百度服务器接收客户端的请求响应并做出响应。两者创建一个新进程并建立连接。服务器将结果返回给客户端,客户端显示页面的照片。
微信聊天应用的socket原理也是一样的。
原创文章,作者:小条,如若转载,请注明出处:https://www.sudun.com/ask/85325.html