[Network] HTTP 프로토콜 개념, HTTP와 HTTPS의 차이, GET과 POST의 차이
1. HTTP 프로토콜
- 클라이언트와 서버가 인터넷 상에서 데이터를 주고 받기 위해 쓰이는 프로토콜
- TCP/IP를 이용하는 프로토콜
- HTML 문서, 텍스트, 이미지, 비디오, 오디오 파일 등 어떤 종류의 데이터든지 전송 가능
1-1. HTTP 특징
- 서버/클라이언트 모델
- 클라이언트에서 request를 보내면 서버는 response
- Connectionless
- request 시 서버에 연결하고, 응답을 받으면 연결을 끊음
- 최소한의 접속 유지로 많은 유저의 요청 처리
- 클라이언트의 이전 상태를 알 수 없음 (Stateless)
- Cookie를 이용하여 해결 가능
2. HTTP와 HTTPS
2-1. HTTP
- 평문 통신이라 도청이 가능
- TCP/IP 통신은 통신 경로 상에서 엿볼 수가 있음
- SSL 또는 TLS 프로토콜을 조합하여 암호화할 수 있음
- HTTP에 SSL을 조합한 것을 HTTPS라고 함
- 통신 상대를 확인하지 않기 때문에 위장 가능
- Request 보낸 곳이 Response를 반환해야 하는 곳이 맞는지 확인할 수 없음
- 접근 허가된 통신 상대인지 확인 불가
- 유효하지 않은 Request도 수신함 > DoS 공격에 취약함
- 완전성을 증명할 수 없어 변조 가능
- 서버와 클라이언트 사이에 수신되는 내용이 실제 송신한 내용과 일치하지 않을 수 있음
- 중간자 공격 : 공격자가 중간에서 내용을 가로채 변조하는 공격
2-1-1. SSL
- HTTP 프로토콜 암호화 방법
- 제 3자 기관으로부터 발행되는 증명서를 바탕으로 상대를 확인
- 클라이언트 본인 확인, 웹 사이트 인증 등에 활용됨
2-2. HTTPS
- HTTP는 TCP와 직접 통신
- HTTPS는 SSL과 통신하고 SSL이 TCP와 통신하는 방식
- 암호화 및 증명서를 이용할 수 있음
3. GET과 POST
3-1. GET
- 요청 데이터가 Header 부분에 담겨 전송됨
- url 주소 뒤에 데이터가 담기므로 전송되는 데이터의 크기가 제한적이고 보안에 취약하다.
3-2. POST