본문으로 바로가기

[HTTP] 생활코딩 HTTP 강의 내용 정리

category 네트워크 2022. 4. 15. 01:04

목차

1. 수업 소개

2. HTTP 소개

3. Request message

4. Response message

5. 수업을 마치며

 

내용

1. 수업 소개

  • 1990년 팀버너스리가 웹을 세상에 내놓았을 때 크게 4가지로 나눠졌습니다.
    • 1. HTML : 웹 페이지를 만드는 컴퓨터 언어
      • ex) 네이버 포탈 페이지
    • 2. URL, URI : 원하는 웹페이지 방문들 도와주는 주소 체계
      • ex) www.naver.com
    • 3. Web browser, WebServer : 웹 페이지를 주고 받는 소프트 웨어
      • ex) Chrome
    • 4. HTTP : 웹 브라우저가 웹 서버가 통신을 할 때 사용하는 규칙
      • 사용자가 알 수 없음
    • 3을 켜서 2를 입력하면 4을 통해 1이 뜬다.
    • 웹이 아무리 달아나도 위 4가지 요소에서 벗어날 수 없다.
  • 초기 HTTP는 단순했다. 그러나 사용량이 어마어마하게 늘면서 HTTP는 풍부한 기능을 가진 프로토콜로 발전
    • 지금은 HTML 같은 단순 텍스트 뿐만이 아닌 아미지, 오디오, 동영상 같은 멀티미디어 파일도 전송하는 매우매우 중요한 프로토콜
  • HTTP는 웹을 넘어서 인터넷을 동작하는 근간이라고도 할 수 있다!!

2. HTTP 소개

  • HTTP는 request, reponse 를 위한 메세지로 구분 되어있다.
  • HTTP는 추상적이지만 계속 얘기하고 자꾸 생각하면 물질처럼 손에 잡히는 것처럼 느낄 수 있다.
  • 브라우저 - 개발자 도구 - Network에 웹 브라우저 - 웹 서버 간의 주고 받는 내용을 볼 수 있다.
    • Request Header : 웹 브라우저가 웹 서버에게 요청
      • ex) 메세지 해석 : "GET 방식으로 a.html을 요청하고 지금 내가 사용할 수 있는 통신 방법은 HTTP 1.1이다"
    • Response Header : 웹 서버가 웹 브라우저에게 응답
      • ex) 메세지 해석 : "어, 나도 HTTP 1.1로 통신하고 200(성공적으로) a.HTML 보내 줄게"
    • Contents-Length : 길이, Content-Type : 타입
  • 웹 브라우저는 사용자가 물어본 정보를 웹 서버에게 대신 물어봐주는 기계
  • 응답한 정보를 화면에 적당히 보여주는 것

