본문 바로가기
Web/Network

[Network] 포트(port)/소켓(socket)

by foreverever 2019. 8. 24.
반응형

1. Host

네트워크 주소(IP주소)가 할당된 노드를 호스트(Host)라고 한다.
스마트폰,노트북,데스크탑 등 인터넷에 연결되어 있으면 다 호스트(Host)라고 볼 수 있다. 즉 호스트끼리 데이터를 주고받는 것
정확히 말하면, 호스트 내의 다양한 프로세스들 끼리 데이터를 주고받는 것. 즉, 데이터는 프로세스레벨에서 주고받는 것

2. Port

자, 데이터는 호스트안의 프로세스 레벨에서 데이터를 주고받는다고 했다. 그러면 데이터가 네트워크를 타고 목적지 호스트에 도착했다고 끝일까?

아니다. 해당 호스트가 가지고있는 여러 프로세스 중 실제로 데이터를 받아야 하는 특정 프로세스에게 데이터를 전달해야한다. 이때 필요한 것이 포트(Port)이다.

즉, 포트(Port)란 네트워크를 통해 데이터를 주고받는 프로세스를 식별하기 위해 호스트 내부적으로 프로세스가 할당받은 고유값이다.
클라이언트는 서버포트(발신지)를 통해 요청, 서버는 클라이언트포트(수신지)를 통해 응답
(서버포트 : 웰 노운 포트/ 클라이언트 포트 : 레지스트리 포트)

3. Socket

창구라고 생각하자. 프로세스가 데이터를 보내고 싶다고 막무가내로 보낼 수 있는 것은 아니다. 창구를 열어야한다.
소켓(Socket)을 열기 위해서는 호스트에 할당된 IP주소, 포트넘버, 프로토콜이 필요하다.

IP주소를 통해 해당 호스트를 찾고, 호스트 내부에 진입하기 위해 Socket(창구)을 열어야하고, 프로세스를 찾기위해 포트를 알야아한다.

내가 이해한 바로는,

  1. 친구 집을 찾기위해 우리집 대문(Socket)을 나선다.
  2. 친구 집 주소(IP주소)를 통해 친구 집 앞까지 찾아간다.
  3. 친구 집 대문(Socket)에 입장한다.
  4. 집안에 있는 많은 방들 중 친구가 있는 방문(포트번호)을 보고 방(프로세스)으로 들어간다.
반응형