공대생 정리노트
HTTP - Mozilla document 요약 본문
참고자료
https://developer.mozilla.org/ko/docs/Web/HTTP/Overview
What is HTTP?
HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 클라이언트-서버 프로토콜.
클라이언트-서버 프로토콜은 수신자 측(보통 웹 브라우저)에 의해 요청이 초기화되는 프로토콜을 말한다.
request -> 브라우저인 클라이언트에 의해 전송되는 메시지
response -> 서버에서 응답되는 메시지
TCP나 암호화된 TLS를 통해 전송된다.
(밑의 링크를 참조하면 HTTP/3는 UDP 기반의 프로토콜을 사용했다고 함)
https://evan-moon.github.io/2019/10/08/what-is-http3/
HTTP 기반 시스템의 구성 요소
보통 request는 browser에 의해 전송되지만 웹을 돌아다니는 로봇처럼 무엇이든 될 수 있다.
각각의 request는 서버로 보내지고, 서버는 요청을 처리하고 response를 제공.
이 사이에 게이트웨이 또는 캐시 역할을 하는 프록시 등이 존재.
실제로는 브라우저와 서버 사이에는 라우터나 모뎀 등이 있지만 웹의 계층적인 설계로 인하여 네트워크와 전송 계층 내로 숨겨진다.
클라이언트 : 사용자 에이전트
사용자 에이전트는 사용자를 대신하여 동작하는 모든 도구이며 보통 브라우저.
- 브라우저가 HTML 문서를 가지고 오기 위한 request 전송
- 파일을 구문 분석하여 실행해야 할 스크립트, 하위 리소스(ex 이미지, 비디오), CSS 등의 요청을 가져옴
- 가져온 리소스들 혼합
- 이후에는 실행된 스크립트에 따라 더 많은 리소스를 가져올 수도 있고 브라우저는 그에 따라 웹 페이지 갱신
웹 서버
논리적으로 단일 기계. 로드 밸런싱이나 캐시, DM 들의 정보를 얻고 문서를 생서하는 공유하는 서버들의 집합일 수도 있기 때문이다.
여러 개의 서버를 동일한 머신 위에서 호스팅 할 수 있음(동일한 IP 주소 공유)
프록시
웹 브라우저와 서버 사이의 머신들은 대부분 네트워크 or 물리 계층 등에서 동작하고 성능에 큰 영향을 주지만 HTTP 계층에서는 어떻게 동작하는지 보이지 않음.
어플리케이션 계층에서 동작하는 머신을 프록시라고 함.
기능으로는 다음과 같은 것들이 있음
- 캐싱 ex) browser 캐시
- 필터링 ex) 바이러스 백신 스캔, 유해 컨텐츠 차단
- 로드 밸런싱
- 인증
- 로깅
HTTP 특징
- 간단하다 -> 사람이 읽고 이해할 수 있다.
- 확장 가능하다. HTTP 헤더를 이용해 클라이언트와 서버가 합의만 하면 새로운 기능 추가 가능
- 상태 저장 X(stateless). 즉, 동일한 연결 상에서 연속해 전달된 요청은 연결고리가 없음. -> 쇼핑 바구니처럼 일관된 방식으로 사용자가 상호작용할 때 문제 생김. 이를 HTTP 쿠키를 이용해 해결. 상태가 있는 세션을 만들어줌
- 연결은 전송 계층에서 제어 -> HTTP 영역 밖. TCP와 UDP 중 TCP가 더 신뢰성이 있으므로 HTTP는 연결이 필수는 아니지만 TCP 표준에 의존(HTTP를 요청/응답으로 교환하기 전에 TCP 연결을 설정해야함).
HTTP 흐름
- TCP 연결을 연다.
- HTTP 메시지를 전송(HTTP는 인간이 읽을 수 있으나 HTTP/2에는 캡슐화되어 직접 읽기 불가능)
- 서버에 의해 전송된 응답을 읽어들인다.
- 연결을 닫거나 다른 요청 위해 재사용
HTTP 파이프라이닝이 활성화 된다면 첫번째 응답을 완전히 수신할 때까지 기다리지 않고 여러 요청을 보낼 수 있다.
다중 요청을 보내는 HTTP/2로 교체되는 추세
HTTP 메세지
요청 구성 요소
- Method : GET, POST 같은 동사 or OPTIONS나 HEAD 같은 명사
- 가져오려는 리소스 경로 : ex) 프로토콜(http://), 도메인, TCP 포트를 제거한 리소스 URL
- 헤더
- HTTP 프로토콜 버전 등
응답 구성 요소
- HTTP 프로토콜 버전
- 요청 성공 여부 + 상태 코드
- 상태 메시지
- 헤더 등
'로드맵 > 인터넷' 카테고리의 다른 글
HTTP 2, HTTP 3 (0) | 2021.05.16 |
---|---|
브라우저의 동작 원리 - Naver D2 요약 정리 (0) | 2020.08.23 |
인터넷, DNS (0) | 2020.08.21 |