Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

Contents

PORT

인터넷에 연결된 각각의 컴퓨터는 유일한 IP주소로 식별할 수 있다. 네트워크 프로그램은 IP주소를 이용해서 연결할 컴퓨터를 찾을 수 있다.

연결할 컴퓨터를 찾았다면, 이제 서비스를 요청할 프로그램을 찾아야 한다. 이때 사용하는게 포트 번호다. 네트워크 프로그램은 포트번호에 연결이 되고, 운영체제는 포트번호를 이용해서 프로그램들을 연결한다.

이러한 연결과정은 항만시설에서 다양한 종류의 서비스를 제공하기 위해서 "포트"를 제공하는 것과 동일하다.

인터넷 네트워크 프로그램은 실행될 때, 운영체제에 자신이 바인드될 포트번호를 요청한다. 웹 서버라면 80번을 요청할 것이다. 이제 Firefox 같은 웹 클라이언트 프로그램은 IP 주소와 포트 번호를 이용해서 자신이 연결할 서버 프로그램을 찾을 수 있다.

TCP와 포트번호

포트번호는 TCP 프로토콜의 요소다. TCP 프로토콜은 패킷의 흐름을 제어하는 역할을 한다. 즉
  1. 패킷을 어느 애플리케이션으로 보낼지를 결정한다.
  2. 패킷의 순서를 확인한다.
  3. 패킷의 흐름에 구멍이 뚫렸는지를 확인한다.
이중 1번 역할을 포트번호를 이용해서 수행한다.

시스템 포트 번호

인터넷 세계에는 수 많은 인터넷 서비스들이 있다. 이중 널리 사용되는 인터넷 표준 서비스들은 고정된 포트번호를 할당해서 사용하고 있다. HTTP(80), FTP(21), SSH(22), SMTP(25), SNMP(161), BIND등의 서비스들이다.

이들 포트 번호는 /etc/services에 정의되어 있다. 이 파일을 열어 보면, 인터넷 서비스와 이들이 사용하는 포트번호를 확인할 수 있다.

포트번호는 1부터 65546까지 사용할 수 있는데, 이중 1-1024까지는 표준 서비스들을 위해서 시스템적으로 고정되어 있다. 이들을 시스템 포트 번호라고 한다. 시스템 포트번호는 시스템상에 고정되어 있기 때문에 루트권한을 가져야만 할당받을 수 있다. 예컨데, 80번 포트를 사용하는 아파치 웹서버는 일반 사용자 계정으로는 실행할 수 없다.