HTTP?
인터넷상에서 데이터를 전송하기 위한 프로토콜. TCP/IP 4계층의 응용 계층이다.
HTTP 특징
1. 비연결성 -
클라이언트에서 요청을 보낸 후 서버로 부터 응답을 받으면 연결을 끊는 것.
불특정 다수를 대상으로 하는 서비스에 유리.
응답을 기다리지 않기에 자원 사용에 유리하지만 클라이언트를 기억할 수 없다는 단점으로 인해 동일한 클라이언트가 연속 요청을 하면 연결 해제 과정을 반복해 오히려 자원 낭비가 된다.
-> 이러한 단점을 보완하기 위해 일정 시간 동안 연결을 유지할 수 있도록 HTTP Keep Alive를 사용한다.
마지막 응답 이후 일정 시간 연결을 유지하여 동일 클라이언트의 요청이 오면 연결 과정 생략할 수 있다.
2. 무상태 -
서버에서 클라이언트 상태를 저장하지 않는 것.
ex) 분식집
고객 : 김밥 가격 얼마인가요?
직원 : x천원 입니다.
고객 : 쿠폰으로 결제할게요.
직원 : 어떤 상품 구매하시나요?
고객은 '김밥 한 줄을 쿠폰으로 결제할게요.' 와 같이 한 번에 요청해야한다.
위 상황 처럼 클라이언트가 이전에 요청한 사항을 서버에 저장하지 않는다.
클라이언트는 요청에 필요한 데이터를 모두 가지고 있거나 서버가 클라이언트로 받은 요청을 모두 저장해야한다.
이 방법들을 각각 쿠키(Cookie)와 세션(Session)이라한다.
쿠키?- 클라이언트의 로컬 웹 브라우저에 저장하는 데이터 파일. 키와 값을 저장한다.
ex) 웹 사이트의 로그인 정보, 온라인 쇼핑몰의 장바구니
세션?- 서버에서 클라이언트와의 연결 정보를 저장/관리하는 것.
서버에 데이터가 저장되므로 보안 면에서는 쿠키보다 좋지만, 접속자가 많을 시 과부하가 올 수 있다.
HTTP에서는 클라이언트와 서버가 통신하기 위해 정형화된 데이터인 HTTP 메세지를 주고 받는다.
HTTP 메세지 구조?
- 요청 라인(request line) : 요청 URI, 요청 방법, HTTP 버전 등을 포함.
- 상태 라인(status line) : 요청에 대한 HTTP 상태 코드와 HTTP 버전 포함.
- 헤더 (Header) : 키-값으로 구성된 다수의 헤더 항목으로 구성된다.
- 빈 줄(blank line) : 헤더의 끝을 나타내는 빈 줄로, 헤더와 바디를 구분.
- 바디(body) : 요청할 때 요청 방법 메서드가 POST인 경우에만 바디가 있고, 그 외 메서드 일때는 비어있는 상태로 전달.
HTTPS?
보안 계층인 SSL/TLS를 이용해 HTTP의 보안을 강화한 웹 통신 프로토콜.
HTTP는 데이터 암호화를 거치지 않아 보완된 HTTPS가 등장.
SSL은 암호화 프로토콜인데 문제점이 생겨 새로운 암호화 프로토콜인 TLS가 등장하였다.
HTTPS 동작 방식?
데이터를 송신할 때 응용 계층 -> 보안 계층의 SSL/TLS로 데이터를 보내면 암호화 하여 전송 계층으로 전달한다.
데이터를 수신할 때 전송 계층에서 보낸 데이털르 보안 계층의 SSL/TLS가 받아 복호화 후 응용 계층으로 보낸다.
HTTP | HTTPS |
응용 계층, HTTPS | |
응용 계층, HTTP | 보안 계층, SSL/TLS |
전송 계층, TCP | 전송 계층, TCP |
인터넷 계층, IP | 인터넷 계층, IP |
네트워크 인터페이스 계층, 네트워크 인터페이스 | 네트워크 인터페이스 계층, 네트워크 인터페이스 |
SSL/TLS의 암호화 방식?
1. 대칭 키 암호화 방식 : 암호화와 복호화에 모두 같은 키인 대칭 키를 이용함.
송신자는 수신자에게 받은 키로 데이터를 암호화 한 후 수신자에게 보낸다.
수신자는 보냈던 키로 받은 데이터를 복호화 한다.
대칭키 유출되지 않도록 주의하여야 함.
(송신자가 다르면 이용하는 키가 다름)
2. 공개 키 암호화 방식 : 암호화와 복호화를 다른 키로 하는 방식.
암호화 -> 공개 키.
복호화 -> 비밀 키
수신자는 송신자에게 공개키를 전달.
송신자는 전달 받은 공개키로 데이터 암호화.
수신자는 비밀키로 받은 데이터를 복호화.
비밀 키가 있어야만 복호화가 가능하여 공개 키 유출은 염려하지 않음.
(송신자가 달라도 공개 키는 같다)
'CS > 네트워크' 카테고리의 다른 글
네트워크 - 정리 (0) | 2024.06.20 |
---|---|
네트워크 - REST (0) | 2024.06.19 |
네트워크 - OSI 7계층, TCP/IP, TCP/UDP (0) | 2024.06.19 |