代理服务器用的网络协议是哪些

代理服务器用的网络协议是哪些,第1张

代理软件常用的网络协议为UDP、TCP、Socks5。

UDP协议和TCP协议都是传输层协议。TCP(Transmission Control Protocol,传输控制协议)提供的是面向连接,可靠的字节流服务。即客户和服务器交换数据前,必须现在双方之间建立一个TCP连接,之后才能传输数据。并且提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。

UDP(User Data Protocol,用户数据报协议)是一个简单的面向数据报的运输层协议。它不提供可靠性,只是把应用程序传给IP层的数据报发送出去,但是不能保证它们能到达目的地。由于UDP在传输数据报前不用再客户和服务器之间建立一个连接,且没有超时重发等机制,所以传输速度很快。

socks5是一个代理协议,主要的作用就是代理客户端来访问远程服务器,起到一个中介作用。

一般情况下当代理客户端因为防火墙等原因访问不了远程服务器,而另一个服务器即可以访问远程服务器又可以被客户端访问到时,可以在这个服务器上部署socks5服务端,本地部署socks5客户端,让这个中介服务器来代理访问远程服务器。

下面介绍协议流程,可以简单分为握手阶段,准备阶段和代理阶段

客户端建立和代理服的tcp连接A,并发送第一帧数据:

VER:协议版本号,socks5情况下为0x05

代理服务器收到后,会鉴别VER,回应

METHOD:身份验证方法,不需要身份验证时为0x00,此时直接进入”准备阶段“(不为0x00时,需要走身份验证流程,参见 socks5身份验证 )

客户端发送第二帧数据:

CMD:命令,tcp代理0x01,udp代理0x03

RSV:保留字段

ATYP:地址类型 0x01:ipv4,0x03:域名,0x04:ipv6

DST.ADDR:目标地址

DST.PORT:目标端口

比如数据 :0x05|0x01|0x00|0x03|0x0d7777772e62616964752e636f6d|0x01bb

代表需要代理的是tcp连接,目标地址类型是域名,真实解析出来目标地址就是" www.baidu.com:443 ",即告诉代理服,帮我和" www.baidu.com:443 "作代理吧

代理服收到后,就直接建立和DST.ADDR的tcp连接B,回复

REP:状态位,0x00代表连接DST.ADDR成功了

RSV:保留字段

ATYP:地址类型 0x01:ipv4,0x03:域名,0x04:ipv6

BND.ADDR:绑定地址,连接B的本地地址

BND.PORT:绑定端口,连接B的本地端口

比如,返回0x05|0x00|0x00|0x01|0xc0a8c76a|0xcdf0,代表准备代理成功了,进入下一步吧

客户端把发给目标服的数据由连接A发给代理服,代理服将这些数据转由连接B发给目标服,同时代理服收到的目标服数据转由连接A返回给客户端

以上是整个socks5代理的tcp代理流程的简单流程,udp代理会复杂些,后面会单独写一篇,

想详细了解的可以参照我的golang实现 https://github.com/0990/socks5

RFC1928-SOCKS Protocol Version 5

1、概念不同

(1)socks5代理,采用socks协议的代理服务器,是一种通用的代理服务器。

(2)http proxy,采用http协议代理服务器,主要代理浏览器访问网页。

2、代理速度不同

(1)http代理工作在应用层上,只允许用户通过HTTP协议访问外部网站。

(2)Socks5代理工作在会话层,不要求应用程序遵循特定的操作系统平台,Socks5代理只是简单地传递数据包,而不必关心是何种应用协议(比如FTP、HTTP和NNTP请求)。

所以,Socks5代理比http代理速度要快得多。

3、端口不同

(1)socks5代理默认端口是1080。

(2)http代理一般端口是80、8080、3128等。

参考资料来源:百度百科-http代理

参考资料来源:百度百科-SOCKS5代理


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/507421.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-06-17
下一篇2023-06-17

发表评论

登录后才能评论

评论列表(0条)

    保存