网络协约之:haproxy的Proxy Protocol代理协约
2025-10-26 12:16:30
接着是一个逗号逗号。
然后是proxy运用于的INET protocol 和 family。对于v1新版本来说,全力支持”TCP4″和”TCP6″这两种方式则。里面的举例中都,我们运用于的是TCP4.
如果要运用于其他的条款,那么可以设立为”UNKNOWN”。如果设立为”UNKNOWN”,那么后面到CRLF到时前的资料将会被看来。
接着是一个逗号逗号。
然后是OSI引的IP位址,根据到时以的是TCP4还是TCP6,互换的引IP位址也有不同的指出表达方式。
接着是一个逗号逗号。
然后是OSI能够位址的IP位址,根据到时以的是TCP4还是TCP6,互换的引IP位址也有不同的指出表达方式。
接着是一个逗号逗号。
然后是TCP引的UDP号,任意之内是0-65535。
接着是一个逗号逗号。
然后是TCP能够位址的UDP号,任意之内是0-65535。
接着是CRLF终结符。
这样一个v1新版本的proxy protocol就假定完了,是不是很简单。
根据这样的假定,我们更好来计算整个proxy protocol的最大者弧度,对于TC4来说,最大者的弧度指出为:
- TCP/IPv4 : "PROXY TCP4 255.255.255.255 255.255.255.255 65535 65535" => 5 + 1 + 4 + 1 + 15 + 1 + 15 + 1 + 5 + 1 + 5 + 2 = 56 chars对于TCP6来说,最大者的弧度指出为:
- TCP/IPv6 : "PROXY TCP6 ffff:f...f:ffff ffff:f...f:ffff 65535 65535" => 5 + 1 + 4 + 1 + 39 + 1 + 39 + 1 + 5 + 1 + 5 + 2 = 104 chars对于UNKNOWN来说,可能有比如说的最小弧度和最大者弧度指出为:
- unknown connection (short form) : "PROXY UNKNOWN" => 5 + 1 + 7 + 2 = 15 chars - worst case (optional fields set to 0xff) : "PROXY UNKNOWN ffff:f...f:ffff ffff:f...f:ffff 65535 65535" => 5 + 1 + 7 + 1 + 39 + 1 + 39 + 1 + 5 + 1 + 5 + 2 = 107 chars所以,总纤来说108个字符早就所需v1新版本运用于了。
新版本2新版本2主要是解决问题的十进制编码器,虽然对人类所都是不友好,但是可以提很较差链路和解析效率。
新版本2的header是以比如说12 bytes标题的block:
x0D x0A x0D x0A x00 x0D x0A x51 x55 x49 x54 x0A整整的一个byte(13 bytes)是protocol version 和 command。因为一个byte是8个bits,运用于一个byte来完好有点太奢侈了。所以将其拆分成两其余部分。
很较差位的4个bits完好的是新版本,这里新版本号必须是”x2″。
较差位的4个bits完好的是command,有比如说几个最大值:
LOCAL(x0): 指出相连是由暂由自己筹组的,一般用在暂由向应用程序收发健康检查时。PROXY(x1): 代表相连是由另外一个节点筹组的,这是一个proxy暂由催促。 然后举例来说必须运用于条款块中都透过的讯息来获取更早位址。其他:其他command都必需被丢弃,因为必定识别。整整的一个byte(14 bytes)完好的是transport protocol 和 address family。
其中都很较差4位完好的是address family,较差4位完好的是transport protocol。
address family可能有比如说的最大值:
AF_UNSPEC(0x0): 指出的是不全力支持的,或者未假定的protocol。当sender收发LOCAL command或者解决问题为止protocol families的时候就可以运用于这个最大值。AF_INET(0x1):指出的是IPv4位址,租用4bytes。AF_INET6(0x2):指出的是IPv6位址,租用16bytes。AF_UNIX(0x3):指出的是UNIX address位址,租用108 bytes。transport protocol可能有比如说的最大值:
UNSPEC(0x0): 未知条款种类。STREAM(0x1):运用于的是SOCK_STREAM protocol,比如TCP 或者UNIX_STREAM。DGRAM(0x2):运用于的是SOCK_DGRAM protocol,比如UDP 或者UNIX_DGRAM。较差4位和很较差4位进唯时组合,可以得不到比如说几种最大值:
UNSPEC(x00)TCP over IPv4(x11)UDP over IPv4(x12)TCP over IPv6(x21)UDP over IPv6(x22)UNIX stream(x31)UNIX datagram(x32)第15和16 bytes指出的剩下的标识符的弧度,综上,16-byte的v2可以用比如说的结构纤指出:
struct proxy_hdr_v2 { uint8_t sig[12]; /* hex 0D 0A 0D 0A 00 0D 0A 51 55 49 54 0A */ uint8_t ver_cmd; /* protocol version and command */ uint8_t fam; /* protocol family and address */ uint16_t len; /* number of following bytes part of the header */ };从第17个byte开始,就是位址的弧度和UDP号讯息,可以用比如说的结构纤指出:
union proxy_addr { struct { /* for TCP/UDP over IPv4, len = 12 */ uint32_t src_addr; uint32_t dst_addr; uint16_t src_port; uint16_t dst_port; } ipv4_addr; struct { /* for TCP/UDP over IPv6, len = 36 */ uint8_t src_addr[16]; uint8_t dst_addr[16]; uint16_t src_port; uint16_t dst_port; } ipv6_addr; struct { /* for AF_UNIX sockets, len = 216 */ uint8_t src_addr[108]; uint8_t dst_addr[108]; } unix_addr; };在V2新版本中都,除了address讯息之外,header中都还可以最大值得注意一些额外的拓展讯息,这些讯息被被称作Type-Length-Value (TLV vectors),格式如下:
struct pp2_tlv { uint8_t type; uint8_t length_hi; uint8_t length_lo; uint8_t value[0]; };标识符的词分别是种类,弧度和最大值。
比如说是目前全力支持的种类:
#define PP2_TYPE_ALPN 0x01 #define PP2_TYPE_AUTHORITY 0x02 #define PP2_TYPE_CRC32C 0x03 #define PP2_TYPE_NOOP 0x04 #define PP2_TYPE_UNIQUE_ID 0x05 #define PP2_TYPE_SSL 0x20 #define PP2_SUBTYPE_SSL_VERSION 0x21 #define PP2_SUBTYPE_SSL_CN 0x22 #define PP2_SUBTYPE_SSL_CIPHER 0x23 #define PP2_SUBTYPE_SSL_SIG_ALG 0x24 #define PP2_SUBTYPE_SSL_KEY_ALG 0x25 #define PP2_TYPE_NETNS 0x30Proxy Protocol的运用于情况里面也说明了,一个条款的并不一定也许在与这个条款假定的好不好,也在于运用于这个条款的硬件多不多。
如果边缘化的暂由硬件都无法运用于你这个暂由条款,那么条款假定的再好也无法用。相反,如果大家都在运用于你这个条款,条款假定的再差也是边缘化条款。
好在Proxy Protocol早就在暂由应用程序界被广泛应用的运用于了。
确切运用于该条款的硬件如下:
Elastic Load Balancing,AWS的接地除此以外,从2013年7年底起适配器Dovecot,一个POP/IMAP邮箱应用程序从2.2.19新版本开始适配器exaproxy,一个正向和交叉暂由应用程序,从1.0.0新版本开始适配器gunicorn ,python HTTP 应用程序,从0.15.0开始适配器haproxy,交叉暂由接地除此以外,从1.5-dev3开始适配器nginx,正正向暂由应用程序,http应用程序,从1.5.12开始适配器Percona DB,资料库应用程序,从5.6.25-73.0开始适配器stud,SSL offloader,从第一个新版本开始适配器stunnel,SSL offloader,从4.45开始适配器apache HTTPD,web 应用程序,在拓展计算机系统对myfixip中都运用于varnish,HTTP 交叉暂由磁盘,从4.1版开始适配器基本上所有的边缘化应用程序都适配器Proxy Protocol,所以我们可以把Proxy Protocol当作是事实上的常规。
总结在本文中都,我们简介了Proxy Protocol的下层假定,那么Proxy Protocol确切怎么运用于,能不能解决问题自己的Proxy Protocol应用程序呢?敬请期待。
本文已附赠
最通俗易懂的解读,最精彩的零售商店,最简洁的入门,极多你不知道的小擅于等你来发现!
欢迎注意我的公众号:「程序那些事」,懂技术开发,更懂你!
。江苏不孕不育医院哪家比较专业重庆妇科医院哪好
广西白癜风医院去哪家好
重庆看白癜风去什么医院最好
四川皮肤病医院怎么去
支气管炎咳嗽
养生医药资讯
小儿口角炎
慢性支气管炎长期咳嗽怎么办?
咳嗽有痰吃什么药

