Image
Network/Basic

[인터넷 프로토콜] 포트(Port)란 무엇인가? IP Address의 한계와 Port의 역할

IP Address의 한계점

IP Address를 할당 받은 기기가 있다고 가정한다. 이 기기를 컴퓨터라고 생각해보자. 만약 IP Address만을 이용해 컴퓨터로 데이터를 보낸다면 컴퓨터는 그 데이터를 받을 것이다. 하지만, 문제는 그 데이터가 어느 프로세스에서 처리되어야 하는 것인지를 알 수가 없다. 

 

Port를 이용한 프로세스별 패킷 송수신

예를 들어 컴퓨터에 카카오톡, 라인, Slack 메세지 프로세스가 실행 중이라고 해보자. 컴퓨터가 메세지를 받았을 때 어떤 프로그램으로 해당 메세지를 전송해야 하는가?

 

만약 아무런 정보가 없다면 어떤 프로세스로 메세지를 보내야 하는지 알 수 없다. 이를 해결하기 위해 TCP에서는 패킷에 어떤 프로세스가 받아야 하는지에 대한 정보(Port 정보)를 추가하여 보낸다.

 

 

그림1. Port의 사용

 

통신을 해야하는 프로세스는 각자 자신의 Port를 가지고 있고, 해당 Port를 통해 데이터를 받는다. 즉, 수신된 메세지의 Port 번호를 통해 어떤 프로세스가 해당 메세지를 받아야 하는지 알 수 있는 것이다. 

Port 정보를 통해 어떤 프로세스가 메세지를 받아야 하는지 알 수 있다.
Port는 TCP 계층에서 추가된다.

 

자주 사용되는 Port

이 Port 들 중에서는 규약처럼 사용되는 Port가 있다. 바로 FTP 파일 송수신을 위한 포트인 20,21번 포트, HTTP 통신을 위한 80번 포트 그리고 HTTPS 통신을 위한 443번 포트 등이다. 최신 웹브라우저들은 각 통신 방법에 따라 포트가 정의되지 않았을 때 자동으로 해당 포트로 접근하도록 만들어준다. 

 

이러한 이유 때문에 1023번 이하의 포트는 사용하지 않는 것이 좋다. 이미 규약처럼 사용되고 있을 가능성이 높기 때문이다. 따라서 개인 어플리케이션에 포트 번호를 부여할 때는 최소 1024번 이상의 포트를 부여하는 것이 좋다.

 

반응형

 

이 글의 저작권은 '조세영의 Kotlin World' 에 있습니다. 글, 이미지 무단 재배포 및 변경을 금지합니다.

 

 

Kotlin, Android, Spring 사용자 오픈 카톡

오셔서 궁금한 점을 질문해보세요!
비밀번호 : kotlin22

open.kakao.com