프론트엔드

[Web] 브라우저 프로토콜의 종류, HTTP 프로토콜

seomoon 2022. 2. 10. 17:45

프로토콜의 종류

  • HTTP/HTTPS 프로토콜 : 웹 브라우저는 서버에 자원을 요청하고 응답을 받기 위해 HTTP 프로토콜을 사용한다.
  • 그 외의 웹 관련 프로토콜 :
    • IP 프로토콜 (Internet Protocol) : IP는 각각의 패킷을 IP 주소와 MAC 주소를 통해 상대방에게 전달하는 역할을 한다.
      • IP 주소 : 각 노드에 부여된 주소
      • MAC 주소 : 각 네트워크 카드에 할당된 고유의 주소
    • ARP 프로토콜 : ARP를 이용해 IP 주소를 MAC 주소로 변환하여 목적지를 찾아간다. IP주소는 유동적이기 때문에 고유의 대상이 될 수 없지만(변경될 수 있음), MAC 주소는 고유하기 때문에 ARP 프로토콜을 사용해 IP주소를 MAC주소로 변환하는 것이다.
    • TCP/UDP 프로토콜 :
      • TCP (Transmission Control Protocol) : 전송 제어 프로토콜. 데이터를 안정적으로, 순서대로, 에러 없이 교환할 수 있도록 전달하도록 통제한다. 클라이언트와 서버 간에 TCP 커넥션이 맺어지면, 메세지가 절대 사라지거나 손상되지 않고, 순서가 뒤바뀌는 일도 없는 안정성 있는 프로토콜이다.
        => HTTP는 자신의 (요청/응답)메세지를 전달하기 위해 TCP 프로토콜을 사용한다. IP 프로토콜과 함께 TCP/IP라는 명칭으로 사용된다.
      • UDP (User Datagram Protocol) : UDP는 데이터 전달에 대한 안정성을 보장하지 않는 프로토콜이다. UDP는 TCP에 비해 안정성은 낮지만 속도가 빨라 실시간 스트리밍 등의 서비스에서 사용된다. -> 서비스에 따라 사용하는 프로토콜이 다르다.

HTTP의 특성

1) 비연결성 (Connectionless)

  • 클라이언트와 서버가 한 번 연결을 맺은 후, 클라이언트 요청에 대해 서버가 응답을 마치면 연결을 유지하지 않고 끊어버린다.
  • 장점 : HTTP는 불특정 다수의 통신을 기반으로 설계되었다. 만약 서버에서 다수의 클라이언트와 연결을 계속 유지해야 한다면, 이에 따른 많은 리소스가 발생하게 된다. 따라서 연결을 유지하기 위한 리소스를 줄임으로써 더 많은 연결을 할 수 있다.
  • 단점 : 서버는 클라이언트를 기억하지 않으므로, 동일한 클라이언트의 모든 요청에 대해 매번 새로운 연결을 시도하고 해제하는 과정을 거쳐야한다. 따라서 연결/해제에 대한 오버헤드가 발생한다는 단점이 있다.
  • KeepAlive 속성 : 오버헤드를 줄이기 위해 HTTP의 KeepAlive 속성을 사용할 수 있다. KeepAlive는 지정된 시간 동안 서버와 클라이언트 사이에 패킷 교환이 없을 경우, 패킷을 주기적으로 보내는 것을 말한다. 이 때 패킷에 반응이 없으면 접속을 끊게 된다.
    (주기적으로 클라이언트의 상태를 체크해야하므로 서버가 바쁜 환경에서는 많은 메모리를 사용하게 될 수 있어 주의해야 한다. )

2) 무상태 (Stateless)

  • 서버가 클라이언트를 식별할 수 없는 것을 말한다.
  • 서버가 클라이언트를 기억할 필요가 있을 때는, 쿠키, 세션, 토큰 기반 인증 방식을 사용할 수 있다.
    • 쿠키 : 브라우저 단에서 사용자 정보를 저장해 서버가 클라이언트를 식별할 수 있게 한다.
      쿠키는 사용자 정보가 브라우저에 저장되기 때문에 보안에 취약하다.
    • 세션 : 브라우저가 아닌 서버 단에서 사용자 정보를 저장한다. 쿠키보다는 안전하지만, 세션 정보도 중간에 탈취당할 수 있다. 또한 세션을 사용하면 서버에 사용자 정보를 저장하므로, 서버의 메모리를 차지하게 되고, 만약 동시 접속자 수가 많은 서비스일 경우에는 서버 과부하의 원인이 될 수 있다.
    • 토큰 (Token) 기반 인증 방식: 쿠키와 세션의 문제점을 보완하기 위해 도입되었다. 토큰 기반 인증 방식의 핵심은, 보호할 데이터를 토큰으로 치환하여, 원본 데이터 대신 토큰을 사용하는 기술이라는 점이다. 그래서 중간에 공격자로부터 토큰이 탈취당하더라도, 데이터에 대한 정보를 알 수 없으므로 보안성이 높은 기술이라고 할 수 있다. 대표적인 토큰 기반 인증 방식으로는 OAuth와 JWT이 있다.

3) HTTP 상태코드 (status)

  • 서버가 HTTP 응답 메세지를 보낼 때, 요청에 대한 처리 상태를 숫자로 반환하는 데, 이를 응답 상태코드라고 한다. 응답 상태코드는 HTTP 응답 메세지의 헤더에 추가된다.
  • 상태코드 요약 : 200-206(요청 성공), 300-305(리다이렉션), 400-415(클라이언트 에러), 500-505(서버 에러)

4) HTTP Method

  • 클라이언트가 서버에 요청을 보낼 때, 요청의 목적을 HTTP 메서드에 명시한다.
  • HTTP Method 종류 :
    • GET : 서버에 리소스 요청 (조회)
    • POST : 서버에 입력데이터를 전송, 요청 엔티티 본문에 데이터를 넣어 서버에 전송 (삽입)
    • PUT : 서버가 요청 본문에 따라 요청 URI의 이름대로 새 문서를 만들거나, 이미 URI가 존재한다면 요청 본문을 변경할 때 사용. (수정)
    • DELETE : 서버에서 요청 URI 리소스를 삭제하도록 요청 (삭제)
      (서버에서 이 요청을 무시할 수도 있다. )
    • HEAD : GET과 동일하지만, 서버가 응답으로 엔터티 본문 반환 없이 헤더만 반환함.

5) 헤더

  • HTTP 프로토콜 상에서, 클라이언트와 서버는 데이터를 패킷 단위로 잘게 쪼개서 통신한다. 데이터 전송 단위인 패킷에는 요청/응답에 대한 메세지가 담겨 있다. 패킷의 구조는 다음과 같이 구성되어 있다.
    -> 시작라인 (Request Line), 헤더 (Header), 본문 (Body)
  • 그 중에서 헤더는 패킷에 대한 정보를 담고 있다.
    헤더에 명시할 수 있는 패킷 관련 정보는
    Date(메세지가 언제 만들어졌는지), Via(메세지가 어떤 프락시를 거쳐왔는지), client-IP, Accept(서버가 보내도 되는 미디어의 종류), Cookie, Age(응답이 얼마나 오래 걸렸는지), Server(서버 정보), Content-type(본문의 내용이 어떤 형식인지. 텍스트, 이미지 등) 등이 있다.

 

(Velog에서 이동 중입니다.. )