前言
此文献给此刻和我前一刻一样迷糊的人,大牛请无视。
平常我们总说SOCKET通信,TCP,UDP什么的,只知道这些是用来做网络通信的,写代码时找个例子实现功能就可以了,并没有深入去理解它们。
我第一次接触SOCKS时以为它只是一种叫法,然后项目中要用到SOCKS5,依然找了个例子,看了下java代码,用的ServerSocket和Socket,此时疑惑来了,这和以前做TCP通信不是一样的吗?怎么这套代码就是成了SOCKS5了。在度娘的无私帮助下,终于搞懂这些东西的意义……
正文
SOCKET被称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。它的本质是编程接口(API),对TCP/IP的封装。
SOCKS是一个代理协议,目前最新版本为SOCKS5,所谓代理就是,你可以通过它的去间接的访问网络,相当于一个中转站。有必要说明下代理的工作原理,很简单。(图片是偷来的 =_=)
区别:
SOCKET是一个API,一个工具,让你建立网络连接用的。
SOCKS是协议,是一组数据结构,由于数据结构简单,目前没发现什么封装好的系统API,所以数据包需要自己写代码去组 。例子网上很多,自己去找。
有的小同学看到“协议”两个字,感觉高大上又来了,其实所谓协议,只不过是双方约定的一套数据结构,只要涉及到数据交换的都叫协议, 只不过TCP、UDP、SOCKS这些被国际机构标准化后取了个名字,全球通用了,系统厂商封装了API。你自己的通信接口也可以取个名字啊,只不过这个名字只在你的项目组里通用而已。
以上是个人理解,如有错误欢迎指正。
发表评论