웹사이트에 접속하는 과정을 간단하게 정리하면 다음과 같다.
URL 입력 => 브라우저가 URL 해석 => DNS 서버를 통해 도메인 이름을 IP주소로 변경 => HTTP or HTTPS 프로토콜 방식으로 요청 및 응답 => 브라우저가 서버에게서 받은 자료를 바탕으로 렌더링 => 사용자에게 화면 제공
1. URL 입력 => 브라우저 URL 해석
www.google.com 을 입력하면 입력한 URL 주소 중, 도메인 이름에 해당하는 google.com을 DNS 서버에 검색하는데 검색하기 전에 캐싱된 DNS 기록들을 먼저 확인한다.
만약에 해당 도메인 이름에 맞는 IP주소가 존재하면 DNS서버에 해당 도메인 이름에 해당하는 IP주소를 요청하지 않고 캐싱된 IP주소를 바로 반환한다.
일치하는 IP주소가 존재하지 않는다면 DNS 서버요청으로 넘어간다.
2. DNS 서버를 통해 도메인 이름을 IP주소로 변경
DNS 서버가 호스팅하고 있는 서버의 IP주소를 찾기 위해 DNS query를 전달
DNS query는 현재 DNS서버에 원하는 IP주소가 존재하지 않으면 다른 DNS 서버를 방문하는 과정을 원하는 IP주소를 찾을 때까지 반복한다.
3. 서버와 TCP 소켓 연결
이제 대상 서버와 통신하기 위해 TCP 소켓 연결을 진행한다. 소켓 연결은 3-way-handshake라는 과정을 통해 이루어진다. 핸드셰이크라는 말 뜻처럼 상대방과 서로 연결되었다는 것을 확인하겠다는 의미이다.
1단계(SYN): 첫 번째 단계에서 클라이언트는 서버와 연결을 설정하기 원하므로 SYN(동기화 시퀀스 번호)이 포함된 세그먼트를 서버에 전송하여 클라이언트가 통신을 시작할 가능성이 있고 어떤 시퀀스로 통신을 시작할 것인지 서버에 알린다.
2단계(SYN+ACK): 서버는 SYN-ACK 신호 비트가 설정된 클라이언트 요청에 응답한다. ACK는 수신한 세그먼트의 응답을 나타내고 SYN은 세그먼틀르 시작할 가능성이 있는 시퀀스 번호를 나타낸다.
3단계(ACK): 마지막 부분에서 클라이언트는 서버의 응답을 확인하고 둘 다 실제 데이터 전송을 시작할 안정적인 연결을 설정한다.
4. 브라우저가 서버에게서 받은 자료를 바탕으로 렌더링
서버에서 응답한 내용들은 HTML, CSS, Javascript 등으로 이루어져 있다. 브라우저는 이를 해석하여 그려준다.
참고
https://doqtqu.tistory.com/313
https://www.youtube.com/watch?v=GAyZ_QgYYYo&t=425s
'Computer Science' 카테고리의 다른 글
[네트워크 전송계층] UDP/TCP 특징 차이 (0) | 2023.01.11 |
---|---|
TCP 프로토콜 연결 / 종료 과정 (0) | 2023.01.10 |
디자인 패턴(Design Pattern)이란? (0) | 2023.01.08 |
컴파일러란? (feat. 인터프리터) (0) | 2023.01.06 |
세션 vs 토큰(JWT) 인증의 차이 (0) | 2023.01.06 |