💻 1. HTTP(Hyper Text Transfer Protocol)
- 월드와이드 웹 서비스를 제공하기 위해서 정의된 프로토콜.
네트워크 응용계층의 프로토콜로 클라이언트와 서버 사이의 데이터 통신을 위한 규격이며
웹의 경우 웹 브라우저가 클라이언트가 되며 톰캣과 같은 WAS가 설치된 컴퓨터는 서버가 된다.
1-1 HTTP 통신 방식
- HTTP는 기본적으로 요청(request),응답(response)구조로 되어있다.
HTTP는 서버에 연결하고, 요청해서 응답을 받으면 끊어지는 구조인 Connectionless 방식으로 작동한다.
클라이언트가 HTTP request를 서버에 보내면 서버는 HTTP response를 보내는 구조.
기본적으로 자원 하나에 대해서 하나의 연결을 만든다.
- 장점 : 수 많은 사람들이 웹 서비스를 사용하더라도 접속 유지는 최소한으로 할 수 있기 때문에
더 많은 유저의 요청을 처리 할 수 있다.
- 단점 : 연결을 끊어버리기 때문에 클라이언트의 이전 상태를 알 수 없다. 이러한 특징을 stateless라고 한다.
예를 들어서 로그인을 성공하더라도 다음 페이지에서 로그인 여부를 확인할 수 없다. -> session, cookie로 이런 문제를 해결한다.
1-2. HTTP Request 구조 (HTTP 요청 프로토콜 구조)
HTTP 요청 프로토콜은 크게 세 가지로 구성된다.
- start-line
- message-header
- message-body
1-2-1. Start-line
HTTP request의 첫 번째로 설정되는 라인이다.
start-line도 요청과 관련하여 요청방식, 요청URI, HTTP 버전 이 세 가지 정보가 포함된다.
ex) GET/servletStudy/studylist.html HTTP/1.1
-
요청 방식(HTTP Method)
- 해당 request의 action을 정의하는 부분.
GET, POST, PUT, DELETE가 있다.
-
요청 URI(Request target)
-
HTTP 버전
- 웹에서 사용하는 HTTP버전 1.0, 1.1 등이 있다. (일반적으로 1.1 버전 사용)
- Key:Value 값으로 정보를 설정
ex) Host:google.com -> Key = Host / Value = google.com
- 해당 request에 대한 브라우저와 관련된 정보이다.
| Key | 설정되는 정보 |
|---|
| Host | 요청이 전송되는 target의 host url |
| User-Agent | 요청을 보내는 클라이언트의 대한 정보 |
| Accept | 해당 요청이 받을 수 있는 응답(response)타입 |
| Connection | 해당 요청이 끝난 후에 클라이언트와 서버가 계속 네트워크 커넥션을 유지할 것인지 아닌지 지시 부분 |
| Content-Type | 해당 요청이 내는 메세지 body 타입 |
| Cookie | Key-Value 형태 쿠키 정보 |
1-2-3. message-body
- 해당 request의 실제 내용 -> 사용자가 입력한 정보들로 설정된다.
❗️start-line 에서 설정된 요청 방식에 따라서 body가 달라진다.
ex) GET -> 정보 은닉 못한다./ 사용자가 입력하는 정보가 URI에 보인다.
POST -> 은닉 가능.
1-3. HTTP Response 구조 (HTTP 응답 프로토콜)
- 서버는 요청에 대한 관련 정보를 추출하여 요청을 처리한다. 응답 프로토콜을 생성한 다음 결과를 응답 프로토콜에 저장해서 브라우저로 전송한다.
요청 프로토콜 : 브라우저가 생성
응답 프로토콜 : 서버가 생성
- status-line
- message-header
- message-body
1-3-1. status-line
- 서버가 브라우저에 전송하는 문서 정보가 담겨있다.
1-3-3. message-body
- 브라우저가 요청한 정보 포함 -> 실제 서버가 브라우저로 보내는 응답 정보 포함되어 있다.
2. HTTP Method
2-1. GET
- 데이터를 서버로 부터 받아 올 때 주로 사용
- 데이터 생성/수정/삭제 없이 받아오기만 할 때 사용
- request에 body를 안 보내는 경우가 많다.
- URI 뒤에 ? 추가하여 Key=value 형태로 & 연결하여 정보 전달
2-2. POST
- 데이터를 생성/수정/삭제 할 때 주로 사용
- request body 포함해서 보내진다.
- meesage-body에 포함해서 보내지기 때문에 URI에 입력한 정보가 보이지 않는다. (정보은닉)
2-3. PUT
- 리소스의 내용을 업데이트(수정)하는 경우 사용
2-4. DELETE