HyperText Transfer Protocol
텍스트 기반 통신 규약으로 클라이언트 / 서버 간 통신을 위한 프로토콜
즉, 인터넷상에서 데이터를 주고 받을 수 있는 프로토콜
Start line, Header, Body로 나뉨
- HTTP method : GET, POST, PUT, DELETE 등
- Request target : Http request가 전송되는 목표 주소
- HTTP version : 버전에 따라 request 메시지 구조 or 데이터가 달라 질 수 있음
HTTP Request 그 자체에 대한 정보 (메타), Key : value 형태
- Host : 요청하려는 서버 호스트 이름과 포트번호
- User-agent : 클라이언트 프로그램 정보
- Referer : 직전에 머물렀던 웹 링크 주소
- Accept : 클라이언트가 처리 가능한 미디어 타입 종류
- Cookie : key-value 형태
- Origin : 서버로 POST 요청 보낼 때, 요청이 어느 주소에 시작되었는지 나타내는 값
- 요청 보낸 주소와 받는 주소 다르면 CORS(Cross origin resource sharing)에러 발생
- Authorization : 인증 토큰 서버로 보낼 때 쓰이는 header
- if modified-since : 이 값(시간) 이후로 변경된 리소스 취득
Http request가 전송하는 데이터를 담고 있는 부분
- Request요청시 요청하는 url은
DNS Server를 통해 IP주소를 응답받음- url 정보와 응답 받은 IP주소는
HTTP protocol을 사용하여HTTP request message를 생성- 이 요청 메시지는
tcp protocol을 사용하여 인터넷을 거쳐 해당 IP 주소의Web server로 전송
Web server로 도착한 요청 메시지는HTTP protocol을 사용하여 url 정보로 변환
Web server는 url 정보를 확인하고 정적 컨텐츠일 경우 바로 컨텐츠를 응답, 동적일 경우WAS에 요청을 전달
WAS는 요청에 맞게 처리 후Http response형태로Web server에 다시 전달
Http protocol로 응답 메시지를 생성하고tcp protocol을 사용해 인터넷을 거쳐 요청한 곳으로 전송- 도착한 응답 메시지는
Http protocol로 웹 페이지 데이터로 변환- 변환된 데이터는 브라우저를 통해 사용자가 볼 수 있음
HTTP Request와 동일하게 Start line, Header, Body로 나뉨
Http version, status code, status text
- Request와 동일하지만 Response에서만 사용되는 값들이 있음
Location,Server,age,referrer-policy,www-authenticate,proxy-authenticate
Request와 마찬가지로 데이터를 전송할 필요가 없다면 비어있음
HTTP에 데이터 암호화가 추가된 프로토콜
- 443 포트 사용
- 네트워크 상에서 제 3자가 중간에 정보를 볼 수 없도록 암호화 지원
- 대칭키와 비대칭키 암호화 방식을 모두 활용
대칭키 : 클라이언트와 서버가 동일한 키로 암/복호화 진행
-->키 노출시 위험,연산 속도 빠름비대칭키 : 1개의 쌍으로 구성된 공개키와 개인키로 암/복호화 진행
-->키 노출시 비교적 안전,연산 속도 느림
- 클라이언트가 서버에 최초 연결 시도
- 서버는 공개키(인증서)를 브라우저에 넘겨줌
- 브라우저는 인증서의 유효성을 검사 후, 세션키 발급
- 브라우저는 세션키를 보관, 서버의 공개키로 세션키를 암호화하여 서버에 전송
- 서버는 개인키로 암호화된 세션키를 복호화하여 세션키를 얻음
- 클라이언트와 서버는 동일한 세션키를 공유, 데이터 전달시 세션키로 암/복호화 진행