웹 정리
기본적으로 HTTP 헤드와 바디로 구성된다.
HTTP Head : 헤드의 각줄은 CRLF로 구분되면 첫 줄은 start-line이고 나머지 줄은 Header라고 부른다. 헤드의 끝은 CRLF 한줄로 구분된다. 시작줄의 경우 request와 response 에 따라 차이가 있고 헤더는 필드와 값으로 구성되며 HTTP 메시지와 바디의 속성을 나타낸다. 0개 이상의 헤더가 있을 수 있다.
HTTP Body : 헤드 다음에 나오는 모든 줄을 말한다. 내용이 들어가는 부분
HTTP Request : 서버에게 특정 동작을 요구하는 메세지로 서버가 이를 처리하여 응답을 한다. HTTP Request의 시작 줄(start-line)은 메소드(Method), 요청 URI(Request-URI), HTTP 버전으로 구성되고 각각은 띄어쓰기로 구분된다.
- Method : URI가 가리키는 리소스를 대상으로 서버가 수행하길 바라는 동작을 나타낸다. 대표적으로 GET과 POST가 있다.
HTTP Response : HTTP 요청에 대한 결과를 반환하는 메세지. 상태 정보와 리소스가 포함된다. 시작줄은 HTTP 버전, 상태 코드(Status Code), 처리사유(Reason Phrase)로 구성되고 각각은 띄어쓰기로 구분된다.
- HTTP 버전 : 서버에서 사용하는 HTTP 프로토콜의 버전
- 상태 코드 : 요청에 대한 처리 결과를 세 자릿수로 표현
100번대 | 요청을 제대로 받았고, 처리가 진행 중 | 100 : 진행 중 |
200번대 | 요청이 제대로 처리됨 | 200 : 성공 |
300번대 | 요청을 처리하려면, 클라이언트가 추가 동작을 취해야 함 | 302 : 다른 URL로 갈 것 |
400번대 | 클라이언트가 잘못된 요청을 보내 처리 실패 | 400 : 문법 오류 403 : 권한 오류 404 : 리소스가 없음 |
500번대 | 클라이언트의 요청은 유효하지만 서버에 에러가 있음 | 500 : 에러 발생 503 : 서버 과부하 |
HTTPS : HTTP의 경유 응답과 요청이 평문으로 전달된다. HTTPS는 TLS(transport layer security) 프로토콜을 도입하여 이런 문제점을 보완한다. TLS는 서버와 클라이언트 사이에 오가는 HTTP 메시지를 암호화한다.
HTTP의 특징
- Connectionless: 하나의 요청에 하나의 응답을 한 후 연결을 종료하는 것을 의미한다.
- Stateless : 통신이 끝난 후 상태 정보를 저장하지 않는 것을 의미합니다.
위와 같은 HTTP 특징으로 인해 서버와 클라이언트의 상태를 유지하기 위해 쿠키(Cookie)가 탄생
Cookie : 클라이언트의 정보 기록과 상태 정보를 표현하는 용도로 사용
Session : 쿠키의 위조를 막음, 인증 정보를 서버에 저장하고 해당 데이터에 접근할 수 있는 키(랜덤 유추 불가)를 만들어 클라이언트에게 전달 해당 키를 Session ID라 함
쿠키는 클라이언트가 저장하지만 세션은 서버가 저장함