밑에 대기형님이 설명해 보라던거 나름대로 해봤는데 피드백 부탁드립니다.

솔직히 큰 그림만 그려져서 세부적인 거는 책보면서 적었어요..


1. DHCP

1-1. 2번의 RTT, 4개의 DHCP메시지로 동작

서브넷 내 DHCP서버 중 하나로부터 일정 기간동안 사용 가능한 IP주소, 서브넷 마스크, GWR 주소, DNS서버 주소를 할당받는다.

1-2. 위 과정결과 현재 호스트는 src IP, src MAC addr를 알고 있다.

 

2. 브라우저에 도메인 이름(www.google.com) 입력

 

3. 자신의 ARP 테이블을 확인하여 GWRMAC주소가 있는지 확인한다.

3-1. 없을 경우 GWRIP주소를 포함한 ARP request 프레임을 브로드캐스트한다.

3-2. GWR로부터 MAC 주소를 응답받고 ARP 테이블에 추가한다.

 

4. DNS 질의 메시지를 생성하여 게이트웨이 라우터(디폴트 라우터)에 해당 도메인에 대한 IP주소가 있는지 확인한다(캐싱)

4-1. 없을 경우 루트 DNS 서버 - TLD서버(.com) - 책임 DNS 서버 순으로 질의문을 보내어 해당 도메인의 IP주소를 얻는다.

 

5. 애플리케이션 계층에서 TCP 연결을 위한 메시지를 생성 후 전송 계층으로 다중화한다.

 

6. 전송 계층에서 메시지에 출발지 port번호, 목적지 port번호(80)를 포함한 TCP헤더를 추가하여 세그먼트를 만든 후 네트워크 계층으로 내려보낸다.

 

7. 네트워크 계층에서 출발지 IP주소, 목적지 IP주소(구글)를 포함한 헤더를 추가하여 IP 데이터그램으로 만든 후 링크 계층으로 내려보낸다.

 

8. 링크 계층에서 출발지 MAC주소, 목적지 MAC주소(GWR)를 포함한 헤더를 추가하여 이더넷 프레임으로 만든 후 물리 계층으로 내려보내 전송한다.

 

(9. 만약 호스트가 스위치에 물려있을 경우 스위치에서는 스위치 테이블을 확인하여 다음 노드로 전송한다.)

 

10. 게이트웨이 라우터에 도착 시 포워딩 테이블을 확인하여 다음 링크로 전송한다.

이때 GWR은 받은 프레임을 분해 후 출발지 MAC주소와 목적지 MAC주소를 각각 GWR MAC addr, R1 MAC addr(다음 홉)로 다시 프레임을 만든다.

 

11. 이때 네트워크 주소 변환(NAT)를 한다. 사설 IP주소를 공인 IP주소로 변환하여 다음 노드로 전송한다.

 

12. 구글에 도착한 데이터그램은 src IP, port, dest IP, port로 식별하여 알맞은 소켓에 역다중화 된다.

 

13. TCP 연결이 완료 - HTTP 요청, 응답 메시지를 주고 받는다.