network 기본 3

12
HTTP Network Basic 2016.12.11( 일 ) 일일일 Study

Upload: nim-bae

Post on 11-Jan-2017

67 views

Category:

Internet


0 download

TRANSCRIPT

Page 1: Network 기본 3

불타는Study

Page 2: Network 기본 3

01 Cookie02 HTTP 메시지 구조 및 HTTP 상태코드

Page 3: Network 기본 3

01Cookie

-HTTP(HyperText Tranfer Protocol) 는 stateless 프로토콜 이다 .HTTP 서버는 과거 클라이언트 요청에 대한 정보를 유지 하지 않습니다 .장점- 진행 중인 송수신 정보를 처리하기 위해 저장 공간을 동적으로 할당할 필요가 없다 .- 클라이언트가 트랜잭션 도중 죽으면 , 시스템의 어떠한 부분도 서버의 현재 상태를 청소할 필요가 없다 .

Server

모든 클라이언트 Request 에 대해 기억할라면 , 서버 CPU 나 메모리 같은 리소스 소비가 심함 .( 서버 성능 저하 )

Client Client

Client Client

근데 , 만약에 인증을 하는데 상태 관리를 하지 않는다면 ..? 해당 클라이언트가 인증을 했는지에 대한 상태를 모르기 때문에 계속해서 로그인을 요구할건가 ?이와 같은 문제를 해결하기 위해 쿠키라는 시스템을 도입 .

Cookie 는 Request 와 Response 에 쿠키 정보를 추가해서 클라이언트의 상태를 파악하기 위한 시스템 .

Page 4: Network 기본 3

01Cookie

-Cookie 는 서버에서 보내진 Set-Cookie 라는 헤더 필드에 의해 쿠키를 클라이언트에 보존 .

쿠키를 가지고 있을 경우 , Request 에 Cookie 를 붙여서 송신

Page 5: Network 기본 3

01Cookie

client server

usual http response msg

usual http response msg

cookie file

one week later:

usual http request msg

cookie: 1678cookie-specificaction

access

ebay 8734 usual http request msg Amazon server

creates ID1678 for user create

entryusual http re-

sponse set-cookie: 1678 ebay 8734

amazon 1678

usual http request msg

cookie: 1678cookie-specificaction

accessebay 8734amazon 1678

backenddatabase

Page 6: Network 기본 3

02HTTP 메시지 구조 및 HTTP 상태코드

-HTTP 에서 교화하는 정보를 HTTP 메시지라고 말함 .

Request 측 HTTP 메시지 = Request MessageResponse 측 HTTP 메시지 = Response Message

HTTP 메시지는 복수행의 데이터로 구성된 , Text 문자열 입니다 .

메시지 Header

개행문자 (CR + LF)

메시지 Body

HTTP 메시지 구조

Header : Requset / Response 속성 및 URI 등에 대한 정보

CR + LF : CR = Carriage ReturnLF = Line Feed

Body : 전송되는 Data

Page 7: Network 기본 3

02HTTP 메시지 구조 및 HTTP 상태코드

Request Header

Request line

일반 헤더 필드

Request Header 필드

Entity Header 필드

Response Header

상태 라인

일반 헤더 필드

Response Header 필드

Entity Header 필드

Page 8: Network 기본 3

02HTTP 메시지 구조 및 HTTP 상태코드

-HTTP 상태 코드는 서버로 부터 Request 결과를 전송 .

클라이언트가 서버에게 Request 를 보낼 때 , 서버에서 해당 요청에 대한 결과가 어떻게 처리가 되었는지 알려주는 것이 상태 코드 역할이다 .정상적으로 처리가 되었는지 , 아니면 무슨 이상이 생겼는지 알 수가 있다 .

Page 9: Network 기본 3

02HTTP 메시지 구조 및 HTTP 상태코드

Response Class Code   Response Class 의미 설명

 1  Informational ( 정보 ) 리퀘스트를 받고 , 처리 중에 있음 .

 2  Success ( 성공 ) 리퀘스트를 정상적으로 처리함 .

 3  Redirection ( 리디렉션 ) 리퀘스트 완료를 위해 추가 동작이 필요함 .

 4  Client Error ( 클라이언트 오류 ) 클라이언트 요청을 처리할 수 없어 오류 발생 5  Server Error ( 서버 오류 ) 서버에서 처리를 하지 못하여 오류 발생

