面试题答案
一键面试1. STUN协议
- 作用:
- 用于协助客户端发现自身的公网IP地址和端口,解决NAT设备对内部主机地址和端口的转换问题,使客户端能了解自己在公网中的映射情况。
- 可判断NAT的类型,为后续选择合适的穿透策略提供依据。
- 工作流程:
- 客户端发起请求:客户端向STUN服务器发送STUN请求消息,消息中包含客户端的本地地址和端口信息。
- 服务器处理与响应:STUN服务器接收到请求后,解析消息,获取客户端的本地地址信息,并在响应消息中填入客户端在NAT设备上映射的公网IP地址和端口。
- 客户端接收响应:客户端收到STUN服务器的响应后,就能获取到自己在公网的映射地址和端口,同时根据响应中的相关信息判断NAT类型。
2. TURN协议
- 作用:
- 当STUN无法实现穿透时(如对称型NAT场景),TURN协议作为备用方案实现可靠的NAT穿越和防火墙穿透。
- TURN服务器为客户端提供中继服务,在客户端之间建立数据传输通道,确保数据能在复杂网络环境下传输。
- 工作流程:
- 客户端请求中继:客户端向TURN服务器发送请求,请求分配一个中继地址(公网地址)。
- 服务器分配资源:TURN服务器收到请求后,为客户端分配一个中继地址,并建立相应的绑定关系。
- 数据中继传输:客户端A要与客户端B通信时,客户端A将数据发送给TURN服务器的中继地址,TURN服务器再将数据转发给客户端B。同理,客户端B的数据也通过TURN服务器中继给客户端A,从而实现双方的数据交互。
3. 结合实现穿透的过程
- 初始检测:客户端首先使用STUN协议与STUN服务器交互,尝试获取公网地址和判断NAT类型。如果NAT类型为全锥型、限制锥型或端口限制锥型等可通过STUN穿透的类型,客户端之间可以直接建立连接进行通信。
- TURN备用:若检测到是对称型NAT等STUN无法穿透的类型,客户端则向TURN服务器请求中继服务。TURN服务器为客户端分配中继地址,客户端之间通过TURN服务器的中继功能进行数据传输,以实现可靠的NAT穿越与防火墙穿透。