웹 개발 메모장
[http] Request와 Response의 구조 및 역할 본문
Request / Response
클라이언트와 서버 간에 통신을 할 대 클라이언트는 서버에게 요청(request)을 하고 서버는 클라이언트에게 응답(response)을 합니다.
HTTP 에서 교환하는 정보는 HTTP 메시지 라고 하고 Request 측 HTTP 메시지를 Request 메시지, Response 측 HTTP메시지를 Response 메시지라고 합니다.
Request
클라이언트가 어떤 웹 페이지를 어떻게 불러오고 싶은 지에 대한 정보가 담겨있으며 아래와 같이 구성되어 있습니다.
1 2 3 4 | 메소드 URI 프로토콜 버전 Request 헤더 필드 엔티티 | cs |
예를 들면 아래와 같은 Request가 있을 수 있습니다.
1 2 3 4 5 | GET /index.html HTTP/1.1 Host: dororong.kr Connection: keep-alive name=dong&age=27 | cs |
해석 해보면
HTTP/1.1 버전의 프로토콜로 GET 방식으로 호스트가 dororong.kr 인 곳의 /index.html 을 가져와라.
가져오는데 연결(Connection)은 지속적(keep-alive)인 방식으로 하며 name 과 age라는 패러미터를 만들어서 각각 dong 과 27 을 값으로 담아 같이 보내자.
여기서 메소드는 다음과 같은 종류가 있습니다.
메소드 |
역할 |
비고 |
GET |
리소스 취득 |
URI로 식별된 리소스를 가져오도록 요구 |
POST |
엔티티 바디 전송 |
엔티티를 전송하기 위해 사용 |
PUT |
파일 전송 |
자체 사용자 인증 기능이 없어 잘 사용하지 않음 |
HEAD |
메시지 헤더 취득 |
URI 유효성과 리소스 갱신 시간을 확인하는 목적 등으로 사용 |
DELETE |
파일 삭제 |
자체 사용자 인증 기능이 없어 잘 사용하지 않음 |
OPTIONS |
서포트하는 메소드 문의 |
예) Allow: GET, POST, HEAD, OPTIONS |
TRACE | 경로 조사 | 프록시 서버 등을 중계하여 접근할 때 그 동작을 확인하기 위함 |
CONNECT |
프록시의 터널링 요구 |
주로 SSL 등 으로 암호화 된 것을 터널링 시키기 위해 사용 |
Response
서버가 클라이언트에게 전달해주는 페이지에 대한 정보가 담겨있으며 아래와 같이 구성되어 있습니다.
1 2 3 4 | 프로토콜 버전 상태모드 상태코드 설명 Response 헤더 필드 바디 | cs |
예를 들면 아래와 같은 Response가 있을 수 있습니다.
1 2 3 4 5 6 7 | HTTP/1.1 200 OK Date: Tue, 10 Jul 2012 06:50:15 GMT Content-Length:362 Content-type:text/html <html> ... | cs |
해석해보면
HTTP 프로토콜이며 서버의 버전은 1.1이고 Request에 대한 처리 결과는 200 이다. 다시말해 OK 이다.
내가 전달할 메시지는 2012년 7월 10일 화요일 6시50분15초에 만들어 졌으며
내용의 길이는 362이고 내용은 text/html 타입이다.
보낼 내용은 <html> ... 이다.
'옛날.. > http' 카테고리의 다른 글
[http] 가상 호스트 (0) | 2017.12.29 |
---|---|
[http] HTTP 상태 코드 (0) | 2017.12.29 |
[http] HTTP 메시지의 전달 방법들 (0) | 2017.12.29 |
[http] 쿠키와 세션을 사용한 상태 관리 (0) | 2017.12.28 |
[http] 웹 브라우저를 통한 http 통신의 기본 동작 (0) | 2017.12.27 |