- 0
- 119 words
루프백 주소가 무엇인지 알아보고 127.0.0.1과 localhost의 관계, 외부 네트워크와의 차이, 서버 개발과 네트워크 테스트에서 활용하는 방법을 쉽게 설명합니다.
컴퓨터에서 서버 프로그램을 실행하거나 네트워크 설정을 확인하다 보면 127.0.0.1이라는 주소를 한 번쯤 보게 됩니다.
처음 보면 일반적인 IP 주소처럼 보이지만 용도가 조금 다릅니다.
127.0.0.1은 인터넷에 있는 다른 컴퓨터를 가리키는 주소가 아니라 현재 사용하고 있는 자신의 컴퓨터를 가리키는 특별한 주소입니다.
이러한 방식으로 자기 자신을 가리키는 네트워크 통신을 루프백(Loopback)이라고 합니다.
개발을 조금이라도 해봤다면 localhost라는 단어도 자주 봤을 텐데요.
오늘은 이 두 개념이 어떻게 연결되는지 알아보겠습니다.
루프백이란?
루프백은 말 그대로 네트워크 데이터를 외부로 보내지 않고 자기 자신의 컴퓨터로 되돌려 보내는 통신 방식입니다.
일반적인 네트워크 통신은:
내 컴퓨터
↓
공유기 / 스위치
↓
다른 컴퓨터
처럼 외부 네트워크를 거칩니다.
하지만 루프백 통신은:
내 컴퓨터
↓
Loopback
↓
내 컴퓨터
처럼 외부 네트워크로 나가지 않습니다.
쉽게 말하면 컴퓨터가 자기 자신에게 네트워크 데이터를 보내는 것입니다.
127.0.0.1은 무엇일까?
IPv4에서 루프백을 대표하는 주소가 바로 127.0.0.1입니다.
예를 들어 브라우저 주소창에:
http://127.0.0.1
을 입력하면 외부 인터넷에 있는 서버로 접속하는 것이 아닙니다.
현재 사용하고 있는 컴퓨터에서 실행 중인 서버 프로그램에 접속하려는 것입니다.
예를 들어 웹 서버가 8080번 포트에서 실행되고 있다면:
http://127.0.0.1:8080
과 같이 접속할 수 있습니다.
localhost와 127.0.0.1은 같은 것일까?
개발할 때는 localhost도 굉장히 자주 사용합니다.
예를 들어:
http://localhost:8080
이라는 주소를 볼 수 있습니다.
일반적인 IPv4 환경에서는 localhost가 127.0.0.1을 가리키도록 설정되어 있습니다.
그래서:
localhost
와
127.0.0.1
은 일반적인 IPv4 환경에서 같은 컴퓨터를 가리키는 용도로 사용할 수 있습니다.
다만 엄밀하게 보면 둘은 같은 종류의 개념은 아닙니다.
127.0.0.1 = IPv4 루프백 주소
localhost = 자기 자신을 가리키는 호스트 이름
이라고 이해하면 됩니다.
또한 localhost는 IPv6 환경에서는 ::1로 해석될 수도 있습니다.
루프백은 인터넷에 연결되어 있지 않아도 사용할 수 있다
루프백의 재미있는 점 중 하나입니다.
외부 네트워크가 끊어져 있어도 컴퓨터 내부의 루프백 통신은 사용할 수 있습니다.
예를 들어:
인터넷 연결 ❌
하지만
127.0.0.1
↓
내 컴퓨터의 서버
와 같은 통신은 가능합니다.
왜냐하면 루프백 데이터가 실제 랜 케이블이나 Wi-Fi를 통해 외부로 나가는 것이 아니기 때문입니다.
컴퓨터 내부의 네트워크 스택을 통해 처리됩니다.
개발할 때 localhost를 많이 사용하는 이유
웹 개발을 하다 보면 localhost를 정말 자주 사용합니다.
예를 들어 Spring Boot 애플리케이션을 실행했다고 해보겠습니다.
서버가:
localhost:8080
에서 실행되고 있다면 웹 브라우저에서:
http://localhost:8080
으로 접속해서 내가 만든 프로그램을 확인할 수 있습니다.
구조를 단순하게 보면:
웹 브라우저
↓
localhost:8080
↓
내 컴퓨터
↓
Spring Boot 서버
입니다.
실제 인터넷에 서버를 배포하지 않아도 자신의 PC에서 웹 서비스를 테스트할 수 있는 것입니다.
데이터베이스에서도 localhost를 사용한다
웹 개발뿐만 아니라 데이터베이스에서도 localhost가 자주 등장합니다.
예를 들어 MySQL이 자신의 PC에서 실행되고 있다면:
localhost:3306
처럼 접속할 수 있습니다.
구조를 보면:
애플리케이션
↓
localhost:3306
↓
내 PC의 MySQL
입니다.
외부 서버에 있는 데이터베이스가 아니라 현재 컴퓨터에서 실행 중인 데이터베이스에 연결하는 것입니다.
localhost와 외부 IP는 다르다
여기서 중요한 차이가 있습니다.
컴퓨터의 IP 주소가:
192.168.0.10
이라고 가정해 보겠습니다.
이 주소는 같은 네트워크에 있는 다른 장치에서 해당 PC에 접근할 때 사용할 수 있습니다.
반면:
127.0.0.1
은 자기 자신을 가리킵니다.
예를 들어:
PC A
IP: 192.168.0.10
에서:
127.0.0.1
로 접속하면 PC A 자기 자신으로 접속합니다.
PC B에서 PC A에 접속하려고:
127.0.0.1
을 사용하면 안 됩니다.
PC B에서 127.0.0.1은 PC B 자기 자신을 의미하기 때문입니다.
이 부분은 실제 개발 환경에서도 상당히 중요합니다.
예를 들어 서버가 localhost에만 열려 있다면?
PC에서 웹 서버를 실행하고:
127.0.0.1:8080
으로 접속이 잘 된다고 해보겠습니다.
그런데 다른 컴퓨터에서:
192.168.0.10:8080
으로 접속하려고 하면 접속이 안 될 수도 있습니다.
서버 프로그램이 127.0.0.1에만 바인딩되어 있는 경우 외부 네트워크에서 들어오는 연결을 받지 않기 때문입니다.
쉽게 말하면:
127.0.0.1
→ 내 컴퓨터 내부에서만 접근
192.168.0.10
→ 같은 네트워크의 다른 장치에서 접근 가능할 수 있음
이라는 차이가 있습니다.
물론 실제 접근 가능 여부는 방화벽과 서버 설정 등에 따라 달라집니다.
루프백은 실제 랜 케이블을 사용하지 않는다
루프백 통신에서는 일반적인 외부 네트워크 통신처럼:
PC
↓
랜 케이블
↓
스위치
↓
라우터
를 거치지 않습니다.
대신 컴퓨터 내부에서 처리됩니다.
프로그램
↓
운영체제 네트워크 스택
↓
Loopback 인터페이스
↓
운영체제 네트워크 스택
↓
프로그램
그래서 네트워크 장비가 없어도 자신의 컴퓨터에서 네트워크 프로그램을 테스트할 수 있습니다.
루프백 인터페이스도 존재한다
운영체제에서는 루프백을 위한 Loopback Interface가 별도로 존재합니다.
Linux에서는 보통:
lo
라는 이름으로 표시됩니다.
그리고 여기에 대표적으로:
127.0.0.1
이 사용됩니다.
Windows에서도 루프백 기능을 기본적으로 사용할 수 있습니다.
따라서 네트워크 인터페이스 목록을 확인했을 때 lo 같은 인터페이스가 보인다면 실제 랜카드가 하나 더 설치되어 있다는 의미가 아닙니다.
루프백은 네트워크 테스트에도 유용하다
루프백은 단순히 자기 자신에게 접속하는 기능만 있는 것이 아닙니다.
네트워크 프로그램을 테스트할 때 상당히 유용합니다.
예를 들어 웹 서버를 개발하면서:
127.0.0.1:8080
으로 서버가 정상적으로 실행되는지 확인할 수 있습니다.
만약 정상적으로 접속된다면 적어도:
- 서버 프로그램 실행 여부
- 해당 포트에서 서비스가 실행되는지
- 로컬 네트워크 스택 동작 여부
등을 확인하는 데 도움이 됩니다.
반대로 localhost에서도 접속이 안 된다면 인터넷 회선을 확인하기 전에 서버 프로그램 자체의 상태를 먼저 확인해 볼 수 있습니다.
Ping으로 확인할 수도 있다
루프백 주소는 네트워크 테스트에도 사용할 수 있습니다.
예를 들어:
ping 127.0.0.1
을 실행하면 자신의 컴퓨터의 TCP/IP 네트워크 스택이 정상적으로 동작하는지 확인하는 데 도움이 됩니다.
예를 들어 응답이 정상적으로 돌아온다면:
127.0.0.1
→ 응답
과 같은 결과를 확인할 수 있습니다.
다만 이것이 인터넷 연결까지 정상이라는 의미는 아닙니다.
루프백 통신과 외부 네트워크 통신은 별개의 문제이기 때문입니다.
127.0.0.1만 루프백 주소일까?
IPv4에서는 127.0.0.0/8 대역 전체가 루프백 용도로 예약되어 있습니다.
즉:
127.0.0.1
127.0.0.2
127.10.10.10
등 127로 시작하는 주소들이 루프백 용도로 사용될 수 있습니다.
다만 일반적으로 가장 익숙하고 많이 사용하는 주소는:
127.0.0.1
입니다.
실무나 개발 환경에서도 대부분 127.0.0.1을 사용하기 때문에 사실상 대표적인 루프백 주소라고 생각해도 큰 문제가 없습니다.
IPv6에서는 ::1을 사용한다
IPv6에도 루프백 주소가 있습니다.
바로:
::1
입니다.
IPv4의:
127.0.0.1
에 대응하는 IPv6 루프백 주소라고 생각하면 됩니다.
그래서 localhost가 IPv6 환경에서:
::1
로 해석되는 경우도 있습니다.
개발할 때 localhost로 접속했는데 IPv4와 IPv6 중 어떤 주소로 연결되는지 확인해야 하는 경우가 생기는 이유도 여기에 있습니다.
루프백과 사설 IP는 다르다
둘 다 외부 인터넷에서 직접 접근하기 어렵다는 점 때문에 헷갈릴 수 있습니다.
하지만 목적이 완전히 다릅니다.
루프백
127.0.0.1
→ 자기 자신을 가리킴
사설 IP
192.168.x.x
10.x.x.x
172.16.x.x ~ 172.31.x.x
→ 내부 네트워크에서 장치를 식별하는 주소
예를 들어:
PC A
192.168.0.10
PC B
192.168.0.20
이라면 A에서 B로 통신할 때:
192.168.0.20
을 사용합니다.
하지만:
127.0.0.1
을 사용하면 B가 아니라 A 자기 자신에게 접속하게 됩니다.
루프백을 쉽게 기억하는 방법
루프백이라는 이름 그대로 생각하면 됩니다.
“보낸 데이터를 밖으로 보내지 않고 다시 나에게 돌려보낸다.”
일반 통신
내 PC
↓
네트워크
↓
다른 장치
루프백
내 PC
↓
Loopback
↺
내 PC
그래서 127.0.0.1을 볼 때마다:
“아, 이건 내 컴퓨터 자신을 가리키는 주소구나.”
라고 생각하면 됩니다.
실제 개발에서는 이렇게 사용한다
웹 개발을 예로 들면 가장 쉽게 이해할 수 있습니다.
Spring Boot 서버가 8080 포트에서 실행되고 있다고 가정하면:
http://localhost:8080
또는:
http://127.0.0.1:8080
으로 접속할 수 있습니다.
이때 인터넷에 있는 다른 서버에 접속하는 것이 아니라 내 컴퓨터에서 실행 중인 Spring Boot 애플리케이션에 접속하는 것입니다.
그래서 개발자가 코드를 작성하고 서버를 실행한 뒤 브라우저에서 localhost로 접속해서 결과를 확인하는 방식이 흔하게 사용됩니다.
정리
루프백(Loopback)은 네트워크 데이터를 외부 네트워크로 보내지 않고 자신의 컴퓨터로 다시 전달하는 통신 방식입니다.
IPv4에서 가장 대표적인 루프백 주소는:
127.0.0.1
입니다.
그리고 개발할 때 자주 사용하는:
localhost
도 자신의 컴퓨터를 가리키는 호스트 이름으로 사용할 수 있습니다.
둘의 관계를 간단하게 정리하면:
localhost
↓
127.0.0.1
↓
내 컴퓨터
라고 생각하면 됩니다.
반면 다른 컴퓨터에서 127.0.0.1로 접속한다고 해서 내 PC에 접속하는 것은 아닙니다.
127.0.0.1은 접속을 시도하는 컴퓨터 자기 자신을 가리키기 때문입니다.
루프백은 인터넷 연결이 없어도 사용할 수 있고, 웹 서버나 데이터베이스 같은 프로그램을 로컬에서 테스트할 때도 매우 유용합니다.
IPv6에서는 ::1이 루프백 주소로 사용됩니다.
결국 루프백을 한 문장으로 정리하면:
“네트워크를 통해 밖으로 나가지 않고 내 컴퓨터가 자기 자신과 통신할 수 있도록 사용하는 특별한 주소와 통신 방식”입니다.