포트를 사용하는 이유
포트는 컴퓨터 네트워크에서 특정 프로세스나 서비스가 통신을 위해 사용하는 엔드포인트(endpoint)입니다. 네트워크에서 포트를 사용하는 주요 이유는 다음과 같습니다.
-
다중화(Multiplexing): 하나의 컴퓨터 내에서 수많은 서비스와 애플리케이션이 동시에 실행되고 있습니다. 이들 모두 네트워크 통신을 필요로 할 수 있습니다. 포트를 사용함으로써, 하나의 아이피 주소를 가진 기기에서 동시에 여러 개의 서비스나 애플리케이션과의 통신이 가능해집니다.
-
정확한 데이터 전달: 포트 번호를 사용하면, 수신된 데이터가 어느 서비스나 프로세스로 전달되어야 하는지 정확하게 알 수 있습니다. 이는 데이터를 올바른 애플리케이션에 전달하기 위한 주요 메커니즘입니다.
-
알려진 포트 번호: 표준화된 서비스나 애플리케이션에는 "잘 알려진 포트 번호"가 할당되어 있습니다. 예를 들면, HTTP는 포트 80, HTTPS는 포트 443, FTP는 포트 21 등을 기본으로 사용합니다. 이러한 표준화된 포트 번호 덕분에 사용자가 웹 브라우저를 열고 URL을 입력할 때 포트 번호를 명시적으로 입력하지 않아도 웹 서버에 접근할 수 있습니다.
-
보안: 특정 포트를 열거나 닫음으로써 보안 정책을 적용할 수 있습니다. 예를 들면, 특정 서비스가 필요하지 않을 경우 해당 서비스의 포트를 닫아서 외부로부터의 접근을 차단할 수 있습니다.
그러면 인터넷 브라우저에서는 80이나 443을 사용할텐데 브라우저에서 여러 개의 웹사이트를 띄운다면 동일한 포트를 여러 개 사용하게 되는것 아닌가요??
서버 포트
위에서 잘 알려진 포트 번호(Well-known Port)의 경우 서버 포트를 의미하며 웹서버는 잘 알려진 포트를 사용하여 클라이언트의 요청을 기다립니다.
클라이언트 포트(Ephemeral Port)
- 클라이언트는 요청을 보낼 때 일반적으로 동적으로 할당되는 임시 포트(ephemeral port)를 사용합니다. 이 포트는 OS에 의해 동적으로 선택되며, 사용 후에는 다시 반환됩니다.
- 각각의 연결에 대해 새로운 임시 포트가 할당되기 때문에 웹 브라우저는 동시에 여러 웹사이트에 접속하면서도 각각의 세션을 구분할 수 있습니다.
즉, 웹 브라우저에서 여러 웹사이트에 동시에 접속할 때, 서버 측에서는 80 또는 443과 같은 잘 알려진 포트를 사용하고 있지만, 클라이언트 측에서는 동적으로 할당되는 다양한 포트 번호를 사용하여 각각의 연결을 유지합니다.