3. Request message

  • 자 그럼 이제부터 웹 브라우저와 웹 서버가 주고 받는 메세지를 좀 자세하게 들여다 봅시다.
  • Request Header 설명
    • 첫번째 행 : 요청 행위
    • 구글에서 'http header' 이미지 검색
      • Request Message Header
        • Request Line : 첫번째 행
        • Requeset Headers : 둘째행부터
      • A blank line seperates header & body : Header - Body 구분 라인
      • Request Message Body
  • Request Line
    • ex) Get /1.html HTTP/1.1 
      • Get : 웹 서버의 정보를 가져오는 메소드
      • /1.html : 웹 서버에 요청한 정보
      • HTTP1.1 : 웹 브라우저가 사용하고 있는, 사용할 수 있는 HTTP 버전이다
  • Host : 반드시 적어야 하는 것. 인터넷에 연결된 컴퓨터 한 대 한 대를 식별하는 이름
    • ex) localhost:8080
      • 우리가 요청하는 사이트의 웹 서버의 주소를 적은 것
      • 하나의 웹 서버가 여러 개 도메인 서비스 가능(좀 어려운 얘기)
      • A라는 웹 서버가 A닷컴, B닷컴 각 다른 웹 사이트를 보여줘야 한다.
        • = 가상호스트
  • User-Agent
    • ex) Mozilla/5.0~ 
    • 웹 브라우저의 다른 표현
    • 요청하는 웹 브라우저가 어떤 웹 브라우저인지 보여준다.
      • ex) 나중에 통계 같은 걸 낼 때 어떤 브라우저 사용자가 많이 접속하는지 알 수 있다.
      • ex) chrome이나 firefox가 아닌 로봇이 접근하는 경우가 있다. 이때 차단할 수도 있다.
  • Accecp-Encoding
    • ex) gzip, deflate, br
    • 웹 브라우저와 웹 서버가 통신할 때 응답하는 양이 많으면 그걸 압축해서 전송하면 웹 브라우저가 압축을 풀어서 처리 
    • 네트워크 자원 아낄 수 있다.
    • 이 웹브라우저는 어떤 압축 방식을 지원합니다. 라고 알려주는 것
  • If-Modified-Since
    • 지금 우리가 1.html을 요청 했잖아요, 또 요청할 때 마다 다운 받는 건 비효율적
    • 웹 브라우저가 서버에 전송할 때 내가 요청한 파일은 마지막으로 언제 다운 받은지를 알려줌
    • 웹 서버는 자기가 갖고 있는 파일과 비교하여 최신 파일 보내준다.
      • 최신이 아니면 다운하지 않는다. 전송할 필요 없는 것.

4. Response message

  • 자 이번 시간에는 응답 메세지에 대해 좀 자세하게 살펴보도록 하죠
  • 구글 http response header format 이미지 검색
    • 첫번째 행 : status (상태)
      • 서버가 응답했을 때 잘 됐는지, 안 됐으면 어떻게 안 됐는지 알려주는 자세한 정보
      • version, status code, phrase 3가지로 구성
      • version
        • HTTP version
      • status code
        • 응답 결과에 대한 얘기
        • 1xx : Information Code
          • 어떤 정보를 주기 위함(이건 잘 쓰진 않아요)
        • 2xx : Success
          • 긍정적, 그중 200은 가장 중요한 성공 메세지, 다른 2xx는 따로 찾아볼 것
        • 3xx : Redirection
          • ex) A닷컴으로 접속했는데 서버가 3xx를 응답하면 우리 웹 브라우저가 다른 곳으로 바로 이동해요
        • 4xx : Client Errors
          • 클라이언트 에러 
          • 404 Error
            • 어떤 주소로 접속 했는데 서버에 없다, 없는 걸 요청해서 찾을 수 없다.
          • 403 Error : Forbidden 
            • 접속하면 안 되는 곳에 접속 했을 때
            • ex) 관계자 외 출입 불가 , 당신이 오면 안 되는 곳입니다.
        • 5xx Error : Server Error
          • 서버쪽 에러
          • 500 Error : Internal Server Error
            • 서버 내부에 어떤 문제 있어서 보여 줄 수 없습니다.
      • phrase
        • 응답 결과를 사람이 이해하기 쉽게 말로 풀어쓴 것
    • 두번째 행
      • 유명한 헤더 위주로 알아보겠습니다.
      • Content-Type 
        • 웹 서버가 응답할 때 text/html 이다. (text:응답, html:컴퓨터 언어)
      • Content-Length
        • ex) 응답하는 이 Contents의 전체 크기는 1434이다.
      • Content-Encoding 
        • ex) gzip으로 압축 했으니까 gzip으로 풀어서 읽으세요.
      • Last-Modified
        • 이 정보는 마지막으로 언제 수정되었습니다.
  • 즉 웹 브라우저는 Request message를 생성하고 웹 서버에 전송하고 인터넷을 통해 웹 서버에 보내주면 응답 메세지를 만들어준다. (Response message + html 소스)
  • 이를 참조해서 사용자에게 화면을 보여준다.

