첫날 강의를 수강하면서 포트(Port)에 대해서 공부를 할 수 있었다.
개인적으로 강사님께서 설명해주신 내용이 인상깊어서 포스팅으로 내용을 정리하고자 한다.
우리가 웹 개발을 하게되면 localhost:8080, localhost:5050를 흔히 볼 수 있다.
여기서 8080과 5050은 Port Number를 의미하는데, Port는 과연 무엇일까?
흔히 Port는 데이터가 도달하는 EndPoint 혹은 데이터 통신을 위해 접근하는 곳이라고 대답한다.
이를 조금 더 깔끔하게 정리하면 네트워크 상에서 실행되는 프로그램을 식별하기 위한 번호라고 할 수 있다.
서버에서는 여러 프로그램이 동시에 실행될 수 있는데, 이때 각 프로그램을 구분하기 위해 포트를 사용하는 것이다.
Q. 그렇다면 조금 더 자세히 들어가서 Port는 누가 관리할까?
각 프로그램은 자신만의 고유한 포트 번호로 요청을 리스닝(listening)하고 있다.
이를 통해 운영체제는 들어온 요청을 적절한 프로그램에게 전달할 수 있는데, 이는 마치 여러 부서가 있는 회사에서 각 부서마다 다른 내선번호를 사용하는 것과 비슷하다고 볼 수 있다.
프로그램이 포트 번호를 리스닝하면서 관리하게 되며 대표적으로 알려진 Well-Known 포트들은 다음과 같다.
주요 Well-Known 포트
- HTTP (웹 서버): 80번 포트
- HTTPS (보안 웹 서버): 443번 포트
- SMTP (이메일 서버): 25번 포트
- FTP (파일 전송): 21번 포트
- SSH (원격 접속): 22번 포트
이러한 Well-Known 포트들은 일반적으로 0번에서 1023번 사이의 포트 번호가 할당되어 있다.
그렇다면 포트를 Listening하는 프로그램은 어떻게 동작할까?
요청 처리 과정
1. 클라이언트가 특정 포트로 요청을 보냄
2. 운영체제가 해당 포트를 리스닝하고 있는 프로그램을 확인
3. 해당 프로그램에게 요청을 전달하여 처리
위와 같은 처리 과정을 거쳐서 포트를 통한 프로그램 실행이 가능하다.
그렇다면, 3번 과정에서 프로그램은 어떻게 요청을 처리하는걸까?
각 포트(프로그램)는 자신만의 기준 디렉토리를 가지고 있다.
이를 'Web Document Root'라고 부르며, 프로그램은 이 디렉토리를 기준으로 모든 요청을 처리하게 된다.
예를 들어, 웹 서버가 /var/www/html
을 Web Document Root로 사용한다고 가정해보자.
이 경우 다음과 같이 요청이 처리된다.
Web Document Root의 동작 방식
- URL:
http://localhost:80/images/photo.jpg
요청 시- 실제 경로:
/var/www/html/images/photo.jpg
에서 파일을 찾음- 즉, Web Document Root + URL 경로가 실제 탐색 경로가 됨
이러한 방식으로 각 프로그램은 자신의 Web Document Root를 기준으로 리소스를 관리하고 제공할 수 있다.
포트는 네트워크 통신에서 프로그램을 식별하기 위한 핵심 요소이다.
특히 웹 개발을 하는 입장이라면, 포트의 개념을 이해할 필요가 있다.
포트를 공부하는 과정에서 Web Document Root라는 개념을 접할 수 있었고, 포트를 리스닝하는 프로그램이 어떻게 동작하는지도 쉽게 설명해주셔서 의미있는 시간이었다!