컴퓨터네트워크
HTTP와 HTTPS
Younghun
2023. 12. 7. 16:04
1. HTTP (Hypertext Transfer Protocol)
1) 특징
- HTTP는 응용 계층에서 두 애플리케이션이 데이터를 주고 받기 위한 규약이다.
- 서버-클라이언트 모델로 구성되며, 요청과 응답으로 동작한다.
- 예시) 웹 브라우저(클라이언트)가 서버에 HTML 혹은 JSON을 요청하는 경우
- 80번 포트를 기본으로 사용한다.
- 평문으로 데이터를 주고 받기 때문에, 통신 내용을 제3자가 조회할 수 있다.
2) 구조
- TCP/IP 위에서 동작한다.
- Stateless하게 통신한다.
- Method, Path, Header, Body, Status Code 등으로 구성된다.
3) 요청 메소드 종류
- GET : 데이터를 조회할 때 사용
- POST : 데이터를 생성할 때 사용
- PUT : 데이터를 수정할 할 때 사용
- DELETE : 데이터를 삭제할 때 사용
4) 응답 상태코드 종류
- 1XX (조건부 응답) : 요청을 받았으며 작업을 계속한다.
- 2XX (성공) : 클라이언트가 요청한 동작을 성공적으로 처리했다.
- 3XX (리다이렉션 완료) : 클라이언트는 요청을 마치기 위해 추가 동작을 취해야 한다.
- 4XX (요청 오류) : 클라이언트 요청에서 오류가 발생했다.
- 5XX (서버 오류) : 서버의 요청 처리에 오류가 발생했다.
2. HTTPS (Hypertext Transfer Protocol Secure)
1) 특징
- HTTP에 데이터 암호화가 추가된 프로토콜이다.
- 443번 포트를 기본으로 사용한다.
- SSL(보안 소켓 계층)을 이용해서 클라이언트와 서버를 안전하게 연결한다.
2) 암호화 방식
- 대칭키를 사용하면 키가 탈취될 수 있다는 위험이 존재한다.
- 공개키를 사용하면 HTTP 메시지의 길이가 큰 경우에 성능이 느리다. (공개키 알고리즘은 암호화, 복호화 알고리즘이 매우 복잡함)
- 그래서 HTTPS에서는 공개키로 암호화한 대칭키를 전달하고, 서로 공유된 대칭키를 가지고 통신하게 된다.
암호화 과정
- A는 B의 공개키로 암호화 통신에 사용할 대칭키를 암호화해서 B에게 보낸다.
- B는 암호문을 받고 자신의 비밀키로 복호화한다.
- B는 A로부터 얻은 대칭키로 A에게 보낼 평문을 암호화하여 A에게 보낸다.
- A는 자신의 대칭키로 암호문을 복호화한다.
- 앞으로 해당 대칭키로 계속 통신한다.
즉, 사용자 측에서는 대칭키 알고리즘을 통해 안전하게 키 교환을 한 후 해당 키로 대칭키 알고리즘을 통해 통신하게 된다.