※ IPv4 vs IPv6 간단 비교

항목 IPv4 IPv6
정식 명칭 Internet Protocol version 4 Internet Protocol version 6
주소 길이 32비트 128비트
주소 수 약 42억 개 무한에 가까움 (3.4 x 10³⁸ 개)
형식 예시 192.168.0.1 2001:0db8:85a3:0000:0000:8a2e:0370:7334
도입 시기 1981년 1998년
사용 현황 아직 가장 널리 사용됨 점점 더 많이 도입 중

 

> 왜 IPv6가 나왔을까?

IPv4는 주소 수가 약 42억 개뿐이라서, 전 세계적으로 IP가 부족해진 상황, 그래서 더 많은 IP를 만들 수 있도록 나온 게 IPv6

 

상황 필요한 버전
일반 웹 개발 / API 통신 대부분 IPv4 기반
글로벌 서비스를 만들거나, IoT 등 수십억 개 장비 연결 IPv6 고려 필요
방화벽, 서버 보안 설정 시 IPv4, IPv6 모두 고려해야 할 수도 있음

 

※ 서브넷 마스크 (Subnet Mask)

서브넷 마스크는 IP 주소를 네트워크 부분과 호스트 부분으로 나누는 기준
즉, 내가 속한 네트워크의 범위가 어디까지인지 알려주는 값

 

> 예시

  · IP 주소 : 192.168.1.10

  · 서브넷 마스크 : 255.255.255.0

이 설정은 192.168.1.0 ~ 192.168.1.255 범위의 IP끼리 같은 네트워크로 간주된다는 뜻

 

> 잠깐 ! 왜 192.168.1.10 / 255.255.255.0이면, 192.168.1.0 ~ 192.168.1.255끼리 같은 네트워크로 간주되는지 알아보자

 

> IP 주소와 서브넷 마스크는 비트 단위 연산으로 비교

항목 10진수 2진수
IP 192.168.1.10 11000000.10101000.00000001.00001010
서브넷 마스크 255.255.255.0 11111111.11111111.11111111.00000000

 

> IP 주소 & 서브넷 마스크를 AND 연산 (AND 연산 : 둘 다 1일 때만 1)

즉, 이 IP(192.168.1.10)는 192.168.1.0 네트워크에 속해 있다는 뜻

그래서 이 범위 안의 IP (192.168.1.1 ~ 192.168.1.254)는 같은 서브넷에 속한 컴퓨터들이라고 간주되는 것

 

쉽게 비유하면,

IP 주소 : 내가 사는 집 주소 (예 : 서울시 강남구 101동 201호)

서브넷 마스크 : 어느 동네까지가 우리 '이웃'인지 정하는 기준 (예 : 강남구까지만 이웃)

그래서 서브넷 마스크는 내부 통신 가능한 컴퓨터들의 범위를 정의

(내부 통신이 가능하다 : 같은 네트워크에 속한 컴퓨터끼리는 '라우터나 게이트웨이 없이도' 바로 데이터를 주고받을 수 있다는 뜻)

 

같은 사무실의 개발자 두 명
개발자 A의 PC IP : 192.168.1.10
개발자 B의 PC IP : 192.168.1.20
서브넷 마스크 : 255.255.255.0
이 둘은 같은 네트워크 (192.168.1.0)에 속하므로 파일 공유, 서버 접속, 핑(Ping) 테스트가 라우터 없이도 바로 가능

