ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • HTTP 완벽가이드 1장
    개발/컴퓨터 사이언스 2023. 3. 27. 06:54

    1장 HTTP 개관

    HTTP

    • 신뢰성 있는 데이터 전송 프로토콜로, 정보의 왜곡이나 손상에 대해 걱정할 필요가 없다.웹 클라이언트, 서버
    • 웹 트래픽 전송방식 : 클라이언트(내 컴퓨터)가 HTTP 요청을 보내면, 서버에서 HTTP 응답을 돌려준다.리소스
    • 텍스트, 이미지, 동영상, HTML 파일 같은 정적 파일과 요청에 따라 달라지는 동적파일로 구성미디어 타입
    • 다양한 리소스들을 구별하기 위해 웹은 MIME라는 데이터 포맷 라벨을 통해 구분한다.
    • MIME의 형태는 주타입 / 부타입 문자열 라벨로 구성되어 있다.
        - ex) text/html, image/gif...
      URI(Uniform Resource Identifier)
    • 웹 서버 리소스의 이름을 지칭하는 용어로, 통합 자원 식별자라고 한다.
    • URL(Uniform Resource Locator), URN(Uniform Resource Name) 두가지 종류가 있다.URL
    • 통합 자원 지시자라고 불리며 대부분의 URI는 URL이다, 서버 리소스의 세부적인 위치를 서술한다.
    • 구조
      • scheme : 가장 첫 부분에 오는 것으로, 서버 리소스에 접근시 사용될 프로토콜을 표기한다.
        • ex) https://
      • 인터넷 주소 : 서버 리소스가 저장된 DNS 주소를 표기한다.
      • 리소스 경로 : 가장 마지막은 웹 서버의 리소스가 저장된 경로를 표기한다.
        • ex) channels/funny.gifURN
    • 이름으로 서버 리소스에 접근할 수 있는 방식이다.
    • 프로토콜, 서버상의 위치에 관계없이 자유롭게 접근 가능하다.
    • HTTP 1.1에서는 위치파악을 위한 인프라가 갖춰지지 않아 사용되고 있지 않다.

    트랜잭션

    • 웹 클라이언트의 request와 웹 서버의 response로 구성
    • HTTP 메시지를 통해 상호작용
    • 웹페이지는 여러 리소스의 모음으로 구성되기 때문에 여러 번의 트랜잭션이 발생한다.메서드
    • 클라이언트는 다양한 메서드를 통해 서버에 요청을 전달
    • 종류가 굉장히 많고(GET, POST, PUT, DELETE, HEAD...), 각자 고유한 명령을 갖는다.상태코드
    • 클라이언트의 요청에 대한 웹 서버의 응답 방식이다.
    • 숫자와 그 사유 구절을 함께 적어 HTTP 응답 메시지에 담아 클라이언트로 보낸다.
    • 종류 : 예시이며 2xx, 3xx, 4xx, 5xx의 여러 상태코드가 더 존재한다.
      • 200 : 이상없음
      • 302 : 리소스의 위치가 다른 곳에 있으므로 다시 request할 것
      • 404 : 리소스가 존재하지 않음.메시지
    • 구성 : 단순한 텍스트로 구성되어 있어 읽기 쉽다.
      • 시작줄 : 클라이언트 요청이라면 사용 메서드와 요청 리소스 및 프로토콜 이름을, 서버 응답이라면 응답결과와 사용 프로토콜이 표기되어 있다.
      • header: 여러 항목들이 있으며, 이름 : 내용 으로 구분된다.
      • body : 요청시에는 서버에 보낼 데이터가, 응답 시에는 결과로 반환할 데이터가 담겨있다.TCP 커넥션
      • TCP/IP
    • HTTP는 TCP/IP 네트워크 통신 5계층 중 애플리케이션 계층에 속한다. 핵심 세부사항은 신뢰성 높은 TCP/IP 프로토콜이 담당하게 된다.
    • TCP/IP는 데이터의 순서, 안정성(조각나지 않음, 오류 x)을 보장한다.
    • 네트워크와 하드웨어의 특성을 숨기고, 컴퓨터/네트워크 종류에 상관없이 신뢰성 있는 연결 보장
    image

    IP주소와 포트번호

    • HTTP 메시지를 전송하기 전, 클라이언트와 서버 사이를 TCP/IP 커넥션을 맺어야 한다.
    • URL을 통해 IP주소와 포트번호 추론 가능
      • IP주소 : URL의 인터넷 주소는 웹 서버에 저장된 리소스의 위치이나, DNS가 읽을 수 있는 호스트 명으로 되어 있다. DNS(Domain Name Service)는 호스트 명을 읽어들여 숫자 형태의 IP주소로 변환 시킨다.
      • 포트 번호 : 인터넷 주소 마지막에 :포트번호로 표기된다. 없다면 기본값인 80을 사용한다는 의미
    • 대략적인 트랜잭션 과정
      • 웹 브라우저가 서버 URL에서 호스트명(인터넷 주소) 추출
      • DNS를 통해 서버 호스트 명 IP주소로 변환, 포트번호 존재시 추출
      • 웹 브라우저와 서버 간의 TCP 커넥션 생성
      • 웹 브라우저가 서버에 HTTP 요청 보내기
      • 웹 브라우저로 HTTP 응답 반환
      • 커넥션이 닫히고, 웹브라우저가 화면에 응답을 통해 원하는 정보를 보여줌프로토콜 버전
    • HTTP/0.9
      • 초창기 버전. GET 메서드만 지원했다.
      • MIME, 포트번호, HTTP 버전 같은 것도 없엇다.
      • 목적은 간단한 HTML 객체를 서버에서 받아오는 것
    • HTTP/1.0
      • 가장 널리 쓰인 버전
      • 버전 번호, 헤더, 포트번호, GET 이외 추가 메서드, 멀티미디어 객체 처리 추가
      • 완벽하지 않지만, 월드 와이드 웹의 유행을 이끔
    • HTTP/1.0+
      • keep-alive 커넥션, 가상 호스팅, 프록시 연결 지원 비공식적으로 추가
    • HTTP/1.1
      • 성능 개선, 오류 수정에 집중한 버전(현재)
      • 더 복잡한 웹 앱, 배포 지원
    • HTTP/2.0
      • 구글의 SPDY 프로토콜 기반 프로토콜로, 현재 설계 진행중..웹 구성요소
    • 클라이언트와 서버 외에 애플리케이션 계층에는 여러 구성요소들이 존재프록시
    • 클라이언트와 서버 사이에 존재하여 클라이언트의 요청을 받아 대신 서버에 전달하고, 서버의 응답도 대신 받아 클라이언트에 전달한다.
    • 중개자 역할과 더불어 요청/응답에 대한 필터링을 통해 데이터를 정제하여 보안에 기여캐시
    • 성능 최적화를 위해 자주 사용하는 데이터의 복사본을 저장하는 프록시 서버
    • 같은 요청이 들어올 시 해당 프록시 서버에서 사본을 전달(서버에 직접 요청하는 것보다 빠름)게이트웨이
    • 웹 상에는 여러 프로토콜이 존재하기에, 프로토콜 간 변환을 위해 존재하는 서버
    • 서버와 클라이언트 사이에서 클라이언트의 HTTP 요청을 서버의 프로토콜과 똑같은 요청으로 변환시켜준다.
    • 마치 자신이 서버처럼 행동하기 때문에 클라이언트는 게이트웨이인지 알아차리기 힘들다터널
    • 비 HTTP 데이터를 HTTP 연결을 통해 전송시키기 위한 애플리케이션
    • 회사 내 HTTP 요청만 통과시키는 방화벽이 있다면 암호화된 SSL 데이터를 HTTP 터널을 통과시켜 비HTTP 데이터도 방화벽을 통과할 수 있게 해준다. 일종의 백도어..? 같은 느낌에이전트
    • HTTP 요청을 만들어주는 웹 클라이언트 앱이다
    • 대표적으로 웹 브라우저가 있고 스파이더 웹로봇 등 다양한 종류가 있다.

    댓글

Designed by Tistory.