생활코딩

Coding Everybody

HTTP Request message

토픽 생활코딩 > 서버 > HTTP

수업소개

요청 메시지에 대해서 자세히 살펴봅니다. 

 

 

 

강의 

댓글

댓글 본문
  1. 심해
    2024.3.20
  2. toonfac
    220705 오후 4시 24분 완료
  3. 나연
    2022년 3월 12일 (토) 완료

    웹 브라우저에서 웹 서버로 접속할 때 `Request Headers`의 `view source`를 클릭해서 보면
    - 제일 먼저 나오는 행(요청 행(Request Line)) : `GET /1.html HTTP/1.1`
    - https://www.google.com......BAD
    - Request Headers
    - Request Message Header
    - 서버 쪽으로 전송해야 될 정보가 있다면 그 정보가 실제 내용임 ("페이로드")
    -- Request Message Body
    - Body와 Header는 그 중간에 blank line을 둬서 구분

    `GET /1.html HTTP/1.1`
    - `GET` : 메소드
    -- 웹 브라우저와 웹 서버가 어떤 방식으로 통신할 것인가
    -- `GET`은 데이터를 웹 서버로 가져올 때 씀
    --- e.g. 주소 치고 엔터 치는 것
    - `POST`
    -- e.g. 로그인 전송 버튼 누르면 데이터 전송
    - `/1.html` : 웹 서버에게 요청하는 정보
    -- 웹 서버는 `/1.html`을 보고서 그것에 따라 웹 브라우저가 요청한 정보를 응답해주게 됨
    - `HTTP/1.1` : 웹 브라우저가 현재 사용하고 있는/사용할 수 있는 HTTP의 버전이 1.1
    -- 웹 서버는 이 정보를 바탕으로 해서 웹 브라우저에게 적당한 방식으로 통신을 함

    `Host: localhost:8080`이라는 이 부분부터는 Request Header
    - `Host: localhost:8080`: 여러 가지 Request Headers가 있지만 그 중에서 반드시 적어야 하는 필수적인 것
    -- Host : 인터넷에 연결되어 있는 컴퓨터 한 대 한 대를 식별하는 이름 (Host name)
    -- Host라고 적는 것은 우리가 요청하는 이 웹사이트 웹 서버의 주소를 적는 것
    -- Host가 있으면 하나의 웹 서버가 여러 개의 도메인을 서비스 할 수 있음
    --- 그런 경우에는 예를 들면 a라는 웹 서버가 a.com, b.com, c.com이라는 도메인을 호스팅하고 있고 각각의 주소별로 다른 웹사이트라고 한다면 웹 서버는 `Host: localhost:8080`에 적혀 있는 주소가 무엇이냐에 따라서 다른 정보를 보내줄 수 있음
    ---- "가상 호스트"
    -- `8080` : 포트
    --- 한 대의 컴퓨터에는 여러 대의 서버가 설치되어 있을 수 있음
    --- `8080`이라고 하면 `8080`이라는 포트 번호에 등록되어 있는 웹 서버를 이야기하는 것

    핵심
    ```
    GET /1.html HTTP/1.1
    Host: localhost:8080
    ```

    ```
    User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/537.36 ... Chrome/67.0.3396.99 Safari/537.36
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp;image/apng,*/*;...
    ```
    - `User-Agent` : 웹 브라우저의 다른 표현
    -- 웹 브라우저를 User Agent라고도 함
    -- 즉 요청하는 웹 브라우저가 어떤 웹 브라우저인지를 보여줌
    --- `Chrome`
    -- `(Macintosh; Intel Mac OS X 10_13_5)` : 우리가 사용하고 있는 운영 체제가 Macintosh, Intel CPU를 쓰고 있고 Mac OS 버전이 어떻다고 하는 것
    -- 나중에 웹 서버를 잘 운영해보면 통계 같은 걸 내게 되는데 이 웹사이트에는 어떤 브라우저와 운영 체제를 쓰는 사람들이 많이 접속하고 있는가 이러한 정보들을 `User-Agent`를 통해서 볼 수 있음
    -- 경우에 따라서는 `User-Agent`가 Chrome이나 Firefox나 이런 것이 아니라 어떤 로봇이 접근할 수 있음 (검색 엔진 로봇 등)
    --- 그런 경우에는 웹 서버는 이 정보를 바탕으로 해서 그 요청을 차단할 수 있음 (본인이 원하지 않은 요청일 수도 있음)
    --- `User-Agent`는 그런 목적으로 사용됨

    ```
    Accept-Encoding: gzip, deflate, br
    ```
    - `Accept-Encoding` : 웹 브라우저와 웹 서버가 서로 통신할 때 응답하는 데이터의 양이 많으면 그걸 압축해서 전송하면 웹 브라우저가 그것을 압축을 풀어서 처리할 수 있음
    -- 그러면 네트워크의 자원을 아낄 수 있음
    -- 그때에 이 웹 브라우저는 어떤 압축 방식을 지원한다고 적어놓은 것
    -- 그러면 웹 브라우저는 여기에 있는 이 세 가지 방식 중의 하나, 본인이 선호하는 걸 보내줄 수 있음
    --- 웹 브라우저는 이 중의 하나를 처리할 수 있기 때문

    ```
    If-Modified-Since: Tue, 17 Jul 2018 23:28:26 GET
    ```
    - 지금 우리가 `1.html`이라는 파일을 웹 서버에게 요청했는데 그리고 다시 요청을 또 할 수도 있음
    -- 그러면 요청할 때마다 그걸 다운로드 받는 게 효율적이지 않음
    -- 그런 경우에 `If-Modified-Since`라고 되어 있는 부분이 이 정보를 우리가 서버에게 전송한다는 것은 내가 갖고 있는 이 파일은 마지막으로 언제 다운로드 받은 파일이다는 것을 서버에게 알려 줌
    --- 그러면 웹 서버는 응답할 때 본인이 갖고 있는 파일이랑 무엇이 더 최신인지를 비교해서 본인이 갖고 있는 파일이 최신이면 전송해주고 최신이 아니면(더 다운로드할 필요가 없으면) 전송하지 않아도 되는 것
    ---- 속도도 줄일 수 있고 서로에게 윈윈이 되는 것
  4. labis98
    20220213 항상 좋은 강의 감사합니다.
  5. 코딩뽀시래기
    2022.02.07.월
  6. 초딩 개발자
    2021/10/18
  7. 3초컷
    210805
  8. ESin99
    2021.04.04 완료
  9. jeisyoon
    2021.03.19 Request message - OK
  10. kkn1125
    21.01.11 완료
  11. 생활둘기
    2021 1 5
  12. 고니스타크
    5일차
    request
    검사->네트워크->헤더
  13. 서재성
    20201129 완료
  14. 콩유
    어려워보여서 걱정했지만 명쾌!
  15. elgar328
    user-agent 정보를 이용해서 로봇이 접속할 때 웹서버가 차단할 수 있다고 하셨는데요, 로봇이 user-agent를 임의로 속여서 보내면 소용없지 않나요?
  16. 콜라
    20201011 완료
  17. 박병진
    감사합니다. 2020.09.16
  18. 허우룩
    2020.09.06
  19. thebluerat
    감사합니다
  20. erinlee2020
    글로 남아 있으면 좋겠어요. 영상에서 놓친 부분 찾으러 오게 :)
    하지만 바쁘시다면 또 어쩔 수 없지요. 감사합니다.
  21. 스티븐잡숴
    완료
  22. 준바이
    감사합니다.
  23. 조현철
    감사합니다 잘 봤어요
  24. moon
    감사합니다.!!
  25. 20191007 Ted 완료!
  26. 강기석
    감사합니다 !!
  27. incursio
    감사합니다.
  28. alex
    대단하시다는 말 밖에.. ㅎ
  29. JuicyFresh
    감사합니다.
  30. jo_onc
    크으... 쉽게 이해할 수 있도록 강의해주시네요!
    감사합니다!
  31. 진시링
    감사합니다^^
  32. 삼고잉
    잘 읽었습니다
  33. 연수아빠
    감사합니다.
  34. 너구리
    크롤링을 시도해보려는데 굉장히 도움이 많이 되는 영상이네요.
    역시 갓고잉님.