웹/HTTP

[HTTP 완벽가이드] 1장 HTTP 개관

셈(dev) 2022. 7. 24. 15:13

1.1 HTTP: 인터넷의 멀티미디어 배달부

  • HTTP는 신뢰성 있는 데이터 전송 프로토콜을 사용

1.2 웹 클라이언트와 서버

  • 웹 콘텐츠는 웹 서버에 존재
  • 클라이언트는 서버에게 HTTP 요청을 보내고 서버는 요청된 데이터를 HTTP 응답으로 돌려준다.
    • 클라이언트: 익스플로러, 구글 크롬

1.3 리소스

  • 웹 리소스는 웹 콘텐츠의 원천
  • 정적파일: 텍스트, HTML, 마이크로소프트 워드, 어도비 아크로뱃 파일, JPEG 이미지, AVI 동영상 파일 등
  • 동적 콘텐츠 리소스: 사용자가 누구인지, 어떤 정보를 요청 했는지, 몇 시인지 등에 따른 콘텐츠들을 생성
  • 1.3.1 미디어 타입
    • MIME: 데이터 포맷 라벨(multipurpose Internet Mail Extensions)
    • 주 / 부 타입으로 이뤄짐
    • ex) text/html, text/plain, image/jpeg ..
  • 1.3.2 URI
    • uniform resource identifier
    • 정보 리소스를 고유하게 식별하고 위치를 저장할 수 있다.
    • URL과 URN으로 나뉨
  • 1.3.3 URL
    • uniform resource locator
    • 특정 서버의 한 리소스에 대한 구체적인 위치를 서술함
    • 첫 번째 부분은 스킴(http://)
    • 두 번째 부분은 서버의 인터넷 주소를 제공
    • 마지막은 웹 서버의 리소스를 가리킴
  • 1.3.4 URN
    • uniform resource name
    • 콘텐츠를 이루는 한 리소스에 대해, 그 리소스의 위치에 영향을 받지 않는 유일무이한 이름 역할을 함

1.4 트랜잭션

  • 1.4.1 메서드
    • 요청 명령
    • 모든 HTTP 요청 메시지는 한 개의 메서드를 갖는다
    • GET, POST, PUT, DELETE, POST, HEAD
  • 1.4.2 상태 코드
    • 모든 HTTP 응답 메시지는 상태 코드와 함께 반환됨
    • HTTP는 사유 구절도 함꼐 보낸다.
  • 1.4.3 웹페이지는 여러 객체로 이뤄질 수 있다.
    • 애플리케이션은 하나의 작업을 수행하기 위해 여러 HRRP 트랜잭션을 수행한다.

1.5 메시지

  • HTTP 메시지는 단순한 줄 단위의 문자열
  • 웹 클라이언트에서 웹 서버로 보낸 HTTP 메시지를 요청 메시지라고 부르며, 반대는 응답 메시지라고 부른다.
  • 세 가지로 구성되어 있다.
    • 시작줄: 요청이라면 무엇을 해야 하는지, 응답이라면 무슨 일이 일어났는지
    • 헤더: 쌍점으로 구분돼 있는 하나의 이름과 하나의 값으로 구성
    • 본문: 어떤 종류의 데이터든 들어갈 수 있는 메시지 본문

1.6 TCP 커넥션

  • 1.6.1 TCP/IP
    • 인터넷 전송 프로토콜
    • 오류없는 데이터 전송, 순서에 맞는 전달, 조각나지 않는 데이터 스트림 보장
  • 1.6.2 접속, IP 주소 그리고 포트번호
    • HTTP 전에 인터넷 프로토콜 주소와 포트 번호를 사용해 클라이언트와 서버 사이에 커넥션을 맺어야 한다.
    • 도메인 = 호스트 명
    • URL에 포트번호가 없으면 기본값 80이라고 가정하면 된다
  • 1.6.3 텔넷을 이용한 실제 예제
    • 텔넷은 직접 컴퓨터의 포트로 TCP 커넥션을 연결해서 그 포트로 글자를 타이핑 해 넣을 수 있게 해준다.

1.7 프로토콜 버전

  • HTTP/0.9: GET 메서드만 지원, MIME, 헤더, 버전 정보는 지원 X
  • HTTP/1.0: 처음으로 널리 쓰이기 시작한 HTTP 버전
  • HTTP/1.0+: keep-alive 커넥션, 가상 호스팅 지원, 프락시 연결 지원
  • HTTP/1.1: 설계 결함 교정, 성능 최적화, 잘못된 기능 제거
  • HTTP/2.0: 구글의 SPDY 프로토콜 기반

1.8 웹의 구성요소

  • 프락시: 클라이언트와 서버 사이에 위치한 HTTP 중개자
  • 캐시: 많이 찾는 웹페이지를 클라이언트 가까이에 보관하는 HTTP 창고
  • 게이트웨이: 다른 웹플리케이션과 연결된 특별한 웹 서버
  • 터널: 단순 HTTP 통신을 전달하는 특별한 프록시
  • 1.8.1 프락시
    • 클라이언트와 서버 사이에 위치
    • 클라이언트의 모든 HTTP 요청을 받아 서버에 전달
    • 주로 보안을 위해 사용
  • 1.8.2 캐시
    • 자주 찾는 것의 사본을 저장, HTTP의 프락시 서버
  • 1.8.3 게이트 웨이
    • 다른 서버의 중개자로 동작하는 특별한 서버
    • HTTP 트래픽을 다른 프로토콜로 변환하기 위해 사용됨
    • 스스로 리소스를 갖고 있는 진짜 서버인 것처럼 요청을 다룬다.
  • 1.8.4 터널
    • 두 커넥션 사이에서 raw 데이터를 열어보지 않고 그대로 전달해주는 HTTP 애플리케이션
    • 비 HTTP 데이터를 하나 이상의 HTTP 연결을 통해 그대로 전송해주기 위해 사용됨
    • ex) 암호화된 SSL 트래픽을 HTTP 커넥션으로 전송함으로써 웹 트래픽만 허용하는 사내 방화벽 통과
  • 1.8.5 에이전트
    • 사용자를 위해 HTTP 요청을 만들어주는 클라이언트 프로그램