부팅 시 네트워크가 준비되기까지
노트북 뚜껑을 열어 전원을 켭니다. 잠시 후 브라우저를 열고 검색을 합니다. 이 짧은 시간 동안 네트워크 계층들이 차례로 깨어나며 협력합니다. 이 교재에서 배운 모든 개념이 이 순서 안에 녹아 있습니다.
1단계 — 물리 연결
랜선을 꽂거나 와이파이가 잡힙니다. PART 02 물리계층과 PART 03 데이터링크계층의 일입니다. 이더넷이라면 NIC(네트워크 인터페이스 카드)가 링크 업 신호를 감지합니다. 와이파이라면 근처 AP와 연결 협상을 합니다.
2단계 — DHCP로 IP 획득
물리 연결이 완료되면 운영체제는 DHCP Discover를 브로드캐스트로 보냅니다. 공유기(DHCP 서버)가 응답해 IP 주소, 서브넷 마스크, 게이트웨이, DNS 서버 주소를 알려줍니다.
이 단계가 끝나면 내 컴퓨터는 네트워크 계층에서 통신할 준비가 됩니다. PART 04 네트워크계층의 기초가 갖춰진 것입니다.
3단계 — ARP로 게이트웨이 MAC 파악
외부 인터넷으로 패킷을 보내려면 기본 게이트웨이를 거쳐야 합니다. 운영체제는 게이트웨이의 IP를 알고 있지만 MAC 주소를 아직 모릅니다. ARP Request를 보내 게이트웨이의 MAC을 알아냅니다. 이제 게이트웨이로 이더넷 프레임을 전달할 수 있습니다.
4단계 — DNS 조회
브라우저에 www.google.com을 입력합니다. 운영체제의 DNS 리졸버가 DHCP에서 받아 둔 DNS 서버 주소로 UDP 53번 포트에 질의를 보냅니다. 이 DNS 서버(보통 공유기 또는 ISP)가 계층적 조회를 거쳐 IP 주소를 돌려줍니다. 17장에서 배운 내용입니다.
5단계 — TCP 연결과 TLS 핸드셰이크
IP를 알았으니 TCP 연결을 맺습니다. 3-way 핸드셰이크입니다. PART 05의 내용입니다. HTTPS라면 그 위에서 TLS 핸드셰이크가 이어집니다. 18장 내용입니다.
6단계 — HTTP 요청과 응답
TCP와 TLS 위에서 HTTP GET 요청이 나갑니다. 서버가 HTML을 담은 HTTP 응답을 보냅니다. 브라우저가 HTML을 파싱하면서 이미지, CSS, JS에 대한 추가 DNS 조회와 HTTP 요청이 연쇄적으로 일어납니다.
계층들의 합주
뚜껑을 열고 페이지가 뜨기까지 물리계층, 데이터링크계층, 네트워크계층, 전송계층, 응용계층이 모두 한 번씩 등장했습니다. 어느 하나라도 빠지면 페이지가 열리지 않습니다. 각 계층이 자신의 역할만 잘 수행하면 위층은 아래층이 어떻게 동작하는지 몰라도 됩니다. 이것이 계층형 아키텍처의 아름다움입니다.
이 교재가 PART 01에서 설명한 "레이어 케이크"가 바로 이 순서로 작동하고 있었습니다. 이제 그 케이크 한 조각 한 조각의 맛을 직접 느꼈을 것입니다.
다음 PART에서는 무선 네트워크, 보안, 그리고 현대 인터넷 인프라로 시야를 넓힙니다.