웹 브라우저에 렌더링 되는 과정보다는 통신을 하며 데이터를 받아오는 과정을 중점으로 공부를 깊게 하고자 글을 작성하였다.
전체적인 과정은 DNS서버 👉 TCP/IP 👉 렌더링 과정으로 이루어 진다.
렌더링 부분을 알고 싶다면 👉 여기를 클릭
기존 컴퓨터들이 고유의 Ip를 갖고 있다는 것은 누구나 아는 사실일 것이다. Ip주소를 기억하기란 어려운데, 인간이 쉽게 기억하기 위해 나온 것이 Domain Name System이다.
웹 브라우저는 DNS 서버에 검색하기 전에 캐싱된 DNS 기록들을 먼저 확인한다.
도메인 이름에 맞는 IP 주소가 존재하면, DNS 서버에 해당 도메인 이름에 해당하는 IP주소를 요청하지 않고 캐싱된 IP주소를 바로 반환하지만, 일치하는 IP주소가 존재하지 않는다면, 다음 과정인 DNS 서버 요청으로 넘어간다.
server
컴퓨터가 도메인 이름과 ip주소를 제출하면 등록
client
컴퓨터가 도메인 이름을 물어보면 해당 정보 전달
DHCP는 Dynamic Host Configuration Protocol의 약자이며 쉽게 말하면 자동 아이피 할당 프로토콜이다.
자신의 네트워크 안에 있는 클라이언트 컴퓨터가 부팅 될때 자동으로 IP주소, 서브넷 마스크, 게이트웨이, DNS서버주소를 할당해 주는 역할을 한다.
복잡한 IP설정을 자동으로 하기 때문에 효율적으로 사용하고 IP충돌 문제를 해결할 수 있지만, DHCP서버에 의존적이므로 DHCP서버가 다운되면 IP할당을 받을 수 없다.
등록자는 등록대행자를 통해 도메인 이름 / ip주소를 등록하고 소유권을 가진다.
등록자는 example.com NS(name server) a.iana-servers.net이라고 등록대행자를 통해 등록소에 전달한다.
authroitative name server에게 example.com A(address) 93.184.216.34 전달. 각 도메인서버 / 네임서버는 바로 이 record type(NS, A 등)을 가지고 기억하고 관리하는 것이다.
blog(sub).example(second-level).com(top-level).(root, 생략가능)
: A, NS 등 존재
: CNAME 또한 DNS record 중 하나 (canonical name record, 별명 같은 것)
A 즉 ip주소로 갈 수 있도록 (리다이렉팅처럼) 안내해줌
더 많은 타입을 보려면 👉 여기를 클릭
ISO에서 표준화 시킨 OSI 7 Layer는 TCP/IP 보다 점유율이 낮아 사실상 산업표준은 TCP/IP 5 Layer가 되었다.
TCP/IP는 업데이트되면서 Network Access Layer계층이 DataLink Layer, Physical Layer로 분리되면서 하위 4계층은 OSI 7 Layer와 동일한 계층을 이루게 되었다.
전달받은 IP주소를 이용하여 웹 브라우저는 웹 서버에게 해당 웹 사이트에 맞는 html문서를 요청한다.
해당 HTTP 요청 메세지는
TCP/IP 프로토콜을 사용하여 서버로 전송된다.
TCP는 전송 제어 프로토콜로 데이터의 전송을 제어하고 데이터를 어떻게 보낼 지, 어떻게 맞출 지 정한다.
IP의 특징인 비신뢰성과 비연결성으로 인해 IP 프로토콜 만으로는 통신을 할 수 없다. 그렇기에, 신뢰성과 연결성을 책임지는 TCP를 활용
하여 통신을 한다.
연결 및 데이터를 수신
A 클라이언트는 B 서버에 접속을 요청하는
SYN 패킷을 전송한다.
B 서버는 SYN 요청을 받고
A 클라이언트에게 요청을 수락한다는
SYN_ACK flag가 설정된 패킷을 전송한다.
A 클라이언트는 B 서버에게 ACK를 전송 후,
연결이 이루어지고 데이터가 오고 가게 된다.
연결의 종료
클라이언트가 연결을 종료하겠다는
FIN플래그를 전송한다.
서버는 확인메세지 ACK를 보낸 후,
자신의 통신이 끝날 때까지 기다린다.
서버의 통신이 끝났으면 연결이 종료 되었다고 클라이언트에 FIN 플래그를 전송한다.
클라이언트는 확인했다는 메세지 ACK를 보냅니다.
TIME_WAIT 과정
만약, Client에서 세션을 종료시킨 뒤 도착하는 패킷이 있다면 해당 패킷은 Drop되고 데이터는 유실되게 된다.
이러한 현상을 방지 하기 위해 Client는 Server로부터 FIN을 수신하더라도 일정시간동안 세션을 남겨놓고 잉여 패킷을 기다리는 TIME_WAIT과정을 마지막으로 거치게 된다.
웹 서버
정적인 파일(HTML, CSS, 이미지 파일)을 처리
WAS
동적인 파일(JS, TS)을 처리
웹 서버 혼자서 모든 로직 처리 및 데이터 관리를 하게되면 서버에 과부하가 일어날 가능성이 높다.
그렇기에 서버의 일을 돕는 조력자 역할을 하는 것이 WAS이다.
WAS는 사용자의 컴퓨터나 장치에 웹 어플리케이션을 수행해주는 미들웨어이다.
특정 데이터 요청을 브라우저로부터 받게되면, 웹 서버는 페이지의 로직이나 데이터베이스의 연동을 위해 WAS에게 이들의 처리를 요청한다.
WAS는 해당 요청을 통해 동적인 페이지 처리를 담당하고, DB에서 필요한 데이터 정보를 받아 그에 맞는 파일을 생성한다.
WAS에서의 작업 처리 결과들을 웹 서버로 전송하고, 웹 서버는 웹 브라우저에게 html 문서 결과를 전달한다.
1xx : 정보가 담긴 메세지
2xx : response 성공
3xx : 클라이언트를 다른 URL로 리다이렉트
4xx : 클라이언트 측에서 에러 발생
5xx : 서버 측에서 에러 발생
참고자료