May 10, 2021, TIL (Today I Learned) - Http, Https

Inwoo Hwang·2021년 8월 26일
0
post-thumbnail

수업 내용


TCP / IP / HTTP

모뎀

  • 팩스 소리 나던 시절 (스티븐 어렸을 적)
  • 전화선을 통해 0과 1을 통신
  • 여보세요? (사람이 전화 받는 양식)

Protocol

  • 프로토콜

  • 통신규약 (정보를 주고 받는 약속)

  • 장비 사이에서 메시지를 주고 받는 양식과 규칙의 체계

    즉, 통신(네트워킹) 할 때 정해진 메세지 규칙

  • http, https, ftp, sftp, telnet, ssh, ssl, smtp

HTTP

  • Hyper Text Transfer Protocol
    • Hyper Text - 링크들이 연결되어 있는 텍스트

TCP / IP

  • TCP (transmission control protocol/internet protocol) 전송제약 규약
  • IP (Internet Protocol) 인터넷 규약

HTTP와 HTTPS

HTTP

  • Hyper Text Transfer Protocol

    • Hyper Text - 링크들이 연결되어 있는 텍스트

    HTTP Request message

    Request Header

    GET /1.html HTTP/1.1
    Host: localhost: 8080
    Connection: keep-alive
    User-Agent:
    .
    .
    Accept-Encoding:

    GET 요청행

    localhost: 호스트는 네트워크의 컴퓨터 한대 한대를 식별하는 이름이다. 호스트를 작성하는 것은 우리가 요청하는 웹서버의 주소를 적는것이다. 호스트가 있으면 한 개의 웹서버가 여러 개의 도메인을 호스팅할 수 있다.

    8080: 포트라고 한다. 한대의 컴퓨터에는 여러 개의 서버가 설치되어있을 수 있고 8080이라는 포트번호의 웹서버를 가리킨다.

    User-Agent: 유저 컴퓨터의 브라우저의 정보 그리고 운영체제 정보를 가리킨다.

    Accept-Encoding: 해당 웹브라우저는 어떤 압축방식을 지원하는지 나타내는 것.

HTTP Response message

1xx: 정보 전달

2xx: 전달 성공

3xx: 리다이렉션

4xx: 클라이언트 오류

5xx: 서버 오류

HTTP 응답코드

활동학습

  • 아래 상황에서는 HTTP의 상태 코드는 어떻게 표현하는 것이 적절할지 논의해봅시다.

    • 게시판 글 삭제 불가 - 요청한 리소스 찾을 수 없음, 리소스가 완전히 삭제된 것이 아님 - 404 Not Found

    • 게시판 글 작성 완료 - 요청이 성공하고 리소스를 생성, post 요청에 의한 응답결과 - 201 Created

    • 서버 애플리케이션 exception 발생 - 500 Internal Server Error or 510 Not Extended (en-US)

    • 게시글 찾을 수 없음 - 401 Unauthorized or 403 Forbidden

    • 서버 데이터베이스 오류 - 507 Insufficient Storage

    • 게시글 접근 거부 -

      451 Unavailable For Legal Reasons
      • HTTP 451 혹은 법적인 이유로 사용할 수 없습니다(Unavailable For Legal Reasons)는 오류 메시지는 법적인 이유, 예를 들어 정부기관의 검열 등으로 인해 사용자가 요구한 리소스를 가져올 수 없다는 의미이다
      • [403 Forbidden](<https://developer.mozilla.org/ko/docs/Web/HTTP/Status/403>)클라이언트는 콘텐츠에 접근할 권리를 가지고 있지 않습니다. 예를들어 그들은 미승인이어서 서버는 거절을 위한 적절한 응답을 보냅니다. 401과 다른 점은 서버가 클라이언트가 누구인지 알고 있습니다.
    • http://a.comhttps://a.com 으로 리다이렉션 - 301 Moved Permanently

    • 게시판 글 수정 완료 - put을 요청하여 200(ok)

    • 요청 과부하로 접속 불가 - 사용자가 지정된 시간에 너무 많은 요청을 보냈습니다. - 429 Too Many Requests

    • 접근 권한 없음 - 401 Unauthorized or 403 Forbidden

    • 요청 URL이 너무 김

      • 414 URI Too Long (en-US) 클라이언트가 요청한 URI는 서버에서 처리하지 않기로 한 길이보다 깁니다.
      • [416 Requested Range Not Satisfiable](<https://developer.mozilla.org/ko/docs/Web/HTTP/Status/416>), Range 헤더 필드에 요청한 지정 범위를 만족시킬 수 없습니다; 범위가 타겟 URI 데이터의 크기를 벗어났을 가능성이 있습니다.
  • HTTPS는 HTTP에 어떤 프로토콜이 추가된 것이며, 어떤 이점과 단점이 있을까? - SSL, TLS

    • HTTP의 취약점을 보완하기 위해 보안강화
    • HTTP는 암호화 되지 않아서 위험성이 큼
      • ex) 예전 홈페이지 들어가면 비밀번호가 보이기도 함.
    • 전송 계층 보안(Transport Layer Security) 프로토콜을 추가한 프로토콜 HTTPS
    • 일부 브라우저에서 HTTP 접속시 오류 표시, HTTPS로 자동 연결, 2021년 4월부터 강제 연결

    [Web 11] http 버전 별 특징 (http/1.x vs http/2)

  • HTTP v1.1와 v.2는 어떤 차이가 있고, 현재 우리가 주로 사용하는 버전은 몇일까?

    • v1.1(1999) vs v.2(2015) vs v.3(2020)
    • 파일 전송의 동기방식의 차이? HTTP 1.1(동기) → HTTP 2(비동기) - HOL 해소
    • HTTP Header Data Compression: 중복된 header를 재전송하지 않음
    • Stream Priority: 스트림에 우선순위를 두어 처리
    • HOL(head of line) 블로킹(Blocking) 해소
      • 파일 전송할 때 하나씩 하나씩 전송하는 게 아닌 병렬로 처리가능

    HTTP/2 소개 | Web Fundamentals | Google Developers

frame: HTTP 2에서 제일 작은 정보의 단위, Header 와 Data 둘 중 하나

message: 요청 혹은 응답의 단위, 다수의 frame으로 이루어짐(클라이언트와 서버간의 요청과 응답)

stream: message가 여러개 모인 구조

대부분의 사이트들이 HTTP 1.1을 사용, 구글은 1.1과 2 둘 다 지원, 점차 v2로 바꾸는 추세

웹브라우저의 개발자도구를 이용해 프로토콜 확인 가능

HTTP 2 지원 사이트

  • 아직 현실적으로 지원되는 상황은 많지 않음.
  • 구글
  • 유튜브
  • 네이버
  • 인스타그램
  • 페이스북
  • 아마존

HTTP v.3(2020)

  • 파이어폭스와 크롬은 지원하지만 기본적으로 비활성화
  • macOS빅서에서 사파리14는 기본으로 활성화
profile
james, the enthusiastic developer

0개의 댓글