HTTP

변시윤·2023년 3월 30일
0

HTTP(HyperText Transfer Protocol)

인터넷에서 데이터를 주고 받을 수 있는 프로토콜 중 하나. 웹 브라우저와 웹 서버 간의 통신에서 주로 사용되며, 요청과 응답 형태로 이루어진다. 초기에는 HTML 위주로 전송했지만 최근에는 Plain text, JSOM, XML 등 다양한 형태의 정보를 전송할 수 있다. 또한 무상태 프로토콜이기 때문에 클라이언트와 서버 간의 연결을 유지하지 않는다. 클라이언트가 요청을 보내면 서버는 해당 요청에 대한 응답을 보내고 클라이언트와의 연결을 끊는다. 이러한 특징으로 인해 각각의 요청과 응답은 독립적인 트랜잭션으로 처리된다.데이터를 주고 받을 때 흔히 발생하는 CORS, CORB 같은 에러들 역시 HTTP에 대한 이해가 이뤄진다면 쉽게 해결할 수 있다.

📌 참조

트랜잭션(Transaction)

데이터베이스에서 데이터를 다룰 때, 하나의 데이터베이스 조작 작업들을 모두 성공적으로 수행하거나, 하나의 작업이라도 실패하면 전체 작업을 롤백하는 것을 의미한다. 이를 통해 데이터 일관성과 안정성을 유지할 수 있다.

트랜잭션은 원자성(Atomicity), 일관성(Consistency), 격리성(Isolation), 지속성(Durability)이라는 ACID 원칙을 따르는데, 이 원칙은 데이터베이스에서 여러 사용자가 동시에 데이터를 조작하더라도 일관성과 안정성을 보장해준다.

CORS(Cross-Origin Resource Sharing)

웹 페이지에서 다른 도메인, 프로토콜, 포트의 자원에 접근할 수 있는 권한을 부여하는 보안 정책이다. 예를 들어 도메인A에서 도메인B 자원에 접근시, 브라우저는 이를 차단한다. 단, 서버에서 응답 헤더에 Access-Control-Allow-Origin 속성을 추가한다면 이를 해결할 수 있다.

Access-Control-Allow-Origin: http://client.com

COBS(Cross-Origin BLOB Sharing)

브라우저에서 Blob 객체를 다른 도메인에 전달할 때 발생하는 오류다. CORS와 마찬가지로 서버에서 응답 헤더에 Access-Control-Allow-Origin 속성을 추가하고, Content-Type 헤더를 설정하면 해결할 수 있다.

Access-Control-Allow-Origin: http://client.com
Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept
Content-Type: application/octet-stream

HTTP 메세지 구조

클라이언트와 서버 간에 전송되는 데이터의 형식으로 크게 헤더와 바디로 구분된다. 헤더는 메시지에 대한 정보를 포함하고, 바디는 실제 전송할 데이터를 포함한다.

요청 메시지

[HTTP 요청 라인: 메소드, URL, 버전]
[HTTP 요청 헤더]
[HTTP 요청 바디]
  • 요청 라인

    • HTTP 메소드
    • 요청 대상의 URL
    • HTTP 프로토콜 버전
  • 요청 헤더
    클라이언트가 보낸 요청 정보로 key:value로 이루어진 여러개의 필드로 구성

  • 요청 바디
    클라이언트가 서버에 보내는 데이터로 POST, PUT과 같은 메소드에서 사용

응답 메시지

[HTTP 응답 라인: 버전, 상태 코드, 상태 메시지]
[HTTP 응답 헤더]
[HTTP 응답 바디]
  • 응답 라인

    • HTTP 프로토콜 버전
    • 상태 코드: 요청에 대한 처리 결과(200, 404, 500 등)
    • 상태 메시지: 상태 코드에 대한 설명
  • 응답 헤더
    서버가 응답한 메시지에 대한 정보로 key:value로 이루어진 여러개의 필드로 구성

  • 응답 바디
    응답에 대한 본문으로 서버가 클라이언트에게 보내는 데이터(HTML, 이미지, 파일 등의 리소스)가 포함


HTTP보다 HTTPS가 더 안전한 이유

HTTPS (HyperText Transfer Protocol Secure) 역시 HTTP와 마찬가지로 인터넷에서 정보를 주고 받을 수 있는 프로토콜이다. 그러나 HTTP와 달리 HTTPS는 데이터를 암호화하고 인증 과정을 거친다.

데이터 암호화

HTTPS에서 데이터는 SSL/TLS 프로토콜을 사용하여 암호화된다. 이는 데이터를 전송하는 과정에서 중간에 누군가가 가로채더라도 데이터를 읽을 수 없도록 보호한다.

인증

HTTPS에서는 공개키 인프라구조(PKI)를 사용하여 인증된 서버에서만 데이터를 전송할 수 있도록 보장한다. 서버는 공개키와 개인키를 생성하는데, 이때 공개키는 인터넷을 통해 공개되며 개인키는 서버에 저장된다. 이후 클라이언트는 서버의 공개키를 이용하여 암호화된 데이터를 전송한다. 이 과정에서 공개키를 가로챈 공격자가 있다면 데이터를 해독할 수 없기 때문에 보안성이 보장된다.

profile
개그우먼(개발을 그은성으로 하는 우먼)

0개의 댓글