[부스트코스] 웹 프로그래밍 (웹의 동작)

업데이트:

카테고리:

태그: ,

들어가며

웹 프로그래밍을 배웠지만, 개인적으로 React공부를 하며 HTMLCSS에서 많은 부족함을 느꼈다. 기본적인 태그에 관한 지식등과 DB와 연동하는 법, 그리고 실제로 실습을 하며 그것들을 익혀나가기 위해 부스트코스의 WEB 프로그래밍 강의를 들으려고 한다. Node.js를 사용해 웹서버를 구축해봤지만 교내 팀프로젝트에서 HTTP를 사용해 통신하는 방법이 많이 미숙했던 점이 있었기 때문에 웹 서버와 웹 브라우저 간의 통신규약인 HTTP에 대해서 공부할 것이다.

오늘의 강의

  1. 웹의 동작 (HTTP 프로토콜 이해)

학습 목표

  1. HTTP프로토콜의 작동방식에 대하여 알아봅니다.
  2. HTTP프로토콜의 요청/응답 데이터 포맷에 대하여 알아봅니다.

핵심 개념

  • HTTP
  • Request 형식
  • Request Method
  • Response 형식
  • 응답 코드

학습하기

​ 사람들은 보통 인터넷이라고 하면 World Wide Web이라고 알고있지만 이것이 전부는 아니다. 물리적인 하나의 컴퓨터에는 여러 개의 서버가 동작할 수 있고, 각각의 서버들은 포트라는 값으로 구분되어 동작한다. 인터넷은 한마디로 네트워크들의 네트워크라고 말할 수 있다. 수 많은 네트워크들의 결합체이다. 이런 인터넷은 보통 TCP/IP라는 약속으로 연결되어 있다.

이름 프로토콜 포트 기능
WWW HTTP 80 웹서비스
Email SMTP/POP3/IMAP 25/110/114 이베일 서비스
FTP FTP 21 파일 전송 서비스
DNS TCP/UDP 53 네임 서비스
NEWS NNTP 119 인터넷 뉴스 서비스

HTTP(Hypertext Transfer Protocol)란?

  • 팀 버너스리(Tim Berners-Lee)와 그가 속한 CERN에서 HTML뿐만 아니라 웹 브라우저 및 웹 브라우저 관련기술과 HTTP를 발명하였다. 문서화된 최초의 HTTP버전은 v.0.9(1991년)이다.
  • HTTP는 서버와 클라이언트가 인터넷상에서 데이터를 주고 받기 위한 프로토콜(protocol)이다.
  • HTTP는 계속 발전하여 HTTP/2까지 버전이 등장한 상태이다.
  • 어떠한 종류의 데이터도 전송할 수 있다.
  • 부스트코스 과정에서는 가장 많이 사용되고 있는 HTTP v1.1에 대해 다뤄볼 것이다.

HTTP 작동방식

​ HTTP는 서버/클라이언트 모델을 따른다. 클라이언트가 요청을 서버에게 보내면, 서버는 클라이언트에게 응답을 보내게 된다. 요청, 응답은 아주 중요하다. 또한 HTTP는 무상태 프로토콜이라고도 한다. 클라이언트가 바로 다음 것을 요청하더라도, 서버는 아까 그 클라이어트인지 모른다. 이러한 무상태 프로토콜은 장단점이 존재한다.

  • 장점 - 불특정 다수를 대상으로 하는 서비스에는 적합하다. (예를 들어 윈도우의 공유폴더) - 클라이언트와 서버가 계속 연결된 형태가 아니기 때문에 클라이언트와 서버 간의 최대 연결 수보다 훨씬 많은 요청과 응답을 처리할 수 있다.
  • 단점 - 연결을 끊어버리기 때문에, 클라이언트의 이전 상황을 알 수가 없다. - 이러한 특징을 무상태(Stateless)라고 말한다. - 이러한 특징 때문에 정보를 유지하기 위해서 Cookie와 같은 기술이 등장하게 되었다.

URL (Uniform Resource Locator)

