본문 바로가기
KraftonJungle2기/Today I Learned

[TIL] CSAPP 11장 공부3 - 웹 서버

by SooooooooS 2023. 5. 21.
728x90

1. Web 기초

1. HTTP(Hypertext Transfer Protocol)

웹 상에서 웹 서버 및 웹 브라우저(클라이언트) 상호 간의 데이터 전송을 위한 응용(계층 프로토콜
텍스트 기반 응용수준 프로토콜로 주로 HTML 문서를 주고받는데 사용된다.

< 참고 > https://ko.wikipedia.org/wiki/HTTP
  • 웹 서버 포트 번호 : 80
  • 요청/응답(Request/Response) 프로토콜
    • 클라이언트 → 서버 : 콘텐츠 요청
    • 서버 → 클라이언트 : 요청받은 콘텐츠로 응답

http://www.ktword.co.kr/test/view/view.php?nav=2&no=648&sh=http

  • 🔗 http://www.ktword.co.kr/test/view/view.php?m_temp1=4884&id=902
  • HTTP Method
    • 클라이언트가 웹 서버에게 요청하는 목적 및 그 종류를 알리는 수단
    • GET : 리소스 요청
    • HEAD : 메세지 헤더 요청
    • POST : 내용 전송
    • PUT : 내용 갱신
    • DELETE : 파일 삭제
    • OPTIONS : 웹 서버 측에서 제공하는 메소드에 대한 질의
    • TRACE : 요청 리소스가 수신되는 경로 요청
    • CONNECT : proxy와 같은 중간 서버 경우
    • 🔗 http://www.ktword.co.kr/test/view/view.php?m_temp1=3791&id=902
  • URI(Uniform Resource Identifier)
    • 인터넷 응용 정보 자원에 대한 통일적 식별 체계를 지칭
    • 하위 개념
      • URL(Uniform Resource Locator) : 특정 자원이 있는 장소에 대한 경로
      • URN(Uniform Resource Name) : 특정 자원에 대한 이름
      • URC(Uniform Resource Charcteristic) : 특정 자원에 대한 특성 정보
    • 🔗 http://www.ktword.co.kr/test/view/view.php?m_temp1=2340&id=637
  • HTTP 요청

Request Line

  • 요청 행 구성
    • Method : GET, POST, OPTIONS 등
    • URI : / + 상대 URI
      • 상대 URI : 전체 경로 중 기준 URI로부터 상대적 경로 표현
      • 구분자
        • / : 문서 경로
        • ? : query parmeter
        • # : URL fragment
    • Version : HTTP version
    • ex) GET / HTTP/1.1
  • HTTP 응답

Response Line

  • 응답 행 구성
    • status code
      • 3bit 양수로 요청의 특성을 나타낸다
      • 1xx : 처리 중
      • 2xx : 성공
        • 200 : OK
      • 3xx : 정상 처리의 범주 내 알려주는 내용(주로, redirect)
        • 301 : Moved Permanently (요구한 데이터를 변경된 URL에서 찾음)
      • 4xx : 클라이언트측 에러
        • 400 : Bad Request(요청 오류)
        • 403 : Forbidden(금지됨, 접근 제한)
        • 404 : Not Found(요청 리소스 존재하지 않음)
      • 5xx : 서버측 에러
        • 501 : Not Implemented(필요한 기능에 서버에 설치되지 않음)
        • 505 : HTTP Version Not Supported(해당 HTTP 버전을 제공하지 않음)
      • 🔗 https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml
      • 🔗 http://www.ktword.co.kr/test/view/view.php?m_temp1=5407&id=902
    • status phrase
      • 에러 코드를 영어로 나타낸다 

CSAPP 그림 11.24 HTTP Transaction 예시(정적 콘텐츠)


2. Web content

the text, visual or audio content that is made available online and user encountered as part of the online usage and experience on websites.

웹 사이트에서 온라인 사용 및 경험의 일부로 온라인에서 사용할 수 있도록 하고 사용자가 접하는 텍스트, 시각 또는 오디오 콘텐츠.

< 참고 > https://en.wikipedia.org/wiki/Web_content
  • HTML(Hypertext Markup Language)
    • 웹 콘텐츠 작성 언어
    • 명령들(태그)를 포함하고 있어서 브라우저에게 여러가지 텍스트와 그래픽 객체를 어떻게 표시할지를 알려준다.
  • 클라이언트와 서버에게 content란?
    • 연관된 MIME 타입을 갖는 바이트 배열

※ 참고 ※

MIME (Multipurpose Internet Mail Extensions)

전자우편을 위한 인터넷 표준 포맷

MIME 표준에 정의된 content-type은 HTTP와 같은 통신 프로토콜에서 사용

🔗 https://ko.wikipedia.org/wiki/MIME

🔗 http://www.ktword.co.kr/test/view/view.php?m_temp1=650&id=476

 

content-type =  media type = MIME type

: 인터넷에 전달되는 파일 포맷과 포맷 콘텐츠를 위한 2부분 식별자

유형(type) / 아형(subtype); 선택적 매개변수

현재 최상위 유형 이름 : application, audio, example, font, image, message, model, multipart, text, video

🔗 https://ko.wikipedia.org/wiki/미디어_타입

🔗 http://www.ktword.co.kr/test/view/view.php?m_temp1=6431&id=1515

  • content
    • 정적 콘텐츠
      • 디스크 파일
      • 파일을 클라이언트에게 돌려주는 작업 = 정적 콘텐츠를 처리한다.
    • 동적 콘텐츠
      • 실행파일이 런타임에 만든 출력
      • 프로그래을 실행하고 그 결과를 클라이언트에게 보내주는 과정 = 동적 콘텐츠를 처리한다.
  • URL(Universal Resource Locator)
    • 웹 서버가 관리하는 파일이 가지는 고유의 이름
    • 인터넷에 존재하는 자원의 위치와 그 접근 방법을 지정하기 위한 것
    • 🔗 http://www.ktword.co.kr/test/view/view.php?nav=2&no=867&sh=url
    • URL이 정적, 동적 콘텐츠를 참조하는지 결정하기 위한 표준은 없다
      • 각각의 서버는 자신이 관리하는 파일들을 위한 자신만의 규칙을 가진다.
      • 가장 고전적인 방법은 디렉토리 집합을 지정한다.
      • ex) usr/httpd/html : 모든 정적 콘텐츠 저장 / usr/httpd/cgi-bin : 모든 동적 콘텐츠 저장

3. 동적 콘텐츠 처리

CGI (Common Gatewqy Interface)
: 웹서버 프로그램과 외부 응용 프로그램 간의 인터페이스
  서버 프로그램과 외부 프로그램과의 연계법을 정한 것

< 참고 > https://ko.wikipedia.org/wiki/공용_게이트웨이_인터페이스

https://ko.wikipedia.org/wiki/공용_게이트웨이_인터페이스

  • 클라이언트 → 서버 요청
    • ? : 파일 이름과 인자 구분
    • & : 인자 구분
    • ex) GET cgi-bin/addr>15000&213 HTTP/1.1
      • GET 요청
      • cgi-bin/addr 실행파일에
      • 15000과 213 2개의 인자 전달
  • 자신의 동적 콘텐츠를 표준 출력으로 보낸다.

CSAPP 그림 11.28 HTTP Transaction 예시(동적 콘텐츠)

 

728x90