HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🌳
말하면서 배워요 스터디
/
📒
웹
📒

웹

생성일
Sep 9, 2022 04:33 AM
태그
웹페이지가 보여지기 까지 과정
대주제
상태
In progress(필수)
소주제
www.naver.com 쳤을 때 과정
유형
FE
수경
수경
인수
준혁
창민

수경

웹 브라우저에 URL을 입력했을 때 과정
[0. 주소창에 입력한 텍스트 정보 확인]
이 텍스트가 검색어인지 URL인지 우선적으로 확인한다.
  • 검색어 ⇒ 브라우저는 검색 엔진의 URL에 검색어를 포함한 주소로 페이지를 이동시킨다.
  • URL ⇒ 브라우저 엔진에서 네트워크 호출을 수행한다.
      1. 네이버 서버의 주소를 알기 위해 네임 서버(Name Server)와 통신하기
      1. 알아낸 주소를 바탕으로 네이버 서버와 통신하여 필요한 데이터 응답받기
 
[1. 웹 브라우저에 URL을 입력하고 Enter 키 입력]
https://www.naver.com/blog
notion image
 
  • 통신 규약(Protocol)
https:// 는 통신 프로토콜이다.
HTTPS(Hypertext Transfer Protocol Secure)는 TLS을 사용해 암호화된 연결을 하는 HTTP를 말한다. 브라우저에 전송 계층 보안(TLS)을 사용하여 서버에 연결하도록 지시한다. → (추후 링크)
ftp:// , file:// 도 있는데 이는 브라우저가 처리하는 방법을 알고있는 다른 프로토콜이다.
 
  • 도메인(Domain)
www.naver.com 은 웹 사이트의 도메인 이름이다. 기억하기 쉬운 주소이며 특정 서버의 IP주소를 가리킨다.
 
  • 경로(path)
URL에 리소스에 대한 추가 경로가 있는 경우가 있다. 이는 컴퓨터에 있는 디렉터리 구조처럼 생각할 수 있다.
 
  • fragment
프래그먼트는 리소스 자체의 다른 부분을 가리키는 앵커이다. 앵커는 리소스 내에서 북마크된 지점에 위치한 커넨츠를 보여주기 위한 방법을 나타낸다.
 
[2. 브라우저는 캐싱된 DNS 기록들을 통해 www.naver.com에 대응되는 IP 주소가 있는지 확인한다.]
  • DNS(Domain Name System)
    • URL 이름들과 IP주소를 저장하고 있는 데이터베이스이다.
 
아래 사진은 터미널에 nslookup www.naver.com 을 입력했을 때 나오는 결과이다.
notion image
해당 사이트의 IP 주소를 알 수 있고 www.naver.com 의 정식이름(CNAME)은 www.naver.com.nheos.com 이다.
  • 여기서 non-authoritative answer은 name 서버가 도메인에서 만든 원본 소스 파일을 갖고 있지 않다는 뜻이다. 이 서버에는 다른 DNS들에서 얻어진 도메인의 파일을 캐싱 형태로 가지고 있는 것이다.
  • authoritative answer은 도메인의 네임 서버에서 직접 데이터를 얻어 응답을 해줄 경우이다.
 
DNS의 가장 큰 목적은 사람들에게 편리함을 주기 위해서이다.
웹 사이트의 이름을 브라우저에 검색하면 브라우저는 DNS 기록을 4가지의 캐시에서 확인을 한다.
  1. 브라우저 캐시 확인
      • 브라우저는 일정 기간 동안의 DNS 기록들을 저장하고 있다. DNS query가 이 곳에서 가장 먼저 실행된다.
  1. OS 캐시 확인
      • 브라우저 캐시에 웹 사이트 이름의 IP 주소가 발견되지 않는다면, 브라우저는 시스템 호출을 통해서 OS가 저장하고 있는 DNS 기록들의 캐시에 접근한다.
  1. 라우터 캐시 확인
      • 컴퓨터에 DNS 기록을 찾지 못하면 DNS 기록을 캐싱하고 있는 라우터와 통신해서 찾으려 한다.
  1. ISP 캐시 확인
      • 위 모든 단계가 실패하면 브라우저가 ISP(인터넷 서비스 제공업체-Internet Service Provider)로 이동한다.
      • ISP는 DNS 서버를 구축하고 있고 브라우저가 마지막으로 DNS 기록이 있기를 바라며 접근하게 된다.
 