5. 수업을 마치며

  • 지금까지 우리는 HTTP에 대해 필수적으로 알아야할 것들을 충분히 알아봤습니다.
    • 더 알아보는 것은 무의미 합니다. 여러분들은 혼자 학습이 가능한 정도가 됐습니다.
  • 그럼 여러분이 할만한 주제들을 던지고 물러날테니 알아서 찾아보시기 바랍니다.
    • HTTP, HTTPS(=ssl) 차이를 아시나요?
      • HTTP가 세상에 처음 나왔을 때 세상은 그렇게 위험하지 않았습니다. 
        • 웹으로 그렇게 심각한 정보를 다루지 않았어요.
        • 30년이 지난 지금 웹으로 군사, 금융, 사생활 정보를 다루죠
        • 즉 당신이 HTTP를 쓴다면 누군가 보고 있는 것으로 간주해야 합니다.
      • HTTPS로 전송하면 전송하는 내용을 가로채도 당사자들만 알 수 있습니다. 
        • 암호화되어 있거든요
        • HTTPS가 아닌 사이트에서 login을 요구하면 여러분은 그 사이트를 이용하지 말아야 합니다.
        • 서비스를 만드는 생산자라면 운영하는 그 사이트는 HTTPS를 꼭 도입해야 합니다. 
        • 그렇지 않으면 정보 담당자로 마음가짐이 부족한 것입니다.
    • Cache
      • 돈이 아니라 저장한다는 뜻이에요.
      • 이미 다운 받은 저장된 파일을 읽어서 성능을 향상 시키는 기법
      • 풀기 어려운 문제가 있어요
        • 내용이 갱신 됐을 때도 웹 브라우저는 그 사실을 알아채지 못합니다.
          • 이런 경우 Ctrl + F5 를 누르면 강제로 Cache가 갱신됩니다.
          • 하지만 일반 사용자는 Cache가 갱신 됐는지 모릅니다.
    • Cache-control, pragma
      • Cache 갱신을 일반 사용자가 모를 때 해결하기 위한 기법
      • 캐시를 제어하는 테크닉
      • 비교적 최신 기술인 애플리케이션 Cache도 이러한 목적으로 고안된 기술
      • 성능 향상에 관심이 간다면 Cash를 살펴보십시오.
    • Cookie
      • 개인화도 중요한 문제입니다.
      • 쇼핑몰 장바구니 담기, 로그인 유지 등은 웹 사이트가 기억 하는 것, 사용자 상태 유지
      • 귀여운 이름의 기술을 이용해서 cookie값을 웹 브라우저에 설정하면 접속 할 때마다 그 설정되어 있던 cookie 값을 서버에 전송하는 걸 통해서 사용자의 상태를 유지할 수 있고 식별할 수 있습니다.
    • Web storage
      • cookie보다 훨씬 많은 정보를 저장하고 보안쪽으로도 우수한 기술
      • 주목할만한 기술입니다.
    • Proxy
      • 웹 브라우저와 웹 서버 사이에 proxy라고 불리는 중계 서버를 둘 수 있다.
      • 중간에 있는 서버가 캐시를 대신 해주거나 보안과 관련된 공격을 막아주거나 적당히 자용자 요청을 여러대 서비스로 분산
    • 네트워크 모니터링 도구
      • Developer tools > Network
      • wireShark 
        • 오픈 소스
        • 어렵지만 익숙해지면 여러분께 강력한 힘들 줄 수 있을 것
        • 컴퓨터에서 일어난 모든 네트워크를 트래픽을 감시할 수 있는 강력한 도구
  • 하이퍽 텍스트라는 도로의 도로라고 할 수 있는 HTTP에 좀 익숙해지셨나요?
  • 여기까지 오시느라 고생하셨고 축하드립니다. 

후기

생활 코딩님 덕분에 추상적이었던 HTTP를 물질처럼 생각하게 되었습니다.

양질의 강의를 제공해주셔서 감사합니다.

 

필기 사진

'네트워크' 카테고리의 다른 글

[SMTP ERROR] SPF check for [xxx.com] does not pass with ip  (0) 2022.12.21