network 기본 3

Post on 11-Jan-2017

67 Views

Category:

Internet

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

불타는Study

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

01Cookie

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

Server

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

Client Client

Client Client

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

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

01Cookie

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

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

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

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

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

Request Header

Request line

일반 헤더 필드

Request Header 필드

Entity Header 필드

Response Header

상태 라인

일반 헤더 필드

Response Header 필드

Entity Header 필드

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

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

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

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 라고 합니다 .

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)

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)

Thanks. Have a good day.

top related