1. DNS 조회
브라우저는 먼저 DNS(Domain Name System) 서버에 www.google.com 의 IP 주소를 요청한다. 이 과정에서 브라우저 캐시를 먼저 확인하고, 운영체제의 호스트 파일을 확인한다. 그리고 나서 ISP의 DNS 서버에 질의하게 된다.
2. TCP 연결 수립
IP 주소를 얻은 후, 브라우저는 해당 IP 주소로 TCP 연결을 시도한다. 이 과정에서 3-way handshake가 이뤄진다.
- 클라이언트가 SYN 패킷을 보낸다.
- 서버가 SYN_ACK 로 응답한다.
- 클라이언트가 ACK를 보내 연결을 확립한다.
3. HTTP 요청 전송
TCP 연결이 수립되면, 브라우저는 HTTP GET 요청을 서버로 전송한다.
이 요청에는 다음과 같은 정보가 포함된다.
- 요청 메서드 (GET)
- 요청 경로 ("/")
- HTTP 버전
- 호스트 헤더
- 사용자 에이전트 등의 추가 헤더
4. 서버의 요청 처리
Google의 웹 서버는 HTTTP 요청을 받아 처리한다.
- 요청을 파싱하여 필요한 리소스를 식별한다.
- 필요한 경우 데이터베이스 쿼리를 실행한다.
- 동적 컨텐츠를 생성한다.
- Response Header 와 Response Body를 구성한다.
5. HTTP 응답 전송
서버는 처리된 결과를 HTTP 응답으로 클라이언트에게 전송한다.
응답에는 다음과 같은 정보가 포함된다.
- 상태 코드 (예: 200 OK)
- 응답 헤더 (Content-Type, Content-Length 등)
- HTML 문서나 다른 리소스
6. 연결 종료 또는 유지
HTTP/1.1 부터는 Keep-Alive 헤더를 통해 연결을 유지할 수 있다.
그렇지 않으면 서버나 클라이언트가 연결을 종료한다.
References
https://www.maeil-mail.kr/question/89
https://sohyeonnn.tistory.com/27
https://www.youtube.com/watch?v=GAyZ_QgYYYo
'백엔드 면접 질문' 카테고리의 다른 글
데이터베이스 커넥션 풀(Connection Pool)을 사용하지 않으면 어떤 문제가 발생할 수 있나요? (0) | 2024.12.26 |
---|---|
동일성과 동등성에 대해서 설명해주세요. (0) | 2024.12.17 |
equals와 hashCode는 왜 함께 재정의 해야 하나요? (0) | 2024.12.16 |
JPA에서 ID 생성 전략에 대해서 설명해주세요. (1) | 2024.12.07 |
얕은 복사와 깊은 복사에 대해서 설명해주세요. (0) | 2024.12.04 |