[springboot] HTTP1.1이란
HTTP1.1이란
-
통신하기 위해서 A,B사이에는 Byte Stream(8bit)이 연결되있어야한다.(write/ read)
- B가 서버(갑 : 데이터를 가지고있음)라면 A(클라이언트)가 누구인지 궁금하지않아
- A가 B가 요청 —-> B가 A 응답
-
http 통신 : 약속된 통신이 필요해
-
수많은 약속이있어 –> 통신(요청)의 방법 4가지
- GET
- 데이터를 줘!
- 데이터베이스 입장 = SELECT
- POST
- 데이터를 추가해줘!
- 데이터베이스 입장 = INSERT
- PUT
- 데이터를 수정해줘!
- 데이터베이스 입장 = UPDATE
- DELETE
- 데이터를 삭제해줘!
- 데이터베이스 입장 = DELETE
- GET
-
근데 전부 HOW(어떤) 것인지 명시하지않고있어
-
GET : {요청?사과}, {요청?회원정보}
-
POST : 요청 - {ID = AAA, PW = 1234}
-
-
-
stateless란
-
포트 B가 포트 A,C,D…랑 연결(통신)할때 포트를 계속 달아야하는 문제점이있어(채팅같은 방식은 이방식을 쓴다. === stateful(연결이 지속되있다!))
- B입장에서 A가 친구인지 확인하면 세션이 만들어짐 —> 세션이란 데이터를 응답해줄 준비가됨 –> 증거는 인증이 되었음
-
http방식 : 클라이언1,2,3들이랑 서버가 통신할때 하나의 클라이언트와 선을 연결하고 요청/응답이 끝나면 선을 끊어버림 = 요청시마다 스트림(선)을 연결해서 데이터를 주고받는 방식 === stateless (서버의 부하가 적음) 이것을 http에서 사용하고있음
- 선이 끊기면 인증에 대한 문제가 있음
- security를 이용해서 어떻게 세션을 유지하는 지를 배울거임
-
-
MIME 타입이란
- 클라이언트가 서버에게 POST요청을 함
- 어떤 데이터를 추가해죠! (어떤어떤 데이터를 어디에 담아서 보내줄까?)
- 요청시에 HTTP HEADER와 HTTP BODY에 담아보낸다
- ex 헤더 = IMAGE/JPEG(데이터 설명해주는 내용) 바디 = my.JPEG(데이터)
- http 통신할 때 우리가 쓰는 통신방법은 패킷 스위칭방식이다.
- 서킷스위칭
- A가 B에 데이터 교환할때 “가”,”나”,”다”라는 데이터를 보낼때 한번에 “가나다”로 보냄
- 장점: 굉장히 빠름
- 단점 : C가 B로 보낼때 “사”,”아”,”자”를 보내려면 또 선을 연결해야함 –> 선이 계속 추가됨 (물리적으로 선을 연결해야하니까 비용이 많이듬)
- 패킷 스위칭방식
- A가 B로 보낼때 “가”, “나”, “다”를 보낼때 하나하나 패킷으로 보냄. (심지어 선도 복잡하게 연결된 여러개를 통해서 가(많은 경로중에서 트래픽이 가장 적은쪽을 통해서 날라간다.) )
- C가 B로 보낼때 선을 공유해서 보낸다.
- A와 C의 데이터가 섞여서 보내진다
- 나중에 B에서 조립이 필요함 —> 근데 위에서 언급한거같이 여러 선을 타고 가면 패킷 도착에 따라 조립시 문제가 될수 있어 —>ex “가”,”나”,”다” 인데 “다”,”가”,”나”순으로 도착할 수 있어
- 그래서 모든 패킷에는 헤더(데이터의 순서, 누가 보낸 데이터인지)와 바디가 붙어서 조립에 도움을 준다.
- 서킷스위칭
- TEXT, IMAGE, AVI. 이진, JSON등 굉장히 많은 타입이 있다.
- 바디에 실어 보낼때 데이터가 무엇인지에 대해서 헤더에 적을 때 적는 방식이 MIME 타입임
- 일반적인 문법
- type/subtype, text/plain, image/jpeg, sudio/mpeg, video/mp4, application/json ….
- 보내야할 데이터가 정해지면 MIME 타입에 들어서 찾아서 형식을 확인하자!
- 클라이언트가 서버에게 POST요청을 함