TCP/IP 방식에 따른 완전한 전송 과정

앞서 살펴봤던 내용을 모두 정리하는 챕터다.

현재 PC에는 DNS 캐시 테이블과 ARP 캐시 테이블이 빈 상태고 DNS 서버가 8.8.8.8 인 경우를 가정하고 웹 서버에 접속하는 과정을 보여준다.

c:\\> telnet police.go.kr 80
  1. 목적지 IP 주소에 해당하는 도메인 네임을 하드 디스크에서 검색한다. (hosts 파일)
  2. 찾을 수 없다면 DNS 캐시 테이블을 검색한다.
  3. 여기서도 찾을 수 없다면 DNS IP 주소를 검색하고, 로컬과 DNS 서버의 네트워크 ID를 비교한다. (192.16.0과 8.8.8) 네트워크 ID 가 다르므로, ARP 라우터에서 맥 주소를 검색한다.
  4. ARP 테이블에 맥 주소가 없으므로, 1개의 ARP 헤더를 생성, 데이터 링크 계층으로 넘긴다.
  5. 데이터 링크 계층에서 프레임 헤더와 트레일러를 붙여 프레임을 만들고 물리 계층으로 넘긴다. (트레일러는 오류 정보를 담고 있다. 지금까지는 없다고 가정하고 프레임을 설명했다.)
  6. 물리 계층인 이를 비트로 변환하고 브로드캐스트 방식으로 LAN 전체로 전송한다. 게이트웨이(라우터)는 자신의 맥 주소를 유니캐스트 방식으로 응답한다(ARP 응답).
  7. 응답에서 맥 주소를 추출 ARP 캐시 테이블에 반영한다.
  8. 응용 계층에서 UDP 속성에 따라 도메인 네임 질의 정보를 담은 1개의 DNS 페이로드를 생성, 전송 계층으로 넘긴다.
  9. 전송 계층은 UDP 헤더를 붙여 데이터그램을 만들고 네트워크 계층으로 넘긴다.
  10. 네트워크 계층은 IP 헤더를 추가하고 패킷을 생성, 데이터 링크 계층으로 넘긴다.
  11. 데이터 링크계층은 패킷 앞뒤로 헤더와 트레일러를 붙여 이더넷 프레임을 생성, 물리 계층으로 넘긴다.
  12. 물리 계층은 이를 비트로 변환, 라우터로 해당 비트를 전송한다.
  13. DNS 서버(8.8.8.8번)에서 도메인 네임 질의에 대한 응답이 오면 해당 IP 주소를 DNS 캐시 테이블에 반영한다.
  14. 응용 계층에서 TCP속성에 따라 HTTP 정보를 담은 1개의 HTTP 페이로드를 생성하고 이를 전송 계층으로 넘긴다.