이번 TIL은 인프런의 "모든 개발자를 위한 HTTP 웹 기본 지식"을 학습하고, 정리한 내용입니다.
만약, 제 글의 내용을 퍼갈 시에는 " 모든 개발자를 위한 HTTP 웹 기본 지식 "도 출처에 첨부하시기 바랍니다.
하나의 PC로 게임, 화상통화, 음악 감상 등 여러 활동을 한다면, 여러 패킷들이 클라이언트(내 PC)로 올 것이다.
그런데, 각각의 패킷들이 게임을 위한 패킷인지 음악을 위한 패킷인지 어떻게 구별할 수 있을까??
IP 프로토콜에서는 이 문제를 해결할 수 없다.
그러나, TCP와 UDP에 존재하는 PORT를 통해서 이 문제를 해결할 수 있게 됐다.
=> 그림에서 볼 수 있듯이, 최종 데이터에는 출발지 IP와 출발지 PORT 가 있는 것을 알 수있다.
=> IP 편에서도 언급했지만, IP는 "PC의 주소"이다.
즉, PORT는 같은 IP (내 PC 주소) 내에서 프로세스 구분한다.
PORT는 같은 IP 내에서 프로세스를 구분한다.
에를 들어,
게임 서버를 연결한다면,
"서버 IP에 있는 11220 PORT로 연결할 꺼야!!" 라고 패킷을 쏘면, 서버에서는 클라이언트 IP의 8090 PORT에서 온 것을 TCP와 IP에 담긴 정보들을 통해서 확인이 가능하다.
그리고 패킷에 담긴 정보를 토대로, 내 PC의 IP와 해당 PORT로 응답을 보내준다.
비유하자면,
IP가 "아파트" 라면, PORT는 "몇 동 몇 호"이다.
- IP의 문제점
그래서, 나온 것이 DNS이다.
- DNS (Domain Name System)
- 전화번호부
- 도메인 명을 등록하고, 그것을 IP 주소로 변환
DNS 서버에 도메인을 등록할 수가 있다. 물론, 도메인을 어디서 구매해야겠지만!!
구매 후에 등록을 할 수 있다.
예를 들어서,
구글의 IP주소가 200.200.200.2 라면, DNS 서버에 google.com 이라는 도메인으로 등록해놓는다.
일반 유져 즉, 클라이언트는 google.com으로 요청하면, DNS 서버가 실제 구글 IP 주소로 응답을 보내준다.
나중에 구글의 IP 주소가 변경된다면??
구글에서 DNS 서버에 변경된 IP 주소를 업데이트 할 것이다. 그러면, 클라이언트 입장에서는 그냥 google.com이라고 변함없이 사용하면 되니, IP 주소의 문제점을 모두 해결할 수 있다!!!
복잡한 인터넷 망에 메시지를 보내기 위해서는 IP가 있어야 한다. 흔히 IP 프로토콜이라고 부르는데, 이것만 가지고는 메세지를 보내는데, 다양한 한계점들이 있다. 물론, PORT라는 개념도 없다. 그래서, 이 부분을 보완하기 위해서 TCP를 사용한다. 또한, UDP도 TCP와 같은 프로토콜 계층에 있는데, 거의 IP랑 똑같고 PORT 정도만 추가된 거의 백지 상태의 프로토콜이다. 백지 상태라, 필요하면, 기능을 확장해서 무언가를 해볼 수 있다.
PORT는 같은 IP 안에서 동작하는 어플리케이션을 구분하기 위해서 사용한다.
DNS는 IP는 변하기 쉽고 외우기 어려운데 도메인 명을 등록해서 사용할 수 있도록 해주는 시스템이다.