[Network] HTTP

nero_luv03·2021년 2월 23일
0

CS

목록 보기
10/11

HTTP - Hyper Test Transfer Protocol

웹 상에서 클라이언트와 서버 간에 요청/응답으로 정보를 주고 받을 수 있는 프로토콜입니다.

동작

클라이언트가 url을 통하거나 다른 것을 통해서 요청을 하면 서버에서는 해당 요청에 맞는 결과를 찾아 사용자에게 응답하는 형태로 동작합니다.

  • HTML 문서
  • Plain text로부터 JSON 데이터 및 XML과 같은 형태의 정보

특징

  • HTTP 메세지는 HTTP 서버와 HTTP 클라이언트에 의해 해석이 됩니다.
  • TCP/IP를 이용하는 응용 프로토콜입니다.
  • 연결 상태를 유지하지 않는 비연결성 프로토콜, 그렇게 때문에 요청/응답 방식으로 동작합니다.

❗️

비연결 : 클라이언트가 요청을 서버에 보내고 서버가 적절한 응답을 클라이언트에 보내면 바로 연결이 끊긴다
무상태 : 연결을 끊는 순간 클라이언트와 서버의 통신은 끝나며 상태 정보를 유지하지 않는다.

요청 응답 헤더

  • 일반 헤더
    : 요청과 응답 메세지 모두에서 사용 가능한 일반 목적의 헤더 항목

    Date, Connection, Cache-Control, Pragma, Trailer

  • 엔티티/개체 헤더
    : 실제 메세지 또는 전송 중인 HTTP 본문에 대한 정보가 포함되며 컨텐츠 길기, 언어, 인코딩, 만료 날짜 및 기타 중요 정보와 같은 정보 ..

    Content-Type, Content-Language ...

  • 요청 / 응답 헤더
    : 서버에 요청하면 요청 헤더가 있고 서버가 클라이언트/브라우저로 응답을 다시 보낼 때 응답 헤더가 있다

    Host, Cookie, Accept, User-Agent ...

요청의 종류

  • GET : 자료 요청
  • POST : 자료 생성
  • DELETE : 자료 삭제
  • PUT : 자료 수정

응답 상태코드

  • 1XX : 요청을 받았으며 작업을 계속함
  • 2XX : 요청이 성공적으로 처리함
  • 3XX : 클라이언트는 요청을 마치기 위해 추가 동작을 취해야함
  • 4XX : 오류 발생!
  • 5XX : 서버가 유효한 요청을 명백하게 수행하지 못함

이렇게 클라이언트와 서버 간의 교류가 HTTP라는 규약을 이용하여 발생하게 된다.



🥊 HTTP vs HTTPS

HTTPS - HyperText Transfer Protocol over Secure Socket Layer

HTTP 프로토콜의 보안 버전입니다. 웹 사이트 사용자가 인터넷을 통해 신용 카드 번호, 은행 정보 및 로그인 자격 증명과 같은 중요한 데이터를 안전하게 전송할 수 있습니다.
쇼핑, 뱅킹 및 원격 작업과 같은 온라인 활동을 보호하는데 특히 중요!

  • 장점 : 네트워크 상에서 열람, 수정이 불가능하므로 안전
  • 단점 : 암호화를 하는 과정이 웹 서버에 부하, HTTP에 비해 느리고 설치 및 인증서를 유지하는데 추가 비용이 발생, 재인증 시간 소요

그래서 둘의 차이점은?

  1. HTTPS는 브라우저와 웹 사이트 간의 모든 통신이 암호화 되어있습니다. HTTP의 보안 버전이라고 볼 수 있습니다.
  2. HTTPS가 HTTP에 비해 느리다
  3. 동작 과정 속에서도 차이가 발생한다
    • HTTP : 서버 접속 > 클라이언트 > 요청 > 서버 > 응답 > 클라이언트 > 연결종료
    • HTTPS : 공개키 암호화 방식과 대칭키 암호화 방식의 장점을 활용해 하이브리드 사용
      클라이언트가 서버에 접속하여 Handshaking 과정에서 서로 탐색
      Client > Server > Client 인증 확인 > Server 인증 확인 > Handshaking 종료 > 데이터 전송

❓Handshaking
네트워크 통신 연결의 시작으로 TCP/IP 프로토콜을 이용해서 통신을 하는 응용 프로그램이 데이터를 전송하기 전에 정확한 전송을 보장하고자 상대방 컴퓨터와 사전에 세션을 수립하는 과정

profile
iOS developer

0개의 댓글