[WEB] HTTP란 | GET·POST 차이 | 프로토콜 구조

HTTP(Hypertext Transfer Protocol)는 HTML 같은 문서를 전송하기 위한 응용 프로그램 계층 프로토콜이다. 웹 브라우저와 서버 간 통신을 위해 만들어졌다. 클라이언트가 요청(request) 하면 서버는 응답(response)하는 구조를 가진 클라이언트-서버 모델을 따른다. 

HTTP 요청 프로토콜 구조

출처: MDN

HTTP 요청 프로토콜 구조는 start line, HTTP headers, body로 구분된다.

start line에는

요청타입 / URI / HTTP버전

이 차례로 나열된다.

Ex)

GET http://developer.mozilla.org/en-US/docs/Web/HTTP/Messages HTTP/1.1

요청 타입은 일반적으로 GET, POST 중 하나가 온다.

GET vs POST

GET과 POST의 차이는 클라이언트가 요청을 보낼 때 데이터를 어디에 포함시켜 보내는가에 있다. GET은 URI 부분에 데이터를 포함시켜서 서버에 전송한다. 웹 브라우저 주소창에 클라이언트의 요청 정보가 그대로 드러난다. 반면 POST는 요청 정보를 주소창이 아니라 body 부분에 포함시켜 전송한다. 때문에 클라이언트의 요청 정보가 밖으로 드러나지 않는다.

 

그래서 GET 방식은 노출이 돼도 괜찮은 정보를 요청할 때 사용된다. 반면 아이디나 패스워드처럼 노출되선 안 되는 정보를 보낼 땐 POST 방식을 사용된다.

URI

URI(Uniform Resource Identifier)는 자원이 어디에 있는지 정확히 알려준다.

http://IP주소:포트번호/폴더이름/파일이름 도메인주소

이런식으로 구성된다. 해당 IP 주소를 가진 컴퓨터의 어떠한 폴더 내의 특정 파일에 접근하는 것이다. 끝에 ?query를 붙여서 구체적인 데이터를 해당 파일에 전송해서 원하는 데이터를 요청한다.

HTTP 응답 프로토콜 구조

출처: MDN

구조는 요청 프로토콜과 비슷하게 생겼다.

 

HTTP 응답 프로토콜의 start line은 상태 줄(status line)이라고 불린다.

HTTP버전 상태코드 상태문구

처럼 구성된다.

 

상태코드는 100번대부터 500번대까지 다양하다. 가장 대표적으로는 404 Not Found, 500 Internal Server Error 등이 있다. 보통 400번대 상태코드는 클라이언트에서 에러를 일으킨 것이고 500번대 에러는 서버에서 문제가 생겼다고 받아들이면 된다.

반응형

댓글

Designed by JB FACTORY