상황 설명
A가 B의 로컬 개발 서버 접속 (http://192.168.1.20:3000) 개발 중 실시간 결과 공유
A가 B 컴퓨터로 파일 공유 윈도우 공유 폴더, FTP 등
ping 192.168.1.20 A가 B가 살아있는지 확인 가능
서로 다른 네트워크일 경우 라우터가 필요 (라우터로 나가기 위한 출입구가 기본 게이트웨이)

 

> 서브넷 마스크 예시

서브넷 마스크 CIDR 표기 가능한 호스트 수 의미
255.0.0.0 /8 약 1,670만 개 굉장히 큰 네트워크
255.255.0.0 /16 약 6.5만 개 중간 규모 네트워크
255.255.255.0 /24 254개 가장 흔한, 소규모 LAN
255.255.255.128 /25 126개 절반으로 쪼갬
255.255.255.192 /26 62개 더 쪼갬
255.255.255.252 /30 2개 거의 포인트투포인트 통신용

 

정리 : 서브넷 마스크는 IP 주소와 비트 AND 연산을 통해 "너와 나는, 같은 동네야"를 판단하는 기준

 

※ 기본 게이트웨이 (Default Gateway)

기본 게이트웨이는 내부 네트워크에서 외부 네트워크로 나갈 때 통로 역할을 하는 장치

용어 비유 설명
게이트웨이 출입구라는 개념 전체 아파트 단지의 모든 정문, 후문 포함
기본 게이트웨이 내가 늘 사용하는 정문 내비게이션에 기본 설정된 출구처럼, 내가 외부로 나갈 때 항상 쓰는 정문

(보통은 라우터의 IP 주소가 기본 게이트웨이가 됨)

참고 : 모든 라우터는 게이트웨이 역할을 할 수 있지만, 모든 게이트웨이가 꼭 라우터는 아니다.

 

> 예시

기본 게이트웨이 : 192.168.1.1 (이 주소는 내가 인터넷에 접속하려 할 때 패킷을 먼저 전달하는 대상)

 

> 비유

내가 집(내부 네트워크)에 있고, 택배를 외국(인터넷)에 보내고 싶다고 해보자, 이때 기본 게이트웨이는 우체국 역할을 한다.

집 밖으로 나가는 건 무조건 우체국(게이트웨이)을 거쳐야 한다.

 

> 게이트웨이를 통한 통신 절차 (요약) - A의 서브넷 : 192.168.1.0/24, B의 서브넷 : 192.168.2.0/24

1. A(192.168.1.10)는 B(192.168.2.20)가 '다른 네트워크'라는 걸 서브넷 마스크로 판단
2. A는 기본 게이트웨이의 IP로 데이터를 보냄 (A 컴퓨터는 기본 게이트웨이 주소(192.168.1.1)를 알고 있음)
3. 게이트웨이(라우터)가 B의 위치를 확인하고, 패킷을 전달 (게이트웨이는 192.168.2.0/24 네트워크에 접근할 수 있는 경로를 알거나 외부 네트워크로 NAT를 통해 전송할 수도 있음)

4. B가 응답을 보내면, 그 응답도 게이트웨이를 거쳐 A에게 도착

 

> 게이트웨이 / 라우터 / 패킷

구분 개념 설명 우편 시스템 비유 네트워크 상의 역할
게이트웨이 다른 네트워크와 내부 네트워크를
연결하는 입구/출구
아파트 관리실/정문
(택배/우편이 들어오고 나가는 곳)
외부로 나갈 때는 출구, 외부에서 들어올 땐 입구 역할
(내부와 외부를 잇는 관문)
라우터 여러 네트워크 사이에서 데이터가 갈
방향을 결정
우체국 분류기
(어느 동, 호수로 보낼지 판단)
네트워크 경로를 계산하고, 데이터가 어느 방향으로 가야 하는지 결정
패킷 전송되는 데이터의 최소 단위
(쪼개진 데이터 덩어리)
실제 편지 봉투
(주소와 내용물이 있음)
컴퓨터 간 전송되는 실제 정보로, 게이트웨이/라우터를 거쳐 이동

현실에서 게이트웨이로 설정된 주소가 바로 라우터의 IP 주소인 경우가 많아서, '라우터가 게이트웨이 역할을 한다'고 말하는 것

 

정리 : 게이트웨이는 내 컴퓨터(내부 네트워크)가 외부(외부 네트워크)와 통신할 때 반드시 거쳐야 하는 관문

 

※ NAT (Network Address Translation)

사설 IP를 공인 IP로 바꿔주는 기술

즉, 집 안의 여러 기기가 하나의 공인 IP를 공유해 외부와 통신할 수 있게 해주는 것

 

> 왜 NAT가 필요한지?

우리 집에 노트북, 스마트폰, TV 등 여러 기기가 있다고 했을 때, 이들은 각각 192.168.x.x 같은 사설 IP를 사용한다.

하지만 인터넷은 공인 IP만 알기 때문이다. (사설 IP는 인터넷에서 직접 쓸 수 없음)

 

> 개발자에게 NAT가 중요한 이유?

집이나 회사에서 서버를 열었는데 외부에서 접속 안 되는 경우 : NAT를 거쳐야 하므로 포트포워딩 필요

Docker, 가상머신 등의 통신 문제 : Docker가 자체 NAT 네트워크를 사용함

사설망끼리 VPN 연결 : NAT 트래버설, 터널링 같은 기술이 필요

 

정리 : NAT는 사설 네트워크와 외부 네트워크 간의 통역사 역할

  · 외부로 나갈 때는 사설 IP -> 공인 IP

  · 내부로 들어올 때는 공인 IP -> 사설 IP

 

포트포워딩 (Port Forwarding)

외부에서 공유기(공인 IP)로 들어온 요청을, 내부 네트워크의 특정 컴퓨터와 포트로 전달해주는 기능

즉, 공유기는 어느 기기로 데이터를 보내야 할지 모르니까 ' 이 포트로 들어오면 이 내부 IP로 보내줘' 하고 길을 지정해주는 설정

ping 명령어란?

  • 네트워크에서 특정 호스트(IP나 도메인명)가 정상적으로 연결 가능한지 확인하는 명령어
  • ICMP(Echo Request) 패킷을 보내고, 응답(Echo Reply)이 오는지 확인

 

기본 사용법 예시

ping google.com
  • 구글 서버가 응답 가능한지 확인
  • 출력에는 IP 주소, 응답 시간(ms), TTL(Time to Live) 정보 등이 포함

 

유용한 ping 옵션들 (Windows 기준)

옵션 설명
-t 무한 핑을 보냄 (강제 종료는 Ctrl+C)
-n [횟수] 지정한 횟수만큼 핑을 보냄
-l [크기] 보낼 패킷의 크기를 지정 (기본은 32바이트)
-4 IPv4 주소로 강제 설정
-6 IPv6 주소로 강제 설정

ping -n 5 google.com # google.com으로 5번 핑을 보냄
ping -l 1000 google.com # 1000 바이트 크기의 핑을 보냄
ping -t google.com # 무한히 핑 보내기, Ctrl+C로 종료

 

ping 외 함께 쓰면 좋은 네트워크 도구들

명령어 설명
tracert [도메인/IP] 목적지까지의 경로(라우터) 확인
nslookup [도메인] 도메인에 대한 DNS 레코드 확인
netstat -an 현재 열려 있는 네트워크 연결 확인
ipconfig 내 PC의 IP 주소 및 네트워크 설정 확인
telnet [host] [port] 특정 포트에 연결 가능한지 테스트

ping은 ICMP를 사용하므로, 방화벽에서 ICMP가 차단되어 있으면 응답이 오지 않을 수 있음, 이럴 땐 telnet, curl, nmap 등의 도구로 포트/서버 상태를 확인하는 것도 고려

 

ping vs nslookup - 차이점 요약

항목 ping nslookup
목적 대상 서버에 접속 가능한지 확인 도메인 이름을 IP 주소로 해석하거나 반대로 조회
사용 주체 네트워크 연결 확인 DNS 정보 확인
방식 ICMP 프로토콜 사용 DNS 질의(UDP/TCP)
주요 사용처 서버 응답 상태 확인, 지연 시간 측정 도메인 설정 확인, DNS 문제 디버깅

ping google.com # 도메인으로 IP 주소를 확인

nslookup google.com # 도메인으로 IP 주소를 확인

nslookup 142.250.206.238 # IP 주소로 도메인을 확인

 

cmd와 bash 비교

항목 cmd (Command Prompt) bash (Bourne Again SHell)
운영체제 Windows 전용 Linux, macOS, WSL, Git Bash 등
쉘 종류 Windows Command Shell Unix/Linux Shell
파일 확장자 .bat, .cmd .sh
스크립트 문법 Windows 전용 명령어 POSIX 기반 스크립트 문법
기능 확장성 제한적 매우 강력, 프로그래밍 수준
예시 명령어 dir, copy, ipconfig ls, cp, ifconfig, curl 등

 

Windows에서 bash를 쓰는 방법

방법 설명
WSL (Windows Subsystem for Linux) Windows 안에 Ubuntu 같은 Linux 환경 설치 가능
Git Bash Git 설치 시 같이 설치되는 간단한 bash 환경
Cygwin Linux 명령어를 Windows에서 사용하게 해주는 툴
Docker bash 환경을 컨테이너에서 실행 가능
Windows XP, Vista, 7, 8, 10, 11 C:\Windows\System32\drivers\etc\hosts 관리자 권한 필요
macOS 모든 버전 (e.g. Monterey, Ventura 등) /etc/hosts sudo 권한 필요 (sudo nano /etc/hosts)
Linux Ubuntu, Debian, CentOS, Fedora 등 대부분 /etc/hosts sudo 권한 필요
Android 대부분의 버전 (루팅 필요) /system/etc/hosts 또는 /etc/hosts 루팅된 기기에서만 수정 가능
iOS 모든 버전 (탈옥 필요) /etc/hosts 탈옥된 기기에서만 접근 가능

 

브라우저가 도메인에 해당하는 IP를 찾는 순서

1. local cache를 검색

2. hosts 파일을 검색

3. 도메인 네임서버를 검색

 

local cache가 남아 있을 경우 -> cmd -> ipconfig /renew

(그럼에도 안될 경우 PC 재시작)

+ Recent posts