* 프로토콜이란?
- 서로 간의 통신을 위한 약속, 규칙
- 주고 받을 데이터에 대한 형식을 정의한 것
* HTTP
- Hyper Text Transfer Protocol
- 단순하고 읽기 쉽다. 텍스트 기반의 프로토콜
- 상태를 유지하지 않는다. (Stateless), 클라이언트 정보를 저장하지 않는다.
- 똑같은 사람이 두 번 요청을 보내도 똑같은 사람이 두 번 요청을 보냈는지 구분하지 못한다. 상태를 유지하지 않기 때문이다.
- 이를 보완하기 위해 쿠키와 세션을 사용한다.
- 확장 가능하다. 커스텀 헤더 추가 가능
- 헤더 / 바디로 구성이 되어있으며, 헤더는 대,소문자를 구분하지 않고 n개 생성가능하다. 헤더와 바디는 줄바꿈으로 구분한다.
- 유저는 URL만 입력하지만 브라우저가 http 요청 메시지를 생성해서 서버에 전송한다.
HTTP/1.1 200 OK
Content-Length : 44
Content-Type : text/html
Date :
공백 ------------헤더 / 바디 구분선
<html>
</html>
상태코드 | 의미 |
1xx | Informational |
2xx | Success |
3xx | Redirect |
4xx | Client Error |
5xx | Server Error |
- 요청 메서드 : get / post
GET | POST |
. 서버의 리소스를 가져오기 위해 설계 . Query String을 통해 데이터를 전송 (소용량) . URL에 데이터가 노출되므로 보안에 취약 . 데이터 공유에 유리 예. 검색 엔진에서 검색 단어 전송에 이용 |
. 서버에 데이터를 올리기 위해 설계 . 전송 데이터의 크기에 상관 없음 (대용량) . 데이터를 요청 메시지의 body에 담아 전송 . 보안에 유리, 데이터 공유에는 불리 예. 게시판에 글쓰기, 로그인, 회원가입 |
- Https : HTTP + TLS (암호화)
- POSTMAN 설치를 통해 테스트를 용이하게 할 수 있다.
- GET 방식은 쿼리 스트링에 데이터를 담아서 전송하고 있다.
- POST 방식은 바디에 데이터를 담아서 전송하고 있다.
* 텍스트 파일 vs 바이너리 파일
- 텍스트 파일 : 문자만 저장되어 있는 파일, 숫자를 문자로 변환 후 쓴다.
- 바이너리 파일 : 문자 + 숫자가 저장되어 있는 파일, 데이터를 있는 그대로 읽고 쓴다.
* MIME ( Multipurpose Internet Mail Extension )
- 텍스트 기반의 프로토콜에 바이너리 데이터를 전송하기 위해 고안
- HTTP의 Content-Type 헤더에 사용. 데이터의 타입을 명시
- 텍스트와 바이너리를 하나의 메시지 안에 함께 보내기 위해 boundary가 생성이 된다.
* Base64
- 64진법 : '0'~'9', 'A'~'Z', 'a'~'z', ', '+', '/' 모두 64개 (6 bit)의 문자로 구성.
- 바이너리 데이터를 텍스트 데이터로 변환할 때 사용한다.
'Programming > Spring' 카테고리의 다른 글
[Spring] 스프링 빈 조회 (0) | 2022.02.07 |
---|---|
[Spring] ApplicationContext, 스프링 컨테이너, 스프링 빈(Bean) (0) | 2022.02.06 |
[스프링의 정석] 클라이언트와 서버 (0) | 2021.10.27 |
[스프링의 정석] HTTP 요청과 응답 (0) | 2021.10.27 |
[스프링의 정석] AWS에 배포하기 (0) | 2021.10.26 |