책 리뷰

[책] 그림으로배우는HTTP&NetworkBasic

seungdols 2016. 11. 27. 21:13
그림으로 배우는 #HTTP&Network Basic

#네트워크 배우는데에 입문으로 괜찮다. 그리고 HTTP도 잘 소개가 되어 있어서 웹 개발자 필수!!





  • 저자 : 우에노 센
  • 출판사 : 영진닷컴


배운점

  • 중요한 내용
    • 제 2장 간단한 프로토콜 HTTP
    • 제 3장 HTTP 정보는 HTTP 메시지에 있다.
    • 제 5장 HTTP와 연계하는 웹서버
    • 제 6장 HTTP 헤더
    • 제 7장 웹을 안전하게 하는 HTTPS
  • 배운 내용
    • 전반적인 네트워크 기초
    • HTTP 헤더
    • HTTP 상태 코드
    • HTTPS 
    • HTTP 관련 된 인증 

상세 후기

아무래도 이 책은 신입 개발자들에게 필독서라고 해도 맞을 것 같다. 나는 네트워크 프로그래밍, 컴퓨터 네트워크등 전공을 하면서 그래도 네트워크를 모르는 편은 아니라고 생각했음에도 그렇게 많은 것을 알고 있는 것은 아니였다

더군다나 학교 네트워크 관리를 1년 여하면서 그나마 지식을 가지고 있었다. 전공을 하면서도 엄청나게 공부를 안했던 탓인지..
아니면 학교에서 배운 지식은 시험을 보고나면 리셋 되서 그런건지 몰라도...(^^;;;)

이 책을 출퇴근하면서 읽었고, 꽤 오래 읽었다. 거의 한달? 넘게 걸린 것 같기는 하지만 그래도 결국에는 다 읽게 되었고, 이렇게 후기를 남기고 있다. 

하지만 이 책이 또 남는 게 많고, 중요한 것들이 많다 보니 아무래도 장 별로 정리를 해야 할 것 같다. 
주말에 정리를 해야 할 것 같다.  (노력했으나 HTTP 헤더부터는 정리가 어렵다 ㅠ )

어쨌거나 중요한 내용은 많고, 내가 알아야 하는 내용, 까먹더라도 바로 바로 참조 할 수 있게 자료를 만들어 둬야한다는 점!!
그만큼 이 책은 네트워크 전반적인 기초보다는 HTTP 관련 기초의 책이라고 할 수 있으며 이는 웹 개발자에게는 숙명이라고 본다. 

그러므로 나는 이 책을 적극 추천하는 바이다.




# 제 1장 웹과 네트워크의 기본에 대해 알아보자.

## WEB에서 쓰이는 HTTP 

HTTP/0.9
HTTP/1.0
  • RFC1945 발행
HTTP/1.1
  • 1997년 1월에 공개
  • 당시 RFC2068이었으나 개정판 RFC2616(최신판)

## 네트워크 기본은 TCP/IP

TCP/IP에서 중요한 개념 중 하나는 **계층**이다.
계층화가 된 이유는 각 계층 마다 달라지는 점을 모든 계층에 적용이 쉽게 되기 때문이다. 

어플리케이션 계층
  • 사용자에게 제공 되는 어플리케이션에서 사용하는 통신의 움직임을 결정
  • HTTP
  • FTP
  • DNS
트랜스포트 계층
  • 네트워크로 접속 되어 있는 2대의 컴퓨터 사이의 데이터 흐름을 담당한다.
  • UDP
  • TCP
네트워크 계층
  • 네트워크 계층은 네트워크 상에서 패킷의 이동을 다룹니다.
링크 계층
  • 네트워크에 접속하는 하드웨어적인 부분을 다룬다.
  • EX) 랜카드, 랜선

TCP는 신뢰성을 보장
  • 단, UDP보다 신뢰성을 보장하는 것이지 완전 신뢰성을 보장 하지않는다. 
  • APM OPEN SOURCE PROJECT - SCOUTER의 경우  UDP를 사용함.
  • TCP는 thee way handshaking이라는 방법을 사용함.
    • SYN, ACK 플래그를 활용한다.
URI와 URL
  • URI (Uniform Resource Identifiers)로 리소스를 식별하기 위해 문자열 전반을 지칭함.
  • URL (Uniform Resource Locator)로 리소스의 장소를 지칭함