[3. 요청한 URL이 캐시에 없으면, ISP의 DNS 서버가 www.naver.com을 호스팅 하고 있는 서버의 IP 주소를 찾기 위해 DNS query를 날린다.]
IP 주소를 찾을 때까지 DNS 서버에서 다른 DNS 서버를 오가면서 반복적으로 검색하던지 못 찾아서 에러가 발생할 때까지 검색을 진행한다.
 
DNS 쿼리의 목적
  • 여러 다른 DNS 서버들을 검색해서 해당 사이트의 IP 주소를 찾는 것
  • 이러한 검색을 Reqursive Search라고 부른다.
 
[도메인 이름들의 구조, DNS 구성 요소]
  • 도메인 네임 스페이스는 최상위에 루트 DNS 서버가 존재하고 그 하위로 연결된 모든 노드가 연속해서 이어진 계층 구조로 되어있다.
notion image
  1. Root DNS 서버
      • ICANN이 직접 관리하는 서버이다.
      • TLD DNS 서버 IP 주소를 저장하고 안내하는 역할을 한다.
  1. Top-Level Domain(TLD) DNS 서버
      • 도메인 등록 기관이 관리하는 서버이다.
      • SDL DNS 서버의 주소를 저장하고 안내하는 역할을 한다.
  1. Second-Level Domain(SDL) DNS 서버 - Authoritative DNS 서버라고도 함
      • 실제 개인 도메인과 IP 주소의 관계가 기록되는 서버이다.
      • 일반적으로 도메인 업체의 네임 서버를 말한다.
  1. 권한 없는 DNS 서버(Recursive server || Resolver server || recursor 라고도 부름)
      • 네임 스페이스를 위한 권한 있는 DNS 서버(1, 2, 3 경우)는 IP 주소와 도메인 이름을 매핑한다.
      • 네임 스페이스를 위한 권한 없는 DNS 서버는 질의를 통해 IP 주소를 알아내거나 캐시한다.
       
DNS 동작과정 이미지
notion image
 
 
[4. Browser가 서버와 TCP connection을 한다.]
브라우저가 올바른 IP 주소를 받게 되면 서버와 connection을 빌드하게 된다. 브라우저는 인터넷 프로토콜을 사용해서 서버와 연결이 된다. 인터넷 프로토콜의 종류는 여러가지가 있지만, 웹 사이트의 HTTP 요청의 경우 일반적으로 TCP를 사용한다.
 
TCP/IP three-way handshake 라는 프로세스를 통해서 클라이언트와 서버간 connection이 이뤄진다. SYN과 ACK 메시지를 가지고 3번의 프로세스를 거친다.
  1. 클라이언트 머신이 SYN 패킷을 서버에 보내고 connection을 열어달라고 물어본다
  1. 서버가 새로운 connection을 시작할 수 있는 포트가 있다면 SYN/ACK 패킷으로 대답을 한다
  1. 클라이언트는 SYN/ACK 패킷을 서버로부터 받으면 서버에게 ACK 패킷을 보낸다.
Client > Server : TCP SYNServer > Client : TCP SYN ACKC lient > Server : TCP ACK
 
[5. Browser가 웹 서버에 HTTP 요청을 한다.]
클라이언트는 GET 요청을 통해 서버에게 www.naver.com 웹 페이지를 요구한다.
  • 만약 자격 증명(credentials)을 입력하거나 form을 제출하는 경우 POST 요청을 사용할 수 있다.
  • 이 요청에는 브라우저 식별(User-Agent 헤더), 수락할 요청 유형(Accept 헤더) 및 추가 요청을 위해 TCP 연결을 유지하라는 연결 헤더와 같은 추가 정보도 포함된다. 또한 브라우저가 이 도메인에 대해 저장한 쿠키에서 가져온 정보도 전달한다.
notion image
 
[6. 서버가 요청을 처리하고 response를 생성한다]
서버는 웹서버를 가지고 있다(ex- Apache, IIS...). 이는 브라우저로부터 요청을 받고 request handler한테 요청을 전달해서 요청을 읽고 생성하는 역할을 한다. 그런 다음 응답을 특정 포맷(JSON, XML, HTML 등) 으로 작성한다.
request handler
  • 요청, 요청의 헤더 및 쿠키를 읽고 필요한 경우 서버의 정보를 업데이트하는 프로그램이다(NET, PHP, Ruby, ASP 등으로 작성됨)
 
