프로토콜(protocol) 이란?
→ 서로 간의 통신을 위한 약속 또는 규칙
즉, 주고 받을 데이터에 대한 형식을 정의한 것을 의미한다.
데이터를 어떠한 방식으로 주고받을지 미리 약속하지 않으면 데이터를 받아도 어떤 내용인지 해석이 불가능하다.
그렇기에 어떤 형식으로 데이터를 주고 받을지 미리 약속을 해둔다.
HTTP (Hyper Text Transfer Protocol)
→ HTTP는 텍스트를 전송하기 위한 프로토콜이다.
<특징>
1. 단순하고 읽기가 쉽다 , 텍스트 기반의 프로토콜.
2. 상태를 유지하지 않는다.(Stateess) -Client 정보를 저장하지 않음.
같은 클라이언트가 요청을 두 번 보냈을 때 Server는 이 두 요청이 같은 클라이언트가 보낸 것인지 구별 못한다.
왜냐하면 클라이언트 정보를 저장하지 않기 때문이다.
=>이러한 단점을 보안하기 위해 쿠키와 세션을 사용.
HTTP 프로토콜은 서로에게 메시지를 보내고 , 상대방은 요청에 대한 응답 편지를 보낸다고 생각하면 된다.
URL을 입력했을 때 브라우저는 HTTP요청 메시지를 만들어서 서버에게 전달해 준다.
HTTP 메시지 - 응답 메시지
HTTP 응답 메시지 format에 맞춰서 줘야 클라이언트가 내용을 이해할 수 있다.
HTTP 상태코드 | 의미 | 상세 설명 |
1xx | Informational | HTTP/1.1 추가 정보 교환 |
2xx | Success | 성공 |
3xx | Redirect | 다른 URL 요청 |
4xx | Client Error | 클라이언트 잘못 |
5xx | Server Error | 서버 잘못 |
HTTP 메시지 - 요청 메시지
1. GET -read
단순히 서버 리소스를 가져온다. 즉 읽기만 함.
리소스 URL만 적어주면 되어서 바디가 필요 없고 헤더만 존재.
데이터를 보낼 때는 쿼리 스트링으로 보낼 수 있다.
2.POST - write or 서버 데이터 제공
write, 글쓰기, 회원가입, 파일 첨부, 서버에 데이터 제공 등에 용도로 만들어진 것이다.
POST는 바디가 있어서 GET에서 썼던 쿼리 스트링이 바디에 들어간다.
GET | POST | |
설계 목적 | 서버의 리소스를 가져오기 위해 설계 | 서버의 데이터를 올리기 위해 설계 |
데이터 전송 | Query String을 통해 데이터를 전달(소용량) | 전송 데이터 크기 제한이 없음(대용량) |
보안 | URL에 데이터 노출되므로 보안에 취약 | 데이터를 요청 메시지의 body에 담아 전송. 보안에 유리 |
데이터 공유 | 데이터 공유에 유리 | 데이터 공유에 불리 |
*그냥 단순히 POST 방식이라고 해서 보안에 유리한 게 아니라
HTTP + TLS(암호화 프로토콜) = > HTTPS여야 보안에 유리.
TLS 없이 POST로 보냈다고 보안에 유리하지는 않음.
'PROGRAMMING > SPRING' 카테고리의 다른 글
[06] Exception Handling (0) | 2023.05.24 |
---|---|
[05] Session (0) | 2023.05.22 |
[04] Cookie (1) | 2023.05.20 |
[03] MVC 패턴 (0) | 2023.05.17 |
[01] HTTP 요청과 응답 & 클라이언트와 서버 (1) | 2023.05.16 |