23.06.15
DEVOTEE를 활성화 시키면
지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.
버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.
| 컨텐츠 유형 | 제목 | 저장일 | 삭제 |
|---|
본인인증 로그인에 실패하였습니다.
회원이 아니시거나 본인인증 등록이
완료되지 않은 사용자입니다.
웹 개발자들이 로컬 디버깅을 할 때, 우리은 자주 localhost와 만나게 됩니다.
예를 들면, F/E 개발자들은 간단히 npm run을 실행하여 브라우저에서 웹 페이지를
열면 주소 표시줄에 http://localhost:xxx/index.html과 같은 것이 표시됩니다.
많은 사람들이 이 둘 사이의 차이를 곰곰히 생각하지 않고 사용하고 있는데요.
이들의 차이에 대한 명확한 이해가 부족한 개발자 및 비개발자들과의 협업을 고려할 때,
중요하지 않지만 중요한? 지식이라고 생각합니다.
localhost는 도메인 이름으로, 인터넷 접속에 사용되는 도메인 이름과 본질적으로 다르지는 않습니다.
다만 기억하기 쉬운 점에서 차이가 있는데요.
localhost의 범위는 로컬 디바이스로 제한됩니다.
이름에서도 알 수 있듯이 "local"은 근거리에 있는 것을 의미합니다.
예를 들어, 저와 제 친구 영철이는 각자의 컴퓨터에서 localhost를 사용하여 서로 독립적인 환경에서 개별 페이지 콘텐츠에 접근할 수 있습니다.
localhost를 실제로 이해하기 위해서는 사용자가 도메인 이름을 통해 프로그램에 접근하는 방법부터 알아야 합니다.
구글을 예시로 들어보겠습니다.
누군가 나에게 택배를 보내면, 택배 양식에는 아파트 주소, 이름, 수취인이 포함됩니다.
택배 배송 과정은 경로 설정을 위해 주소를 목적지로 생각하고 , 결국 수취인에게 도달하게 됩니다.
마찬가지로 네트워킹에서 도메인 이름은 아파트 이름처럼, IP 주소는 물리적 주소처럼 작동합니다.
저장소 처럼 아파트 주소와 아파트 이름을 매핑해주는 역할을 합니다.
일부 도메인은 등록되지 않아 IP 주소를 찾을 수 없을 수도 있고, 다른 경우에는 여러 IP 주소가 있을 수 있습니다.
도메인 서비스 제공 업체가 일반적으로 DNS 서비스를 제공하여 도메인과 해당 IP 주소를 DNS에 등록합니다.
외부 서비스의 경우 공개 IP 주소가 필요하며, 이는 일반적으로 인터넷 서비스 제공 업체에서 제공됩니다.
우리 집이 인터넷을 사용하기 위해 SKB를 사용한다면 SKB 게이트웨이 서버에 IP 주소 할당 요청을 하는 것입니다.
이 때 사용자 서로간의 규칙(프로토콜)을 준수하여 주고 받는 과정을 거치게 됩니다.
컴퓨터에는 여러 프로그램이 실행되고 배포될 수 있습니다. 그러면 어떤 Packet을 받아야할까? 고민하게 됩니다.
이 때 Port가 등장하게 됩니다. 각 프로그램은 하나 이상의 Port와 연결되며 중첩을 방지하게 됩니다.
요청에 Port를 지정하면 올바른 프로그램으로 연결됩니다.
따로 지정하지 않습니다!
기본 포트인 HTTP의 80번과 HTTPS의 443번이 명시되지 않은 경우 사용되기 때문입니다.
프로그램을 시작할 때 포트를 알려주는 것은 필수적이지만, 일부는 사용되지 않는 포트를 자동으로 선택하기도 합니다
localhost는 이전에 언급한 대로 도메인 이름입니다.
그렇다면 127.0.0.1은 무엇일까요?
이것은 IP 주소로, 현재 기기의 로컬 IP 주소로, 기기 자체에서만 사용할 수 있습니다.
이 127.0.0.1은 인터넷에 연결되지 않은 상태에서도 컴퓨터가 사용할 수 있으며,
프로그램을 개발하고 테스트하기에 편리합니다. 우리가 디버깅하는 프로그램은 이 IP 주소에 연결됩니다.
우리가 흔히 볼 수 있는 IP 주소는 X.X.X.X로 형식화되며, 점으로 구분된 네 개의 세그먼트로 나뉩니다.
실제로는 이는 32비트 이진수로, 네 개의 8비트 세그먼트로 나뉘어 이진수를 십진수로 변환하여 표시됩니다.
그렇다면 localhost가 어떻게 127.0.0.1로 해석되는 걸까요?
DNS를 통해 가는 걸까요?
모든 컴퓨터는 DNS 해결 없이 localhost와 127.0.0.1을 사용할 수 있습니다.
각 컴퓨터에서 개별적으로 처리됩니다.
각 컴퓨터에는 몇 가지 하드코딩된 DNS 해결 규칙이 있는 hosts 파일이 있으며, 이 규칙에는 localhost를 127.0.0.1로 해석하는 규칙이 포함되어 있습니다.
원하는 대로 이름을 지정할 수 있습니다. johnhost와 같은 이름을 사용하여 127.0.0.1로 해석할 수 있습니다.
그러면 내 127.0.01을 google.com으로 하면?
> 본인 기기에만 해당되며, 다른 사람에겐 영향을 끼치지 않습니다 ^^
모든 컴퓨터에 고유한 IP 주소를 할당하는 것은 현실적이지 않기 때문입니다.
모든 사람이 Public IP를 가지면 좋겠지만... 리소스 여력이 되지 않습니다. (요즘은 되긴 합니다만 ㅎㅎ)
Private IP 주소는 대부분의 경우 로컬 영역 네트워크(LANs) 내에서 사용하는 목적입니다.
LAN 내에서 충돌이 없는 한, 이러한 주소는 자유롭게 사용할 수 있습니다.
서울 사는 제가 192.168.1.1을 사용할 수 있고, 제주도 사는 친구가 192.168.1.1을 사용할 수 있습니다.
고전적이고 일반적으로 사용되는 IPv4 Private IP 주소 범위는 세 가지 클래스로 나뉩니다.
A 클래스: 10.0.0.0 ~ 10.255.255.255
B 클래스: 172.16.0.0 ~ 172.31.255.255
C 클래스: 192.168.0.0 ~ 192.168.255.255
이러한 사설 IP 주소는 내부 네트워크에서만 사용하기 위해 의도되었으며 공용 인터넷에서 사용할 수 없습니다.
위에서 언급한 세 가지 사설 IPv4 주소 범위 외에도 몇 가지 예약된 IPv4 주소 범위가 있습니다:
요즘은 AWS CIDR 싸이더(Classless Inter-Domain Routing)라고 부르는 주소 범위로 유연하게 네트워크 설정도 가능합니다!
간단하게 127.0.0.1 과 localhost를 알아봤습니다. 저도 까먹었던 부분을 다시 remind하는 계기가 되었네요.
감사합니다.
DEVOTEE를 활성화 시키면
지금 작성한 댓글에 AI가 댓글을 달아줍니다.