'www.google.com'에 접속하는 과정

기린이·2023년 8월 3일
0

CS 지식

목록 보기
14/15

우리가 구글에 접속할 때 어떤 과정이 일어나는 걸까?

1. DNS 서버에 요청하여 IP주소 찾기

1-1. 캐싱된 DNS기록에서 해당 도메인의 IP주소 있는지 확인

있다면 해당 ip주소를 이용.

1-2. 없다면 DNS서버에 도메인 주소 요청.

DNS서버는 계층적인 구조를 갖고 있기에 루트 DNS서버 -> TLD DNS서버 -> Sub DNS서버 순으로 최종적인 google.com의 ip주소를 찾게된다.

실제 ip주소 대신 사용하기 편리한 도메인 이름을 통해 호스트에 접속하게 되는데, 이때 도메인 이름과 매치되는 ip주소를 찾고 이에 접속하게 됩니다. 이러한 시스템을 domain name system DNS라고 합니다.
도메인의 수가 너무 많기에 도메인을 관리하기 위해 도메인서버를 계층화하여 반복적으로 요청하고 응답하며 IP주소를 찾게 됩니다. DNS 서버는 루트 DNS서버 / TLD DNS 서버 / Sub dns 서버로 나뉘어있습니다.
예를 들어 naver.com 에 접속한다면 root ns에선 com을 관리하는 TLD NS서버의 주소를 알려주고, TLD NS에서는 naver.com 도메인이 관리되고 있는 sub ns의 서버를 알려주어 최종적으로 sub ns에서 ip주소를 얻게됩니다.

2. 브라우저가 해당 ip주소로 html문서 요청

[응용계층]
html프로토콜로 해당 ip 주소로 request(GET)를 보낸다.

[전송계층]
웹서버와 TCP 프로토콜로 연결하여 GET요청을 보내 웹페이지를 요구한다.

TCP프로토콜
인터넷상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜

  • 연결형 서비스를 지원
  • 3-way handshaking으로 전송의 신뢰성을 보장

3-way handshake를 통해 수신자가 받을 준비가 되어있는지, 송신자가 보낼 준비가 되어있는지 확인한 후 데이터를 안전하게 보낸다.


*SYN은 'synchronize sequence numbers', 그리고 ACK는'acknowledgment' 의 약자이다.

데이터를 다 받은 이후엔 4-way handshaking을 통해 연결을 종료한다.

3. WAS(Web Application Server) 작업 처리

WAS에서 페이지에서 요구되는 동적인 컨텐츠와 필요한 데이터를 DB로부터 받아 처리하고, 이를 웹서버에 보낸다.

웹서버 : 정적인 컨텐츠(HTML, CSS, IMAGE 등)를 요청받아 처리
WAS : 동적인 컨텐츠(JSP, ASP, PHP 등)를 요청받아 처리

4. 웹서버에서 브라우저에 html 문서 결과를 전달한다.

서버의 http response에는 status code가 포함된다.

HTTP의 response는 3부분으로 구성되는데 Status Line, Header, Body 이다.
이때 Status Line의 Status Code는 총 5가지의 종류가 있는데,
1xx ▶️ 정보만 담긴 메세지
2xx ▶️ response 성공
3xx ▶️ 클라이언트를 다른 URL로 리다이렉트
4xx ▶️ 클라이언트 측에서 에러 발생
5xx ▶️ 서버 측에서 에러 발생

5. 브라우저가 받은 html내용을 화면에 출력✨

참고자료

질문

Q. 정적, 동적 개념 공부해야함.
Q. tcp/ip로 연결할 때 3-way handshaking은 통신 준비만 하는 건지? 데이터까지(html문서)까지 보내는건지?
3-way handshaking으로 요청받고 was에서 처리하고 데이터보내고 4-way handshaking으로 연결 종료하는 과정이 맞는지?
Q. http는 응용 계층 프로토콜이고, tcp는 전송계층 프로토콜, ip는 네트워크 계층 프로토콜.

네트워크계층 ip - 경로를 선택하고 주소를 정하고 경로에 따라 패킷을 전달
전송계층 tcp - 전송계층의 경우 양 끝단(End to End)의 사용자들이 데이터를 주고 받을 수 있게 하는 계층
응용계층 http - 응용 계층은 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행

=>
서버-클라이언트 동작할때 아래와 같이 되는게 맞는지?

  • 응용계층에서는 http로 html문서를 요청하는 request GET요청을 보냄
  • 전송계층에서는 TCP로 연결 설정하고, 데이터(HTML파일) 주고 받음
  • 네트워크계층에선 DNS서버통해서 알아낸 IP주소 지정
profile
중요한 것은 속력이 아니라 방향성, 공부하며 메모를 남기는 공간입니다.

0개의 댓글