- 비연결성
- 연결을 유지하는 모델
- 클라이언트1 -> 요청 -> 서버 -> 응답 이 때도 클라이언트 2, 클라이언트 3도 연결 유지됨
- 연결이 유지된 서버의 자원이 소모되는 것
- 단점 : 클라이언트 2,3이 놀고 있어도 계속 연결 유지해야함
- 연결 유지하지 않는 모델
- 클라이언트1이 요청 , 응답 받은 후 연결 끊어버리기
- 자원을 요청을 주고받을 때만 연결하고 끊어버려서 서버 연결에 필요한 자원 아낄 수 있음.
- 최소한의 자원으로 서버 유지 가능
- 비연결성
- HTTP는 기본이 연결을 유지하지 않는 모델
- 일반적으로 초 단위의 이하의 빠른 속도로 응답
- 1시간동안 수천명이 서비스를 사용해도 실제 서버에서 동시에 처리하는 요청은 수십개 이하로 매우 작음
- 서버 자원 매우 효율적으로 사용 가능
- 한계와 극복
- TCP/IP 연결을 새로 맺어야 하므로 3way handshake 시간 추가
- 웹 브라우저로 사이트를 요청하면 HTML 뿐만 아니라 자바스크립트, CSS, 추가 이미지 등 수 많은 자원이 함께 다운로드
- 지금은 HTTP 지속연결로 문제 해결
- HTTP/2 HTTP/3에서 더 많은 최적화
- HTTP 초기 - 연결, 종료 낭비
- HTTP 지속연결 => 요청을 보내고 응답 받고 연결 유지. 그 과정이 끝날 때까지 혹은 일정 시간동안은 연결 유지
- 스테이스리스를 기억하자
- 같은 시간에 딱 맞추어 발생하는 대용량 트래픽
- 예) 선착순 이벤트, 명절 KTX 예약, 학과 수업 등록 등
- HTTP 메시지
- HTTP는 요청 메시지와 응답 메시지의 구조가 약간 다름
- HTTP 메시지
- start-line 시작라인
- header 헤더
- empty line 공백라인
- message body 메시지 바디
- HTTP 요청 메시지도 메시지 바디를 가질 수 있음
- 요청메시지
- 시작라인
- 종류 : GET, POST, PUT, DELETE ...
- 서버가 수행해야 할 동작 지정
- GET : 리소스 조회
- POST : 요청 내역 처리
- 요청 대상
- absolute-path[?query] 절대경로[?쿼리]
- 절대경로 = "/" 로 시작하는 경로
- HTTP 버전
- 시작라인
- 응답메시지
- 시작라인
- HTTP버전
- HTTP 상태코드 : 요청 성공, 실패 표현
- 200 : 성공
- 400 : 클라이언트 요청 오류
- 500 : 서버 내부 오류
- 이유 문구 : 사람이 이해할 수 있는 짧은 상태 코드 설명 글
- HTTP 헤더
- header-field = header-name ":" OWS(띄어쓰기 허용) field value OWS
- field name은 대소문자 구분x
- HTTP 전송에 필요한 모든 부가 정보
- 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트의 정보, 서버 애플리케이션 정보, 캐시 관리 정보..
- 표준 헤더가 너무 많음
- 필요시 임의의 헤더도 추가 가능
- 메시지 바디
- 실제 전송할 데이터
- HTML 문서, 이미지 ,영상, JSON 등 byte로 표현할 수 있는 모든 데이터
- 시작라인
'Learning-log > Spring & JPA' 카테고리의 다른 글
(모든 개발자를 위한 HTTP 웹 기본 지식) 5-(1)~(2) HTTP메서드 활용 (0) | 2023.04.20 |
---|---|
(모든 개발자를 위한 HTTP 웹 기본 지식) 4-(1)~(5) HTTP메서드 (0) | 2023.04.19 |
(모든 개발자를 위한 HTTP 웹 기본 지식) 3-(1) 모든 것이 HTTP, (2) 클라이언트 서버 구조, (3) Stateful, Stateless (0) | 2023.04.18 |
(모든 개발자를 위한 HTTP 웹 기본 지식) 2-(1) URI, (2) 웹 브라우저 요청 흐름 (0) | 2023.04.17 |
(모든 개발자를 위한 HTTP 웹 기본 지식) 1-(3) TCP, UDP, (4) PORT (5) DNS (0) | 2023.04.16 |