网上看到 socks5 协议分为三个阶段,握手阶段、建立连接和传输阶段;
那么想问一下,这个握手阶段(非 tcp 握手吧),是必须的吗?譬如我在网上看到很多个人编写的一些 client ,server 之间的聊天或者其他通讯并没有进行握手,直接 connect 或者 accept 之后就直接发送消息了。
非常感谢。
1
imlink 2019-11-14 16:38:57 +08:00
第一个问题:是。
connect 是在 socks5 的协议商讨之后。 |
2
ungrown 2019-11-14 16:44:20 +08:00 via Android
握一次,只要不断,就可以一直传输了
|
3
luckyrayyy 2019-11-14 16:46:58 +08:00
那是把底层隐藏了吧
|
4
Orenoid 2019-11-14 17:06:51 +08:00
网上那些 socket 聊天 demo 大多都是没有制定应用层协议的,表面上能够跑通而已
|
5
different OP |
6
different OP @luckyrayyy 刚刚没有成功 @你,再 @一次
|
7
reus 2019-11-14 17:30:31 +08:00 8
socks5 是 socks5
socket 是 socket |
8
1KN6sAqR0a57no6s 2019-11-14 17:32:09 +08:00
看了楼上的回复,我知道我为什么看不懂楼主的问题了
|
9
zhs227 2019-11-14 17:36:07 +08:00
楼主,你应该看的是 TCP socket 编程,而不是参考一份 socks5 的文档
|
10
different OP |
11
morethansean 2019-11-14 17:39:15 +08:00
@YuxiangLuo #8
……+1,拉到第七楼之前都一脸懵逼,星际韩宗的感觉…… |
12
windyboy 2019-11-14 17:57:14 +08:00
socket 是设备吧
|
13
whoami9894 2019-11-14 18:07:38 +08:00 via Android
socks5 应用层协议建立在 tcp 之上,先 tcp socket 握手建立连接,socks5 再通过这条连接发送握手包
|
14
zbinlin 2019-11-14 18:11:05 +08:00
socks5 跟 socket 不是同一个东西来的
|
15
liuminghao233 2019-11-14 18:22:18 +08:00 via iPhone
必须的
你说别的通讯没有握手什么的 人家都不是 socks5 协议 |
16
unixeno 2019-11-14 18:37:26 +08:00 via Android
socks5 是一个协议,和 http,ftp,之类的是一个等级的东西,属于应用层
socket 是一套 api,用于实现网络通信的,对应的是传输层 |
17
imlink 2019-11-14 20:20:59 +08:00 via Android
@different socket5 如 16 楼描述是一种应用层的协议。它里面的握手是区别于 tcp 的 3 次握手,是用来交互协议头和认证信息。
|
18
lynskylate 2019-11-14 20:43:04 +08:00 via Android
...socks5 是基于 tcp 的应用层协议,是一种作为代理的协议。
你说的握手如果指的是 tcp 握手,在你用 socket 编程的时候其实是隐藏的 |
19
different OP |
20
different OP @imlink
@lynskylate @liuminghao233 @whoami9894 想问一下,目前我认知到的是,不知道是否正确: socks5 其实就是一个协议,就是客户端跟服务端之间的认证方式(算是一种约定,这种约定的内容是通过 socket 传输),认证完毕之后,就跟 socks5 协议没有任何关系了(因为他只是在握手阶段一个约定),之后,客户端与服务端各自使用 socket 进行内容传输对吧,这些传输的内容是随便的(反正连接已经建立了,后面的内容格式与 socks5 没有任何关系) 想问一下,以上我的理解是否正确? |
21
WordTian 2019-11-26 18:14:36 +08:00
是,socks 协议版本有很多种,sock4,sock5,好像还一个 sock4a 啥的,各种版本的实现还是有区别的。在握手阶段得协商好协议版本。不然后面没得玩。
|