-
HTTP의 기본Computer Science/Computer Network 2022. 3. 31. 02:23728x90
HTTP(HyperText Transfer Protocol)
HTML 웹 문서뿐만 아니라 영상 파일, XML, JSON 등 거의 모든 형태의 데이터를 전송할 수 있는 통신 규약이며, 서버 간 데이터를 주고 받을 때도 대부분 HTTP를 사용한다.
HTTP/1.1 버전이 가장 많이 사용되고 중요한 버전이다. 여러 메서드나 헤더가 있고, TCP 기반 프로토콜이다.
신뢰성과 관계없이 빠른 통신을 하기위해 HTTP/3 버전에서는 UDP 기반의 통신 규약을 따르고 있다.
HTTP 특징
- 클라이언트, 서버 구조request, response 구조이며 클라이언트는 서버에 요청을 보내고 응답을 대기한다. 이후 서버가 요청에 대한
결과를 만들어서 응답한다.클라이언트(UI, 인터페이스)와 서버(비즈니스 로직, 아키텍처) 각각의 역할을 명확하게 분리시켜 독립적으로 작업을 진행할 수 있다.
- Stateless 프로토콜
Stateful은 고객과 점원으로 비유를 했을 때 상태 정보가 유지되기에 중간에 다른 점원으로 바뀌면 해당 점원은 고객의 요청 상태를 모르므로 미리 알려줘야 한다.반면, Stateless는 중간에 다른 점원으로 바뀌어도 고객의 요청에 대한 정보를 같이 넘기기에 상관없다. 즉, 클라이언트 요청이 증가해도 서버를 대거 투입할 수 있다. 또한 응답 서버를 쉽게 바꿀 수 있어 무한한 서버를 증설할 수 있다.
실무 작업에 있어 무상태로 설계할 수 있는 경우(로그인이 필요없는 단순 서비스 소개 화면)도 있고, 없는 경우(로그인 기능)도 있다는 한계가 있다. 로그인한 사용자의 경우 로그인했다는 상태를 서버에 유지시켜야 하고 이때 일반적으로 브라우저 쿠키와 서버 세션 등을 사용해 상태를 유지한다. 단, 상태 유지는 최소한만 사용해야 한다.
- 비연결성
연결을 유지하는 경우 TCP/IP를 연결하고 서버는 연결을 계속 유지 해야되므로 서버 자원 소모의 문제가 있다.연결을 유지하지 않는 모델은 처음 연결하고 응답을 받으면 연결을 끊어버리기에 요청을 주고 받을 때만 동작하므로 최소한의 자원을 유지할 수 있다.
HTTP 기본이 비연결 모델이며 빠른 속도로 응답한다. 서비스를 제공해야 하는 클라이언트가 많아도 실제 서버에서 동시에 처리하는 요청은 매우 작다. 따라서, 서버 자원을 매우 효율적으로 사용할 수 있다.
비연결성의 한계와 극복
한계점 : TCP/IP 연결을 새로 맺어야 해서 3way handshake 시간이 추가되고, 사이트를 요청하면 HTML 뿐만 아니라 js, css 등 수많은 자원이 함께 다운로드 된다.
극복 : HTTP 지속 연결로 문제를 해결하고 /2, /3 버전에서 최적화가 이뤄지고 있다.
- HTTP 메시지
메시지 구조는 start-line, header, empty line, message body 로 이뤄져있다. HTTP 메시지는 단순하고 확장 가능하다.
start-line : request-line에는 메서드(GET, POST 등)가 포함되어 있고, 뒤에 요청 대상이나 쿼리 파라미터가 붙어있다. 요청 대상은 절대 경로로 시작하고 필요시 쿼리가 붙어있다. 끝에는 HTTP version이 명시돼있다.반면, 응답 메시지에 해당하는 status-line에는 버전과 함께 요청 성공 또는 실패를 나타내는 상태 코드가 나와있고 이에 대한 이유 문구가 붙어있다.
header : HTTP 전송에 필요한 모든 부가정보(클라이언트 정보, 캐시 관리 정보 등)이 있어야 하며 표준 헤더가 많다. 필요시 임의의 헤더 추가가 가능하다.
message body : 실제 전송할 데이터가 들어있으며 HTML, 이미지, 영상 등 바이트로 표현할 수 있는 모든 데이터를 전송할 수 있다.728x90'Computer Science > Computer Network' 카테고리의 다른 글
웹 애플리케이션의 이해 (0) 2022.04.12 HTTP의 메소드 (0) 2022.04.06 URI와 웹 브라우저의 요청 및 응답 (0) 2022.03.23 인터넷 네트워크 (0) 2022.03.22