NAT(Network Address Translation)
기기는 고유의 이름으로 IP를 갖습니다. IP는 고정IP, 유동 IP가 있습니다. 그래서 실제로 고유하게 갖고 있는 IP주소인지 알 수 없습니다.
그리고 내부망은 private IP이기 때문에 다른 네트워크와 통신이 되지 않습니다.
NAT을 통하여 private IP에서 외부와 통신할 수 있는 public ip로 변환할 수 있습니다.
public ip는 NAT에 의해 요청을 보낼때마다 바뀌기 때문에 public ip로 통신할 수 없는 문제가 발생합니다.
STUN과 TRUN 서버를 이용하여 pee간의 통신을 가능하게 합니다.
ICE(Interactive Connectivity Establishment)
두 단말이 서로 통신할 수 있는 최적의 경로를 찾는 프레임워크입니다.
How
STUN 서버와 TURN 서버를 이용합니다.
WHY
통신을 위해 각 환경에 따라 방화벽을 통과하고, 유일한 주소값을 할당해야하고, 데이터를 릴레이해야 합니다.
ICE 프로세스를 사용하면 NAT가 필요한 모든 포트를 열어두고 두 단말 모두 연결할 수 있는 Port, IP주소에 대한 정보를 얻게 됩니다.
STUN(Session Traversal Utilities for NAT)
해당 단말로 public ip주소를 보냅니다.
연결 확인하고 NAT 바인딩 유지하기 위한 연결 유지 Protocol로도 사용가능합니다.
같은 NAT 환경에 있거나, NAT 보안 정책이 엄격하다면 STUN은 완벽한 해결이 되지 않습니다.
TURN(Traversal Using Relays around NAT)
NAT 바인딩 생성하기 어렵다면 TURN 서버를 사용합니다.
TURN 서버는 인터넷망에 위치하고 있습니다. 각 단말들은 사설망안에서 통신합니다.
각 단말들은 직접 통신하지 않고, TURN 서버를 경유하여 통신합니다.
STUN에 비해 리소스 낭비가 심합니다.
ICE candidate를 이용하여 local ip, public ip 후보군을 찾아 연결을 위한 최후의 수단으로 사용합니다.
'EngleBee 프로젝트' 카테고리의 다른 글
[study] CI/CD 파이프라인 구축 (0) | 2024.08.23 |
---|---|
[study] JPA 연관관계 맵핑 주인 (0) | 2024.08.20 |
[study] github 프로젝트와 마일스톤 그리고 이슈 (0) | 2024.08.18 |
[트러블슈팅] 수업 생성 로그 테이블 생성 (0) | 2024.08.16 |
[트러블슈팅] 프로젝트 구조 계층형 구조 vs 도메인형 구조 (0) | 2024.08.15 |