
네트워크를 이해하는 가장 중요한 개념을 5분 만에 정리해드립니다.
네트워크를 공부하다 보면 가장 많이 등장하는 용어가 바로 IP 주소(IP Address), Port, Socket입니다.
많은 분들이 Port와 Socket을 같은 의미로 생각하지만, 실제로는 역할이 전혀 다릅니다.
이 개념을 이해하면 TCP/IP, 웹 서버, 방화벽, 리눅스, 윈도우 서버, 클라우드(AWS), 네트워크 보안, 모니터링까지 훨씬 쉽게 이해할 수 있습니다.
아파트에 비유하면 가장 쉽습니다.
IP Address = 건물 주소
예를 들어
서울시 강남구 테헤란로 100
처럼 건물의 위치를 의미합니다.
컴퓨터에서는
192.168.1.10
같은 IP가 바로 건물 주소입니다.
Port = 호수(방 번호)
같은 건물 안에도
101호
102호
201호
301호
처럼 여러 방이 존재합니다.
컴퓨터도 마찬가지입니다.
하나의 IP 주소 안에서
여러 프로그램이 동시에 동작하기 때문에
각 프로그램을 구분하기 위한 번호가 필요합니다.
그 번호가 바로 Port 번호입니다. 대표적인 포트는 다음과 같습니다.
Port 서비스
20/21 FTP
22 SSH
25 SMTP
53 DNS
80 HTTP
110 POP3
143 IMAP
443 HTTPS
3306 MySQL
5432 PostgreSQL
3389 RDP
6379 Redis
8080 HTTP 대체 포트
즉,
Port는
“이 데이터가 어떤 프로그램으로 전달되어야 하는가?”
를 결정합니다.
Socket = 실제 통신 연결
Socket은
단순히 Port 번호 하나를 의미하지 않습니다.
Socket은
IP 주소 + Port 번호 + 프로토콜(TCP/UDP)
를 결합한 실제 통신의 종단점(Endpoint) 입니다. 예를 들어
192.168.1.10
+
+
TCP
↓
192.168.1.10:443 (TCP)
이 하나의 Socket이 됩니다.
즉,
Socket은
“누가 누구와 어떤 방식으로 연결되어 있는가”
를 나타냅니다.
웹사이트 접속 시 실제 동작 과정
브라우저에서
을 입력하면
다음과 같은 과정이 진행됩니다.
① DNS 조회
google.com
↓
142.xxx.xxx.xxx
IP 주소를 찾습니다.
② HTTPS 연결
브라우저는
서버의
포트로 연결을 요청합니다.
③ 임시 포트 생성
내 PC는
예를 들어
같은 임시(Ephemeral) 포트를 생성합니다.
④ Socket 생성
내 PC
192.168.0.10:52341
↓
Google Server
142.xxx.xxx.xxx:443
이 두 종단점이 연결되면서 TCP 세션이 생성됩니다.
바로 이것이 Socket 통신입니다.
Port와 Socket 비교
구분 Port Socket
의미 논리적인 번호 실제 통신 종단점
역할 서비스를 구분 연결을 식별
구성 Port 번호 IP + Port + Protocol
예 80, 443, 22 192.168.1.10:443(TCP)
목적 프로그램 식별 실제 데이터 송수신
실무에서는 어디에서 사용할까요?
웹 서버
Apache
Nginx
IIS
Tomcat
모두
포트를 Listen 합니다.
SSH
포트로 서버에 접속합니다.
AWS
보안 그룹(Security Group)
방화벽(Firewall)
ACL
모두
Port를 기준으로 허용 및 차단합니다.
네트워크 보안
침입 탐지
IDS
IPS
Firewall
EDR
모두
Socket 연결과 Port 사용 현황을 분석하여 이상 행위를 탐지합니다.
서버 운영
리눅스에서는
ss
또는
netstat
명령으로
현재 생성된 Socket과 Port 상태를 확인할 수 있습니다.
예를 들어
LISTEN
ESTABLISHED
TIME_WAIT
CLOSE_WAIT
같은 TCP 상태를 확인하면서 네트워크 문제를 분석합니다.
핵심만 기억하세요!
IP 주소 = 건물 주소
Port = 방 번호(서비스 식별)
Socket = 실제 통신이 이루어지는 연결(IP + Port + Protocol)
즉,
Port는 “어느 서비스인가”를 구분하는 번호이고, Socket은 “누가 누구와 어떻게 통신하는가”를 나타내는 실제 연결입니다.
네트워크, 서버, 클라우드, 보안을 이해하려면 반드시 익혀야 하는 핵심 개념입니다.
여러분은 서버 관리나 개발 과정에서 netstat, ss, lsof 명령으로 Port와 Socket을 확인해 보신 적이 있으신가요? 경험을 댓글로 함께 공유해 주세요!
— 이춘곤(Mark) · ISC.studio · ISC출판 도서 안내
이 글은 저자의 Facebook에 처음 게시한 글입니다. Facebook 원문 보기
💬 댓글 (0)