HTTP(Hypertext Transfer Protocol)는 웹에서 데이터를 주고받는 서버-클라이언트 모델의 프로토콜입니다. 쉽게 설명하자면 웹 브라우저가 서버와 통신하는 규칙이에요.
HTTP 통신 방법을 더 자세히 알아볼게요. 먼저 사용자가 웹사이트를 방문하면 브라우저가 웹서버로 리소스를 요청해요. 요청을 받은 웹서버는 HTML, CSS와 같은 리소스를 응답으로 돌려줘요. 클라이언트의 요청과 서버의 응답 사이에는 여러 프록시 서버가 있어요. 프록시 서버는 캐시를 보관하거나 보안을 위해 서버의 IP 주소를 숨기는 등 다양한 역할을 해요. 이 모든 통신은 안전하기 이뤄지기 위해 TCP(Transmission Control Protocol) 연결을 사용합니다.
브라우저, 서버가 주고받는 요청과 응답의 형태를 더 자세히 살펴볼게요.
브라우저는 아래와 같은 HTTP 요청을 서버로 보내요.
첫 줄에는 HTTP 요청 메서드, URL 경로, HTTP 프로토콜 버전 정보가 있어요.
두 번째 줄부터 모두 HTTP 요청의 헤더인데요. key:value
쌍으로 이뤄져 있어요. 헤더는 웹사이트 도메인의 호스트, 언어, 사용자의 브라우저 등 서버가 필요한 정보를 전달해요.
요청에 문제가 없다면 서버는 아래와 같은 응답을 돌려줘요. 첫 줄에는 HTTP 프로토콜 버전 정보와 HTTP 상태 코드가 있어요.
둘째 줄부터 보이는 key:value
쌍은 역시 모두 헤더입니다. 응답의 헤더는 브라우저가 필요한 정보를 전달해줘요.
마지막으로 응답의 Body는 브라우저가 요청한 데이터입니다. 아래 예시에서는 HTML 데이터를 돌려주고 있어요.
HTTP 통신에서 브라우저와 서버는 데이터를 일반 텍스트로 교환해요. HTTP는 데이터를 암호화하지 않고 전송하기 때문에 제3자가 데이터를 가로채고 읽을 수 있어요. 보안을 강화하기 위해 HTTP는 HTTPS(Hypertext Transfer Protocol Secure)로 확장됐어요.
HTTPS는 이름에서도 알 수 있듯이 HTTP의 더 안전한 버전이에요. HTTPS에서는 브라우저와 서버가 데이터를 전송하기 전에 안전하고 암호화된 연결을 생성해요. HTTPS는 모든 요청 및 응답을 SSL(Secure Socket Layer) 및 TLS(Transport Layer Security) 프로토콜에 따라 암호화해요. 그래서 HTTPS를 사용하면 카드 정보나 비밀번호와 같은 민감한 정보를 보호할 수 있어요. 토스페이먼츠 API도 구매자의 안전을 보호하기 위해 HTTPS 통신과 TLS 버전 1.2 이상만 지원해요.