웹 통신의 흐름

?에서 !로·2022년 2월 8일
0

CS(Computer Science)

목록 보기
10/14

웹 통신의 흐름

브라우저에서 주소창에 www.example.com(특정 URL)을 입력했을 때?

웹 통신의 흐름

  1. 브라우저에서 url의 내용을 파싱하여 프로토콜, url, 포트번호등의 정보를 확인 -> https://www.example.com:443
  2. 브라우저는 os를 통해 url을 IP로 변경
    • 자신의 로컬 hosts 파일과 브라우저 캐시에 해당 URL이 존재하는지 확인
    • 존재하지 않는다면 해당 url을 DNS 서버에 요청하여 컴퓨터가 읽을 수 있는 IP로 변경
  3. HTTP 프로토콜을 이용해서 HTTP 요청 메세지를 생성한다.
  4. 라우터를 통해 해당 주소까지의 경로를 라우팅 하여 해당 서버의 게이트웨이까지 이동
  5. ARP(Address Resolution Protocol)를 통해 IP주소를 MAC주소로 변환한다.
  6. 3-way-handshake을 거쳐서 통신할 서버의 TCP 소켓 연결
  7. 연결이 완료된 해당 서버에서 HTTP(HTTPS)프로토콜을 통해 응답(HTML, CSS, Javascript 등으로 구성)을 브라우저로 전달한다.
  8. 브라우저에서 서버가 보낸 응답을 화면에 렌더링한다.

+) HTTP 메시지는 메소드, URI, HTTP 버전, 헤더, 페이로드로 구성

+) 메시지 전송은 브라우저가 직접하는 것이 아니라 OS 를 통해 메세지를 전달한다.

+) 브라우저는 이 HSTS의 리스트에 우리가 요청할 웹 사이트가 존재하는지 확인한다. 이후 목록에 해당 웹사이트가 존재한다면 브라우저가 HTTP 대신 HTTPS 프로토콜을 사용하여 요청을 보내게 된다.

URL이 IP로 변환되는 과정

  1. Local DNS서버를 확인하고 캐시된 값이 있으면 IP주소를 반환한다.

2.캐시된 값이 없다면 root DNS 서버에 해당 URL의 IP주소를 요청한다.

  1. root DNS서버에 해당 IP주소가 없다면 하위 DNS 서버(TLD 네임서버)에 요청하라고 응답한다. 이 응답을 받은 Local DNS는 TLD Server에게 IP 주소를 요청한다.

  2. TLD 네임서버에서 IP주소에 대한 정보가 없다면 하위 DNS 서버(authoritative DNS 서버)에 요청하라고 응답한다. IP 주소를 응답 받을 때까지 Local DNS는 도메인을 관리하는 하위 DNS 서버에 IP 주소를 요청한다.

  3. IP주소를 응답받은 Local DNS는 해당 IP주소를 캐싱하고 응답한다.

+) TLD : 최상위 도메인(Top-Level Domain)

  • 국가 코드 최상위 도메인(Country Code Top-Level Domain, ccTLD) ex, .kr, .jp, .CN, .US 등
  • 일반 최상위 도메인(generic top-level domain, gTLD) ex, .com, .net, .org 등

In 프로토콜 스택, LAN 어댑터

  1. 프로토콜 스택(운영체제에 내장된 네트워크 제어용 소프트웨어)이 브라우저로부터 메시지를 받는다.
  2. 브라우저로부터 받은 메시지를 패킷 속에 저장한다.
  3. 그리고 수신처 주소 등의 제어정보를 덧붙인다.
  4. 그런 다음, 패킷을 LAN 어댑터에 넘긴다.
  5. LAN 어댑터는 다음 Hop의 MAC주소를 붙인 프레임을 전기신호로 변환시킨다.
  6. 신호를 LAN 케이블에 송출시킨다.

In 허브, 스위치, 라우터

LAN 어댑터가 송신한 프레임은 스위칭 허브를 경유하여 인터넷 접속용 라우터에 도착한다.
라우터는 패킷을 프로바이더(통신사)에게 전달한다.
인터넷으로 들어가게 된다.

In 액세스 회선, 프로바이더

패킷은 인터넷의 입구에 있는 액세스 회선(통신 회선)에 의해 POP(Point Of Presence, 통신사용 라우터)까지 운반된다.
POP 를 거쳐 인터넷의 핵심부로 들어가게 된다.
수 많은 고속 라우터들 사이로 패킷이 목적지를 향해 흘러가게 된다.

In 방화벽, 캐시서버

패킷은 인터넷 핵심부를 통과하여 웹 서버측의 LAN 에 도착한다.
기다리고 있던 방화벽이 도착한 패킷을 검사한다.
패킷이 웹 서버까지 가야하는지 가지 않아도 되는지를 판단하는 캐시서버가 존재한다.
굳이 서버까지 가지 않아도 되는 경우를 골라낸다. 액세스한 페이지의 데이터가 캐시서버에 있으면 웹 서버에 의뢰하지 않고 바로 그 값을 읽을 수 있다. 페이지의 데이터 중에 다시 이용할 수 있는 것이 있으면 캐시 서버에 저장된다.

In 웹 서버

패킷이 물리적인 웹 서버에 도착하면 웹 서버의 프로토콜 스택은 패킷을 추출하여 메시지를 복원하고 웹 서버 애플리케이션에 넘긴다.
메시지를 받은 웹 서버 애플리케이션은 요청 메시지에 따른 데이터를 응답 메시지에 넣어 클라이언트로 회송한다.
왔던 방식대로 응답 메시지가 클라이언트에게 전달된다.

도착한 HTTP 응답 메세지는 HTTP 프로토콜을 사용하여 웹페이지 데이터로 변환되고, 웹 브라우저의 출력에 의해 사용자가 볼 수 있다.

0개의 댓글