HTTP ?
A (클라이언트) 가 데이터를 가지고 있는 B (서버) 에게 요청을 한다
A(홍길동) ↔ B(서버 : 갑)
요청의 방법 4가지 = HTTP1.1통신 방법
- Get : 데이터를 줘! ▶ select
- Post : 데이터를 추가해줘! ▶ insert
- Put : 데이터를 수정해줘! ▶ update
- Delete : 데이터를 삭제해줘! ▶ delete
1. get 요청 하는방법
URL을 통해 요청한 파라미터를 전달하는데
방식은 URL 끝에 "?" 물음표를 붙이고 뒤에 데이터를 써서 서버에게 전달한다.
url?사과
2. post 요청
어떤 데이터를 추가할지 서버에게 보내줘야함. 이것은 아래의 MIME타입에 자세히 설명
stateless ,stateful ?
- stateless
요청시마다 스트림(선)을 연결해서 데이터를 주고받는 방식. 응답 후 연결이 끊긴다
연결이 끊기고 다시 새로운 요청시 서버입장에는 이전의 클라이언트가 맞는지 의심하고 세션 인증에 문제가 있다.
- stateful
요청하고 응답을 하는 연결이 지속된다. (ex 채팅)
인증이 이루어져 서버가 클라이언트에게 데이터를 응답해줄 준비가 됨. = 세션이 만들어짐
MIME 타입 ?
- post 요청 : 클라이언트가 데이터를 담아 서버에 보내 추가해달라고 요청
방식은? 데이터를 헤더와 바디에 담는다. 만약 이미지를 보낸다면
헤더 | Image/JPEG | = 데이터 설명 |
바디 | my.jpeg | = 실제 데이터 |
헤더의 데이터 설명 적는 방식이 '마입타입' 이라고 한다.
먼저 헤더와 바디가 필요한 이유를 설명하자면
http 통신방식
서킷 스위칭
A → B
a,b,c,d 각 데이터를 함께 선에 담아(abcd) 연결해 보내주어 B에게 전달 (함께 담아 묶어서 전달)
C → B
e,f,g 를 추가로 담아 보내주면 선(efg)이 추가되어 B에게 전달
= 속도는 빠르나 선이 계속 추가되어 연결이 되니 비용이 커진다.
패킷 스위칭
패킷 교환은 송신 측에서 모든 메시지를 일정한 크기의 패킷으로 분해해서 전송하고,
수신 측에서 이를 원래의 메시지로 조립하는 것이다.
A → B
a,b,c,d 각각 패킷이라 하고 각 패킷을 데이터를 선을 연결해(d,c,b,a 순서대로) B에게 전달
C → B
e,f,g 각 패킷을 A와 같은 선에 연결하여 B에게 전달
그렇게 되면 데이터들이 섞여서 B에게 전달이 된다 . ex ) g d f c e b a
섞인 데이터 구분하는 법은 헤더와 바디로!
1. 헤더는 숫자로 구분을 하고 송신자로 두번 구분가능
숫자로 구분 : a = 1 , b = 2. c = 3, d = 4 / e = 1, f = 2, g = 3
송신자로 구분 : abcd 모두 A송신자 / efg 모두 B송신자
2. 바디는 A와 B를 순서대로 abcdefg 구분하여 조립이 된다!
결론적으로 통신할때는 헤더와 바디가 필요하다!
내가 보낼 데이터를 전송하기 위해 데이터 설명(헤더), 실제 데이터(바디)를 담아야하니까.
보낼 데이터가 이미지파일, text파일, avi 파일 .. 등등 여러 종류의 데이터가 있을텐데
헤더의 데이터 설명을 마음대로 적을 수 없고 적는 방식이 있는데 이것을 마입타입 이라고 한다.
마입타입 구조는 매우 간단. ( type/subtype )
- text/plain (일반 String 문자형)
- text/html (html 문서)
- image/jpeg (jpeg 확장자를 가진 사진)
- image/png (png 확장자를 가진 사진)
MIME 타입 목록
https://developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types
'공부' 카테고리의 다른 글
STS4 툴에서 JSP , HTML , CSS 확장자 파일 없을 때 해결법 (0) | 2022.11.05 |
---|---|
lombok 설정 | yml 설정 (0) | 2022.11.01 |
자바의 객체지향 | http 요청 실습 (0) | 2022.11.01 |
스프링부트 기본 개념들 (1) | 2022.08.16 |
JAVA | 자바, JVM, 객체지향 프로그래밍 (0) | 2022.08.02 |