한빛출판네트워크

IT/모바일

리얼월드 HTTP : 역사와 코드로 배우는 인터넷과 웹 기술

한빛미디어

번역서

판매중

좋아요: 0
  • 저자 : 시부카와 요시키
  • 역자 : 김성훈
  • 출간일 : 2019-04-19
  • 페이지 : 424쪽
  • ISBN : 9791162240908
  • 물류코드 :10090

합계 : 27,000

  • curl과 Go 언어로 배우는 HTTP의 과거, 현재, 미래 

     

    웹 세상을 지탱하는 HTTP 기술의 변천사와 버전별 문법 및 의미론을 살펴보는 책입니다. HTTP 1.0, 1.1을 거쳐 2.0까지 브라우저 내부에서 일어나는 일과 서버와의 상호작용 등을 삽화와 예시로 소개합니다. curl, Go 언어, 자바스크립트 코드 예제로 복잡 다변한 HTTP 웹 기술을 한 권으로 정리했습니다. 모든 웹 개발자에게 권합니다.

     

     

    주요 내용

    • 0.9부터 2.0까지 HTTP의 간략한 역사
    • 메서드와 경로, 헤더, 바디, 스테이터스 코드 등 HTTP의 기본 요소 이해
    • 브라우저 관점에서 바라본 HTTP와 웹 통신의 이면
    • REST API 아키텍처와 이론
    • curl 및 Go 언어로 웹 서비스 코드 테스트 방법 익히기
    • HTTP 개념을 숙지함으로써 새로운 기술을 따라잡을 기초 쌓기

    추천사

    앱 개발자, 인프라 엔지니어 모두에게 유익한 책입니다. 친절하게 HTTP 통신의 구조를 설명합니다. 실무에서 HTTP 통신은 터무니없는 응답과 요구가 난무하고, 패킷을 해석해 문제를 해결해야 할 때도 있다 보니, 많은 엔지니어에게 이 책이 도움이 되리라고 생각합니다. HTTP 통신 내용을 제대로 설명하는 책이 의외로 없어 난해한 RFC를 읽어야 할 때도 있었는데, 그럴 때에도 이 책이 큰 도움이 될 것입니다.

  • [저자] 시부카와 요시키

    DeNA의 게임 개발팀이 사용하는 라이브러리와 도구를 개발하는 개발기반팀 소속 엔지니어. 가끔 다른 여러 팀에 용병으로 파견된다. 파이썬, C++, 자바스크립트, Go 언어를 업무 및 취미로 다룬다. 웹은 일보다는 취미에 가깝다. 저서로 『Mithril』(오라일리 저팬, 2015), 『군것질 공부법』, 『Mobage를 지탱하는 기술』(이상 기술평론사에서 공저), 역서로 『엑스퍼트 Python 프로그래밍』, 『포모도로 테크닉 입문』(이상 아스키 미디어 워크스에서 공역), 『아트 오브 커뮤니티』(오라일리 저팬, 2011) 등이 있다. 이외에 ASCII.jp 프로그래밍+ 코너에서 ‘Go 언어를 이용한 시스템 프로그래밍’을 연재했다.

    [역자] 김성훈

    주로 IT 관련 서적을 번역하는 번역가. 주요 번역서로 『C가 보이는 그림책』, 『프로그래밍이 보이는 그림책』, 『게임 프로그래밍의 정석』, 『웹을 지탱하는 기술』, 『Objective-C 프로그래밍』, 『안드로이드 개발 레벨업 교과서』, 『실무에서 바로 통하는 자바』, 『C 이보다 쉬울 순 없다』, 『iOS 디버그 & 최적화 기법』, 『UML 모델링의 본질』, 『프로가 가르쳐주는 시퀀스 제어』, 『만화로 쉽게 배우는 선형대수』 등이 있다. 

  • CHAPTER 1 HTTP/1.0의 신택스: 기본이 되는 네 가지 요소 

    1.1 HTTP의 역사 

    1.2 HTTP/0.9로 할 수 있는 것을 시험하다

    1.3 HTTP/0.9에서 1.0으로의 여정 

    1.4 HTTP의 조상 (1) 전자메일 

    1.5 HTTP의 조상 (2) 뉴스그룹 

    1.6 리디렉트 

    1.7 URL

    1.8 바디 

    1.9 마치며

     

    CHAPTER 2 HTTP/1.0의 시맨틱스: 브라우저 기본 기능의 이면 

    2.1 단순한 폼 전송(x-www-form-urlencoded)

    2.2 폼을 이용한 파일 전송

    2.3 폼을 이용한 리디렉트 

    2.4 콘텐트 니고시에이션 

    2.5 쿠키 

    2.6 인증과 세션 

    2.7 프록시 

    2.8 캐시 

    2.9 리퍼러 

    2.10 검색 엔진용 콘텐츠 접근 제어 

    2.11 마치며 

     

    CHAPTER 3 Go 언어를 이용한 HTTP/1.0 클라이언트 구현 

    3.1 Go 언어를 이용하는 이유 

    3.2 Go 언어의 API 구성 

    3.3 이 장에서 다룰 레시피 

    3.4 GET 메서드 송신과 바디, 스테이터스 코드, 헤더 수신

    3.5 GET 메서드+쿼리 전송 

    3.6 HEAD 메서드로 헤더 가져오기 

    3.7 x-www-form-urlencoded 형식의 POST 메서드 전송 

    3.8 POST 메서드로 임의의 바디 전송 

    3.9 multipart/form-data 형식으로 파일 전송 

    3.10 쿠키 송수신 

    3.11 프록시 이용 

    3.12 파일 시스템 액세스 

    3.13 자유로운 메서드 전송 

    3.14 헤더 전송 

    3.15 국제화 도메인 

    3.16 마치며 

     

    CHAPTER 4 HTTP/1.1의 신택스: 고속화와 안전성을 추구한 확장

    4.1 통신 고속화

    4.2 전송 계층 보안(TLS)

    4.3 PUT 메서드와 DELETE 메서드의 표준화

    4.4 OPTIONS, TRACE, CONNECT 메서드 추가

    4.5 프로토콜 업그레이드 

    4.6 가상 호스트 지원 

    4.7 청크 

    4.8 바디 전송 확인 

    4.9 마치며

     

    CHAPTER 5 HTTP/1.1의 시맨틱스: 확장되는 HTTP의 용도

    5.1 파일 다운로드 후 로컬에 저장하기 

    5.2 다운로드 중단과 재시작

    5.3 XMLHttpRequest 

    5.4 지오로케이션

    5.5 X-Powered-By 헤더 

    5.6 원격 프로시저 호출

    5.7 WebDAV

    5.8 웹사이트 간 공통 인증 및 허가 플랫폼 

    5.9 마치며 

     

    CHAPTER 6 Go 언어를 이용한 HTTP1.1 클라이언트 구현

    6.1 Keep-Alive

    6.2 TLS

    6.3 프로토콜 업그레이드 

    6.4 청크 

    6.5 원격 프로시저 호출

    6.6 마치며 

     

    CHAPTER 7 HTTP/2의 신택스: 프로토콜 재정의 

    7.1 HTTP/2

    7.2 Fetch API

    7.3 server-sent events

    7.4 웹소켓

    7.5 WebRTC

    7.6 HTTP 웹 푸시

    7.7 마치며 

     

    CHAPTER 8 HTTP/2의 시맨틱스: 새로운 활용 사례

    8.1 반응형 디자인 

    8.2 시맨틱 웹 

    8.3 오픈 그래프 프로토콜 

    8.4 AMP

    8.5 HTTP 라이브 스트리밍에 의한 동영상 스트리밍 재생 

    8.6 MPEG-DASH 동영상 스트리밍 재생 

    8.7 마치며 

     

    CHAPTER 9 Go 언어를 이용한 HTTP/2, HTML5 프로토콜 구현

    9.1 HTTP/2

    9.2 HTTP/2의 서버 푸시 

    9.3 server-sent events

    9.4 웹소켓 

    9.5 마치며 

     

    CHAPTER 10 보안: 브라우저를 보호하는 HTTP의 기능

    10.1 기존의 공격 

    10.2 브라우저를 노리는 공격의 특징 

    10.3 크로스 사이트 스크립팅 

    10.4 중간자 공격 

    10.5 세션 하이재킹

    10.6 사이트 간 요청 위조

    10.7 클릭재킹

    10.8 리스트형 계정 해킹

    10.9 웹 애플리케이션을 위한 보안 가이드라인 

    10.10 웹 광고 및 보안

    10.11 마치며 

     

    CHAPTER 11 클라이언트 시점에서 보는 RESTful API

    11.1 RESTful API

    11.2 메서드 

    11.3 스테이터스 코드

    11.4 바디 

    11.5 실제 REST API 살펴보기(PAY.jp) 

    11.6 실제 REST API 살펴보기(깃허브) 

    11.7 REST API에 액세스할 때 주의할 점

    11.8 마치며 

     

    APPENDIX A Go 언어의 JSON 파싱 

    A.1 Go 언어의 구조체 태그를 사용한 JSON 파싱

    A.2 JSON 응용하기

  • 온고지신의 자세로 배우는 HTTP의 모든 것 (ft. curl)

     

    HTTP가 발전한 여정을 더듬으면서, 브라우저 내부에서 어떤 일이 일어나는지 그리고 서버와 어떻게 상호작용하는지 등을 다루는 책입니다. 메서드와 경로, 헤더, 바디, 스테이터스 코드 같은 HTTP 기본을 충실하게 설명하고, HTTP 1.0, 1.1을 거쳐 2.0까지 웹 세상을 지탱하는 HTTP 기술의 변천사와 버전별 문법 및 의미론을 살펴봅니다. 나아가 HTML5, 보안, REST API 같은 실무에서 꼭 알아야 할 주제를 따로 설명합니다.

    HTTP의 과거부터 현재까지 모두 다루는 이유는, 기술의 기초가 되는 과거를 알면 미래에 나올 새로운 기술도 쉽게 따라잡을 수 있기 때문입니다. 테스트하기 좋은 코드 작성법, 알고리즘, 데이터베이스 등과 마찬가지로 HTTP는 노후화되지 않는 기술이며 한번 배워두면 꾸준히 도움이 되는 주제입니다.

     

    수많은 사양이 들어 있는 모음집 RFC에 대한 참조와 함께 curl, Go 언어, 자바스크립트 등 코드 예제를 제공하므로 개발자가 폼 제출, 캐시 및 쿠키 관리, Keep-Alive, SSL/TLS, 프로토콜 업그레이드, 서버 푸시, SSE, 웹소켓 등의 동작 원리를 실습하며 학습할 수 있습니다. 복잡 다변한 HTTP 웹 기술을 한 권으로 정리하고 싶은 모든 웹 개발자에게 권합니다.


    • 리얼월드.jpg



      면접에서 HTTP에 대해 A부터 Z까지 질문받고, 탈탈 털려서



      'HTTP의 기초를 정복해주겠다' 는 마음으로 읽게 된 책.



      HTTP 기술의 버전별 문법과 역사에 대해서 다루는 책으로,


       



      HTTP에 대한 이해를 바탕으로 새로운 웹 기술을 따라잡을 기초를 다지는 것이 목표인 책이다.


       






      책에서는 각 버전에 따라 추가된 기능들이 왜 필요했는지, 어떤 원리를 가지고 구현되었는지 소개하고 있는데,



      모던 HTTP는 복잡하고 방대한 기능들을 가진 만큼, 책의 뒤로 갈수록 쏟아지는 정보에 읽기 조금 힘들었다@@


       



      Go언어로 작성된 예제 코드 수준은 평이하다. 중간 HTTP 클라이언트 구현 부분을 통해 앞쪽에서 익힌 기능의 원리들을 직접 구현해 볼 수 있다.



      하지만 책 난이도 자체가 조금 있어서, 주니어가 이해하기는 조금 버겁다.ㅜㅜ



      흐름은 어느정도 이해했으니, 입사 이후 한번 더 읽어볼 책.


       


       


    • 처음 나왔을때 정말 궁금 했던 책이다. 

      요즘 처럼 빠르게 바뀌는 웹 기술에 관한 책이 나오기도 바쁜데, HTTP 의 역사에 대한 책이라니..

      나 역시도 관심이 가긴 했지만, 쉽게 구매하긴 힘들 었다. 

       

      다행히도 이 책은 꽤 재미있고, 좋은 내용으로 가득했다.

      첫 장을 읽고 나면 드는 생각이 두가지 있다.

      '역시 오라일리 책이구나'와 '역시 일본 사람이 쓴 책이구나' 이다.

      (일본 번역서 들이 대부분 그렇듯이 번역은 매우 깔끔한 편이다.)

       

      추상적이고 철학적인 내용 보다는 스펙 하나하나에 대해서 꼼꼼하고 깊이 있게 다루고 있었다. 

       

      이 책을 통해 얻을 수 있는 것은 크게 세가지 였다.

      - HTTP 1.0 ~ 2.0 까지의 스펙과 추가된 이유

      - CURL 사용법

      - http관련 GO 라이브러리 사용법

       

      프론트엔드/백엔드 구분없이 웹을 개발하는 개발자라면 한번 쯤 읽고 공부해 볼만한 책이다.

      그냥 프레임워크가 해주니까 고민없이 사용하던 것 들에대해서 좀 더 이해하고 개발 할 수 있게 해줄 것이다.

       

      curl을 사용할 일이 별로 없거나, Go 언어에 대해 관심이 없다면, 그 부분을 과감히 넘어가고 읽어도 무방한 책이다. 

      HTTP 스펙에 대한 내용만으로도 충분히 가치있는 책이다. 하지만 스펙에 대해서 다루다 보니 한번에 모든 내용을 이해할 수는 없다.

      한번 읽고 마는 책이라기 보다는 곁어 두고 궁금할 때 찾아 보면 좋을 것 같다.

       

      무엇보다 Web 이 어떤 방향으로 나아가고 있는지도 알 수 있을 것이다.


    •  



      리얼월드.jpeg


       


       


       



      인터넷이 등장하므로 세계적인 정보공유가 쉬워졌습니다.



       



      팀 버너스 리가 설계한 http는하이퍼텍스트 문서 교환을 목적으로 만들어졌습니다.



       



      인터넷 주소창을 보면 http는쉽게 찾아볼 수 있는데요.



      HTTP는 Hypertext Transfer Protocol의 줄임말입니다.



       



      HTTP를 요약하면 웹 서버와 인터넷 브라우저 간에 문서를 전송하기 위한 통신규약을 뜻합니다.



       



      서버는 HTTP 통신으로클라이언트에게 서비스를 제공해줍니다.



       



      책에서 사용하는 Go언어



      이 책은 Go언어로HTTP를 설명하고 있습니다.



       



      Go언어는 구글에서 개발한 언어인데요.



      문법이 다른 개발 언어를 아는 사람은 읽기 쉬운 언어입니다.



       



      또한 가독성이 좋고 컴파일 오류를 발견하기 쉬워서 좋습니다.



       



      HTTP 통신이란



      HTTP 통신 기술은 한 번 배우면 헛수고가 되지 않습니다.



      서버 통신하기 위해 계속 사용되며 오히려 기능이 더 확장하기때문입니다.



       



      IT 업계에서 새로운 기술이 나오므로 끊임없이 배워야 한다고 흔히 말하는데요.



      알고리즘과 데이터베이스 기술은 변하지 않아 공부하면 계속사용할 수 있습니다.



       



      HTTP도 마찬가지로 변하지 않은 기술로 공부하면 개발에 도움이 됩니다.



       



      기초를 튼튼히 하면 새로운 기술을 배우는 시간을 단축할수 있습니다.



       



      HTTP는 서버를 이용하는 프로그래밍 언어에 모두 사용합니다.



       



       



      HTTP 통신 사용 방법



      HTTP 통신 사용방법의 시작은 브라우저에 대한 이해가 필요합니다.



       




  • asdf.jpg


     


     


     


     


    한빛미디어 나는리뷰어다


     


    Real World HTTP


     


    흔치 않은 HTTP 전문서이자 HTTP의 역사서


     


    Real World HTTP의 책 소개를 찾아보면 HTTP 기술의 변Re천사와 버전 별 문법 및 의미론을 살펴본다고 나와있다.


    이 책을 가볍게 한번 흝어본 결과 내 머리속에 가장 강력하게 각인된 것은 이 책은 HTTP의 일종의 역사서이다 라는 것이다.


    책의 서장에는 이 책에 대한 소개가 나와있는데, HTTP란 무엇인가 그리고 어떤 기술인가로 시작하여 이 책에서 공부할것 그리고 이 책에는 나와있지 않은 것들이다.


    서문만으로도 저자가 얼마나 꼼꼼한 사람인지, 많은 지식과 연구 결과를 가진 사람인지 예측이 가능하다. 


    또 다른 특이점은 이 책의 예문은 Go 언어로 이루어져 있다. 나는 기존에 Go 라는 언어를 한번도 학습해 보지 않은 사람인데, 


    이 책을 읽음으로써 왜 저자가 Go라는 언어가 교육용으로 적합하다고 이야기 했는지 알 수 있었다. 


    저자의 말 그대로 Go 언어 자체는 굉장히 직관적이며 기존의 개발자들이 쉽게 접할 수 있는 언어로 보인다. 


     


    이 책을 크게 3가지로 나눈다면 HTTP 1.0 / HTTP 1.1 / HTTP 2.0 이렇게 3가지 파트로 나눌 수 있다.


    HTTP 1.0 이전의 역사를 이전에 딱히 공부해본 일이 없기 때문에 이리저리 비교해보기 위해서 1.1 / 1.0 / 2.0 3가지 파트를 여기저기 들여다보면서 책을 순서와 상관없이 읽었는데,


    저자가 정리를 잘 해놓았기 때문인지 딱히 내용에 혼동이 되지 않았다. 이 책에는 1.0 에서 1.1로 가면서 무엇이 바뀌었는지, 혹은 2.0이 되면서 무엇이 추가되었고 어떤것이 새로운것인지


    등을 굉장히 디테일하면서도 깔끔하게 설명해놓았기 때문에 HTTP의 개념 자체를 처음으로 배우는 사람에게도 조금은 어려우면서도 적합한 책으로 보인다.


     


    가장 인상깊었던 항목 중 하나는 클라이언트 시점에서 보는 RESTful API 라는 파트이다. 


    백엔드 개발자로써 클라이언트 관점의 HTTP를 깊게 생각해본 일이 없었는데, 파트 가장 위에 써있는 한줄이 아주 기억에 남는다.'좋은 API는 클라이언트에서도 사용하기 쉬운 API입니다'


     

  •  



    98E76981-2BA7-4F21-A888-BEE09E710E49.jpeg


     



    웹 개발을 하거나 웹 관련된 API 를 사용하다보면 도대체 웹이 어떻게 발전해왔는지, 웹의 구조가 어떻게 이루어져있는지 궁금해질 때가 있습니다. 어떤 분야든 마찬가지지만 하나를 알면 더 깊이 알기 위하여 추가적으로 공부해야 할 것들이 생기는데, 웹 개발에 관하여 몇 가지를 다뤄보고 나서 HTTP 자체에 대하여 궁금해져서 이 책을 찾아보게 되었습니다.


     이 책을 읽기 전에는 현재는 HTML5를 사용하고 있지만 기존에는 더 낮은 버전의 html로 웹은 시작했을 것이라는 생각이 들었습니다. 그리고, 그 당시에 구조부터 향상된 내용들을 추가적으로 알게 되면 좋을 것이라 생각이 들었습니다. 기존 시스템을 잘 파악하고 있으면 업그레이드 되더라도 해당 시스템을 더 잘 이해할 수 있다고 생각이 들었기 때문입니다.


     후기를 계속 작성하기 앞서 책을 모두 읽지 않았다고 말씀드리겠습니다. 내용이 굉장히 많고, 아직 웹에 대한 지식이 부족하여 이해하는데 상당히 많은 시간이 걸리는 책이라고 생각합니다. (제가 원래 책도 엄청 오래 읽는 편이구요) 어떠어떠한 내용들이 있는지 짚어봐서, 필요할 때 바로 찾아볼 수 있게 읽어보았습니다.


     책의 초반부를 읽어보면 다음과 같은 사실을 알 수 있습니다. HTML/0.9는 ‘브라우저가 문서를 요청하면, 서버는 데이터를 반환한다’ 라는 기본적인 뼈대를 만든 구조입니다. 하지만, 하나의 문서만 전송 가능하고 요청이 올바른지, 서버가 제대로 응답했는지 등의 여러 가지 문제점이 발생하였습니다. 이러한 문제점을 해결하고자 요청 메소드(GET)이 추가되고, 헤더가 추가되는 등에 기능이 추가됩니다.



    또, 추가된 헤더의 요소인 User-Agent, Referer, Content-Type, Content-Length 가 각각 어떤 의미를 나타내는지 알려줍니다. 크롬 개발자 도구에서 네트워크 응답 기록을 보고 항상 표기된 내용이지만, 제대로 알지 못하고 넘어간 내용도 확인할 수 있었습니다. 또, 별 생각 없이 사용하던 GET, POST 메소드와 바디에 대한 내용, 캐시가 생기게 된 이유 등등 웹에 대한 전반적인 지식을 언급하고 있습니다.



     이 책에서는 HTML의 시작점부터 현재까지의 역사를 통하여 발전된 방식을 소개하고 있기 때문에 조금 더 이해하는데 도움이 되는 것 같습니다. 막연히 ‘이러이러한 문제점이 생겨서 이렇다’보다는 ‘과거에 이런 시스템에서 이런 문제점이 있어서 이런 해결책을 제시했다’ 라는 식의 설명이 매우 좋습니다. 또, HTML 버전을 설정하여 직접 테스팅하는 코드도 보여 주는 것이 좋은 것 같습니다. 그냥 읽어도 좋지만 실습을 함께 하면 더 기억에 잘 남을 것입니다.



     아쉬운 점은 굉장히 자세하고 좋은 책이지만 그림이나 흥미를 조금 더 끌만한 요소가 부족한게 제 개인적인 입장에서는 아쉬웠습니다. 저는 ‘쉽게 알려주는’, ‘그림으로 알려주는’ 과 같은 시리즈를 좋아하는데, 이유는 그러한 책들은 매우 읽기 쉽기 때문입니다. 그런 책들에 비해서는 상대적으로 가독성이 부족한것이 다소 아쉬웠습니다.



     하지만, 깔끔하고 적절한 강조와 알찬 내용이 이 책을 읽을 충분한 이유가 된다고 생각합니다. 군더더기가 없이 강조할 부분은 강조하고 깔끔하게 쓴 책입니다. 이 책을 읽으면서 웹에 대한 상세한 내용을 알고, 지식을 체계적으로 쌓을 수 있는 책이라고 생각합니다.

  • 오탈자 보기
  • 부록/예제소스
    내용이 없습니다.
  • 추천도서
    내용이 없습니다.
  • 장바구니
    위시리스트
    결제하기
    닫기

    해당 상품을 장바구니에 담았습니다.
    장바구니로 이동하시겠습니까?