HTTP
HyperText Transfer Protocol
html, text image 음성 영상 파일
json xml 거의 모든 형태의 데이터를 다 전송
서버간에 데이터를 주고 받을때도 대부분 http를 사용
-> http를 많이 쓴다!
HTTP 역사
0.9: 겟 메서드만 지원
..
1.1 -> 1997년 가장 중요한 버전 대부분의 기능이 다 들어있다
2랑 3는 성능개선에 초점이 맞춰져있다.
TCP: http 1.1 http 2 -> 3 way handshake 매카니즘이 빠른게 아님
3-way handshake란 뭘까?
TCP 3 Way Handshake는 TCP/IP 프로토콜을 기용해서 통신을 하는 응용프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴픁와 사전에 세션을 수립하는 과정을 의미한다.
Client > Server : TCP SYN
Server > Client : TCP SYN, ACK
Client > Server : TCP ACK
SYN: Snchronize sequence Numbers
ACK: Acknowledgement
이러한 절차는 TCP 접속을 성공적으로 하기위해 반드시 필요하다.
UDP : http/3 위의 단점을 극복 및 성능 최적화
2,3이 빠른속도로 퍼지고 있기는 함
http는
- 클라이언트 서버 구조
- 무상태 프로토콜(스테이트리스) 비연결성
- http 메세지
- 단순함 확장 가능
클라이언트 서버 구조
Request Response 구조
클라이언트는 서버에 요청을 보내고, 응답을 대기
서버가 요청한 대한 결과를 만들어서 응답
예전에는 이렇게 클라이언트와 서버가 분리되어있지 않았으나 분리 후 클라이언트와 서버가 독립적으로 동작
분리하면 좋은점은 UI를 어떻게 그럴지 무슨 화면은 고객들에게 보여줄지 클라이언트에 집중이 가능하고 비즈니스 로직이랑 데이터는 다 서버에다가 집어넣을 수 있다. 그러므로 클라이언트와 서버는 독립적으로 동작이 가능하다.
클라이언트와 서버가 기본적으로 Request를 보내면 서버가 Response를 보내는 형식으로 소통한다.
무상태 protocol 을 지향한다 (stateless)
서버가 클라이언트 상태를 보존하지 않는다
Stateful, Stateless 차이
이렇게 되면 서버1번하고만 소통해야하는데 만약 서버1이 죽어버리면 ?
클라이언틑 처음 부터 다시 결재를 진행해야하므로 이런 문제가 있다
Stateless는 애초에 요청할때부터 필요한 정보를 다 담아서 보냄
서버는 상태를 보관하지 않음 필요한거 응답만 함
좋은점은 서버1이 장애가 나면 클라이언트 서버2번으로 던져버림 중간에 아무 정보가 필요가 없다
필요한 정보를 다 보내기 때문.
stateless는 확장에 편리
stateless 실무 한계
모든것을 무상태로 설계 할 수 있는 경우도 있고 없는 경우도 있다
- 이벤트 소개 페이지는 상태유지가 필요가 없으므로 무상태로 단순한 서비스 소개 이런것 들은 장애가 없다.
무상태
로그인이 필요 없는 단순한 서비스 소개 화면
상태유지
로그인
이런경우 문제가 됨 서버에 유지를 해야하므로 일반적으로 쿠키와 서버를 조합해서 이렇게 상태유지 함
서버 세션이 날아가거나 서버가 죽으면은 상태가 풀림
한계 존재
상태유지는 최소한으로 사용하고 필요한 경우에만 사용
로그인한 사용자의 경우 로그인했다는 상태를 서버에 유지
일반적으로 브라우저 쿠키와 서버 세션들을 사용해서 상태 유지
상태유지는 최소한만 사용
스테이트리스 단점 데이터를 너무 많이 보냄
데이터가 많다 풀이랑 비교할시
최대한 무상태로 설계한다 정말 어쩔수 없는 경우에는 상태 유지한다.
비연결성
연결을 유지하는 모델
단점은 1 2가 놀고있어도 연결을 유지해야함
연결을 끊어버리고 자원을 낭비를 줄인다.
서버가 동시에 유지해야하는거를 요청할때만 받고 끊어버림
http는 기본적으로 연결을 유지하지 않는 모델이다
일반적으로 초단위로 빠른 속도 응답
1시간동안 수천명이 서비스를 사용해도 실제 서버에서 동시에 처리하는 요청을 수십개 이하로 매우 작음
웹 부라우저에서 계속 연속해서 검색 버튼을 누르지는 않는다,
서버자원을 매우 효율적으로 사용가능.
비연결성 단점
tcp ip 연결을 새로 맺어야함 3 way handshake 시간 추가
웹 브라우저로 사이트 요청하면 html 분만 아니라 자바스크립트, css, 추가 이미지등 수 많은 자원이 함께 다운로드
지금은 http 지속 연결(Persistent Connection)로 문제 해결
지속연결은 또다른 tcp 연결은 하지않고 처음에 연결된 TCP연결을 이용하여 나머지 파일에 대해서 클라이언트와 서버가 요청/응답을 하는 것이 바로 지속 연결이다.
http2 http3에서 더 많은 최적화
스테이트리스를 기억하자
서버 개발자들이 어려워하는 업무
정맑 같은 시간에 딱 맟추어 발생하는 대용량 트래픽
선탁순 이벤트 명절 ktx예약
HTTP 메세지
모든것이 http 이다 이미지 음성 등등 바이너리 데이터들을 다 보낼 수 있다.
지금은 http 시대
http sms
공백은 무조건 있어야함
응답메세지는 처음 시작이 다르다.
시작라인은 requestline/status line으로 되어있음
시작라인
요청메세지 - http 메서드
종류 get, post, put, delete
서버가 수행해야 할 동작 지정
get: 리소스 조회
post: 요청 내역 처리
마지막은 http 버전
http 상태 코드
200: 성공
400: 클라이언트 요청 오류
500: 서버 오류
http는 단순하고 확장가능이다
지금은 http의 시대!
'- 코딩 공부 > Spring' 카테고리의 다른 글
[스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술] 섹션3 서블릿, JSP, MVC 패턴 (0) | 2022.07.18 |
---|---|
[모든 개발자를 위한 HTTP 웹 기본 지식] 섹션 7. HTTP 헤더1 - 일반 헤더 (0) | 2022.07.11 |
[스프링 핵심 원리 기본편] 섹션7 - 의존관계 자동 주입 (0) | 2022.07.04 |
[스프링 핵심 원리 - 기본편] 섹션1 - 객체 지향 설계와 스프링 (0) | 2022.06.29 |
“8080 already in use mac” Code Answer’s (0) | 2021.04.06 |