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개의 쌍으로 구성된 공개키와 개인키로 암/복호화 진행
-->키 노출시 비교적 안전
,연산 속도 느림
- 클라이언트가 서버에 최초 연결 시도
- 서버는 공개키(인증서)를 브라우저에 넘겨줌
- 브라우저는 인증서의 유효성을 검사 후, 세션키 발급
- 브라우저는 세션키를 보관, 서버의 공개키로 세션키를 암호화하여 서버에 전송
- 서버는 개인키로 암호화된 세션키를 복호화하여 세션키를 얻음
- 클라이언트와 서버는 동일한 세션키를 공유, 데이터 전달시 세션키로 암/복호화 진행