CS

IP와 Port

KimMinJun 2025. 7. 29. 18:33

IP의 개념

IP란 "Internet Protocol"의 약자로, 네트워크 상에서의 특정 컴퓨터를 가리키는 주소이다.

구글의 서버 IP 주소

위와 같이 `nslookup` 명령어를 이용해서 주소를 입력하면,

google.com도 168.126.63.1 이라는 서버 IP 주소를 가지고 있는 것을 볼 수 있다.

 

인터넷에 연결된 모든 장치는 반드시 자신의 IP 주소를 가지고 있어야 정보를 주고 받을 수 있다.

그리고 IP 주소는 데이터를 보낼 때 목적지(받는 쪽)출발지(보내는 쪽)을 지정하는 역할을 한다.

 

Port의 개념

Port는 한 컴퓨터 내에서 실행되고 있는 특정 프로그램의 주소이다.

인터넷 통신을 하려면 IP 주소가 컴퓨터의 '집 주소' 역할을 하지만,

하나의 컴퓨터에도 여러 프로그램이 동시에 네트워크를 쓸 수 있기 때문에,

어느 프로그램에 데이터를 전달할지 구분할 필요가 있다.

 

이때 포트 번호가 집 안의 각 방 번호처럼 작용해서,

들어오는 데이터가 어떤 프로그램으로 가야 할지 구체적으로 지정해준다.

 

예를 들어, 특정 컴퓨너 내부에 있는 Spring Boot 서버에 통신을 하고 싶다고 해보자.

하지만 외부에서 IP 주소만 알아서는 실행되고 있는 여러 프로그램 중에서

어떤 프로그램과 통신을 해야할지 알 수 없다.

그래서 특정 서버와 통신을 할 때는,

IP 주소와 서버가 실행되고 있는 포트 번호까지 알고 있어야 한다.

 

브라우저 창에 포트 번호를 입력하지 않는 이유

위에서 통신을 하려면 IP 주소와 포트 번호 모두 알아야 된다고 했는데,

주소창에 'google.com' 같이 포트 번호를 입력하지 않아도 접속이 가능하다.

그 이유는 웹 프로토콜별로 '기본 포트 번호'가 미리 정해져 있기 때문이다.

 

HTTP 프로토콜은 기본적으로 80번 포트를 사용한다.

그리고 HTTPS 프로토콜은 기본적으로 443번 포트를 사용한다.

그래서 브라우저는 URL에 포트 번호가 명시되지 않으면,

자동으로 HTTP는 80번, HTTPS는 443번으로 접속을 시도한다.

 

물론 위처럼 직접 포트번호를 명시해줘도 우리가 평소에 접속하는 google에 접속할 수 있다.

하지만, HTTPS가 HTTP보다 보안이 강화되어 있기 때문에

80번 포트로 접속해도 보안을 위해 자동으로 443번 포트, 즉 HTTPS로 리다이렉트 된다.

 

잘 알려진 포트(Well-Known Port)

포트 번호는 0번부터 65535번까지 총 65536개가 사용 가능하다.

이는 포트 번호가 16비트로 표현되기 때문이다.

포드 번호의 구간별 구분은 다음과 같다.

  • 0 ~ 1023 (Well-Known 포트)
  • 1024 ~ 49151 (등록된 포트, Registered Port)
  • 49152 ~ 65535 (동적/사설 포트, Dynamic/Private Port)

 

이 중에서 Well-Known Port는 인터넷에서 시스템적으로 널리 쓰이는 서비스에 대해 정해놓은 포트 번호 범위이다.

포트 번호 대표 서비스 설명
20, 21 FTP 파일 전송 프로토콜(20: 데이터, 21: 제어)
22 SSH 보안 셸(원격 접속)
23 Telnet 원격 터미널 접속(암호화X, 비추천)
25 SMTP 이메일 송신
53 DNS 도메인 이름 -> IP 변환
67, 68 DHCP/BOOTP IP 자동 할당(서버: 67, 클라이언트: 68)
69 TFTP 단순 파일 전송(보안 약함)
80 HTTP 일반 웹 서비스
110 POP3 이메일 수신(클라이언트 프로토콜)
123 NTP 네트워크 시간 동기화
143 IMAP 이메일 수신(고급 메일 프로토콜)
161, 162 SNMP 네트워크 관리
389 LDAP 디렉터리 서비스(조직 등 정보관리)
443 HTTPS 보안 웹 서비스(SSL/TLS 암호화)
445 SMB 윈도우 파일 공유

 

위 중에서 보라색으로 되어있는 것은 자주 사용되는 포트 번호이다.

 

포트 번호를 다르게 지정해도 동작은 가능하지만,

일반적으로 관례에 맞는 well-known 포트를 사용한다.