forked from softeerbootcamp-7th/be-was
-
Notifications
You must be signed in to change notification settings - Fork 0
HTTP
Ikhwan Jang edited this page Jan 13, 2026
·
1 revision
2주차에는 HTTP에 대해서 알아보았다.
-
naver.com이라는 실제 서비스 도메인이 사용되었으므로, 네이버 같은 서비스 회사에서 자사 서비스에 접속하기까지 벌어지는 과정을 설명해보라는 의미다. - 웹브라우저에서 특정 서비스의 도메인네임을 입력하면 다음과 같은 과정이 벌어진다.
- 브라우저는 로컬 캐시에서 도메인 네임에 해당하는 IP주소가 있는지 확인한다.
로컬 캐시
DNS 정보가 캐싱되는 공간은 브라우저, OS가 있다고 한다.
- 만약 로컬 캐시에서 IP주소를 못 찾았다면, 우리는 ISP의 로컬 DNS 서버에 DNS 쿼리를 보낸다.
- DNS 쿼리 방식에는 재귀적 방식과 반복적 방식이 있다. 로컬 DNS 서버를 찾을 때는 재귀적 방식을 사용한다고 한다. (by 제미나이)
- 로컬 DNS 서버는 DNS 계층에게 DNS 질의를 보낸다. DNS 계층의 루트, TLD, Authorative 순으로 질의하여서 최종 IP를 얻고 로컬 DNS에 응답한다.
- DNS 쿼리 방식 중에서 반복적 질의를 수행한다고 한다. (by 제미나이)
- 로컬 DNS는 IP 주소를 캐싱하고 브라우저에 응답한다.
- 브라우저는 받은 IP주소를 통해서 웹서버에 HTTP로 접속한다. 이때 브라우저는 HTTP 접속을 위해서 TCP 3 way handshaking을 수행한다.
TCP 3 way handshaking
TCP 연결을 위해서 필요한 작업이다. 요청자가 SYN을 보내면, 수신자는 ACK + SYN을 보내고, 최종적으로 요청자가 ACK를 보내서 연결이 생성된다.
- 브라우저는 HTTP를 통해서 웹페이지를 요청해서 수신한다.
- 서버는 내부 로직을 돌리고 웹페이지를 응답한다.
- 브라우저는 웹페이지를 렌더링한다.
- 쉽게 말하면 도메인 네임을 IP주소로 변환하기 위한 시스템이다.
- 재귀적 쿼리와 반복적 쿼리가 있다.
- 재귀적 쿼리 : 클라이언트 - 로컬 DNS 서버 사이에 사용
- 반복적 쿼리 : 로컬 DNS 서버 - DNS 계층구조 사이에 사용
- HTTP의 4대 특징을 말하라고 한다면,
connectionless,stateless,request-response구조,client-server방식이라는 점이다.
connectionless
- 원래 초기 HTTP는 한번 요청에 대해서 응답을 하면 연결을 끊어버린다. 이렇게 하면 더 많은 요청을 처리할 수 있을 것이라 기대한 것이다.
그럼
Keep-Alive뭔가요?근데 HTTP 1.1 버전에서는
Keep-Alive헤더가 추가되어서 연결을 일정 타임아웃 동안 유지할 수 있게 했다. TCP 연결이라는 것이 오버헤드가 있는 편이라 연결하는 게 낫다면 유지하는 선택지를 제공한 것으로 보인다.