HTTP
HTTP 프로토콜이란 웹 상에서 데이터를 주고 받기 위해 사용되는 애플리케이션 레벨 프로토콜로 TCP/IP 위에서 작동합니다.
크게 아래와 같은 3가지 특징을 가집니다.
- 서버-클라이언트 구조
- 클라이언트에서 요청을 보내면 서버에서 그것에 대한 응답을 보내는 구조입니다.
- 비연결성
- 클라이언트와 서버가 연결을 맺은 후, 서버가 응답을 마치면 연결을 끊어버립니다.
- 장점
- 하나의 클라이언트가 요청을 지속적으로 보내는 경우는 잘 없습니다. 그렇기에 연결을 유지한다면 많은 리소스가 낭비됩니다. 비연결성을 통해 연결하는데 필요한 리소스를 아껴 더 많은 클라이언트와 연결할 수 있습니다.
- 단점
- 매번 TCP/IP 연결을 새로 맺어야합니다.
- 무상태
- 서버가 클라이언트의 상태를 보존하지 않습니다.
- 장점
- 상태를 유지하지 않기에 Scale-out 방식 서버 증설에 유리합니다.
- 단점
- 로그인과 같이 상태를 유지해줘야 하는 경우 쿠키와 같은 추가 데이터를 계속 전송해줘야 합니다.
HTTPS
- HTTPS는 데이터를 암호화하여 전송하기 때문에 제 3자가 데이터를 가로채도 데이터를 읽을 수 없음.
- HTTPS에서는 SSL을 사용하여 데이터를 암호화하고 전송
- SSL은 공개키 암호화 방식을 사용하여 데이터를 암호화함. 이 방식은 대칭키 암호화 방식과 달리 서로 다른 두 개의 키를 사용합니다. 공개키와 개인키로 구성된 공개키 쌍을 사용하여 데이터를 암호화하고, 개인키로만 데이터를 복호화할 수 있음.
- 먼저, 클라이언트가 서버에 접속하여 SSL 연결을 요청. 서버는 공개키를 클라이언트에게 보내고, 클라이언트는 이 공개키를 사용하여 세션 키를 암호화하여 서버에 전송합니다. 서버는 개인키를 사용하여 세션 키를 복호화하고, 이 세션 키를 사용하여 클라이언트와 서버 간의 통신을 암호화합니다.
'이론 > 네트워크' 카테고리의 다른 글
세션 인증 방식과 토큰 인증 방식 (0) | 2022.12.18 |
---|---|
TCP handshake 란? (0) | 2022.12.18 |