프론트엔드 취업을 위한 면접 질문 리스트에 빠지지 않는 중요도 ⭐️x5개인 질문이자,
질문을 받았을 때 쉽게 대답할 수 없는 내용이기에 이번 기회에 정리해 보고자 합니다.
💻 관련 용어 정리
- URL(uniform resource locator)
url이란 인터넷상의 고유한 리소스를 가리키는 것으로, 리소스에는 html페이지 / css 문서 / 이미지 등이 있습니다.
url은 서버의 리소스를 요청할 때 사용되므로 url을 통해 인터넷에 존재하는 모든 리소스를 요청할 수 있습니다.
스키마 + 도메인 이름 + 포트 번호 + 파일 경로 + 파라미터 + 그리고 앵커로 이루어져 있습니다.
- HTTP(hyperText transfer protocol)
HTTP는 클라이언트와 서버 사이에서 html과 같은 하이퍼미디어 문서를 전송하기 위한 요청 및 응답 프로토콜입니다.
TCP라는 프로토콜을 기반으로 하고 있으며, 요청에 대한 데이터인 상태를 따로 저장하지 않는 무상태 프로토콜입니다.
- 파싱(Parsing)
파싱은 하나의 프로그램을 런타임 환경이 실제로 실행할 수 있는 내부 포맷으로 분석하고 변환하는 것을 의미합니다.
쉽게 말해 웹 페이지에서 원하는 데이터를 추출하여 가공하기 쉬운 상태로 바꾸는 것으로,
이 역할을 하는 함수나 프로그램을 파서(parser)라고 하며 이 과정을 파싱(parsing)이라고 합니다.
예를 들어, 브라우저 내에 있는 자바스크립트 엔진이 실행할 수 있는 형식으로 변환하는 작업이라고 할 수 있습니다.
💻 전체 과정
Q. 주소창에 URL(ex-http://www.google.com, http://www.naver.com)을 입력하면 무슨 일이 일어날까요?
검색 시점부터 컨텐츠가 화면에 렌더링 되는 시점까지 발생하는 일련의 과정을 설명해주세요.
- 사용자가 주소창에 원하는 url(이하 https://www.google.com)을 입력합니다.
- 브라우저는 입력된 url을 'https://'에 해당하는 '프로토콜(스키마)' 부분과 'www.google.com'에 해당하는 '도메인 이름' 부분으로 구분합니다.
- 브라우저는 도메인 이름을 대응하는 IP 주소로 변환하기 위해 DNS(domain name system) 서버에게 IP 주소 요청을 보냅니다.
- DNS 서버는 해당 도메인에 대한 IP 주소를 응답으로 반환합니다.
- 브라우저는 http 프로토콜을 사용한 요청 메시지를 생성하고, TCP/IP 프로토콜을 사용한 연결을 통해
- 받은 IP 주소로 서버에게 원하는 요청을 전송합니다.
- 서버는 받은 요청사항을 처리한 뒤, 브라우저에게 http 응답 메시지를 반환합니다.
- 브라우저는 응답으로 받은 html 문서를 파싱(parsing)하여 최종적으로 컨텐츠를 화면에 렌더링 합니다.
자세한 설명은 MDN 공식 문서를 참고해주세요
💻 도메인 이름을 IP 주소로 변환하는 이유
먼저 도메인 이름을 사용하는 이유는 무엇일까요?
사용자 입장에서 모든 서비스는 사용하기 편리해야 합니다.
만약 네 파트의 숫자로 이루어진 IP 주소를 사용하여 브라우저에 접근해야 한다면, 사용자는 모든 브라우저의 IP 주소를 기억하고 찾아가야 합니다.
따라서 'http://www.google.com'과 같이, 사람이 볼 때 직관적이고 기억하기 쉬운 도메인 이름을 사용하게 되었습니다.
또 다른 이유로는 서버의 IP 주소는 서버 이전 등과 같은 이유로 인해 변경될 수 있습니다.
이때 브라우저별로 고유한 도메인 이름을 사용하면, 사용자는 이러한 변경사항을 신경 쓰지 않고 항상 동일한 도메인 이름을 통해 같은 브라우저에 접속할 수 있습니다.
그렇다면 사용자에게 편리한 도메인 이름을 왜 다시 IP 주소로 변환하는 것일까요?
사람과 달리 컴퓨터와 네트워크 장치들은 서로 간의 통신을 위해 숫자로 된 IP 주소를 사용합니다.
도메인 이름이 사람이 사용하기 편한 방식이었다면, 실제 서버 통신에 필요한 방식은 IP 주소인 것입니다.
따라서 사람과 컴퓨터 사이에서 서로 대응되는 도메인 주소와 IP 주소를 변환시켜 주는 역할을 하는 것이 바로 domain name system, DNS입니다.
💻 TCP/IP 프로토콜
TCP/IP 프로토콜이란 대부분의 네트워크에서 통신을 가능하게 하는 기본 규약입니다.
TCP/IP는 하나의 프로토콜을 부르는 단어가 아닌 가장 많이 쓰는 프로토콜 두 개를 한 번에 통칭하는 단어입니다.
여러 종류의 인터넷 프로토콜이 있지만, 그중 TCP/IP가 가장 많이 쓰이기 때문에 TCP/IP 프로토콜로 함께 부릅니다.
먼저 IP란 패킷 통신 방식의 인터넷 프토토콜로, 데이터의 전송 경로를 결정하여 데이터 조각을 목적지까지 전송하는 역할을 합니다.
IP의 데이터는 패킷 혹은 데이터그램이라고 하는 덩어리로 나누어져 전송되는데,
이 과정에서 데이터가 제대로 전달되었는지, 데이터의 순서가 올바른지 보장하지 않는 특징이 있습니다.
따라서 IP의 특징은 비신뢰성(unreliability)과 비연결성(connectionlessness)입니다.
위와 같은 IP의 문제를 보완하기 위한 목적을 가진 프로토콜이 바로 TCP입니다.
데이터의 전송 여부와 전달되는 순서를 보장하기 위해서 정보 전달을 통제한다고 하여 전송 제어 프로토콜(Transmission Control Protocol)이라고 부릅니다.
따라서 TCP란 신뢰할 수 있는 데이터 전송을 위해 데이터를 순서대로 오류 없이 도착하도록 보장합니다.
TCP는 데이터의 안정성을 위해 '3-way handshake'라는 방식을 사용하는데, 이는 데이터를 보내기 전에
- 상대가 통신할 준비가 되었는지 묻고
- 통신이 가능하다는 응답을 받으면
- 해당 응답을 잘 받았다는 메시지를 보내는 식으로
총 3번의 신호를 주고받아 서로의 상태를 확인한 뒤에 본격적인 통신을 수행합니다.
읽어주셔서 감사합니다:)