Skip to content

Latest commit

 

History

History
418 lines (357 loc) · 24 KB

port.md

File metadata and controls

418 lines (357 loc) · 24 KB

PORT

하드웨어에서 포트는 컴퓨터와 장치(혹은 컴퓨터)를 연결하는 물리적 인터페이스라면,
소프트웨어서 포트는 네트워크상의 데이터가 입출력되는 논리적 인터페이스이다.

  • Hardware Port : 물리적 입출력 단자
    • USB Port A
    • USB Port B
    • HDMI Port
    • VGA Port
  • Software Port : 논리적 입출력 단자
    • 20 : FTP
    • 22 : SSH
    • 23 : Telnet
    • 25 : SMTP

네트워크의 포트에 대해 알아보도록 하자.

Table of Contents

About Port

포트는 데이터를 주고 받을 때 통과하는 통로(또는 문)이다.

door

Photo by Christian Stahl on Unsplash

0번 부터 시작되는 포트의 총 개수는 65,536개가 존재한다. 이는 한 컴퓨터에 6만 5천개 이상의 문이 존재한다고 볼 수 있다.

포트는 아래 세 가지 그룹으로 나뉜다.

  • Well-known port : 0~1,023
  • Registered port : 1,024~49,151
  • Dynamic Port : 49,152~65,535

Well-known port

0~1,023 까지의 포트는 잘 알려진 포트(well-known port) 이다.
이 범위의 포트들은 IANA에 의해 미리 지정된 것들이다. 각각의 포트마다 정해진 용도가 있다.

  • IANA : Internet Assigned Numbers Authority
    IANA는 인터넷 주소 자원(도메인, IP 주소 등)을 관리해주는 국제 기관이다.
  • Table of Well-Known Port

    Port Info
    Port About TCP UDP
    0 Reserved O
    1 TCPMUX O O
    2 CompressNET Management Utility O O
    3 CompressNET Compression Process O O
    5 Remote Job Entry O O
    7 Echo Protocol O O
    9 Discard Protocol O O
    11 Active User O O
    13 Daytime Protocol O O
    15 netstat service O O
    17 Quote of the Day O O
    18 MSP O O
    19 CHARGEN O O
    20 FTP - Data Transfer O
    21 FTP - Control O
    22 SSH O O
    23 Telnet Protocol O
    24 Private mail O O
    25 SMTP O
    27 NSW User System FE O O
    34 Remeote File O O
    35 Private Printer Server Protocol O O
    37 TIME Protocol O O
    39 RLP : Resource Location Protocol O O
    41 Graphics O O
    43 WHOIS Protocol O
    50 Remote Mail Checking Protocol O O
    52 XNS Time Protocol O O
    53 DNS O O
    56 RAP : Route Access PRotocol O O
    57 MTP O
    58 XNS Mail O O
    69 TFTP : Trivial File Transfer Protocol O
    70 Gopher Protocol O
    79 Finger Protocol O
    80 HTTP O O
    81 Torpark (Onion Routing) O
    99 WIP Message Protocol O
    107 Remote TELNET Service Protocol O
    109 POP2 O
    110 POP3 O
    113 Identification Service O
    115 SFTP O
    118 SQL Services O O
    119 NNTP O
    123 NTP O
    152 BFTP O O
    156 SQL Service O O
    158 DMSP O O
    161 SNMP O
    162 SNMPTRAP O O
    179 BGP : Border Gateway Protocol O
    194 IRC : Internet Relay Chat O O
    199 SMUX, SNMP Unix Multiplexer O O
    213 IPX : Internetwork Packet Exchange O O
    218 MPP O O
    220 IMAP O O
    311 Mac OS X Server Admin O
    323 IMMP O O
    366 ODMR : On-Demand Mail Relay O O
    427 SLP : Service Location Protocol O O
    443 HTTPS O
    444 SNPP : Simple Network Paging Protocol O O
    500 ISAKMP O
    501 STMF O
    510 Frist Class Protocol O
    513 Who O
    514 Shell O
    515 Line Printer Daemon O
    518 Talk O
    520 RIP : Routing Imformation Protocol O
    525 Timeserver O
    540 UUCP O
    561 Monitor O
    587 e-mail message submission O
    631 IPP : Internet Printing Protocol O O
    651 IEEE-MMS O O
    657 IBM RMC Protocol O O
    660 Mac OS X Server Administration O
    675 ACAP O
    699 Access Network O
    700 EPP : Extensible Provisioning Protocol O
    701 LMP : Link Management Protocol O
    706 SILC O
    712 Promise RAID Controller O
    720 SMQP : SImple Message Queue Protocol O
    829 CMP : Certificate Management Protocol O
    901 SWAT O
    902 VMware SErver Consol O
    903 VMware Remote Console O
    911 NCA : Network Console on Acid O
    953 DNS RNDC Service O O
    989 FTPS Protocol (data) O O
    992 TELNET Protocol over TLS/SSL O O
    1023 Reserved O O

