728x90
HTTP 특징
- 클라이언트 - 서버 구조
- 무상태 프로토콜(Stateless), 비연결성
- HTTP 메세지
- 단순함, 확장 가능
Stateless vs Stateful
Stateful : 상태유지, 꼭 필요한 정도만 사용해야한다, 데이터를 많이 보내기 때문
Stateless : 무상태
- 두개 중 HTTP는 Stateless하다.
- 서버가 클라이언트의 상태를 보존하지 않는다.
- 장점은 대체가능하니까 클라이언트의 요청이 많을 때, 서버가 장애가 났을때 Scale-out(수평확장)하는 서버의 확장성이 높다.
- 단점은 추가 데이터를 전송하면서 다소 지연된다.
실무:
로그인이 필요없는 단순한 서비스 소개 화면은 무상태(Stateless)
로그인은 상태 유지(Stateful), 쿠키와 서버세션 등을 사용해서 상태 유지(최소한만 사용한다)
비연결성
- 기본적으로 연결을 유지하지 않는 HTTP
- 일반적으로 초 단위 이하의 빠른 속도로 응답한다.
- 서버 자원을 효율적으로 사용가능하다.
- 수천명이 서비스를 사용해도 실제 서버에서 동시처리하는 요청값은 작다.
- 단점은 TCP/IP연결을 새로 맺어야 한다. 3-way-handshake 시간 추가되어서 응답속도가 걸릴 수 있다
- 지금은 HTTP 지속연결로 문제를 해결했다
- HTTP/2, HTTP/3 에서 더 많은 최적화를 함.
HTTP 메세지

- HTTP 요청 메세지(HTTP Request Message) : get, path, header, 공백라인(메세지가 없다면)
- HTTP 응답 메세지(HTTP Response Message) : http 버전(ex. HTTP/3), 요청(상태코드), header값, 공백라인, body(html)
HTTP 메세지 구조
- start-line : 시작라인
- header : 헤더
- empty line : 공백라인(CRLF)
- message body
1) start-line
시작라인 = Request-line (요청메세지) + status-line
1-1) Request-line :
HTTP메서드(get or post... ) : 서버가 수행해야할 동작 지정
요청대상(/쿼리스트링: ?) : 절대경로와 쿼리(다른 유형 의 경로지정도 있다)
HTTP Version
응답메세지 : staus-line = HTTP-version status-code reason-phrase CRLF
1-2) HTTP 상태 코드(status-line) : 요청성공, 실패
200 : 성공
400 : 클라이언트 요청 오류
500 : 서버 내부 오류
2) HTTP 헤더 :
header-field = field-name(ex. Host, 대소문자 구분없음): OWS field-value(대소문자 구분) OWS (OWS : 띄어쓰기 허용)
용도
- HTTP전송에 필요한 모든 부가 정보
- cache, 서버 애플리케이션 정보 , 요청클라이언트 정보 등 엄청 많음
- 표준헤더가 너무 많음
- 필요시 임의의 헤더추가 가능: 약속한 서버와 클라이언트만 이해
3) 공백라인:
말그대로 공백
4) HTTP 메세지 바디(HTTP Message Body):
- 실제 전송할 데이터, HTML 문서, 이미지 ,영상 JSON 등 byte로 표현할 수 있는 모든 데이터 전송 가능함
특징 정리
- HTTP 메세지에 모든 것을 전송한다!!
- HTTP 역사 HTTP/1.1 을 기준으로 학습
- 클라이언트 - 서버 구조
- 무상태프로토콜*스테이스리스(Stateless)
- HTTP 메세지
- 단순함, 확장 가능하다.
- 지금은 HTTP 시대!!
'Computer Science > 네트워크' 카테고리의 다른 글
[네트워크] OSI 7 Layer : 계층구조 더 쉽고 단순히 이해하기 (0) | 2023.03.28 |
---|---|
[네트워크] HTTP Method(GET, POST, PUT, DELETE, PATCH, HEAD)와 Method의 속성 (0) | 2022.03.10 |
[네트워크] DNS Round Robin Algorithm (0) | 2022.03.10 |
[네트워크] 하드웨어 환경, Server?, 서버 프로그램 구현은 어떻게 설계하는게 좋을까? (0) | 2022.03.04 |
[네트워크]HTTP is Everywhere! and Feature 1탄 (0) | 2022.03.03 |