[네트워크] HTTP 통신을 위한 패킷 트랜잭션 과정

E woo·2023년 11월 8일
0

네트워크

목록 보기
8/12
post-custom-banner

HTTP 통신을 위한 패킷 트랜잭션 과정

다음과 같은 상황이 주어졌을 때 PC 에서 웹서버로 HTTP 요청을 보내고 받는 과정에서

어떤 패킷 트랜잭션이 발생할까?

그 순서는 다음과 같다.

  • DHCP 서버
    1. DHCP DORA (UDP, Broadcast)
    2. ARP Request / Response (UDP, Broadcast)
  • DNS 서버
    1. DNS Query / Answer (UDP, Unicast)
    2. ARP Request / Response (UDP, Broadcast)
  • HTTP
    1. TCP 3 - way Handshake (SYN)
    2. HTTP GET / 200 (TCP, Unicast)
    3. TCP 3 - way Handshake (FIN)

위의 과정을 단계별로 살펴보자.

DHCP 서버

현재 PC 본인의 IP 주소, 서브넷 마스크, DNS 서버 등 네트워크 정보를 가지고 있지 않기 때문에
이를 얻고자 DHCP DORA 트랜잭션이 일어난다.

위의 상황에서 DHCP 는 같은 네트워크에 존재하므로 ARP 교환은 필요하지 않다.

DHCP Discover

DHCP Discover 는 브로드캐스트로 SW 도착 시 연결된 모든 포트로 나가게 된다.

DHCP Offer

DHCP 서버는 이를 받게 되면 클라이언트에세 Offer 를 보내게 된다.

이때도 마찬가지로 브로드캐스드 이기 때문에 모든 포트로 나가게 되고 PC 만 받게 된다.

DHCP Request

PC 는 이후 DHCP 서버에게 Request 를 보내 최종 할당을 요청한다.

DHCP ACK

DHCP 서버가 PC에게 IP 관련 파라미터를 모두 할당하고 PC는 성공적으로 정보를 받게 된다.

이렇게 PC 는 출발지의 IP 주소와 DNS 주소를 얻게 되었으므로
웹서버 (www.naver.com) 과의 HTTP 통신을 위한 과정을 시작할 수 있다.

그러나 아직 웹 서버의 도메인 네임이 아닌 웹 서버의 IP 주소 는 알지 못한다.



DNS 서버

이제 DNS 서버와 DNS Query / Answer 를 통해 웹서버의 주소를 얻어야 한다.
그러나 DHCP 서버와 달리 DNS 서버는 PC 와 다른 네트워크에 존재한다.

따라서 우선 게이트웨이로 이동하게 되고 (이 과정에서도 ARP 교환 발생)
해당 게이트웨이에서 DNS 서버의 MAC 주소를 얻기 위한 ARP 교환이 일어나게 된다.

Gateway 의 MAC 주소를 얻기 위한 ARP 교환

첫번째 DNS Query (실패)

Default Gateway 로 향하는 주소와 완성되었으므로 DNS Query 를 보내게 된다.

DNS 서버의 MAC 주소를 모르기 때문에 ARP Table 이 완성되어 있지 않으므로
첫번쨰 DNS Query 는 버려지며 ARP 교환이 일어난다.

DNS 서버의 MAC 주소를 얻기 위한 ARP 교환

ARP 테이블이 완성되었으므로 PC 에서 다시 DNS Query 요청을 보내게 된다.

두번째 DNS Query (성공)

이때 다시 DNS Answer 를 PC 에게 보내야 하는데 10.1.2 로 넘어오면서
MAC 주소를 갈아입었기 때문에 PC 의 MAC 주소를 알지 못한다.

그래서 Layer 2 가 비어있다.

MAC 주소를 채우기 위해 ARP 교환이 다시 일어난다.
(현재 가지고 있는 In Layer 의 MAC 주소는 이전 Router 의 주소 이다.)

DNS Answer

ARP 교환으로 목적지의 MAC 주소를 얻게 된다면 DNS Answer 로 IP 주소를 전달한다.

DNS Answer 를 받은 PC 는 TCP 3 - way Handshake 를 준비한다.



HTTP

HTTP 요청 전에 TCP 3 - way HandShake 가 발생한다.

TCP SYN

그 이전 경로는 모두 이전에 갔던 경로, 라우팅 프로토콜로 알고 있는 경로이기에 통과하지만
10.1.1 에 도착해서 웹 서버의 MAC 주소가 라우터에 채워져 있지 않기 때문에 ARP 교환이 일어난다.

TCP SYN/ACK

이후 서버에서 TCP SYN/ACK 를 보내게 된다.

이를 받은 PC 는 TCP ACK 와 HTTP 요청을 같이 준비하여 보내게 된다.

TCP ACK / HTTP GET

TCP ACK 바로 뒤에 HTTP 요청도 같이 가게 된다.

HTTP 200

이에 서버는 처리 성공 (200) 과 함꼐 PC 에 반환해준다.

연결을 끊기 위한 TCP 3 - way HandShake (FIN)

응답을 받은 PC 에서는 TCP 연결 해제를 위한 TCP 3 - way Handshake 를 보내게 된다.

HTTP 통신 성공

profile
뒘벼
post-custom-banner

0개의 댓글