dev-writeup-2024 / march

개발 1일 1글 스터디
2 stars 0 forks source link

[03-06] PORT, DNS #12

Open snaag opened 8 months ago

snaag commented 8 months ago

PORT, DNS

PORT

포트 (port) 는 항구를 의미합니다. 배는 항구 (port) 에서 적절한 자리(?) 에 배를 대고 짐을 내려줍니다. 배를 정박할 적절한 자리를 정박지 번호 (port number) 라고 생각해보겠습니다.

클라이언트에게도 여러 서버로부터 데이터가 오는데, 이 데이터들은 각각 적절한 서비스로 보내져야 합니다. 예를들어... 음악 서비스로 게임 데이터가 보내진다거나, 게임 서비스로 웹서핑 데이터가 들어오면 안되기 때문입니다.

항구 (출처 : 항구 - 위키피디아)

PORT 번호의 등장 배경

한 번에 둘 이상 연결해야 한다면?!

IP 주소는 네트워크상에서 특정 호스트의 위치만을 알 수 있습니다. 그런데 클라이언트가 동시에 여러 프로세스를 실행하고 있어서, 해당 서비스의 서버들과 네트워크상에서 데이터를 주고받아야 한다면 어떻게 해야될까요? IP 주소만으로는 클라이언트에게 패킷이 도달은하겠지만, 적절한 어플리케이션으로 적절한 데이터를 보내주기엔 어렵습니다.

image

(출처 : HTTP 강의 - 김영한 님)

예시에서 클라이언트는 게임을하며 화상통화를 하고, 웹서핑을 하고 있습니다. (산만하네요...) 각 서비스(게임, 화상통화, 웹서버) 는 어떻게 클라이언트의 각 서비스로 적절한 데이터를 보내줄 수 있을까요?

이는 TCP 세그먼트에 있는 포트 번호 로 해결할 수 있습니다! image

(출처 : HTTP 강의 - 김영한 님)

그래서 주로 합쳐서 TCP/IP 라고 합니다. 왜 UDP/IP 는 없고 TCP/IP 만 있는지 는 지난번 글을 참고해주세요.

같은 IP 안에서 프로세스 구분

image

(출처 : HTTP 강의 - 김영한 님)

게임과 화상통화, 웹서핑을 동시에하는 산만한 클라이언트의 각 서비스는 각각 다른 포트에서 실행되고 있었습니다!

따라서 게임서버로부터 온 응답은 8090번 에서 받고, 화상통화로부터 온 응답은 21000번 에서 받고, 웹 서버의 결과는 10010 에서 받으면 됩니다.

클라이언트가 요청할때는 마찬가지로 게임서버로는 11220번으로 요청을 보내고, 화상통화 서버로는 21000번으로, 웹 서버는 10010번으로 요청을 보내면 됩니다.

주로 사용하는 PORT 번호들

DNS

네트워크에 접속할 수 있는 모든 호스트들은 IP 주소를 가지고 있습니다. 만약 특정 서비스에 접속하고 싶다면 해당 서비스의 서버의 IP 주소를 알아야 합니다. 하지만 IP 주소는 기억하기 매우 어렵고, 변경될 수 있습니다.

따라서 잘 변하지 않고 이해하기 쉬운 이름 (domain name) 을 IP 주소와 이름을 매칭해주는 전화번호부같은 것이 있는데요, 이를 DNS 라고 합니다. Domain Name Service 입니다.

image

(출처 : HTTP 강의 - 김영한 님)

출처

mingnuj commented 8 months ago

옛날에 공부했던 내용이 새록새록 나는군여,,,