[Web] 네트워크 포트(PORT)번호란 무엇인가?

 포트번호란? 

ex) 192.132.15.86:50921

 

IP주소 뒤에 : 기호와 함께 붙는 번호를 포트라고 합니다. 포트는 0~65536 사이의 숫자를 가지게 되며 실행되고 있는 프로세스를 구분 짓기 위해 사용되는 16비트의 논리적 할당을 말합니다. 포트번호는 컴퓨터의 특정 프로세스를 찾아갈 때 사용됩니다. 즉 192.132.15.86이라는 IP는 컴퓨터를 찾을 때 필요한 주소를 말하며, 50921이라는 포트는 컴퓨터 안에서 프로그램을 찾을 때 사용하는 것입니다. 포트라는 용어의 유래도 본래는 항구라는 단어에서 따온 말입니다. 항구의 입장에서 봤을 때 컨테이너를 가득 실은 배가 한 번에 둘 이상 입항하려고 하려면 어떻게 해야 할까요? A컨테이너선은 1부두로 B컨테이너선은 2부두로 유도를 시켜줘야 하겠죠. 컴퓨터 입장에서는 항구가 IP주소가 되고, 부두가 포트번호라고 이해하시면 되겠습니다.

 

포트번호가 필요한 이유

cmd 명령 프롬프트 창에서 netstat -an 명령어를 입력해봅시다. 그러면 현재 컴퓨터에서 실행되고 있는 수많은 포트를 보실 수 있습니다. 이처럼 컴퓨터에는 프로그램이 하나만 돌아가는 것이 아닙니다. 클라이언트든 서버든 여러 개의 프로세스가 동시에 실행되고 있습니다. 예를 들어서 지금 컴퓨터로 웹 서핑도 하면서, 파일도 다운받고 있고, 메일도 보내고 있다고 해봅시다. 그렇다면 각 서버에서 패킷들이 나에게 날아올 텐데 이게 웹 브라우저의 응답 결과로 오는 패킷인지, 파일 다운로드에 필요한 패킷인지, 메일 송수신에 필요한 패킷인지 알 수 없겠죠. 반대로 패킷을 보낼 때도 마찬가지이고요.

 

그래서 포트번호로 어느 프로그램에 전송해야 할 패킷인지 구분을 합니다. 그림으로 표현하자면 위의 그림처럼 되겠습니다. 오늘날 가장 많이 사용하는 전송계층의 프로토콜인 TCP의 헤더에는 출발지 포트와 목적지 포트가 있습니다. 이것으로 클라이언트의 프로그램과 서버 간의 통신을 하게 됩니다.

 


 

 각 포트번호에 대한 설명 

포트번호는 0 ~ 65535까지 할당이 가능합니다. 하지만 포트번호도 아무거나 막 할당하면 치명적인 오류가 발생할 수도 있는데요. TCP/IP의 상위 프로토콜을 사용하는 응용프로그램에서는 인터넷번호 할당 허가위원회(IANA)에 의해 미리 지정된 포트번호들을 이미 가지고 있고, 이미 사용하고 있는 포트를 중첩해서 사용하게 되면 프로그램 오동작을 유발합니다. 특히 0부터 1023 포트는 웰 노운 포트(well-known ports) '잘 알려진 포트들'라고 해서 이미 포트들이 예약되어 있어 사용하지 않는 것이 좋고, 나머지 포트번호를 가지고 애플리케이션을 만들 때 열어서 사용하면 됩니다. 

 

웰 노운 포트(well-known ports)에서 유명한 포트는 위의 그림과 같습니다. 대표적으로 우리가 잘 아는 HTTP는 80포트를 사용하고 HTTPS는 443포트를 사용합니다. 

댓글

Designed by JB FACTORY