Dev/Spring

[Spring] IP / Port / Domain / URL

syuare 2025. 5. 13. 20:00

 

그럼 클라이언트와 서버 간의 통신을 할 때, 클라이언트가 보낸 요청을 서버는 어디서 받아서 어떻게 처리를 하는 것일까? 

 

이것에 대해 알려면 IP 주소, 포트(Port) 번호, 도메인(Domain) 그리고 URL(Uniform Resource Locator)를 알아야 한다.


IP(Internet Protocol) 주소

IP 주소는 서버의 고유한 식별자로, 

인터넷에서 서버를 찾을 수 있는 유일한 주소 역할을 하기 때문에 이를 통해 서버 간의 통신을 가능하게 한다.

 

(쉽게 말하면 각 기기 간의 통신을 식별할 수 있는 전화번호라고 생각하면 좋을 듯..)

 

  • 클라이언트가 서버와 연결할 때, 서버의 IP로 요청을 보내고
  • 서버는 그 요청을 처리하고 응답을 클라이언트로 보낸다.
    • 이와 같은 통신에는 지정한 IP 주소에 데이터를 Packet 단위로 전달한다.

*패킷(Packet): 소스 IP(출발지), 대상 IP(도착지)를 포함하고 있어 어떤 서버에 데이터를 전송할 지 판별할 수 있다.

 

다만 IP 주소에도 문제가 있다.

  • 요청 데이터가 대상 IP의 어떤 프로그램에 사용될 데이턴인지 IP 주소는 구분할 수 없다.
  • 수신 대상의 현재 상태에 상관없이 데이터를 전송한다. (수신 대상이 off 상태여도..)
  • 패킷이 소실될 수 있다. (패킷 손상 여부는 송신/수신 모두 알 수 없다.

이것을 해결하기 위해 TCP, UDP로 발전되었다.


포트(Port) 번호

하나의 IP 안에서 여러 서비스(프로그램)를 구분하는 번호이다.

하나의 서버에서 Web, DB, FTP 등 여러 서버, 프로그램이 동시에 동작하는데, 이를 구분해주는 것이 포트 번호이다.

 

자주 사용하는 포트 예 

  • FTP: 20, 21
  • SSH: 22
  • DNS: 53
  • HTTP: 80
  • HTTPS: 443
  • 개발용 웹 서버: 8080
  • MySQL DB 접속: 3306
  • Redis 접속: 6379

*이미 사용되고 있는 포트들은 제외하고 나머지 사용되지 않는 포트를 사용하면 된다.


도메인(Domain)

사용자가 웹 애플리케이션에 접근할 수 있게 해주는 사람 친화적인 주소로

IP 주소를 사람이 기억하기 쉬운 형식의 문자열 주소이다.

  • 흔히 볼 수 있는 문자열 주소 (www.google.com, naver.com 등)가 도메인이다.

도메인은 실제 IP 주소와 연결되어 있어서 입력 시 자동으로 해당 서버로 요청이 전송되는데,

이를 처리하는 시스템을 DNS라고 한다.

DNS(Domain Name System)

모든 서버는 IP 주소로 구별되기 때문에 통신을 하기 위해서는 IP 주소가 필요한데,

IP 주소는 도메인마다 특징도 없고 외우기도 어렵다. 

 

그래서 등장한 것이 도메인 이름을 사용해서 서버에 접근하는 방식이다.

  1. 사용자게 웹 브라우저에 도메인을 입력하면
  2. 브라우저가 DNS 서버에 도메인 이름에 대한 IP 주소를 요청하고
  3. DNS 서버에서 요청한 도메인 이름의 IP 주소를 찾아 브라우저에게 반환을 하는데,
  4. 브라우저는 DNS가 반환한 IP주소로 서버에 연결을 한다

정리하면 DNS는 도메인 이름을 통해 IP 주소로 변환해주는 시스템이다.

  • 이해하기 쉽게 예시를 들면 도메인은 별명이고 IP는 실명이다.

URL(Uniform Resource Locator)

웹에서 특정 리소스의 위치를 표현하는 주소 체계 이다.

구성 요소

https://www.example.com:443/products?category=book
구성 요소 설명
https:// 프로토콜: 어떤 방식으로 요청을 보낼지 (http, https 등)
www.example.com 도메인: 요청을 보낼 서버의 주소 (사람용 주소)
:443 포트 번호: 요청이 도달할 서비스 (HTTPS는 기본이 443)
/products 경로(Path): 서버 내에서 어떤 리소스를 요청하는지
?category=book 쿼리 파라미터: 요청에 필요한 데이터 전달 (key=value)
더보기

예시

https://www.naver.com:443/search?query=내일배움캠프

 

구성 의미
https:// 보안 연결(https)로 요청을 보냄
www.naver.com 네이버 웹 서버
:443 HTTPS 기본 포트
/search 검색 요청 경로
?query=아이유 검색어는 "내일배움캠프"

정리

항목 설명
IP 서버의 실제 주소 (개발/운영 서버 구분 시 사용)
포트 서버 내에서 어떤 프로그램으로 요청을 보낼지 구분 (서비스 구분)
- 예: 8080(SB), 3306(MySQL), 6379(Redis)
도메인 사람이 기억하기 쉽게 만든 문자열 주소, 사용자용 주소
- 클라이언트가 IP 대신 도메인을 사용 > 어플리케이션의 접근성 향상
URL 특정 자원에 접근하기 위한 전체 주소
- URL을 통해 어떤 데이터를 요청하고 있는지 서버가 알 수 있
- REST API 경로 설계, Controller 매핑과 밀접

 

 

 

 

'Dev > Spring' 카테고리의 다른 글

[Spring] 연관 관계 매핑  (0) 2025.05.19
[Spring] JPA  (0) 2025.05.15
[Spring] 클라이언트 - 서버 간 통신 흐름  (0) 2025.05.09
[Spring] HTTP 기본 구조  (0) 2025.05.07
[Spring] Spring 이란  (0) 2025.05.02