OSI 7계층의 7계층인 응용계층에서 HTTP, HTTPS 프로토콜을 통해 통신을 한다. 그렇다면 한번쯤은 들어봤을 이 프로토콜에 대해서 알아보자!
HTTP 란?
Hyper Text Transfer Protocol의 약자로, 웹 브라우저와 웹 서버가 HTML로 작성된 웹 페이지나 동영상, 음성 파일 등등을 주고받기 위한 프로토콜(통신규약)이다. 즉, 서버/클라이언트 모델을 따른다.
HTTP 통신 - 메시지
HTTP 메시지는 서버와 클라이언트 간에 통신 규약(HTTP)에 맞게 데이터가 교환되는 방식을 뜻한다. 메시지 타입은 두 가지가 있다.
요청(request)는 클라이언트가 서버에 요청 메시지를 보내는 것
응답(response)는 요청에 대한 서버의 답변
즉, 클라이언트가 서버에 요청 메시지를 보내고, 이에 대해 서버가 응답 메시지를 반환한다.
HTTP 요청 메시지 (request)
1. Start line 요청 내용
GET http://google.com HTTP/1.1
start line은 세 가지 정보를 담고 있다. 위는 한 예시이다.
1.1 요청 메서드 - GET http://google.com HTTP/1.1
1.2 URL - GET http://google.com HTTP/1.1
1.3 HTTP 버전 - GET http://google.com HTTP/1.1
클라이언트가 서버에게 사용자(클라이언트) 요청의 목적/ 종류를 알리는 수단이다.
주로 사용하는 메서드는 다음과 같다.
HTTP Method | 목적 및 설명 |
GET | 요청받은 URI의 정보를 받아올 때 사용 (READ) |
POST | 요청된 자원을 생성(CREATE) |
PUT | POST와 비슷하지만 기존에 있는 정보를 (UPDATE)할 때 주로 사용 |
DELETE | 특정 리소스를 삭제할 때 사용 (DELETE) |
OPTIONS | 웹 서버에서 지원되는 메소드의 종류를 확인할 경우 사용 |
2. 헤더
요청 메시지 헤더에는 메시지의 제어 정보, 메시지 본문에 저장한 데이터 정보(데이터 종류나 문자 코드) 등이 텍스트 형식으로 저장된다.
헤더의 문자열은 HOST : http://www.google.com 처럼 필드 이름 : 필드 내용 쌍으로 구성한 필드의 집합으로 구성되어 있다.
3. 본문
요청 메시지 본문에는 보내는 데이터가 저장된다. 데이터 형식은 요청 헤더에 지정된 타입을 따른다.
HTTP 응답 메시지 (response)
1. Start line 응답 내용
HTTP/1.1 200 OK
1.1 HTTP 버전 - HTTP/1.1 200 OK
1.2 상태 코드 - HTTP/1.1 200 OK
1.3 보충 메시지 - HTTP1.1 200 OK
상태 코드는 요청이 성공적으로 완료되었는지, 아니라면 어떤 이유로 인해 거절이 되었는지 등 알려준다.
100~500까지의 응답 코드가 있다.
- 1XX - 조건부 응답
지금까지의 상태가 괜찮으며 클라이언트가 계속해서 요청을 하거나 이미 요청을 완료한 경우에는 무시해도 되는 것을 알려준다. - 2XX
요청한 동작을 수신하여 이해했고, 그 요청을 성공적으로 처리했음을 나타낸다. - 3XX
리다이렉션 완료로, 클라이언트는 요청을 마치기 위해 추가 동작을 해야 한다. - 4XX - 요청 오류
클라이언트에게 오류가 있음을 나타낸다. - 5XX - 서버 오류
서버가 유효한 요청을 명백하게 수행하지 않을 때를 나타낸다. HTTP는 클라이언트의 요청에 항상 응답해야 한다.
HTTP 특징
1. stateless (무상태성)
HTTP는 특정 상태를 담고 있지 않으며, 이전 요청이나 다음 요청을 기억하지 않음
상태를 기억하는 방법
1. 쿠키
2. 세션
3. 토큰을 사용하는 OAuth, JWT
2. connectionless (비연결성)
클라이언트와 서버가 한 번 연결을 맺은 후, 클 라이언트 요청에 대해 서버가 응답을 마치면 맺었던 연결을 끊어 버리는 성질
+
HTTP 프로토콜은 전송 계층 프로토콜로 TCP를 사용하고 네트워크 계층 프로토콜로 IP를 사용하는 것이 일반적이다.
이 두 계층을 합쳐서 TCP/IP라는 이름으로 부르고, TCP/IP에서는 IP주소를 사용해서 통신할 컴퓨터를 결정한다. 그리고 포트 번호를 사용해서 그 컴퓨터의 어떤 프로그램과 통신할지를 결정한다. HTTP에서는 기본적으로 80번 포트를 사용한다.
'Computer Science > Network' 카테고리의 다른 글
[Network] 웹페이지가 사용자에게 보여지는 과정 (feat. Google) (0) | 2021.06.14 |
---|---|
[Network] 네트워크 통신 (0) | 2021.06.14 |
댓글