1. 프로토콜(protocol)이란?
@ 데이터를 어떻게 주고받을지 약속하지 않으면?
1. 데이터가 와도 이 데이터가 어디부터 어디까지 어떤 내용인지를 해석할 수 없음.
2. 그래서 데이터를 주고받으려면 서로 간의 약속이 있어야 하는데.
3. 어떤 형식으로 데이터를 주고 받을 건지 미리 정의한 것
4. 즉 주고 받을 데이터에 대한 형식을 정의한 것
@ 야구로 예를 들어본다면
(야구감독) ---------> sign (타자)
감독 왈 : 내가 모자를 만지면 번트를 해
코를 만지면 희생플라이
귀를 만지면 히트&run
이렇게 미리 약속을 하고 타자와 sign을 약속해야 소통할 수 있음.
서로 간의 통신을 위한 약속(protocol), 규칙을 정한다.
@ 편지로 예를 들어 보면.
보내는 사람, 받는 사람, 우표 ==> protocol

2. HTTP(Hyper Text Transfer Proctocol)란?
- 텍스트를 전송하기 위한 Protocol
- Hyper Text -> HTML

- 확장 가능하다. 커스텀 헤더(header) 추가 가능
+ 헤더는 대소문자를 구분하지 않는다. 그래서 여러 개 나올 수 있음.
- 단순하고 읽기 쉽다.(Human readable) - 사람이 읽을 수 있는 텍스트 기반의 프로토콜
- 상태를 유지하지 않는다(stateless) - 클라이언트 정보를 저장 X
상태가 없다.
- 클라이언트에서 2개의 요청을 보내면 서버는 그 요청이 같은 요청인지 모름, 구별을 못함.
- 그래서 이것을 보완하기 위해 쿠키와 세션을 사용하여 클라이언트의 정보를 구분한다.
3. HTTP 메시지
HTTP 응답 메시지 == 편지(business letter)
헤더(편지에 대한 설명)와 바디(전달할 내용)로 구성되어 있다.

@ HTTP 메시지의 요청과 응답의 흐름은..
요청 편지를 보내면 ------------------> 받아서
보낸 사람에게. <------------------ 응답 편지를 보낸다.
1. Browser을 통해 URL을 입력하면
여기서 Browser가 요청 메시지를 이런 형태로 만들어줌.

2. 요청 메시지는 서버로 받아오는데 URL("/hello")을 통해 Browser로 응답 메시지를 전송한다.

3. 해당 내용을 전송해준다.

4. http://localhost:8080/hello

4. HTTP 메시지 - 응답 메시지
상태코드
HTTP/1.1 200 OK //상태라인(설명)
Content-Length : 44
Content-Type : text/html
Data : Sat, 20 Oct 2021 19:03:38 GMT
@ 응답 메시지 구조
- HTTP/1.1 protocol로 통신했고.
- 상태 코드는 200이다.
| 상태코드 | 의미 |
| 1xx | Informational(정보교환) |
| 2xx | Success(성공) |
| 3xx | Redirect(다른 URL 요청, 재요청) |
| 4xx | Client Error(클라이언트 에러) |
| 5xx | Server Error(서버 에러) |
@ 상태 코드 404 Not Found에러
- 클라이언트가 요청을 잘못한 거!

- URL을 보면 /dice로 요청받는 매핑이 없기 때문에 404 에러를 출력한다.
@ 5xx 에러는
- 요청은 OK, 서버가 처리 中 에러...

- 요청은 제대로 했는데 요청을 처리하다가 프로그램에 문제가 있어서 에러난 경우 500 에러를 출력한다.
5. HTTP 메시지 - 요청 메시지
- 요청 메시지 전송 방식(요청 메서드)에는 크게 GET 방식과 POST 방식이 있다.
| GET(Read) | POST(Wrier) |
| - 서버의 리소스를 가져오기 위해 설계 - QUERY STRING을 통해 데이터를 전달(소용량) - URL에 데이터 노출되므로 보안에 취약 - 데이터 공유에 유리 ex. 검색엔진에서 검색단어 전송에 이용한다. |
- 서버에 데이터를 올리기 위해 설계됨. - 전송 데이터 크기에 제한이 없음(대용량) - 데이터 요청 메시지의 body에 담아 전송 - 보안에 유리, 데이터 공유에는 불리 ex. 게시판에 글쓰기, 로그인, 회원가입 데이터를 은닉해야하는 경우 사용한다. |

@ 요청 메시지 구조
1. 첫 줄은 요청 라인(request line)
2. header, n 줄일 수 있다
3. (빈 줄)
4. body
'Java & Spring > SpringFramework' 카테고리의 다른 글
| 09. 관심사 분리와 MVC 패턴 - 이론 24:36 (0) | 2022.06.23 |
|---|---|
| 08. 텍스트와 바이너리, MIME, Base64 31:40 (0) | 2022.05.10 |
| 06. 설정 파일 - server.xml, web.xml 13:28 (0) | 2022.05.10 |
| 05. 클라이언트와 서버 34:25 (0) | 2022.05.10 |
| 04. HTTP 요청과 응답 - 예제 16:21 (0) | 2022.05.10 |