포트
포트(port)란 컴퓨터끼리 정보를 교환하기 위해 사용하는 가상의 논리적 접속 위치이다. 널리 알려진 포트 번호에는 20번(FTP), 22번(SSH), 23번(telnet), 25번(SMTP), 53번(DNS), 80번(http), 110번(POP3), 143번(IMAP), 194번(IRC), 443번(https) 등이 있다.
목차
개요
포트는 크게 각각 컴퓨터 하드웨어적 의미와 테크워크의 의미 두 가지 의미로 나뉜다. 하드웨어적 의미로는 컴퓨터의 주변장치를 접속하기 위해 사용되는 연결 부분을 의미하고, 소프트웨어 및 네트워크의 의미로는 컴퓨터끼리 정보를 교환하기 위해 사용하는 가상의 논지적인 접속 장소를 의미한다. 전자는 병렬 포트와 직렬 포트로 나뉘는데, 병렬 포트에서는 주로 프린터를 접속하기 위한 센트로닉스 등을, 직렬 포트는 주변장치를 접속하기 위한 RS-232C 등을 예로 들 수 있다. 후자는 네트워크 서비스나 특정 프로세스를 식별하는 논리 단위로써, 인터넷 프로토콜 스위트에서 운영 체제 통신의 종단점을 맡고 있다. 예를 들어 TCP/IP를 사용할 때는, 클라이언트 프로그램이 네트워크 상의 특정 서버 프로그램을 지정하는 식으로 사용된다. 따라서 TCP/IP의 상위 프로토콜을 사용하는 응용프로그램에서는 인터넷 번호 할당 허가위원회에의해서 미리 지정된 포트 번호들을 가지고 있다. 포트 번호는 총 65,536개에 달하는 포트를 '잘 알려진 포트'(0번 ~ 1023번), '알려진 포트'(1024번 ~ 49151번), '동적 포트'(49152 번 ~ 65535번)로 나눈 번호이다.[1]주로 포트를 사용하는 계층은 전송 계층 프로토콜이라 부르는데, 그 예로 전송 제어 프로토콜(TCP)과 사용자 데이터그램 프로토콜(UDP)가 있다. 각 포트를 구별하는 번호는 포트 번호라고 부르며, 포트 번호는 IP주소와 함께 프로토콜에 사용된다.[2]
개념
하드웨어
컴퓨터나 통신장비에서 주변장치에 물리적으로 접속되는 특정한 연결 부위를 말한다. 여기에는 소켓이나 플러그를 예로 들 수 있다. 정보가 드나드는 출입구로써, 일반적으로 컴퓨터는 하나 이상의 직렬 포트와 한 개의 병렬 포트가 제공된다. 병렬 포트와 직렬 포트로 나뉘는데, 병렬 포트는 센트로닉스처럼 한번에 여러 비트씩 프린터같은 주변 장치로 전송할 수 있는 병렬 전송을 지원하고, 직렬 포트는 RS-232C처럼 한번에 한 비트씩 모뎀 같은 주변 장치로 전송하는 직렬 전송을 지원한다.
네트워크
프로그래밍에서 논리적인 접속장소를 뜻한다. 인터넷 프로토콜인 TCP/IP를 사용할 때에는 클라이언트 프로그램이 네트워크 상에서 특정 서버 프로그램을 지정하는데 사용된다. 웹 프로토콜인 HTTP처럼, TCP/IP의 상위 프로토콜을 사용하는 프로그램들은 IANA가 미리 지정한 '잘 알려진 포트 번호'를 갖고 있다. 다른 응용 프로그램 프로세스들은 매번 접속할 때마다 포트 번호가 동적으로 부여된다. 서버 프로그램이 처음 시작되면 지정된 포트 번호로 바인드되고, 이 서버를 이용하려는 모든 클라이언트 프로그램은 지정된 포트 번호로 바인드해야한다. 바인드가 된 후에는 두 개의 컴퓨터 간 네트워크를 이용한 통신 시 발신지 컴퓨터에서 출발한 사용자 패킷은 TCP/IP의 각 계층을 거쳐, 목적지 주소를 가진 컴퓨터로 도착한다. 패킷을 수신한 컴퓨터는 전송시에 사용되었던 주소 필드를 제거한 후, 응용프로그램에는 패킷 내부의 데이터만 넘겨진다. 데이터를 넘겨줄 컴퓨터에는 텔넷, 메일, 웹 같은 다양한 응용프로그램만 기동하고 있기때문에, 각각의 응용 프로그램에 포트 번호를 할당하여 전송 계층에서 응용프로그램을 구분하고 원활하게 응용층으로 전송할 수 있도록 한다.
포트번호는 16비트 정수로 만들어져, 0번부터 65535번까지 사용할 수 있다. 사람들에게 잘 알려진 표준 인터넷 서비스의 경우 0번부터 1023번까지는 잘 알려진 포트 번호로 예약되어있고, IANA가 관리하고 있다. 이러한 잘 알려진 포트 번호는 각 운영체제 별로 'Services'라는 파일로 저장하고 있다.
- 유닉스의 경우 : /etc/services
- 윈도우의 경우 : C:\windows\services
- 윈도우 NT의 경우 : C:\winnt\system32\dirvers\etc\services[3]
표기
URI 문법으로 사용 및 표기할 수 있다. 다음은 IP 주소와 함께 URL을 표기하는 예시이다.
ftp://000.000.000.000:21
위 표기에서 ftp://는 URI 스킴과 구분 기호를, 000.000.000.000은 IP 주소를 의미하며 ' : ' 다음의 21은 포트 번호이다. 다음은 포트 번호를 생략 가능한 경우의 예시이다.
http://000.000.000.000
위와 같은 같은 월드 와이드 웹 URL은 기본적으로 80번 포트를 사용하기때문에, 웹 브라우저는 자동적으로 다음과 같은 형태로 처리한다.
http://000.000.000.000:80
관리
ICANN과 IANA를 비교하자면, ICANA은 MOU를 기반으로 IANA를 운영하고 있는 기관이며, IANA는 TLD(Top-Level Domains)를 운영하고 IP 주소 및 범위, 포트, 기타 관련 속성 할당을 취급하는 기관이다. 포트는 현재 국제 인터넷 주소 관리기구(ICANN)이 인터넷 할당 번호 관리기관(IANA)를 통하여 포트 번호를 할당하고 있다. 과거에는 인터넷 주소 관리 정책을 미국 상무부에서 주관했었지만, 1980년대 중반 도메인 루트서버 관리를 IANA에 위임했다. 본래 IANA의 기능은 미국 서던캘리포니아 대학교의 정보과학연구소가 국방 선진화 연구 프로젝트청(DARPA)과 계약하여 존 포스텔 박사의 주도로 관리했다. 이후 인터넷 이 전 세계적으로 네트워크화 되면서 전세계의 모든 국가들이 모여 인터넷 주소 관리 정책을 수립할 필요성이 나타났다. 따라서 1997년 미국 정보는 IANA의 기능을 포함한 DNS의 기술 관리를 민간 부문으로 전환하는 것을 승인했고, 1998년 1월 30일, 미국 상무부는 DNS 관리를 인수할 수 있는 새로운 민간 비영리 단체 설립을 권고하는 내용을 그린 페이퍼를 통해 발표했다. 6월, 안전성, 경쟁성, 대표성의 원칙에 따라 신설 법인의 DNS 기술 관리를 위한 미국 정부의 정책내용을 담은 '인터넷 주소 운영에 관한 백서'가 발표됐다. ICANN은 가을에 미국 캘리포니아 주에 법인 설립허가권을 냈다.
1998년 11월 25일, 미국 상무부는 IANA와 ICANN이 쌍방으로 서명한 MOU를 통해 DNS 관리 책임이 있는 조직으로 ICANN을 공식적으로 인정했다. 그리고 2000년 2월 9일, 미국 상무부는 ICANN에 IANA의 기능을 관리하는 계약을 수여했다. 2001년, 2003년에 협정이 갱신되었으며, 2006년에 계약이 여러차례 수정되었다.[4][5] IANA의 기능 계약이 만료됨에 따라, 2014년 3월 미국 전기통신 및 정보청(NTIA)은 IANA의 기능권을 이양하는 건에 대해 발표했다.[6]
국제 인터넷 주소 관리기구
1988년 11월에 설립된 기구로, 인터넷 도메인과 IP주소 운영 등의 전반적인 사항에 대한 관리나 결정을 진행하는 비영리 국제기구이다. MOU를 기반으로 IANA를 운영하는 기관이기도 하다. 인터넷 도메인 관리와 정책을 결정하는 국제 최고기구로써, 사이버 공간상에서 직접민주주의 형태의 전자정보를 지향한다. 미국 상무부와의 상호이해조약으로 위임받은 업무는 인터넷의 기술적 문제를 관리하는 업무로, 인터넷 도메인, IP주소, 프로토콜의 범주와 포트번호를 할당하는 임무이다. 관련 정책 결정이나 DNS 관련 기능 감독, 도메인 분쟁의 조율과 중재 등을 행한다. 전 세계의 IP 주소는 ICANN이 총괄하고 관리하며, 인터넷 서비스 제공기관(ISP)에 IP 주소 할당권한이 위임되었다. 전 세계의 IP주소와 일반 최상위도메인등의 도메인을 관리하며, 여기서 일반 최상위 도메인은 .com, .net, .org, .gov, .edu 등이다.[5][4]
인터넷 할당 번호 관리기관
1990년대 인터넷의 성장으로 도메인 이름과 주소를 중앙에서 등록을 책임질 다음과 같은 조직이 필요했다.
- 파라미터 관리할 책임이 있는 조직
- 모든 사람이 동일한 프로토콜과 파라미터를 사용하는지 확인하는 조직
- 주소나 도메인 이름의 생성과 배분이 모든 사람이 수용할 수 있는 원칙에 따라 정확하게 이루어지도록 관리하는 조직
- 번호를 할당하는 일을 하는 조직
이러한 업무를 진행하는 조직이 IANA이다. 최상위 도메인을 운영하고 IP 주소 및 범위, 포트, 기타 관련 속성 할당을 취급한다.[4]
포트 번호
잘 알려진 포트 번호
잘 알려진 포트(well-known port)는 0번부터 1023번까지의 포트 번호이다. 잘 알려진 포트라고도 부르며, 할당된 포트는 가능한 포트 번호의 작은 부분을 사용한다. 대부분의 시스템에서 시스템 프로세서나 권한이 있는 사용자가 실행한 프로그램만 사용할 수 있다. 잘 알려진 특정한 애플리케이션의 사용을 위해 IANA에서 할당한 TCP/UDP 번호로, 강제적으로 지정된 것이 아니기때문에 다른 용도로 사용할 수도 있다. 수년 동안 할당된 포트의 범위는 0번에서 255번 내에 있었으나, 최근에 할당 포트의 범위가 0번에서 1023번으로 확장되었다. 포트는 장기간 대화를 수행하는 논리 연결의 끝을 나타내기 위해 TCP에서 사용되며, 알 수 없는 호출자에게 서비스를 제공할 목적으로 서비스 연결 포트가 정의된다.[7] 여기서 TCP는 신회성이 요구되는 애플리케이션에서 사용하는 프로토콜을 가리키며, UDP는 간단한 데이터를 빠른 속도로 전송하는 애플리케이션에서 사용하는 프로토콜을 의미한다. 대표적인 잘 알려진 포트 번호는 21번 포트, 23번 포트, 25번 포트, 80번 포트가 있다.
- 21번 : FTP(File Transfer Protocol) : FTP 연결 시 인증과 컨트롤을 위한 포트
- 23번 : Telnet(Telecommunication Network) : 인터넷을 통하여 원격지의 호스트 컴퓨터에 접속할 때 사용하는 포트
- 25번 : SMTP(Simple Mail Transfer Protocol) : 메일을 보낼 때 사용하는 포트
- 80번 : HTTP(Hyper Text Transfer Protocol): 웹 서비스를 사용하기 위한 포트
잘 알려진 포트 포트 TCP UDP 설명 상태 0 UDP 예약됨; 사용하지 않음 공식 1 TCP TCPMUX (TCP 포트 서비스 멀티플렉서) 공식 7 TCP UDP ECHO 프로토콜 공식 9 TCP UDP DISCARD 프로토콜 공식 13 TCP UDP DAYTIME 프로토콜 공식 17 TCP QOTD (Quote of the Day) 프로토콜 공식 19 TCP UDP CHARGEN (Character Generator) 프로토콜 - 원격 오류 수정 공식 20 TCP FTP (파일 전송 프로토콜) - 데이터 포트 공식 21 TCP FTP - 제어 포트(연결 시 인증과 컨트롤을 위한 포트) 공식 22 TCP SSH (Secure Shell) - ssh scp, sftp같은 프로토콜 및 포트 포워딩 공식 23 TCP 텔넷 - 인터넷을 통하여 원격지의 호스트 컴퓨터에 접속할 때 사용 공식 24 TCP 개인메일 시스템 공식 25 TCP SMTP (Simple Mail Transfer Protocol) - 이메일 전송에 사용 공식 37 TCP UDP TIME 프로토콜 공식 49 UDP TACACS 프로토콜 공식 53 TCP UDP DNS (Domain Name System) 공식 67 UDP BOOTP (부트스트랩 프로토콜) 서버. DHCP로도 사용 공식 68 UDP BOOTP (부트스트랩 프로토콜) 클라이언트. DHCP로도 사용 공식 69 UDP TFTP 공식 70 TCP 고퍼 프로토콜 공식 79 TCP Finger 프로토콜 공식 80 TCP UDP HTTP - 웹 페이지 전송 공식 88 TCP 커베로스 - 인증 에이전트 공식 109 TCP POP2 (Post Office Protocol version 2) - 전자우편 가져오기에 사용 공식 110 TCP POP3 (Post Office Protocol version 3) - 전자우편 가져오기에 사용 공식 111 TCP UDP RPC (Remote Procedure Call) 공식 113 TCP ident - 예전 서버 인증 시스템, 현재는 IRC 서버에서 사용자 인증에 사용 공식 119 TCP NNTP (Network News Transfer Protocol) - 뉴스 그룹 메시지 가져오기에 사용 공식 123 UDP NTP (Network Time Protocol) - 시간 동기화 공식 139 TCP 넷바이오스 공식 143 TCP IMAP4 (인터넷 메시지 접근 프로토콜 4) - 이메일 가져오기에 사용 공식 161 UDP SNMP (Simple Network Management Protocol) - Agent 포트 공식 162 UDP SNMP - Manager 포트 공식 179 TCP BGP (Border Gateway Protocol) 공식 194 TCP IRC (Internet Relay Chat) 공식 389 TCP LDAP (Lightweight Directory Access Protocol) 공식 443 TCP HTTPS - SSL 위의 HTTP (암호화 전송) 공식 445 TCP Microsoft-DS (액티브 디렉터리, 윈도 공유, Sasser-worm, Agobot, Zobotworm) 공식 445 UDP Microsoft-DS SMB 파일 공유 공식 465 TCP SSL 위의 SMTP - Cisco 프로토콜과 충돌 비공식, 충돌 514 UDP syslog 프로토콜 - 시스템 로그 작성 공식 515 TCP LPD 프로토콜 - 라인 프린터 데몬 서비스 공식 540 TCP UUCP (Unix-to-Unix Copy Protocol) 공식 542 TCP UDP 상용 (Commerce Applications) (RFC maintained by: Randy Epstein [repstein at host.net]) 공식 587 TCP email message submission (SMTP) (RFC 2476) 공식 591 TCP 파일메이커 6.0 Web Sharing (HTTP Alternate, see port 80) 공식 631 TCP 인터넷 프린팅 프로토콜 공식 636 TCP SSL 위의 LDAP (암호화된 전송) 공식 666 TCP id 소프트웨어의 둠 멀티플레이어 게임 공식 873 TCP rsync 파일 동기화 프로토콜 공식 981 TCP SofaWare Technologies Checkpoint Firewall-1 소프트웨어 내장 방화벽의 원격 HTTPS 관리 비공식 990 TCP SSL 위의 FTP (암호화 전송) 공식 992 TCP SSL 위의 Telnet (암호화 전송) 공식 993 TCP SSL 위의 IMAP4 (암호화 전송) 공식 995 TCP SSL 위의 POP3 (암호화 전송) 공식
등록된 포트 번호
등록된 포트(registered port)는 1024번부터 49151번까지의 포트 번호이다. RFC6335에 따라 인터넷 할당 번호 관리기관에 등록한다. 이 구간의 포트들은 시스템에서 슈퍼유저 권한이 없어도 사용할 수 있다.[7] ICANN에 등록되어 있지만 통제되지는 않는다. 특정 용도로 사용되기 위해 등록된 번호로, 잘 알려진 포트 번호들과 마찬가지로 강제적으로 지정된 것이 아니기때문에 다른 용도로 사용될 수 있다. 대표적인 등록된 포트 번호로는 1433번, 3306번, 3389번, 8080번 포트가 있다.
- 1433번 : MSSQL : 마이크로소프트(MS)에서 제공하는 데이터베이스 하부 언어(SQL)를 사용하기 위한 포트
- 3306번 : MySQL : SQL을 사용하는 공개 소스의 관계형 데이터베이스 관리 시스템(RDBMS)를 사용하기 위한 포트
- 3389번 : 원격 접속 : 원격 접속을 사용하기 위한 포트
- 8080번 : HTTP 대체 : HTTP 포트(80번)을 대체할 수 있는 포트
등록된 포트 포트 TCP UDP 설명 상태 1080 TCP UDP SOCKS 프록시 공식 1194 TCP UDP OpenVPN 공식 1900 TCP UDP Simple Service Discovery Protocol (SSDP), UPnP 장치 검출 서비스 공식 3306 TCP MySQL 공식 3479 TCP UDP 플레이스테이션 네트워크 공식 3480 TCP UDP 플레이스테이션 네트워크 공식 3690 TCP UDP Subversion 공식 5228 TCP UDP HP Virtual Room Service 공식 TCP UDP 구글 안드로이드 메시징 프로토콜 비공식 5353 UDP Multicast DNS 공식 6379 TCP Redis 서비스 공식 9100 TCP 네트워크 프린팅 프로토콜 비공식 17500 TCP UDP Dropbox LanSync 프로토콜, LAN 상에서 Dropbox 클라이언트끼리 파일목록을 동기화 함 공식
동적 포트 번호
동적 포트(dynamic port)는 49152번부터 65535번까지의 포트 번호이다. 임시 포트로서 어떤 프로세스에 의해서 사용할 수 있고, 개인 또는 사용자 정의 서비스, 임시 목적 포트에 할당하는 포트 번호이다.
등록된 포트 포트 TCP UDP 설명 49152 ~ 65535 TCP CMS를 통한 인증서 관리 60000 ~ 61000 포트 22 UDP SSH 와 유사한 원격 터미널 응용 프로그램 인 Mosh의 범위는 일반적으로 Mosh 서버와 Mosh 클라이언트간에 진행 중인 세션에 포트를 할당한다. 64738 TCP UDP Mumble[8]
각주
- ↑ 포트 네이버 지식백과 - https://terms.naver.com/entry.nhn?docId=1213147&cid=40942&categoryId=32848
- ↑ 포트 위키백과 - https://ko.wikipedia.org/wiki/%ED%8F%AC%ED%8A%B8_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9)
- ↑ 미나킴, 〈포트의 개념과 본질 (port)〉, 《티스토리》, 2011-10-01
- ↑ 4.0 4.1 4.2 Internet Assigned Numbers Authority ICANN위키 - https://icannwiki.org/Internet_Assigned_Numbers_Authority#IANA_vs_ICANN
- ↑ 5.0 5.1 남동희, 〈아이칸(Internet Corporation for Assigned Names and Numbers)〉, 《한국인터넷자율정책기구저널》, 2019-09-30
- ↑ 국제인터넷주소관리기구 공식 홈페이지 기능 관리권 이양 - https://www.icann.org/resources/pages/process-next-steps-2014-06-18-ko
- ↑ 7.0 7.1 TCP/UDP의 포트 목록 위키백과 - https://ko.wikipedia.org/wiki/TCP/UDP%EC%9D%98_%ED%8F%AC%ED%8A%B8_%EB%AA%A9%EB%A1%9D
- ↑ List of TCP and UDP port numbers 위키피디아 - https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers
참고자료
- 인터넷 할당 번호 관리기관 공식 사이트 - https://www.iana.org/
- 포트 위키백과 - https://ko.wikipedia.org/wiki/%ED%8F%AC%ED%8A%B8_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9)
- TCP/UDP의 포트 목록 위키백과 - https://ko.wikipedia.org/wiki/TCP/UDP%EC%9D%98_%ED%8F%AC%ED%8A%B8_%EB%AA%A9%EB%A1%9D
- List of TCP and UDP port numbers 위키피디아 - https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers
- 포트 네이버 지식백과 - https://terms.naver.com/entry.nhn?docId=1213147&cid=40942&categoryId=32848
- Internet Assigned Numbers Authority ICANN위키 - https://icannwiki.org/Internet_Assigned_Numbers_Authority#IANA_vs_ICANN
- 국제인터넷주소관리기구 공식 홈페이지 기능 관리권 이양 - https://www.icann.org/resources/pages/process-next-steps-2014-06-18-ko
- 남동희, 〈아이칸(Internet Corporation for Assigned Names and Numbers)〉, 《한국인터넷자율정책기구저널》, 2019-09-30
같이 보기