-
HTTP(1) 아주 대략적인 숲을 봐보자Develop/HTTP 2020. 6. 25. 14:58
HTTP가 무엇인가.. 이름부터 뜯어보면
H : hyper T : text T : Transfer P : protocol
하이퍼텍스트 , 즉 인터넷을 쓰면서 자주 접하는 글자에 링크 걸려있는 그거
그거의 전송 프로토콜 , 통신규약 , 통신하는 방식, 주고받는 방식에 대한 것이다.
웹에서 이뤄지는 모든 데이터 교환의 기초이자 클라이언트-서버 프로토콜이기도 하다.
특징?
클라이언트-서버 프로토콜은 수신자 측에 의해 요청이 초기화되는 프로토콜을 의마한다.
이는 보통 개별적인 메시지 교환으로 통신을 한다.클라이언트 -> 서버 : requests (요청) 메시지
서버 -> 클라이언트 : responses (응답) 메시지클라이언트와 서버 사이에는 실제로 더 많은 컴퓨터들이 존재하지만(라우터, 모뎀 등),
이들은 웹의 계층적 설계로 인해 네트워크, 전송 계층 내로 숨겨진다.
HTTP는 애플리케이션 계층의 최상층에 있다.
HTTP는 사람읽고 이해할 수 있어(?) 테스하기 쉽고(?) 간단하기 때문에 확장 가능하다.
HTTP는 상태를 저장하지 않는다.(Stateless) => HTTP 쿠키가 상태가 있는 세션을 만든다.
HTTP에서 메시지 전송은 대략적으로 다음 단계의 과정을 수행한다.
-
TCP연결을 연다. : TCP 연결은 요청을 보내거나 응답을 받는데에 사용된다.
클라이언트는 새 연결을 열거나, 기존 연결을 재사용하거나, 서버에 대한 여러 TCP연결을 열 수 있다. -
HTTP 메시지를 전송한다. HTTP 메시지는 인간이 읽을 수 있다. (HTTP/2 이전)
-
서버가 요청을 읽고 전송한 응답을 읽어들인다.
-
연결을 닫거나 다른 요청을 위해 재사용 한다.
-
HTTP 파이프라이닝이 활성화되면, 첫 응답을 완전히 수신할 때까지 기다리는게 아니라 여러 요청을 보낼 수 있다.
Requests(요청) 메시지 구성
출처: MDN -
Method
클라이언트가 수행하고자 하는 동작을 나타내며, 보통 리소스를 주고 받는데 사용(GET, POST)
GET, POST, OPTION, PUT 등이 있다. -
Path (가져오려는 리소스의 경로)
예를 들면 프로토콜 (http://), 도메인, 또는 TCP 포트 요소들을 제거한 리소스의 URL -
Version
프로토콜 버전 -
Headers
서버에 대한 추가 정보를 전할 헤더들
Reponses(응답) 메시지 구성
출처: MDN -
Version
프로토콜 버전 -
Status code
요청에 따른 성공/실패 여부 와 이유를 나타내는 상태 코드 -
Status message
상태 코드의 짧은 설명 -
Headers
요청 헤더와 비슷한 HTTP 헤더들 -
+ 선택 사항, 가져온 리소스가 포함된 본문
HTTP 기반 API
일반적으로 데이터 교환을 위해 사용되는 XMLHttpRequest API 가 있다.
XMLHttpRequest 보다 편하고 유연한 기능을 제공하는 Fetch API 가 있다.
대략적으로 훑자면 이런 느낌이다.
다음부터는 웹 개발에 있어 알아야 할? 필요한? 것들을 하나씩 정리해볼 생각이다.
이것은 네이버인가 HTTP인가 'Develop > HTTP' 카테고리의 다른 글
HTTP(3) CORS ?! 너는 정체가 무어냐 (0) 2020.06.26 HTTP(2) HTTP의 메시지에 대해 정리해보자! (0) 2020.06.26 HTTP를 정리해보자! (0) 2020.06.25 -