1. 프로토콜(protocol)
- 프로토콜이란 서로 간의 통신을 위한 약속, 규칙으로 주고 받을 데이터에 대한 형식을 정의한 것이다.
2. HTTP(Hyper Text Transfer Protocol)
- 텍스트 기반의 프로토콜로 단순하고 읽기 쉽다.
- 상태를 유지하지 않는다.(stateless) (클라이언트 정보를 저장 X ) 즉, 같은 클라이언트가 요청을 한 번 보내고, 다시 요청을 보내도 서버는 클라이언트 정보를 저장하지 않아서 같은 클라이언트가 보냈는지 구분할 수 없다. 이를 보완하기 위해 쿠키&세션을 사용한다.
- 확장 가능하다. (커스텀 헤더(header) 추가 가능)
3. HTTP 메시지 - 응답 메시지
요청에 대한 결과가 상태 코드로 나온다. 상태코드별 의미는 아래 표와 같다.
상태코드 | 의미 |
1xx | Informational |
2xx | Success(성공) |
3xx | Redirect(다른 URL로 요청을 보내라는 의미) |
4xx | Client Error |
5xx | Server Error |
헤더와 바디 사이에는 빈 줄로 구분한다.
4. HTTP 메시지 - 요청 메시지
GET(read 용도)은 리소스를 얻어오기 위한 요청 메소드로 바디가 없다. 대신 데이터를 보낼 일이 있을 땐 URL뒤에 쿼리스트링을 통해 보낼 수 있다.
POST(write 용도)의 경우에는 바디의 내용에 서버에 전송할 데이터를 담는다.
GET | POST |
서버의 리소스를 가져오기 위해 설계 | 서버에 데이터를 올리기 위해 설계 |
Query String을 통해 데이터를 전달(소용량) | 전송 데이터 크기의 제한이 없음(대용량) |
URL에 데이터 노출되므로 보안에 취약 | 데이터를 요청 메시지의 body에 담아 전송 |
데이터 공유에 유리 | 보안에 유리, 데이터 공유에는 불리 (HTTP+TLS 즉 HTTPS 이용할 경우 보안에 유리) |
ex) 검색엔진에서 검색단어 전송에 이용 | ex) 게시판에 글쓰기, 로그인, 회원가입 |
참조
'3. Back-end > 3-2. Spring MVC - 남궁성' 카테고리의 다른 글
Spring MVC - [ 서블릿과 JSP ] (0) | 2022.10.29 |
---|---|
Spring MVC - [ 바이너리 파일 ] (0) | 2022.10.18 |
Spring MVC - [ 클라이언트와 서버 ] (0) | 2022.10.07 |
Spring MVC - [ HTTP 요청과 응답 - HttpServletRequest ] (0) | 2022.09.20 |
Spring MVC- [원격 프로그램의 실행] (0) | 2022.09.05 |