다음과 같은 상황이 주어졌을 때 PC 에서 웹서버로 HTTP 요청을 보내고 받는 과정에서
어떤 패킷 트랜잭션이 발생할까?
그 순서는 다음과 같다.
위의 과정을 단계별로 살펴보자.
현재 PC 본인의 IP 주소, 서브넷 마스크, DNS 서버 등 네트워크 정보를 가지고 있지 않기 때문에
이를 얻고자 DHCP DORA 트랜잭션이 일어난다.
위의 상황에서 DHCP 는 같은 네트워크에 존재하므로 ARP 교환은 필요하지 않다.
DHCP Discover 는 브로드캐스트로 SW 도착 시 연결된 모든 포트로 나가게 된다.
DHCP 서버는 이를 받게 되면 클라이언트에세 Offer 를 보내게 된다.
이때도 마찬가지로 브로드캐스드
이기 때문에 모든 포트로 나가게 되고 PC 만 받게 된다.
PC 는 이후 DHCP 서버에게 Request 를 보내 최종 할당을 요청한다.
DHCP 서버가 PC에게 IP 관련 파라미터를 모두 할당하고 PC는 성공적으로 정보를 받게 된다.
이렇게 PC 는 출발지의 IP 주소와 DNS 주소를 얻게 되었으므로
웹서버 (www.naver.com) 과의 HTTP 통신을 위한 과정을 시작할 수 있다.
그러나 아직 웹 서버의 도메인 네임이 아닌 웹 서버의 IP 주소
는 알지 못한다.
이제 DNS 서버와 DNS Query / Answer 를 통해 웹서버의 주소를 얻어야 한다.
그러나 DHCP 서버와 달리 DNS 서버는 PC 와 다른 네트워크에 존재한다.
따라서 우선 게이트웨이로 이동하게 되고 (이 과정에서도 ARP 교환 발생)
해당 게이트웨이에서 DNS 서버의 MAC 주소를 얻기 위한 ARP 교환이 일어나게 된다.
Default Gateway 로 향하는 주소와 완성되었으므로 DNS Query 를 보내게 된다.
DNS 서버의 MAC 주소를 모르기 때문에 ARP Table 이 완성되어 있지 않으므로
첫번쨰 DNS Query 는 버려지며 ARP 교환이 일어난다.
ARP 테이블이 완성되었으므로 PC 에서 다시 DNS Query 요청을 보내게 된다.
이때 다시 DNS Answer 를 PC 에게 보내야 하는데 10.1.2 로 넘어오면서
MAC 주소를 갈아입었기 때문에 PC 의 MAC 주소를 알지 못한다.
그래서 Layer 2 가 비어있다.
MAC 주소를 채우기 위해 ARP 교환이 다시 일어난다.
(현재 가지고 있는 In Layer 의 MAC 주소는 이전 Router 의 주소 이다.)
ARP 교환으로 목적지의 MAC 주소를 얻게 된다면 DNS Answer 로 IP 주소를 전달한다.
DNS Answer 를 받은 PC 는 TCP 3 - way Handshake 를 준비한다.
HTTP 요청 전에 TCP 3 - way HandShake
가 발생한다.
그 이전 경로는 모두 이전에 갔던 경로, 라우팅 프로토콜로 알고 있는 경로이기에 통과하지만
10.1.1 에 도착해서 웹 서버의 MAC 주소가 라우터에 채워져 있지 않기 때문에 ARP 교환이 일어난다.
이후 서버에서 TCP SYN/ACK 를 보내게 된다.
이를 받은 PC 는 TCP ACK 와 HTTP 요청을 같이 준비하여 보내게 된다.
TCP ACK 바로 뒤에 HTTP 요청도 같이 가게 된다.
이에 서버는 처리 성공 (200) 과 함꼐 PC 에 반환해준다.
응답을 받은 PC 에서는 TCP 연결 해제를 위한 TCP 3 - way Handshake 를 보내게 된다.