하나의 IP에서 두 가지 이상의 애플리케이션을 동시 실행한다고 생각해보자
지속적으로 서버에서 패킷 메시지를 보내며 통신해야하는
예를 들면 음성대화 애플리케이션을 이용해 통화하면서 온라인 게임을 하는 상황이라면?
두 가지의 애플리케이션이 동시에 패킷을 주고 받아야하는데 IP만으로는 해결할 수 없다.
IP가 서버에 요청을 동시에 하면 어떤 순서로 서버에 처리할 것인가! 분명 순서가 꼬이고 말것이다.
즉 우리는 IP에서 한단계 더 나아간 Port라는 것을 사용한다.
이전에 IP를 주소에 비유했는데 Port는 언어 그대로 직역하면 항구이다.
IP가 집주소라면 Port는 정확하게 집을 구분지어주는 상세주소, xxx동 xxx호 라고 보면 좋을 것 같다.
흔히 우리가 알고있는 Tomcat Server는 8080번 Port를 사용한다.
Oracle도 8080번 Port를 사용하기 때문에 동시에 실행하면 충돌이 나면서
늦게 실행한 것은 실행되지 않는다.
(Tomcat Server의 Port번호를 흔히 8090으로 바꾸면서 해결하기는 하지만)
그러나 같은 DB여도 MariaDB는 3306 Port를 사용하기 때문에 우리는 충돌없이
Tomcat Server와 사용할 수 있다.
그렇기 때문에 IP주소 뒤에 Port번호까지 같이 패킷에 담아서 정보를 보내면
서버는 해당 IP+Port 정보에 메시지를 패킷에 담아 응답해주는 것이다.
우리는 IP로 통신을 하는데 IP는 생각보다 어렵다.
Naver에 접속을 하기 위해 282.103.9.1을 주소창에 입력해야한다고 생각해보자..
물론 한 두개는 외울 수 있겠지만 우리가 접속하는 사이트마다 이걸 외워야한다면 여간 번거로운게 아니다.
또한 IP는 계속해서 바뀐다. 바뀌면 다시 외워야하는데 이전 주소로 입력을 하면 당연히 들어갈 수 없다.
위의 단점을 개선시키고자 우린 DNS를 사용하는데 도메인을 구매해서 IP를 도메인주소로 바꿔준다.
즉, 위에서 예를 든 282.103.9.1이라면 이건 naver.com이라는 도메인을 구매해서 등록하는거다.
이건 DNS서버에서 해주는데 전화번호부라고 생각하면 편리하다!
그래서 만일 네이버에 접속해야하는 IP가 바뀌더라도 바뀐 IP를 등록해주는 것이 DNS이다.
출처 : 모든 개발자를 위한 HTTP 웹 기본 지식(김영한 강사님 인프런 강의)