포트와 소켓

포트와 소켓에 대해 알아보기 전에 호스트에 대해 잠깐 알아보자.

호스트

네트워크에 연결된 모든 종류의 장치를 노드(Node)라고 부르는데 노드 중에서도 네트워크 주소(IP 주소)가 할당된 애들을 호스트(Host)라고 부른다.

이 호스트들끼리 서로 데이터를 주고받는다.

네트워크 공간에서 데이터를 주고받는다는 것은 호스트 내에 여러 프로세스가 존재하는데 이 프로세스들까지 데이터가 오고 감을 의미한다. 즉, 데이터는 프로세스 레벨에서 주고받는 다는 것이다.

그렇다면 데이터를 주고받을 때 데이터는 정확한 호스트에 여러 프로세스 중 특정 프로세스로 전달되어야 하는 것이다. 이를 위해 포트라는 개념이 등장한다.

또한, 데이터를 받을 때 실제적인 창구가 되는 것이 바로 소켓이다.

포트와 소켓은 5주차에서 배웠던 OSI 7계층의 Transport Layer에서 쓰이는 TCP와 UDP가 데이터를 주고 받을 때 쓰이는 정보이다.

포트

Port

네트워크를 통해 데이터를 주고받는 프로세스를 식별하기 위해 호스트 내부적으로 프로세스가 할당 받는 고유한 값

Port는 숫자로 표현되기 때문에 Port Number라고도 한다.

호스트의 프로세스는 데이터를 보내기 전에 무조건 포트 번호를 할당 받아야 한다. 왜냐하면 요청한 내용을 처리해서 받을 때 송신자가 어디로 보내줘야 할지 모르기 때문이다. 따라서 데이터를 주고 받기 위해서는 반드시 포트 번호를 할당받아야 한다.

포트 번호는 TCP 혹은 UDP의 Header에 포함되어 데이터와 함께 전달된다.

<aside> 💡 Port는 한 호스트 내에서 네트워크 통신을 하고 있는 프로세스를 식별하기 위한 값으로 프로세스가 할당 받아야 하는 고유한 숫자이다.

</aside>

** 서로 다른 프로세스가 같은 포트 번호를 가지는 방법이 있긴 하다.*