一个有技术追求的研发团对,无论使用什么框架、什么工具、什么语言,团队里应该有人有能力把控所使用框架、工具、语言的每一个核心功能的实现细节。团队里的每个成员应该根据自身所长挑选其中一块做深入研究,并把研究成果分享给团队,力争使整个所处团队实力得到提升,达到同行业内顶尖水平。为了实现这个目标,不允许在团队中出现黑盒子,对.NET生态而言,我们需要打开MSBuild,Rosyln,CoreCLR等黑盒子。作为团队的一员,我将花一些业余时间打开.NET MySQL驱动黑盒子,使用.NET Core实现MySQL Client/Server Protocol,并把打开这个黑盒子的过程通过本站点记录下来。 这是使用.NET Core实现MySQL协议连载文章的第一篇。 基础知识这是我的基础知识复习笔记,您可以直接跳过此章节。 网络中进程之间如何通信?在网络时代,网络中进程间通信无处不在,在本地可以通过进程PID来唯一标识一个进程,但网络中进程如何标识?他们之间又是如何通信的?其实TCP/IP协议族已经帮我们解决了这个问题,网络层的IP地址可以唯一标识网络中的主机,而传输层的协议 端口可以唯一标识主机中的应用程序(进程),因此,可以利用三元组(IP地址,协议,端口)标识网络中的进程,网络中的进程通信就可以利用这个标志与其它进程进行交互。无论应用层采用什么协议,最终都要经过传输层/网络层的TCP/IP协议,而TCP/IP编程有一套标准编程接口Socket。 什么是Socket?套接字(Socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元,但Socket跟TCP/IP并没有必然的联系,TCP/IP只是一个协议栈,就像操作系统的运行机制一样,必须要具体实现,同时还要提供对外的操作接口,TCP/IP也必须对外提供编程接口Berkeley sockets interface.,它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:
TCP三次握手建立连接我们知道TCP建立连接要进行三次握手,大致流程如下:
TCP四次挥手断开连接TCP断开连接要进行四次挥手,大致流程如下:
这样每个方向上都有一个FIN和ACK MySQL协议分析MySQL客户端与服务器可以通过四种通信协议进行交互:
交互过程MySQL客户端与服务器的交互主要分为两个阶段
握手认证阶段握手认证阶段为客户端与服务器通过TCP三次握手建立连接后进行,交互过程如下
|
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|