HTTP & HTTPS

HTTP 의 포트는 80 HTTPS 의 포트는 443 이다.

Goolge, Amazon 등과 같이 http/https 프로토콜을 이용하는 웹서버로 접속하기 위해서는 80번 이라는 문을 통해 통과하게 되는 것이다.

아래의 예시를 보자.
Port 번호를 바꾸면서 about.google 에 접속을 시도해 볼 것이다.

  1. about.google:80
    이미 접속에 성공한 about.google에 80 포트를 붙여보기
    → 성공적으로 작동.
  2. about.google:123
    두번째로는 port 번호 123을 통한 접속 시도이다.
    → 연결 실패.
  3. about.google:443
    마지막으로는 HTTPS 포트번호인 443 을 통한 접속.
    → 연결 성공.
    Port Testing

웹서버에 접속 시도시 80, 443 이라는 두 문을 통해서만 접속 가능한 것을 볼 수 있다.
이는 웹서버 자체가 두 문에서 클라이언트의 요청을 기다리고 있기 때문이다.

좀 더 이해하기 쉽게 현실 세계를 비유한 예를 들어보겠다.

합정역 5번 출구

미국과 독일에서 각각 한국으로 입국한 두 친구가 2주간 자가격리를 끝낸 후 서로 만나기로 약속했다.

  • 만남의 장소는 합정(Hapjeong)역.
    meet-me-at-the

만약 그들이 "합정역에서 만나!" 라고 했다면 도착한 이후에 서로 재 연락하지 않는 이상 합정역에서 서로를 찾아 헤멜 것이다.

단순히 어느 역에서 만나 라고 하는 대신 "합정역 5번출구에서 만나" 라고 한다면 서로를 찾는데 낭비하는 시간과 노력이 줄어들 것이다.
H

이처럼 웹서버는 80번 포트(합정역 5번출구)를 통해 운영하기로 정해진 것이다.
웹서버는 맞이할 클라이언트(맞이할 친구)의 요청을 80번 포트에서 기다리게 된다.
80 포트(또는 443)가 아닌 다른 포트를 이용하여 접속 시도시 작동되지 않는 이유가 그 것이다.
합정역 5번 출구가 아닌 엉뚱한 곳에서 친구를 만나려 했기 때문이다.

↑ return to TOC

Registered Port