상태코드는 200 OK 와 같이 3 자리 숫자와 설명으로 구성이 되어있습니다 .첫번째 숫자는 Response 의 클래스를 의미하며 , 나머지 2 자리는 분류가 없습니다 .Response 클래스는 밑에와 같이 5 개로 분류가 되어 있습니다 .

각 코드는 100 번대 단위로 응답 코드가 구분되어 있습니다 . ( 즉 , 300 번대끼리 , 400 번대끼리 유사한 형태의 응답 코드라는 의미입니다 .)이처럼 3 자리 숫자의 첫번째 값 ( 코드 ) 만 보고도 어떤 종류의 응답인지 알 수 있는데요 . 이 첫번째 값을 Response Class 라고 합니다 .

Page 10: Network 기본 3

02HTTP 메시지 구조 및 HTTP 상태코드

200 OK * 요청 정상 처리 .

204 No Content* 요청 정상 처리하였지만 , 돌려줄 리소스 없음 .* 응답에 어떠한 엔티티 바디 (Entity Body) 도 포함하지 않음 .* 서버에서 처리 후 , 클라이언트에 정보를 보낼 필요가 없는 경우 사용 . 206 Partial Content * Range 가 지정된 요청인 경우 ,  지정된 범위만큼의 요청을 받았다는 것을 알려줌 . 

301 Moved Permanently * 요청된 리소스에는 새로운 URI 가 지정되어 있기 때문에 , 이후로는 새 URI 를 사용해야 한다는 것을 나타냄 . ( 영구적인 URI 변경 )

302 Found * 요청된 리소스에는 새로운 URI 가 지정되어 있기 때문에 , 이후로는 새 URI 를 사용해야 한 다는 것을 나타냄 . 301 과 유사하지만 , 302 는 일시적인 URI 이동 ) 

303 See Other* 이 응답은 요청에 대한 리소스는 다른 URI 에 있기 때문에 GET 메서드를 사용해서 얻어야 한다는 것을 나타냄 . 302 코드와 같지만 , 303 은 리디렉션 위치를 GET 메서드를 통해 얻어야 한다고 명확하게 되어 있음 . 

304 Not Modified* 요청한 리소스가 마지막 요청 이후 변경된 적이 없기 때문에 기존 클라이언트의 로컬 캐시 리소스를 사용하도록 알려줌 .300 번대로 분류되어 있지만 , 리디렉션과는 관계없는 처리를 함 .307 Temporary Redirect * 임시로 페이지를 리다이렉트 함 .

* 200 번대 응답 (Response) : 성공(Success)

* 300 번대 응답 (Response) :  리디렉션(Redirection)

Page 11: Network 기본 3

02HTTP 메시지 구조 및 HTTP 상태코드

400 Bad Request * 클라이언트의 요청 구문이 잘못됨 .* 브라우저는 이 응답을 200 OK 응답과 동일한 형태로 취급함 .

401 Unauthorized* 요청 처리를 위해 HTTP 인증 (BASIC 인증 , DIGEST 인증 )  정보가 필요함을 알려줌 .접근 허용을 차단함 . 최초 요청에는 인증 다이얼로그 표시하고 , 두번째는 인증 실패 응답을 보냄 . 

403 Forbidden* 접근 금지 응답 . Directory Listing 요청 ( 서버 파일 디렉토리 목록 표시 ) 및 관리자 페이지 접근 등을 차단하는 경우의 응답 . ( 파일 시스템 퍼미션 거부 , 허가 되지 않은 IP 주소를 통한 액세스의 거부 등 )* 서버는 엔티티 바디에 접근 거부에 대한 이유를 명시하여 보낼 수 있음 .404 Not Found * 클라이언트가 요청한 리소스가 서버에 없음

405 Mothod Not Allowed * 허용되지 않는 HTTP 메서드를 사용함 . 

500 Internal Server Error * 서버에서 클라이언트 요청을 처리 중에 에러가 발생함 .503 Service Unavailable * 서버가 일시적으로 요청을 처리할 수 없음 .

* 서버가 과부하 상태이거나 점검중이므로 요청을 처리할 수 없음을 알려줌 .504 Gateway Timeout * 서버를 통하는 게이트웨이에 문제가 발생하여 시간이 초과됨 .505 HTTP Version Not Sup-

ported * 해당 HTTP 버전에서는 지원되지 않는 요청임을 알려줌 .

* 400 번대 응답 (Response) :  클라이언트 에러 (Client Error)

* 500 번대 응답 (Response) :  서버 에러 (Server Error)

Page 12: Network 기본 3

Thanks. Have a good day.