우리는 TCP 소켓을 연결하기 위해 TCP Simultaneous Open을 사용하고 있습니다. 한 SideA와 다른 SideB를 호출 할 수 있습니다.
wireshark 로그에서 SideB에서 보낸 처음 두 SYN이 SideA NAT에 의해 차단되어 있음을 알 수 있습니다. 그런 다음 SideA는 SYN을 전송하고 SideB에 의해 수신되고 [SYN, ACK]으로 응답합니다. 이 [SYN, ACK] 수신 후 SideA는 ACK를 보냅니다. 그러나 이것은 SideB에 도달하지 않습니다. 왜 그런가요? SideB의 NAT가 ACK를 통과하지 못하는 이유는 무엇입니까?
양쪽에는 Full Cone NAT가 있습니다. SideA 포트는 52088이고 SideB 포트는 56961입니다. 양쪽에 wireshark 로그 링크를 추가하고 있습니다.
SideA 라우터 : TPLINK, 모델 : TLMR3420
SideB의 라우터에 대해 모르겠습니다. 그러나 그것은 AT & T 와이파이였습니다.
NAT를 통해 TCP 동시 작동을 작동시키기는 매우 어렵습니다.
—
David Schwartz
예. PRC / FC NAT의 경우 대부분 성공했습니다. 그러나 대칭의 경우 불가능합니다. 그러나 여기 두 FC NAT간에 실패한 시나리오가 있습니다. ACK가 통과되지 않는 이유는 이상합니다!
—
Tahlil
NAT에이 의심스러운 / 비정상적인 것으로 간주되는 방화벽 기능이 있기 때문일 수 있습니다.
—
David Schwartz
그러나 SYN은 다른 쪽에서 SYN을 허용했습니다. NAT가 들어오는 SYN을 훨씬 더 제한한다고 생각했습니다. 그러나 SYN이 허용되고 이미 다른쪽에 SYN을 보냈으므로 해당 SYN에 대한 ACK를 허용해야합니다.
—
Tahlil