[Network] HTTP 네트워크 기본 개념 정리(2)

2018. 3. 7. 12:25Computer Network

HTTP 네트워크 기본 개념 정리 (2)


□ HTTP에 대하여..

- 클라이언트와 서버 간에 통신을 한다.


- Request와 Response를 교환하여 성립


- HTTP는 상태를 유지하지 않는 프로토콜(Stateless)


- HTTP 메소드

· GET : 리소스 획득

ㄴRequest URI로 식별된 리소스를 가져올 수 있도록 요구


· POST : 엔티티 전송

ㄴ엔티티를 전송하기 위해서 사용

ㄴGET으로도 전송할 수 있지만, 자주 사용하지 않고 일반적으로 POST 사용


· PUT : 파일 전송

ㄴ파일을 전송하기 위해서 사용

ㄴFTP에 의한 파일 업로드와 같이, 리퀘스트 중에 포함된 엔티티를 리퀘스트 URI로 지정한 곳에 보존하도록 요구


· HEAD : 메시지 헤더 취득

ㄴGET과 같은 기능이지만 메시지 바디는 돌려주지 않는다.

ㄴURI 유효성과 리소스 갱신 시간 확인 목적 등


· DELETE : 파일 삭제

ㄴ파일을 삭제하기 위해 사용

ㄴPUT메소드와는 반대로 동작

ㄴHTTP/1.1의 DELETE 자체에는 PUT 메소드와 같이 인증 기능이 없기 때문에 일반적인 웹 사이트에서는 사용하지 않음


· OPTIONS : 제공하고 있는 메소드의 문의


· TRACE : 경로 조사

ㄴWeb 서버에 접속해서 자신에게 통신을 되돌려 받는 루프백(loop-back)을 발생

ㄴ"Max-Forwards"라는 헤더 필드에 수치를 포함시켜 서버를 통과할 때마다 그 수치를 줄여나감 → 수치가 0 된 곳을 끝으로 200 OK 리스폰스 전송

ㄴ 프록시 등을 중계하여 오리진(origin) 서버에 접속할 때 그 동작을 확인하기 위해서 사용

ㄴ 크로스 사이트 트레이싱(XST)과 같은 공격을 일으키는 보안 상의 문제도 있기 때문에 사용하지 않음


· CONNECT : 프록시에 터널링 요구

프록시에 터널 접속 확립을 요함으로써, TCP 통신을 터널링 시키기 위해서 사용


- 메시지 바디 vs 엔티티 바디

· 메시지(message)

ㄴHTTP 통신의 기본 단위로 옥텟 시퀀스(Octet sequene, octet은 8비트)로 구성되고 통신을 통해서 전송


· 엔티티(entity)

ㄴRequest와 Response의 페이로드(payload, 부가물)로 전송되는 정보로 엔티티 헤더 필드와 엔티티 바디로 구성


- 인코딩 방식

· 인코딩 하는 이유?

ㄴ전송할 때에 전송 효율을 높일 수 있다.

ㄴ컴퓨터에서 인코딩 처리를 해야 하기 때문에 CPU 등의 리소스는 보다 많이 소비


1) 압축해서 보내는 콘텐츠 코딩(Content Codings)

ㄴ메일에 파일을 첨부해서 보낼 경우 같이 용량을 줄이기 위해서 파일을 zip으로 압축하고 나서 첨부해서 보내는 경우 → HTTP의 콘텐츠 코딩(Content Codings)

ㄴgzip(GNU zip), compress(UNIX의 표준 압축), deflate(zlib), identity(인코딩 없음)


2) 분해해서 보내는 청크 전송 코딩(Chunked transfer Codings)

ㄴHTTP 통신에서는 리퀘스트했었던 리소스 전부에서 엔티티 바디의 전송이 완료되지 않으면 브라우저 표시 안됨

ㄴ사이즈가 큰 데이터를 전송하는 경우에 데이터를 분할해서 조금씩 표시할 수 있다.

ㄴ엔티티 바디를 청크(덩어리)로 분해 → 청크 사이즈를 16진수로 사용해서 단락을 표시하고 엔티티 바디 끝에는 "0(CR+LF)"를 기록


- 여러 데이터를 보내는 멀티파트

· MIME(Multipurpose Internet Mail Extensions : 다목적 인터넷 메일 확장 사양) : 메일로 텍스트나 영상, 이미지와 같은 여러 다른 데이터를 함께 전송할 수 있는 기능

ㄴmultipart/form-data : Web 폼으로부터 파일 업로드에 사용

ㄴmultipart/byteranges : 상태 코드 206(Partial Content) 리소프노스 메시지가 복수 범위의 내용을 포함하는 때에 사용



□ HTTP Response 상태 코드

 

클래스 

설명 

 1xx

Informational 

리퀘스트를 받아들여 처리중 

 2xx

Success 

리퀘스트를 정상적으로 처리했음 

 3xx

Redirection 

리퀘스트를 완료하기 위해서 추가 동작이 필요 

 4xx 

Client Error 

서버는 리퀘스트 이해 불가능 

 5xx

Server Error 

서버는 리퀘스트 처리 실패 



'Computer Network' 카테고리의 다른 글

[Network] HTTP vs HTTPs  (0) 2018.07.09
[Network] TCP vs UDP  (0) 2018.07.09
[Network] (TCP) 3-way-handshake & 4-way-handshake  (0) 2018.07.09
[Network] GET vs POST 방식  (0) 2018.07.09
[Network] HTTP 네트워크 기본 개념 정리(1)  (0) 2018.03.05