ICE는 두 단말이 서로 통신할 수 있는 최적의 경로를 찾도록 도와주는 프레임워크이다.
ICE는 혼자 작동하지 않기 때문에 STUN, TURN 서버를 사용하여 최적의 경로를 찾을 수 있다.
네트워크의 환경은 다양하기에 P2P 연결이 단순하게 이뤄지지 않는다.
Issue
방화벽이 존재하면 방화벽을 통과해야되고, 단말의 Public IP가 없다면 할당 받아야 한다. 그리고 라우터가 Peer 간의 직접 연결을 허용하지 않으면 데이터를 릴레이해야 한다.
따라서, ICE 프로세스를 사용하면 NAT가 통신을 위한 모든 포트를 열어두고 두 엔드 포인트 모두 다 연결할 수 있는 IP 주소, 포트에 대한 완전한 정보를 갖게된다. 즉, 요청하는 클라이언트와 미디어 서버 사이의 연결을 통해 미디어(비디오, 음성)등을 주고 받을 수 있다는 것이다.