[7. 서버가 HTTP response를 보낸다]
서버 응답에는 웹 페이지와 함께 status code, content-encoding, 설정할 쿠키 등이 포함된다.
서버의 HTTP 응답 예시
서버의 HTTP 응답 예시
 
HTTP 응답 결과
  • 2XX (Success):
    • 200 (OK): 서버가 클라이언트 요청을 성공적으로 처리했다는 의미이다.
    • 204 (No Content): 요청은 성공했는데, 돌려줄 resourse는 없을 때
  • 3XX (redirect): 요청 완료를 위해 추가 작업 조치가 필요하다는 의미이다.
    • 301: 검색엔진에 해당 컨텐츠의 URL이 영구적으로 변경되었음을 알림
    • 302: 검색엔진에 해당 컨텐츠의 URL이 임시적으로 변경되었을을 알림
  • 4XX (Client Error): 클라이언트의 요청이 유효하지 않아 서버가 해당 요청을 수행하지 않았다는 의미이다.
    • 400 : 클라이언트 요청이 유효하지 않아 더 이상 작업을 진행하지 않는 경우
    • 401 (Unauthorized): 클라이언트가 권한이 없기 때문에 작업을 진행할 수 없는 경우
    • 403 (Forbidden): 접근이 거부됨을 알림
    • 404 (Not Found): 해당 요청에 대한 resourse가 없음을 알림
  • 500 (Server Error)
    • 503 (Unavailavle): 현재 과부화 혹은 점검 중으로 사용불가함을 알림
 
 
[8. Browser가 HTML content를 보여준다]
  • 브라우저 렌더링으로 고고
 
출처
velog.io
https://velog.io/@khy226/%EB%B8%8C%EB%9D%BC%EC%9A%B0%EC%A0%80%EC%97%90-url%EC%9D%84-%EC%9E%85%EB%A0%A5%ED%95%98%EB%A9%B4-%EC%96%B4%EB%96%A4%EC%9D%BC%EC%9D%B4-%EB%B2%8C%EC%96%B4%EC%A7%88%EA%B9%8C
DNS란? (도메인 네임 시스템 개념부터 작동 방식까지) - 하나몬
이 게시물의 중요 포인트 DNS(도메인 네임 시스템)이 사람이 읽을 수 있는 도메인 이름(www.hanamon.kr)을 IP 주소로 변환하는 시스템이라는 것은 쉽게 알 수 있습니다. 이번 글에서는 이렇게 도메인 주소를 IP 주소로 변환할 수 있게 하는 인프라가 어떻게 구성 되어있고 실제로 어떤 기계들이 어떤 과정으로 동작 하는지 알아보겠습니다.
DNS란? (도메인 네임 시스템 개념부터 작동 방식까지) - 하나몬
https://hanamon.kr/dns%EB%9E%80-%EB%8F%84%EB%A9%94%EC%9D%B8-%EB%84%A4%EC%9E%84-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EA%B0%9C%EB%85%90%EB%B6%80%ED%84%B0-%EC%9E%91%EB%8F%99-%EB%B0%A9%EC%8B%9D%EA%B9%8C%EC%A7%80/
DNS란? (도메인 네임 시스템 개념부터 작동 방식까지) - 하나몬
[번역] Browser에 www.google.com을 검색하면 어떤 일이 일어날까?
개발자라면 인터넷이 어떻게 작동을 하고 정보들이 어떻게 주고 받아지는지 기본적으로 이해하는 것이 필요하다고 생각해서 공부할 겸 미디움 블로그를 번역했다. ** 내용 조금 수정 및 추가한 부분 있음 검색할 것이 있어서 www.google.com 에 접속을 하려고 할 때 웹페이지가 어떻게 불러와지는지 순서대로 설명을 하려고 한다. DNS(Doman Name System)은 URL들의 이름과 IP주소를 저장하고 있는 데이터베이스이다.
[번역] Browser에 www.google.com을 검색하면 어떤 일이 일어날까?
https://devjin-blog.com/what-happen-browser-search/
[번역] Browser에 www.google.com을 검색하면 어떤 일이 일어날까?