[CS]브라우저에 URL입력하고 엔터치면?

GyungHo Go·2022년 12월 8일
0

개발자라면 반드시 알아야되는 부분이다. 그리고 면접에서 반드시 나오는 질문 중 하나 이기도 하다. 면접을 위해 공부는 했지만 따로 기록해 놓을 필요가 있다고 생각해서 기록해 본다.

많은 부분이 생략 됐을 수 있습니다. 면접+공부를 위해 간단하게 정리했음을 참고해주세용

사용자가 웹 브라우저에 URL을 입력한 후 엔터치고나서 웹사이트가 보일때까지의 과정입니다.

1. 웹브라우저가 입력한 URL을 파싱한다.

  • 입력받은 URL의 프로토콜, 도메인, 포트를 분석해서 해석하게 됩니다.
  • 만약 URL이 문법에 맞지 않다면 기본검색엔진으로 검색을 요청합니다.

2. 브라우저는 입력한 URL의 IP주소를 찾기 위해 캐시된 DNS 기록을 확인한다.

  • DNS(Domain Name System)는 웹 사이트의 URL과 링크된 특정 IP주소를 유지 관리하는 데이터베이스 입니다. 인터넷의 모든 URL에는 고유한 IP주소가 할당되어 있습니다.
  • DNS가 자동으로 입력한 URL과 IP주소를 매핑해 주기 때문에 쉽게 해당 사이트에 접속 할 수 있다.
  • 쉽게 말해서 DNS는 사람들이 읽을 수 있는 주소(www.google.com)를 컴퓨터가 인식할 수 있는 IP주소(142.250.196.110)으로 변환해 주는것입니다.

3. 요청한 URL이 캐시에 없으면 DNS query를 날려서 DNS서버를 검색해 IP주소를 찾는다.

  • 입력된 URL로 접속하고 싶으면 해당 IP주소를 알아야 합니다. DNS query의 목적은 여러 다른 DNS서버를 검색해서 해당 사이트의 IP주소를 찾는 것입니다. 이런 검색을 recursive search라고 합니다.

4. 웹 브라우저가 해당 서버와 TCP연결을 시작한다.

  • 브라우저가 올바른 IP주소를 수신하면 IP주소와 일치하는 서버와 연결해서 정보를 전송합니다. 브라우저는 인터켓 프로토콜을 사용해서 이러한 연결을 구축하는데, 일반적으로 HTTP요청에서는 TCP연결라는 전송제어 프로토콜을 사용합니다. 이 연결은 TCP/IP three-way handshake라는 프로세스를 통해서 클라이언트와 서버간 연결이 이뤄지게 됩니다.
    1) 클라이언트 시스템은 인터넷을 통해 서버에 SYN 패킷을 보내 새 연결을 위해 열려 있는지 물어본다.
    2) 서버가 새로운 connection을 시작할 수 있는 포트가 있다면 SYN/ACK 패킷으로 대답을 한다.
    3) 클라이언트는 SYN/ACK 패킷을 서버로부터 받으면 서버에게 ACK 패킷을 보낸다.

이 과정이 끝나면 TCP 연결이 완성됩니다.

TCP/IP

TCP/IP (Transmission Control Protocol/Internet Protocol)는 통신규칙의 모음이며, 프로토콜 스위트라고 부르기도 합니다. 인터켓 프로토콜 스위는 인터넷에서 컴퓨터들이 서로 정보를 주고받는데 쓰이는 통신규약(프로토콜)의 모음입니다. 인터켓 프로토콜 슈트중 TCP와 IP가 가장 많이 쓰이기 때문에 TCP/IP 프로토콜 슈트라고도 불립니다. 즉, 송신자가 수산자에게 IP주소를 사용하여 데이터를 전달하고, 그 데이터가 제대로 갔는지에 대한 이야기를 하는 것입니다. 위키백과

5. 웹 브라우저가 HTTP 요청을 웹 서버로 전송한다.

  • 웹 브라우저가 서버에 연결 되면 HTTP 프로토콜에 대한 통신 규칙을 따릅니다.
  • HTTP 요청에는 요청 라인, 헤더 및 본문이 포함됩니다. 요청 라인에는 클라이언트(웹브라우저)가 수행하려는 작업을 서버가 결정하는데 사용할 수 있는 정보가 포함되어 있습니다.
  • 요청 라인에는 다음이 포함됩니다.
    • 요청된 리소스를 가리키는 경로
    • 통신할 HTTP 버전
    • GET, POST, PUT, PATCH, DELETE 등 요청 메서드
  • 웹 브라우저는 GET요청으로 서버에게 해당 웹 페이지를 요청합니다. 웹서버가 클라이언트(웹브라우저)로부터 요청을 받으면 서버는 요청을 처리하고 응답을 다시 전송합니다

6. 웹서버가 요청을 처리하고 응답(response)을 보낸다.

  • 서버에는 브라우저에서 요청을 수신하고 요청 처리기로 전달하여 응답을 읽고 생성하는 웹서버(예: Apache, IIS)가 포함 되어 있습니다. 이는 브라우저로 부터 요청을 수신하고, 해당 내용을 request handler에 전달하여 응답을 읽고 생성하는 역할을 합니다.

7. 웹서버는 웹브라우저에게 요청받은 웹 페이지의 html문서 결과를 응답한다.

  • response에는 서버 요청에 따른 status code로 상태를 보여줍니다.
  • status code에는 총 5가지 종류가 있습니다.
    • 1xx : 정보 메시지만을 나타냅니다.
    • 2xx : 성공적으로 처리했음을 의미합니다.
    • 3xx : 클라이언트를 다른 URL로 리디렉션 합니다.
    • 4xx : 클라이언트 측 오류를 나타냅니다.
    • 5xx : 서버 측 오류를 나타냅니다.
  • 오류가 발생하면 HTTP응답을 보고 어떤 유형의 상태코드를 받았는지 확인 할 수 있습니다.

8. 서버로부터 받은 리소스를 가지고 브라우저에서 랜더링 해준다.

  • 이후에는 브라우저에서는 브라우저의 동작 원리에 따라 그려지게 됩니다.

마무리

위 내용을 간단하게 정리해 보면
1. 웹 브라우저에 URL을 입력하고 enter를 누릅니다.
2. 웹 브라우저가 도메인의 IP주소를 조회합니다. (먼저 캐시를 찾고, 그다음 DNS를 검색합니다.)
3. 웹 브라우저가 찾는 IP주소를 기반으로 서버와의 TCP 연결을 시작합니다.
4. 웹 브라우저가 HTTP요청을 서버로 전송합니다. (필요한 경우 HTTPS보안 통신이 진행됩니다.)
5. 웹 서버가 요청을 처리하고 응답을 다시 웹 브라우저로 전송합니다.
6. 웹 브라우저가 전송받은 콘텐츠를 렌더링합니다.
7. 이후에는 브라우저의 동작원리에 따라 브라우저에 그려집니다.

참고

profile
기록하는 습관

0개의 댓글

관련 채용 정보