Hailey's TIL
웹 동작 방식 본문
1. https://www.google.com에 접속할 때 생기는 과정 (웹 동작 방식)
[요약]
- 사용자가 브라우저에 URL을 입력
- DNS 서버에 도메인 네임으로 서버의 진짜 주소를 찾음
- IP 주소로 웹 서버에 TCP 3- way handshake로 연결 수립
- 클라이언트는 웹 서버로 HTTP 요청 메시지를 보냄
- 웹 서버는 HTTP 응답 메시지를 보냄
- 도착한 HTTP 응답 메시지는 웹 페이지 데이터로 변환되고, 웹 브라우저에 의해 출력
1. URL 파싱과 HTTP Request Message 작성
사용자가 웹 브라우저에 URL을 입력하면, 브라우저는 그 URL을 파싱하고 그 정보를 바탕으로 HTTP Request Message를 생성.
1.1. HTTP Request Message
사용자가 웹 브라우저에 URL을 입력하면, 브라우저는 그 URL을 파싱하고 그 정보를 바탕으로 HTTP Request Message를 생성.
2. DNS Lookup
서버에 요청을 보내기 위해 브라우저는 https://www.google.com 이라는 도메인 이름은 IP 주소로 변환해야 한다.
이를 위해 브라우저는 DNS Lookup 을 함.
이 과정에서 브라우저 -> hosts 파일 -> DNS Cache의 순서대로 도메인에 매칭되는 IP를 찾는다.
그래도 찾지 못하면 루트 도메인 서버에서부터 서브도메인 서버 순으로 찾게 된다.
3. IP 주소로 웹 서버에 TCP 3-way handshake로 연결 수립
ISP의 호스팅 서버에 DNS 쿼리를 전송해 IP주소를 응답받는다.
웹브라우저는 서버에 IP주소를 이용하여 TCP 프로토콜을 통해 html 문서를 요청
3-1. url 입력 후 패킷 생성 과정
- 응용계층에서 http 요청을 전달 받아 전송계층에서 시작포트번호와 목적지 포트번호를 담은 TCP 패킷의 헤더를 생성한다.
- 인터넷 계층에서 시작 ip와 목적지 ip 주소를 저장한 패킷을 생성한다.
- 네트워크 계층에서 시작과 목적지 mac 주소를 담은 이더넷 헤더를 생성한다.
- 완성한 패킷들을 전달하기 위해 private ip를 public ip로 변환한다.
- 3-way handshake를 활용해 tcp를 연결한다.
- 보내는 쪽 공유기에서 많은 라우터를 거쳐 서버의 공유기로 전달한 후 패킷의 ip헤더에 적인 주소로 서버의 mac 주소를 구해 전달한다.
- TCP 패킷에 적힌 목적지 포트에 패킷을 전달.
- http 요청에 대한 처리를 진행한 후 처리 결과를 응답으로 전송한다.
- 응답 완료 후 4-way handshake를 통해 연결을 끊는다.
4. 패킷 이동
프로토콜 스택이 만들어낸 패킷은 스위칭 허브 등을 통해 인터넷 접속용 라우터로 전달되고, 이후 ISP를 통해 인터넷으로 이동. 고속 라우터들 사이로 목적지까지 패킷이 이동.
4.1. 스위칭 허브를 통해 인터넷 접속용 라우터로 전달
컴퓨터에서 요청을 하면 데이터는 스위칭 허브를 통해 네트워크 내의 다른 장치들로 전달된다.
스위칭 허브는 데이터를 받아 그것이 목표로 하는 장치를 확인하고 그 장치로 데이터를 전달한다.
하지만 인터넷에 접속하려면 이 데이터는 인터넷 서비스 공급자(ISP) 로 전달되어야 하며, 이를 가능하게 하는 장치가 인터넷 접속용 라우터(Router)이다.
5. 서버 도달
ISP를 통해 핵심부를 통과한 패킷은 LAN에 도착. 대부분의 웹 서버는 보안을 위해 방화벽을 사용. 따라서 방화벽이 패킷을 검사한 후 필요하다면 캐시 서버로 보냄.
6. 요청 처리와 응답
패킷이 최종적으로 웹 서버에 도달하면, 서버의 프로토콜 스택이 패킷을 추출하고 메시지를 복원하여 웹 서버 애플리케이션에 전달.
웹 서버 애플리케이션은 요청을 처리하고, 응답 데이터를 작성하여 클라이언트로 회송.
이 응답 또한 클라이언트가 요청을 보낸 과정을 거쳐 클라이언트의 브라우저로 전달된다.
7. 웹 페이지 렌더링
응답을 받은 웹 브라우저는 HTML, CSS, JavaScript 등의 웹 자원을 처리하여 웹 페이지를 렌더링하고 사용자에게 보여준다.
2. TCP와 UDP의 차이
- TCP는 연결형 서비스로 3-way handshake 과정을 통해 연결을 설정하기 때문에 높은 신뢰성을 보장하지만, 속도가 비교적 느리다는 단점이 있다.
- UDP는 비연결형 서비스로 3-way handshake을 사용하지 않기 때문에 신뢰성이 떨어지는 단점이 있지만, 데이터 수신 여부를 확인하지 않기 때문에 속도가 빠르다는 장점이 있다.
💡 TCP는 연속성보다 신뢰성 있는 전송이 중요할 때 사용되는 프로토콜이며, UDP는 TCP보다 빠르고 네트워크 부하가 적다는 장점이 있지만, 신뢰성 있는 데이터 전송을 보장하지는 않는다.
그렇기 때문에 신뢰성보다는 연속성이 중요한 실시간 스트리밍과 같은 서비스에 자주 사용된다.
- 여기서 3 way-handshake란 TCP 네트워크에서 통신 하는 장치가 서로 연결이 잘 되었는지 확인하는 방법이다. 송신자와 수신자는 총 3번에 걸쳐 데이터를 주고 받으며 통신이 가능한 상태인지 확인한다.
- 4 way-handshake란 TCP 네트워크에서 통신 하는 장치의 연결을 해제하는 방법이다. 송신자와 수신자는 총 4번에 걸쳐 데이터를 주고 받으며 연결을 끊는다.
reference