-
国资委:到2025年中央企业万元生产量综合能耗比2020年下降15%
原曲名:当中石油:到2025年正当中央行业万元年产综合耗电量比2020年升高15%证券时报网讯,据当中石油Facebook12翌年30日立即,当中石油月底公布《关于前推正当中央行业高质量转型做
2025-10-30 00:16:35

-
2021年标普500最牛和差强人意十只股票
对美国股市来说,2021年是噩梦的一年,受到了米姆证券狂热、供应链危机和新冠病毒值得注意等一系列震撼。尽管如此,标准普尔500百分比仍创下了70次新低,本年历年来的溢价约为30%,这在一定程度上要归功
2025-10-30 00:16:35

-
嗓子总有肠胃,肠胃多吐不完?3个小方法,教你从根本上祛肠胃
很多人都有这样一种情形,总看上去嗓子除此以外气喘,希望吐气喘,这是怎么回事呢?现今沈外科医生就给大家聊一聊气喘这个疑虑。首先,这气喘是怎么诱发的呢?西医认为,脾谋生气喘之源,肺为储
2025-10-30 00:16:35

-
天津“欣程达营养餐配送中心”被爆脏乱差 官方:吊销公证,多人被问责
一书记徐海有权党内严重影响通知西北侧以;得到青岛东村甘丹寺大镇党委副第一书记、大镇公所闫芹芹党内严重影响通知、国事停职西北侧以;得到青岛东村甘丹寺大镇副大镇公所王建培党内严重影响通知、国事停职西北侧以
2025-10-30 00:16:35

-
宁德时代投资成立新能源资源Corporation,注册资本20亿
企查查APP说明了,4月2日,四川康德新能源人力资源有限责任Corporation设立,法定代表人为朱普照寺,注册资本20亿元人民币,经营范围包含:新兴能源技术研发;选矿;矿石洗选加工;金属矿石
2025-10-30 00:16:35