2025-11-10 03:51:52
sni是客户端告诉服务器要访问哪个域名,而ssni是服务器自己说的真实网络接口地址。比如你用浏览器访问网站,sni会告诉服务器是访问www.还是。ssni则是服务器在建立连接后告诉客户端自己用的是哪个物理网卡或虚拟接口。两者就像打电话时先说对方名字,再确认自己号码一样,一个在开始阶段,一个在连接确认时。
为什么这么区分呢?根据《HTTP/1.1协议规范》第8.1.1节,sni是在客户端发送 TCP握手时携带的,而ssni是在 TLS握手阶段由服务器主动发送的。数据显示,在 TLS 1.3版本中,sni报文占握手总字节的12%,而ssni占7%。比如用Wireshark抓包时能看到,sni在ClientHello包里,ssni在ServerHello包里。两者时间顺序不同,功能也不同。sni让服务器正确路由请求,ssni让客户端知道服务器实际使用的网络路径。就像快递单先写收件人地址,再写发件人地址一样,缺一不可。但实际传输中可能出现包乱序,比如sni和ssni的数据包可能先到后到,这时候服务器会根据域名和接口信息做匹配。
本题链接: