내 디바이스가 웹 서버와 연결하기까지 [1] (DHCP / IP / ARP / DNS )
- Wireshark 를 통한 패킷캡쳐
OSI 7 Layers - 7계층 구조를 통해
네트워크의 구성요소와
각 계층의 특징 / 역할 / 대표 프로토콜 등을 정리했다.
1-4계층의 역할은 다음과 같이 간단하게 요약할 수 있다.(호스트 계층)
1계층 : 물리적 연결
2계층 : 물리적 연결의 검증
3계층 : 논리적 연결
4계층 : 논리적 연결의 검증
bans.tistory.com/2
이제 네트워크 패킷 캡쳐 도구 와이어샤크(Wireshark)를 이용하여
디바이스가 네트워크에 연결되는 시작점 부터
웹 주소를 통해 웹 페이지를 읽어오는 과정을 전체적으로 정리해보려 한다.
1. 무선랜 연결 후 IP 할당 과정 (ARP / DHCP)
Apple = 내 Device 제조사 (맥북)
Mercury = 우리집 공유기 제조사 (SKB)
1번 프레임부터 차례대로 내려오면
EAPOL 이라는 프로토콜을 통해 4-Way handshake 로 wifi 인증 과정을 거쳐
디바이스와 공유기가 맥 주소를 통해 통신한다. (OSI 1계층, 2계층)
다음으로 보이는 프로토콜은 ICMPv6 프로토콜이며, 이 프로토콜은
오류 메시지 전달 등 주요 제어 메시지에 사용하는 프로토콜이다.
https://m.blog.naver.com/nackji80/220891048637 (ICMPv6 관련 참조 블로그)
다음으로 보이는 프로토콜은 ARP 와 DHCP 프로토콜이 있다.
ARP 프로토콜은 IP 주소를 통해 통신 상대의 MAC 주소를 알아내기 위해 사용하는 프로토콜로,
반대의 경우는 RARP (MAC -> IP)라 부른다.
참고 블로그 : https://nitw.tistory.com/186
Request 와 Reply (Opcode 1 / 2) 상태로 나뉘며,
요청 상태에서는 Destination 을 Broadcast 로 설정하여,
Target IP address (캡쳐에선 192.168.35.1) 를 가진 기기의 MAC 주소를 요청하고
응답 상태에서는 Frame 13의 내용처럼 Destination 과 Source 의 주체가 서로 바뀌어 Unicast 로 응답하는 모습을 볼 수 있다.
(+ Frame 10의 ARP Announcement 는 ARP 테이블에 있는 캐시 항목을 업데이트하기 위해 Broadcast로 전송된다. )
ARP 는 IP 주소를 알아야 동작할 수 있다.
위에서는 이미 기기가 할당받은 자신의 IP 주소를 알고 있다는 전제하에 통신이 이루어지는데
IP 주소를 할당받는 데에는 DHCP 라는 프로토콜이 필요하며,
이미 할당받은 IP 가 디바이스의 테이블에 저장되어 있기에 ARP 프로토콜이 실행되었던 것이다.
DHCP 의 프로토콜 진행은 아래와 같이 4단계로 이루어진다.
DHCP Discover -> DHCP Offer -> DHCP Request -> DHCP Ack
참고 블로그 : https://jwprogramming.tistory.com/35
DHCP를 통한 IP 주소 할당은 “임대”라는 개념을 가지고 있다.
이는 DHCP 서버가 임대기간(IP Lease Time)을 명시하여 그 기간 동안만 단말이 IP 주소를 사용하도록 하는 것이다.
임대기간 이후에도 계속 해당 IP 주소를 사용하고자 한다면
IP 주소 임대기간 연장(IP Address Renewal)을 DHCP 서버에 요청해야 하고
임대 받은 IP 주소가 더 이상 필요치 않게 되면 IP 주소 반납 절차(IP Address Release)를 수행하게 된다.
보통 가정에서 ISP 업체 (KT SK LG 지역케이블 등) 로부터 받는 서비스를 유동IP 라고 부르며
이 과정에 DHCP 가 사용된다.
출처 : https://jinheeahn.wordpress.com/2015/10/28/4-dhcp-packet-설명-1/
위와 같이 DHCP 의 Type 에 따라 Option 값이 다르게 나타나며, 위의 패킷은 DHCP ACK 패킷으로,
할당 된 IP 에 관련된 여러 정보들이 나열되어 있다.
실제로, 아래에 DNS 서버들 (210.220.163.82 / 219.250.36.130) 은 SK Broadband 의 IP 주소다.
2. DNS 부터 HTTP까지
DNS (Domain Name Server) 는 도메인과 해당 서버의 IP를 연결하는데 필요한 정보를 저장하는 곳으로,
실제 도메인 이름 ( ex. www.google.co.kr. ) 을 통해 해당 IP 주소를 알아오는 데에 사용된다.
참조 블로그 : https://it-mesung.tistory.com/180 (DNS 과정)
위의 DNS 패킷을 보면 사용하는 프로토콜 (UDP), 요청 도메인의 IP 주소 등이 응답으로 나오는 걸 알 수 있다.
DNS Response의 Source Address (210.220.163.82)가 위의 1.9 그림에 나온, 이용중인 ISP의 DNS서버임을 확인할 수 있다.
패킷 분석에 대한 추가적인 자세한 내용은 아래의 블로그 참고.
참고 블로그 : https://darksoulstory.tistory.com/62
'Network > OSI 7 Layers' 카테고리의 다른 글
[정리] 내 디바이스가 웹서버와 연결하기까지 [2] ( TCP / HTTP ) (0) | 2021.02.02 |
---|---|
ip 할당과정에 필요한 프로토콜 (ARP, DHCP, UDP, DNS) (0) | 2021.01.28 |
와이어샤크(Wireshark) 를 이용한 패킷캡쳐/분석하기 (0) | 2021.01.26 |
OSI 7 Layer Model 에 대하여 (0) | 2021.01.25 |