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