컴퓨터가 네트워크에 연결된다는 건 단순히 랜선을 꽂거나 와이파이에 연결했다는 뜻만은 아니다.
네트워크에 제대로 참여하려면 내 컴퓨터는 최소한 몇 가지 정보를 알고 있어야 한다.
내 IP 주소는 무엇인지,
내가 속한 네트워크의 범위는 어디까지인지,
다른 네트워크로 나가려면 누구에게 보내야 하는지,
도메인 이름을 IP 주소로 바꾸려면 누구에게 물어봐야 하는지.
이 정보들이 제대로 설정되어야 비로소 컴퓨터는 “나도 이 네트워크에서 통신할 준비가 됐다”고 말할 수 있다.
IP 주소를 설정하는 방식은 크게 두 가지로 볼 수 있다.
하나는 사람이 직접 IP 주소를 지정하는 방식이다.
이걸 정적 IP라고 한다.
예를 들어 내 컴퓨터에 직접 이런 식으로 설정하는 것이다.
IP 주소: 192.168.0.10
서브넷 마스크: 255.255.255.0
기본 게이트웨이: 192.168.0.1
DNS 서버: 8.8.8.8
이 방식은 주소가 고정되어야 하는 서버나 네트워크 장비에서 자주 사용된다.
항상 같은 주소로 접근해야 하기 때문이다.
반대로 일반적인 노트북이나 스마트폰은 보통 IP 주소를 직접 설정하지 않는다.
와이파이에 연결하면 어느 순간 자동으로 IP 주소가 잡혀 있다.
이처럼 네트워크에 연결될 때 자동으로 IP 주소와 관련 설정을 받아오는 방식을 동적 IP라고 한다.
여기서 등장하는 것이 DHCP다.
DHCP는 Dynamic Host Configuration Protocol의 약자다.
이름은 길지만 역할은 단순하게 생각하면 된다.
네트워크에 새로 들어온 컴퓨터에게 필요한 설정값을 자동으로 나눠주는 방식이다.
비유하자면 새로 이사 온 사람에게 관리사무소가 이렇게 안내해주는 느낌이다.
“당신 집 주소는 여기입니다.”
“이 아파트 단지는 여기까지입니다.”
“밖으로 나가려면 정문을 이용하세요.”
“주소를 찾고 싶으면 이 안내소에 물어보세요.”
네트워크에서도 비슷하다.
컴퓨터가 네트워크에 연결되면 DHCP 서버는 컴퓨터에게 IP 주소, 서브넷 마스크, 기본 게이트웨이, DNS 서버 주소 같은 정보를 알려준다.
그래서 우리는 대부분의 상황에서 직접 IP 주소를 입력하지 않아도 된다.
와이파이에 연결하기만 하면 알아서 네트워크 설정이 잡히는 이유가 바로 여기에 있다.
IP 주소는 네트워크 안에서 내 컴퓨터를 식별하는 주소다.
편지를 보내려면 받는 사람의 주소도 필요하지만, 보내는 사람의 주소도 필요하다.
그래야 상대방이 답장을 보낼 수 있다.
네트워크 통신도 마찬가지다.
내 컴퓨터가 서버에 요청을 보낼 때는 출발지 IP 주소와 목적지 IP 주소가 필요하다.
서버 입장에서는 응답을 다시 보내야 하므로 “이 요청을 보낸 컴퓨터가 누구인지” 알아야 한다.
즉, IP 주소는 내 컴퓨터가 네트워크 안에서 자기 자신을 설명하는 기본 정보다.
IP 주소가 없으면 내 컴퓨터는 네트워크에 제대로 참여할 수 없다.
말을 걸 수는 있어도, 상대가 나에게 다시 답장을 보낼 방법이 없는 상태에 가깝다.
IP 주소만 있다고 끝나는 것은 아니다.
내 컴퓨터는 목적지 IP를 봤을 때 먼저 이런 판단을 해야 한다.
“이 목적지는 나와 같은 네트워크 안에 있나?”
“아니면 다른 네트워크로 나가야 하나?”
이 판단을 할 때 필요한 정보가 서브넷 마스크다.
예를 들어 내 IP가 192.168.0.10이고 서브넷 마스크가 255.255.255.0이라면, 보통 192.168.0.x 범위를 같은 네트워크로 볼 수 있다.
그러면 목적지가 192.168.0.20이면 같은 네트워크 안에 있다고 판단한다.
하지만 목적지가 142.250.196.142 같은 외부 IP라면 같은 네트워크가 아니라고 판단한다.
여기서 중요한 건 서브넷 마스크가 단순한 부가 정보가 아니라는 점이다.
내 컴퓨터가 패킷을 어디로 보낼지 결정하기 위해 반드시 필요한 판단 기준이다.
같은 네트워크라면 내부에서 직접 찾아보면 된다.
다른 네트워크라면 밖으로 나가는 길을 찾아야 한다.
기본 게이트웨이는 내 컴퓨터가 다른 네트워크로 나갈 때 사용하는 첫 번째 출구다.
집 안에서 다른 방으로 이동할 때는 그냥 걸어가면 된다.
하지만 집 밖으로 나가려면 현관문을 지나야 한다.
네트워크에서도 비슷하다.
같은 LAN 안에 있는 장비와 통신할 때는 스위치를 통해 직접 전달할 수 있다.
하지만 인터넷에 있는 서버처럼 다른 네트워크로 가야 한다면 내 컴퓨터 혼자서는 갈 수 없다.
이때 기본 게이트웨이로 패킷을 보낸다.
보통 집이나 회사 네트워크에서는 공유기나 라우터가 기본 게이트웨이 역할을 한다.
내 컴퓨터 입장에서는 이렇게 판단하는 셈이다.
“목적지가 내 네트워크 안에 있네? 그러면 내부에서 찾아보자.”
“목적지가 내 네트워크 밖이네? 그러면 일단 게이트웨이에게 보내자.”
기본 게이트웨이가 설정되어 있지 않으면 같은 네트워크 안에서는 통신이 될 수 있지만, 인터넷으로 나가는 통신은 막힐 수 있다.
서버는 살아 있고 와이파이도 연결되어 있는데 외부 사이트 접속이 안 되는 경우, 게이트웨이 설정 문제를 의심할 수 있는 이유도 여기에 있다.
사람은 보통 IP 주소를 외우지 않는다.
우리는 브라우저에 google.com 같은 도메인 이름을 입력한다.
하지만 실제 네트워크 통신에서는 결국 IP 주소가 필요하다.
이때 도메인 이름을 IP 주소로 바꿔주는 시스템이 DNS다.
그리고 내 컴퓨터는 DNS 서버 주소를 알고 있어야 한다.
그래야 이렇게 물어볼 수 있다.
“google.com의 IP 주소가 뭐야?”
DNS 서버가 응답해주면, 그때부터 내 컴퓨터는 해당 IP 주소를 목적지로 삼아 통신을 시작할 수 있다.
DNS 서버 주소가 잘못되어 있으면 인터넷 연결 자체는 되어 있어도 도메인 기반 접속이 안 될 수 있다.
예를 들어 IP 주소로 직접 접속하면 되는데, 도메인으로 접속하면 안 되는 상황이 생길 수 있다.
이런 경우에는 네트워크가 완전히 끊긴 것이 아니라 DNS 조회 과정에 문제가 있을 수 있다.
DHCP가 없다면 네트워크에 연결되는 장비마다 사람이 직접 설정해야 한다.
노트북 한 대라면 괜찮을 수 있다.
하지만 회사에 컴퓨터가 수십 대, 수백 대 있다면 이야기가 달라진다.
각 장비마다 IP 주소를 하나씩 정하고, 중복되지 않게 관리하고, 서브넷 마스크와 게이트웨이와 DNS 서버까지 직접 입력해야 한다.
문제는 IP 주소가 중복되면 통신 문제가 생긴다는 점이다.
같은 네트워크 안에서 두 장비가 같은 IP를 사용하면, 네트워크 입장에서는 “이 주소가 누구 것인지” 헷갈리게 된다.
DHCP는 이런 일을 줄여준다.
새 장비가 네트워크에 들어오면 사용 가능한 IP 주소를 하나 빌려주고, 필요한 설정을 함께 전달한다.
사용 시간이 끝나거나 네트워크에서 나가면 그 주소를 다시 회수해서 다른 장비에 줄 수도 있다.
그래서 DHCP는 단순히 편의 기능이 아니라, 네트워크 설정을 안정적으로 관리하기 위한 방식이라고 볼 수 있다.
노트북이 와이파이에 연결되는 상황을 머릿속으로 그려보면 DHCP의 역할이 조금 더 자연스럽게 보인다.
처음에 내 컴퓨터는 아직 IP 주소를 모른다.
그래서 네트워크에 대고 묻는다.
“저 네트워크에 들어왔는데, 제가 사용할 설정을 받을 수 있을까요?”
그러면 DHCP 서버가 응답한다.
“이 IP 주소를 사용하세요.”
“이 서브넷 마스크를 사용하세요.”
“외부로 나갈 때는 이 게이트웨이를 사용하세요.”
“도메인 이름을 물어볼 때는 이 DNS 서버를 사용하세요.”
이 정보를 받은 뒤에야 내 컴퓨터는 제대로 판단할 수 있다.
목적지가 같은 네트워크인지 다른 네트워크인지 판단하고,
다른 네트워크라면 기본 게이트웨이로 보내고,
도메인 이름이 주어지면 DNS 서버에 물어보고,
응답을 받을 수 있도록 자기 IP 주소를 출발지로 적는다.
여기서 중요한 건 네트워크 연결이 “선만 연결되면 끝”이 아니라는 점이다.
물리적으로 연결되는 것과, 통신에 필요한 설정을 갖추는 것은 다르다.
랜선이나 와이파이는 길을 열어주는 것이고, IP 주소와 게이트웨이와 DNS 설정은 그 길 위에서 어떻게 움직일지 알려주는 정보에 가깝다.
개발을 하다 보면 이런 상황을 자주 만난다.
서버는 떠 있는데 접속이 안 된다.
내 로컬에서는 되는데 다른 사람 컴퓨터에서는 안 된다.
IP로는 접속되는데 도메인으로는 안 된다.
같은 네트워크에서는 되는데 외부에서는 안 된다.
이럴 때 무작정 “인터넷이 안 된다”고만 보면 원인을 좁히기 어렵다.
IP 주소가 제대로 잡혔는지,
서브넷 마스크가 맞는지,
기본 게이트웨이가 설정되어 있는지,
DNS 서버가 정상인지 나누어 보면 문제를 훨씬 구체적으로 볼 수 있다.
예를 들어 내 컴퓨터에 IP 주소가 없다면 네트워크에 제대로 참여하지 못한 상태일 수 있다.
게이트웨이가 없다면 외부 네트워크로 나가지 못할 수 있다.
DNS 서버가 이상하다면 도메인 이름을 IP 주소로 바꾸지 못할 수 있다.
결국 DHCP와 네트워크 설정은 장애를 볼 때 가장 처음 확인해야 하는 기본 정보에 가깝다.
네트워크 통신은 멀리 있는 서버를 향해 바로 날아가는 것이 아니다.
내 컴퓨터가 자기 주소를 알고, 같은 네트워크인지 판단하고, 밖으로 나갈 문을 알고, 이름을 주소로 바꾸는 과정을 거친다.
DHCP는 이 과정에 필요한 출발 정보를 자동으로 준비해주는 역할을 한다.