- 일반적으로 하나의 컴퓨터 안에서, 여러 개의 어플리케이션이 동시에 네트워크를 통해서 다른 컴퓨터와 데이터를 주고 받는 경우가 많죠. 우리가 인터넷 강의를 보면서 친구들과 메신저 프로그램으로 대화를 하는 것이 그 예가 될 수 있어요.
일반적으로 개인이 사용하는 컴퓨터는 하나의 물리적 연결 장치(네트워크 랜카드, 랜케이블)를 통해서 네트워크에 연결되어 있죠. 하나의 IP 주소를 가지게 되죠. 여러 개의 네트워크 통신을 하는 프로그램들이 실행되고 있더라도 데이터를 송/수신하는 물리적 통로는 하나밖에 존재하지 않게 된다.
그럼 어떻게 수신한 데이터를 구분해서 각각의 실행 중인 프로그램에게 전달해 줄 수 있는 것일까?
IP주소로는 인터넷에 연결되어 있는 컴퓨터들을 구분하여 줄 수는 있어도, 컴퓨터 안에서 실행되는 프로그램들까지 구분하지는 못합니다. 풀어말하면, IP 주속만으로는 받은 데이터 패킷을 메신저 프로그램에 전달할 것인지, 인터넷 강의 프로그램에 전달 할 것인지 구분하지 못한다는 것입니다.
한 개의 IP를 가지더라도 다수의 네트워크 통신을 위해 필요한 것이 서로 다른 포드(Port)들 이다. 32비트 IP 주소로는 네트워크상에 존재하는 호스트를 구분하게 되고, 16비트 Port 정보로는 호스트 내에서 실행되고 있는 프로그램들을 구분하게 되죠. 포트는 물리적인 개념의 할당이 아니라, 동일 호스트 내에서 논리적인 할당이다.
결론적으로 데이터 전송의 최종 목적지는 호스트가 아니라 메모리상에 올라와 실행 중에 있는 프로그램이 되는 거다. 따라서, 실행 중 네트워크 통신을 이용하는 프로그램에 데이터를 보내기 위해서는 데이터 패킷 내에 IP 주소 정보뿐만 아니라 Port 정보도 함께 포함을 시켜야 하는 거다.
#포트에 대한 내용은 아래의 블로그에서 발췌