URL 포맷을 알아두면 좋을 것 같다.

### URL 포맷



# 제 2장 간단한 프로토콜 HTTP

### HTTP는 클라이언트와 서버 간에 통신을 한다.
REQUEST와 RESPONSE를 교환하여 성립 ( 통신이 완료 됨 )

Request message
  • 메소드
  • URI
  • protocol version
  • Option reqeust header field
  • Entity

Respose message
  • Protocol version
  • Status code
  • Status code Phrase
  • Response header field
  • body

### HTTP는 상태를 유지하지 않는 프로토콜
  • stateless 프로토콜이다.
  • HTTP에서는 새로운 요청을 보낼 때마다 새로운 응답이 생성 된다.

## 서버에 임무를 부여하는 HTTP 메소드 

GET : 리소스 획득
  • 요청 URI로 식별된 리소스를 가져올 수 있도록 요구한다.
POST : 엔티티 전송 
  • 엔티티를 전송하기 위해 사용함. GET도 할 수는 있으나 POST를 주로 씀
PUT : 파일 전송
  • 파일을 전송할 때 사용함.
HEAD : 헤더 메시지 획득
  • 메시지의 헤더를 요청함.
DELETE : 파일 삭제
  • URI로 지정 된 리소스의 삭제를 요청함.
OPTIONS : 제공하고 있는 메소드 정보를 요청
  • 서버가 제공하는 메소드의 목록을 반환해준다.
TRACE : 경로 조사
  • 자신에게 통신을 되돌려 받는 루프백을 발생시킨다.
  • XST 같은 공격을 일으키는 보안 상의 문제도 있어 사용하지 않음.
CONNECT : 프록시에 터널링 요구
  • 프록시에 터널접속 확립을 요청하여 TCP 통신을 터널링 시키기 위해 사용함.

제 3장 HTTP 정보는 HTTP 메시지에 있다.

### 요청 메시지와 응답 메시지의 구조 


  • 리퀘스트 라인
    • 요청에 사용하는 메소드와 요청 URI와 사용하는 HTTP 버전이 포함 된다.
  • 상태 라인
    • 응답 결과를 나타내는 상태 코드와 설명, 사용하는 HTTP 버전이 포함.
  • 헤더 필드
    • 요청과 응답의 여러 조건과 속성 등을 나타내는 각종 헤더 필드가 포함.

### 메시지 바디와 엔티티 바디의 차이 

메시지 
  • HTTP 통신의 기본 단위로 Octet Sequence로 구성되고, 통신을 통해서 전송 됨.
엔티티
  • 요청과 응답의 Payload로 전송되는 정보로 엔티티 헤더 필드와 엔티티 바디로 구성 된다.

기본적으로 메시지 바디와 엔티티 바디는 같지만, 전송 코딩이 적용되는 경우에는 엔티티 바디의 내용이 변화하기 때문에 메시지 바디와 달라진다.

### 인코딩 

#### 압축하는 콘텐츠 코딩 
엔티티 정보를 유지한 채로 압축한다. 
  • gzip
  • compress
  • deflate
  • identity (encoding X)

#### 청크 전송 코딩
데이터를 분할해서 전송하는 방식

청크 사이즈를 16진수로 사용해 단락을 표시하고, 엔티티 바디 끝에 0(CR+LF)을 기록해둔다.

### 콘텐츠 네고시에이션

특정 웹싸이트는 영국에서 접속할 때와 한국에서 접속 할 때 언어셋이 달라지는 경우가 있다. 이를 콘텐츠 네고시에이션이라고 부른다.

판단 기준 
  • Accept
  • Accept-Charset
  • Accept-Encoding
  • Accept-Language
  • Content-Language

콘텐츠 네고시에이션 
  • Server-driven Negotiation
    • 서버 측에서 콘텐츠 네고시에이션을 하는 방식
  • Agent-driven Negotiation
    • 클라이언트 측에서 콘텐츠 네고시에이션을 하는 방식
  • Transparent Negotiation
    • 서버와 클라이언트의 혼합 버전






남의 책을 읽는 데 시간을 보내라. 남이 고생한 것에 의해 쉽게 자기를 개선할 수 있다 - 소크라테스 - 


반응형