DIY1. HTTP

jathazp·2022년 1월 27일
0

15

목록 보기
9/14

HTTP (Hyper Text Transfer Protocol) ?

  • HTTP란 인터넷에서 데이터를 주고 받을 수 있는 프로토콜 (여기서 데이터는 주로 HTML 문서를 가리킨다.)
  • 즉, 클라이언트와 서버 사이에서 이루어지는 요청/응답에 대한 규칙이다.
  • 모든 프로그램은 이 규약에 맞춰 개발 함으로써 서로 데이터를 교환할 수 있다.

HTTP의 특징

  • HTTP 메시지는 HTTP 서버와 HTTP 클라이언트에 의해서 해석된다.
  • 주로 TCP를 사용한다. ⇒ HTTP/3 부터는 UDP를 주로 사용한다.
  • HTTP는 연결 상태를 유지하지 않는 비연결성 프로토콜이다. ⇒ 즉, 클라이언트가 요청을 해서 응답을 받으면 연결을 끊어버린다.
    (이렇게 하지 않으면 서버는 수많은 클라이언트와 연결을 계속 유지해야 한다. ⇒ 리소스 낭비) ⇒ 이를 위한 해결책으로 쿠키와 세션이 있다.
    • Cookie : Client 의 상태정보를 담고 있으며, Local PC에 저장되어 동일 사이트 재방문시 Client의 PC에 쿠키가 있는 경우 요청 페이지와 함께 Cookie를 전송한다. ⇒ 단점 : 개인 Local PC에 저장되는 값이기 때문에 보안에 취약하다.
    • Session : Server에 Client의 상태 정보를 저장하는 기술이다. 서버에 클라이언트에 대한 상태 정보를 저장하고 클라이언트를 구분할 수 있는 ID (Session ID) 를 부여하여 관리한다. ⇒ 장점 : 서버에 저장되기 때문에 쿠키에 비해 상대적으로 안전하다.
         단점 : 사용자가 많아질수록 **서버의 메모리를 많이 잡아먹는다**.
  • HTTP는 연결을 유지하지 않는 프로토콜이므로 요청/응답 방식으로 작동한다.

HTTP 응답 상태 코드

  • 100 - 109
    • 메시지 정보
  • 200 - 206
    • 요청 성공
  • 300 - 305
    • 리다이렉션
  • 400 - 415
    • 클라이언트 에러
  • 500 - 505
    • 서버에러

HTTP Method

클라이언트가 서버로 요청을 할 때, 어떠한 목적을 갖는 행위인지 HTTP 메서드에 명시하는 것

HTTP Method 정리

  • GET
    • 서버에게 리소스를 달라는 요청 ( 조회 )
  • HEAD
    • 정확히 GET과 같지만, 서버는 응답으로 엔터티 본문 반환없이 헤더만을 반환.
    • 클라이언트는 리소스를 가져올 필요 없이 헤더만을 통해 정보를 얻는다.
  • PUT
    • 서버가 요청의 본문을 갖고 요청 URI의 이름대로 새 문서를 만들거나, 이미 URI가 존재한다면 요청 본문을 변경할 때 사용
  • POST
    • 서버에 입력데이터를 전송하며 요청 엔티티 본문에 데이터를 넣어 서버에 전송( 삽입 )
  • DELETE
    • 서버에서 요청 URI 리소스를 삭제하도록 요청 ( 삭제 )
  • TRACE
    • 클라이언트와 목적지 서버 사이에 있는 모든 HTTP 애플리케이션의 요청/응답 연쇄를 따라가면서 자신이 보낸 메시지의 이상 유무를 파악
    • 서버는 응답 메시지의 본문에 자신이 받은 요청메시지를 넣어 응답하며, 주로 진단을 위해 사용
  • OPTIONS

HTTP 동작 과정

  1. 웹 브라우저에 URL 입력

  2. DNS 서버에 의해 IP 주소를 찾음

  3. 클라이언트가 웹 서버에 TCP 연결을 시도

    ⇒ 3-way-handshaking

  4. 브라우저는 서버에 해당 사이트의 사본을 클라이언트에게 보내달라는 HTTP 요청 메시지를 전달

    ⇒ 서버에게 GET 요청 메시지를 전달하는 것 (request)

    요청 메세지 : 메소드 / 요청URL / HTTP 버전

  5. 요청을 받은 서버는 클라이언트의 요청을 승인하고, 요청에 맞는 데이터(웹 문서)를 전송한다.(response)

    ⇒ 응답 메세지 : HTTP 버전/ 상태코드 /

  6. 서버는 웹사이트의 파일을 패킷으로 브라우저에 전송하고 브라우저는 패킷 수신후 다운로드

  7. 브라우저 에서는 패킷을 모아 완전한 웹 문서를 출력

  8. 4-way-hand shaking 으로 TCP 연결을 해제

HTTP 동작방식(웹브라우저-웹서버) IP/TCP/HTTP

HTTP vs HTTPS

  • HTTPS는 HTTP에 데이터 암호화가 추가된 프로토콜 ⇒ 공개키/개인키 기반으로 데이터를 암호화 하였기 때문에 데이터를 전송할 때 임의의 사용자가 원본 데이터를 보는것은 불가능하다.
  • HTTPS 는 암호화/복호화 과정이 필요하기 때문에 HTTP 보다 느리다. ⇒ 다만, 오늘날에는 큰 차이를 느끼기 힘들다.
  • HTTPS 는 (공개키 사용을 위한) 인증서를 발급하고 유지하기 위해 추가비용이 발생한다.
  • HTTP는 80번 포트를, HTTPS 는 443번 포트를 사용한다.

https://mangkyu.tistory.com/98

추가자료)

3way, 4way handshake, tcp
https://bangu4.tistory.com/74
https://blog.daum.net/tlos6733/47
https://victorydntmd.tistory.com/286

0개의 댓글