간단한 흐름과 자세한 흐름 둘로 나누어서 이해해보자....
www.google.com 을 브라우저 주소창에 입력
보낼 패킷의 HTTP 헤더는, HTTP Request 를 통해 채워진 상태입니다.
보낼 패킷의 IP 헤더를 채우기 위해, DNS 서버를 통해 www.google.com 도메인의 IP 주소를 응답 받습니다.
보낼 패킷의 TCP 헤더를 채우기 위해, 클라이언트와 구글 웹서버 간 TCP 연결을 합니다.
=> 3-Way Handshaking
보낼 패킷이 완성되었으므로, www.google.com 에 패킷을 전송하고, HTML 을 응답받습니다.
클라이언트는 응답 받은 HTML 을 브라우저에 띄웁니다.
클라이언트와 구글 웹서버간 TCP 연결을 종료합니다.
=> 4-Way Handshaking
이 때, Domain으로 요청을 보낼 수 없기 때문에 DNS Lookup을 수행
- DNS Lookup은 크롬의 경우 브라우저 -> hosts 파일 -> DNS Cache의 순서로 도메인에 매칭되는 ip를 찾는다.
=> 루트 도메인서버에서부터 -> 서브도메인 서버 순으로 찾게 됩니다.
'패킷'은 스위칭 허브 등을 통하여 경유해 인터넷 접속용 라우터에서 -> ISP로 전달되고 인터넷으로 이동
액세스 회선에 의해 통신사용 라우터로 운반되고 인터넷 핵심부로 전달
핵심부를 통과한 패킷은 목적지 LAN에 도착
'방화벽'이 패킷을 검사 및 캐시 서버로 보내어 웹 서버에 갈 필요가 있는지 검사
웹서버에 도착한 패킷은 '프로토콜 스택'이 패킷을 추출하여 메시지를 복원하고 WAS(웹서버 애플리케이션)에 넘김
WAS는 요청에 따른 응답 데이터 작성 및 클라이언트로 다시 회송함 (전달된 방식 그대로 전송)