등록된 포트 | 범위는 (1024~49151)
Super User의 권한이 없어도 사용 가능.

  • Table of Registered Port

    Port Info
    Port About TCP UDP
    1024 Reserved O O
    1080 SOCKS Proxy O
    1085 WebObjects O O
    1109 KPOP : Kerberos Post Office Protocol O
    1167 Phone, conferemce calling O
    1194 OpenVPN O O
    1241 Nessus Security Scanner O O
    1293 IPSec O O
    1311 Dell OpenManage HTTPS O
    1137 WASTE Encrypted File Sharing Program O
    1431 RGTP : Reserve Gossip Transport Protocol O
    1433 MSSQL Server O
    1434 MSSQL Monitor O O
    1512 WINS O O
    1521 Oracle database default listener O
    1524 ingreslock, ingres O O
    1526 Oracle database common alternative for listener O
    1547 Laplink O O
    1589 Cisco VQP / VMPS O
    1627 iSketch
    1701 L2TP O
    1716 MMO O
    1755 MMS : Microsoft Media Services O O
    1801 Microsoft Message Queuing O O
    1812 RADIUS authentication protocol O O
    1813 RADIUS accounting protocol O O
    1920 IBM Tivoli Monitoring Console O
    1972 InterSystems Cache O O
    1984 Big Brother System and Network Monitor O
    1985 Cisco HSRP O
    1997 Chizmo Networks Transfer Tool O
    2002 Secure Access Control Server for Windows O
    2031 mobrien-chat O O
    2049 Network File System O
    2082 Infowave Mobility Server O
    2086 GNUnet O
    2105 IBM MiniPay O O
    2144 Iron Moutain LiveValut Agent O
    2211 EMWIN O
    2220 NetIQ End2End O O
    2261 CoMotion Master O O
    2303 ArmA multiplayer O
    2518 willy O O
    2525 SMTP alternate O
    2610 Dark Ages O
    2809 IBM WAS O
    2947 gpsd GPS daemon O
    2948 WAP-push MMS O O
    2967 Symantec AntiVirus Corporate Edition O
    3000 Miralix License serve O
    3025 netpd.org O
    3051 Galaxy Server O O
    3101 BlackBerry Enterprise Server communication to cloud O
    3235 Galaxy Network Service O O
    3300 Debate Gopher backend database system O O
    3305 OFTP O O
    3306 MySQL database System O O
    3313 Verisys O
    3423 Xware Xtrm Communication Protocol O
    3516 Smartcard Port O O
    3527 Microsoft Message Queuing O
    3535 SMTP alternate O
    3702 Web Services Dynamic Discovery O O
    3723 Blizzard Games(DIablo, Warcraft, StarCraft) O O
    3724 Club Penguin Disney online game for kids O
    3880 IGRS O O
    3945 EMCADS service O O
    3979 OpenTTD game O O
    4111 Xgrid O
    4116 Smartcard-TLS O O
    4224 Cisco Audio Session Tunneling O
    4664 Google Desktop Search O
    4711 MacAfee Web Gateway 7 - GUI Port HTTP O
    4712 MacAfee Web Gateway 7 - GUI Port HTTPS O
    4750 BladeLogic Agent O
    5000 VTun O
    5003 FileMaker O O
    5050 Yahoo! Messenger O
    5060 SIP : Session Initiation Protocol O O
    5070 BFCP O
    5093 SafeNet, Client-to-Server O
    5099 SafeNet, Server-to-Server O O
    5108 VPOP3 Mail Server Webmail O
    5110 ProRat Server O
    5269 XMPP O
    5353 Multicast DNS O
    5432 PostgreSQL database System O O
    5723 Operations Manager O
    5938 TeamViewer remote desktop protocol O O
    6050 Brighstor Arscerve Backup O
    6260 planet M.U.L.E O O
    6566 SANE : Scanner Access Now Easy O
    6600 MPD : Music Playing Daemon O
    6679 OSAUT O O
    6888 MUSE O O
    8080 Apache Tomcat O
    8089 Splunk Daemon O
    8200 GoToMyPC O
    8332 Bitcoin JSON-RPC server O
    8333 Bitcoin O
    8484 MapleStory O O
    8887 HyperVM HTTP O
    8888 HyperVM HTTPS O
    9030 Tor often used O
    9050 Tor O
    9110 SSMP Message Protocol O
    9293 Sony PlayStation RemotePlay O
    9418 git, Git pack transfer service O O
    9561 Network Time System Server O O
    10017 AIX, NeXT, HPUX-rexd daemon control
    11211 memcached
    16080 Mac OS X Server Web Service with performance cache O
    19294 Google Talk Voice and Video connections O
    19295 Google Talk Voice and Video connections O
    19812 4D databse SQL Communication O
    30000 Pokemon Netbattle
    37777 Digital Video Recorder hardware O
    49151 Reserved O O