url

  • 인터넷 상의 자원의 위치
  • 특정 웹 서버의 특정 파일에 접근하기 위한 경로 혹은 주소
  • 하나의 물리적 컴퓨터에는 여러 개의 소프트웨어 서버가 동작할 수 있는데, 이 서버는 포트 값이 다르게 설정되어야 한다.
  • IP: 집 주소라고 생각하면 된다. 하나의 컴퓨터에는 하나의 IP가 존재한다.
  • 포트: 한 집에 여러 방이 있는 것 처럼 하나의 컴퓨터에는 여러 개의 Port가 존재한다.(HTTP 기본포트는 80)

HTTP (Hypertext Transfer Protocol)

http

  • 웹이 동작하는 순서
    1. 클라이언트가 먼저 원하는 서버에 접속
    2. 클라이언트가 서버에게 다시 요청
    3. 요청에 따른 응답 결과를 다시 클라이언트한테 응답
    4. 응답이 끝나고 나면 서버와 클라이언트의 연결은 끊김
  • 요청 데이터 포맷: 웹 브라우저는 요청 메세지를 갖는데, 헤더부분, 빈줄부분, 요청 바디부분 이렇게 세 부분으로 나뉜다.
    • 요청 메서드 : GET, PUT, POST, PUSH, OPTIONS 등의 요청 방식이 온다.
      • GET : 정보를 요청하기 위해서 사용한다. (SELECT) (요청 바디가 없다는 특징이 있음)
      • POST : 정보를 밀어넣기 위해서 사용한다. (INSERT)
      • PUT : 정보를 업데이트하기 위해서 사용한다. (UPDATE)
      • DELETE : 정보를 삭제하기 위해서 사용한다. (DELETE)
      • HEAD : (HTTP)헤더 정보만 요청한다. 해당 자원이 존재하는지 혹은 서버에 문제가 없는지를 확인하기 위해서 사용한다.
      • OPTIONS : 웹서버가 지원하는 메서드의 종류를 요청한다.
      • TRACE : 클라이언트의 요청을 그대로 반환한다. 예컨데 echo 서비스로 서버 상태를 확인하기 위한 목적으로 주로 사용한다.
    • 요청 URI : 요청하는 자원의 위치를 명시한다.
    • HTTP 프로토콜 버전 : 웹 브라우저가 사용하는 프로토콜 버전이다.

첫번째 줄의 요청메소드는 서버에게 요청의 종류를 알려주기 위해서 사용된다. 참고로 최초의 웹 서버는 GET방식만 지원해줬다.

  • 응답 데이터 포맷: 요청 데이터 포맷과 마찬가지로 헤더, 빈줄, 응답 바디부분 세 부분으로 나뉜다.
    • 첫 줄에는 응답 HTTP 프로토콜의 버전, 응답 코드, 응답 메세지가 나온다.
    • 나머지 헤더 부분에는 날짜, 웹 서버 이름, 버전, 콘텐츠 타입, 캐시 제어방식, 콘텐츠 길의 등의 값이 나온다.

생각해보기

Q. HTTP에 S가 붙은 HTTPS는 어떤 용도로 사용되는 건가요? HTTP와 무엇이 다른가요?

A. HTTP는 텍스트 교환이다. HTML페이지도 텍스트이다. 바이너리 데이터로 되어있는 것이 아니라 단순 텍스트를 주고 받기 때문에 누군가가 네트워크에서 신호를 가로채어 본다면 내용이 노출된다. 이러한 보안상의 문제를 해결해주는 프로토콜이 HTTPS이다. HTTPS는 인터넷 상에서 인터넷 상에서 정보를 암호화하는 SSL(Secret Socket Layer)프로토콜을 이용하여 웹브라우저(클라이언트)와 서버가 데이터를 주고 받는 통신 규약이다. HTTP 메세지를 암호화하는 것이다. 원리를 간단하게 말하자면 핵심은 공개키 암호화 방식이다.

듣고 나서

​ 통신 규약에대해서 자세히 알지 못하고 마구잡이로 사용하는 부분이 많아 실제 서버를 구축하고 통신함에 있어서 의문점이 많았는데, [부스트 코스] 웹프로그래밍 강의를 통해 기초적인 지식을 다시 다잡을 수 있었다. HTTP로만 구현을 하고 인증서를 이용한 HTTPS로 변환하는 과정이 귀찮아 적용시키지 않았던 부분들도 꼭 해야겠다고 느꼈다.

모든 설명과 자료는 [부스트 코스] 웹프로그래밍 강의를 참고하였습니다.

댓글남기기