Socket底层探究与实现——理论篇

本文介绍了Socket在网络编程中的重要性及其实现原理。从TCP/IP协议的角度解析Socket如何封装底层网络功能,实现计算机间的通信。

学过网络编程的人都知道Socket这个东西,Socket又称伯克利Socket,是网络通信中很重要的一环

我们都知道不论是C, C++, C#, java等等语言,要想进行网络编程,Socket是必不可少的重要环节,实例化Socket,绑定,连接,监听,发送,接收,当然啦,还有异步Socket,但是流程都是一样的。

但是如何去自己实现一个Socket呢?我们都知道Socket承担着网络通信的基础,那么Socket又是如何与远端进行通信呢?

说起Socket的实现,不得不去说TCP/IP协议,如果说Socket是网络编程的底层的话,那么TCP/IP协议就是网络通信的底层,当然,如果追根溯源,可能会牵扯到网络驱动程序,那就是硬件层面了。

TCP/IP协议又是什么呢?TCP/IP协议就是计算机之间进行网络交互的一种协议,通俗的讲,就是一种规则,一种算法。计算机A通过这套算法可以与其他计算机进行通信,计算机A上面的一个应用程序C可以调用TCP/IP API向计算机B上面的应用程序D发送数据,而Socket简单理解就是对TCP/IP API进行的封装(虽然远远不止对TCP/IP API的封装,还有对其他协议的封装)

TCP/IP协议包括两部分,一部分是TCP/IP的报文规定,也就是TCP/IP的数据结构;另一部分就是TCP/IP的传输规定,也就是TCP/IP怎么传输数据,报文怎么发,发多少,多少次握手之类的。

说了这么多,其实我们也不难看出,实现Socket大致有这么几步(假设只封装TCP/IP协议):

第一步,使用特定语言依照协议定义TCP/IP报文的数据结构

第二步,使用特定语言依照协议提供TCP/IP的传输方法,比如监听,绑定,连接

第三步,调用底层网络驱动程序完成所需的网络操作

也就是说,实现一个Socket需要有调用底层驱动程序的能力,而这样的能力只有C语言具备并能够发挥很好的性能(汇编语言更好,只是书写起来比较困难),至于说那些高级语言是如何做到上述几点,有很大机率是调用C语言的代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值