↑ return to TOC

Dynamic Port

동적 포트 | 범위는 (49,152~65,535)
개인적인 용도로 사용한다.

↑ return to TOC

Check Port Info

사용중인 포트 정보 보기.
sudo lsof -i -P -n | grep LISTEN

port info

↑ return to TOC

Kill the Port

사용중인 특정 port 를 죽이기.

특정 port number 의 pid를 확인하기 위해 list 보기
lsof -i:<portNumber>

Kill the process listening to the specific port.
kill <pid>
또는
kill -9 <pid>

  • -9 는 즉각 종료시키는 것을 의미한다. (SIGKILL)

e.g.
로컬에서 8000 번 포트를 사용하고자 한다. 하지만 현재 사용중이라면 아래와 같이 '이미 사용중'이라는 메세지를 마주하게 될 것이다.

address already in use 127.0.0.1:8000

8000 번 포트를 종료시키기 위해서는 아래와 같은 절차를 밟으면 된다.

lsof -i tcp:8000
// result
COMMAND   PID   USER       FD   TYPE               DEVICE SIZE/OFF NODE NAME
node    95361 <userName>   26u  IPv4 <address>      0t0  TCP localhost:<info> (LISTEN)

얻은 PID 정보(95361)를 참고하여 kill 명령어 입력

 kill -9 95361

↑ return to TOC

Port Forwarding

Port Forwarding, Port Mapping 또는 Tunneling

외부로 부터 들어오는 통신을 내부 네트워크의 기기로 수신하기 위해 포트포워딩 기술을 사용한다.

External Internal Network

한 네트워크에서 또 다른 네트워크로 정보를 주고 받을 때는 패킷 단위로 쪼개어 데이터를 전송한다.
매 패킷에는 전송자가 보내고자 하는 데이터 뿐만아니라 다른 데이터들도 포함이 되어있다. 패킷의 헤더에는 송신주소(Source IP Address)와 수신 주소(Destination IP Address)가 담겨있다.

  • 간단히 표현한 패킷의 구조

    Structure of Packet

    • Header: IP 프로토콜 버전, 헤더길이, 송신주소, 수신주소
    • Payload: (Body) 콘텐츠 또는 데이터
    • Trailer: 서명, 에러 정보


Packet to Router

패킷은 통신망을 통해 헤더에 적힌 목적지까지 전송된다. 목적지의 주소는 공인 아이피(Public IP)가 적혀져 있으며 공유기(Router)는 이를 사설 아이피(Private IP)로 전환해준다. 즉, 패킷의 11.22.33.44 의 IP 주소는 router 를 거쳐 192.168.0.X 로 바뀌게 된다.

  • Private IP 대역
    • 172.16.0.0 ~ 172.31.255.255
    • 192.168.0.0 ~ 192.168.255.255

한 네트워크에는 대부분 여러 기기가 공유기와 연결되어 있다.
각 기기는 하나의 IP 주소만 지닐 수 있으며 공유기로 부터 사설 IP(그림참고: 192.168.0.n)를 할당받는다. 공유 IP를 기준으로 라우터에 도착한 패킷이 어느 기기의 어느 port로 전송되야 하는지 에 관한 설정은 공유기에서 처리해주어야 한다. 이러한 설정을 포트포워딩 설정이라고 부른다.

  • Port Forwarding 설정: 특정 기기의 특정 port에 전달(forward) 하는 설정
  • 포트포워딩 설정방법은 공유기마다 다르다.

포트포워딩 설정을 성공적으로 마쳤다면, 위의 그림에서 공유기에 도달한 Packet 은 제일 상단에 있는 노트북(192.168.0.2:25) 으로 전송될 것이다.

다만 보안상 안전을 위해 포트포워딩 대신 VPN을 사용하는 것이 더 바람직하다.

↑ return to TOC