본문 바로가기

카테고리 없음

[Web] HTTP란? (Https, http 메서드)

728x90

1. HTTP 란?

1) HTTP

* 프로토콜 : 데이터 교환 방식을 정의하는 규칙

 

http는 Hypertext Transfer Protocol의 줄임말로 request(요청)과 reponse(응답)으로 이루어진 프로토콜을 말한다.

쉽게 이야기하면 웹 상에서 정보를 주고받을때 사용하는 데이터 교환 규칙이라고 생각하면 된다.

 

http는 클라이언트 - 서버 프로토콜이라고도 하는데,

사용자가 브라우저를 통해 요청(request)을 하면, 서버가 해당 요청에 맞는 응답(reponse)을 하는 형태로 이루어져 있다.

 

http 통신은 오로지 클라이언트로부터 시작되며, 서버는 클라이언트의 요청 없이는 데이터를 제공하지 못한다.

 

2) HTTPS

https는 http 보다 암호화되어 있는 데이터 전송 규칙이라고 보면 된다.

 

http는 클라이언트와 서버가 데이터를 주고받을 때, 암호화 처리가 되어 있지 않기 때문에

데이터를 해킹당하기 쉽다.

 

그러나 https는 ssl과 같이 암호화되어 데이터가 전송되기 때문에 http보다 보안에 더 강하다.

서로 보안 관계가 형성된 클라이언트와 서버만이 데이터를 교환하고 해독해서 볼 수 있다. 

 

http v1에서는 http, https를 둘 다 사용할 수 있지만 http v2부터는 https만을 사용할 수 있다.

 

 

3) http status codes

서버에서 클라이언트에게 보내는 응답 코드를 http status codes이다.

우리가 인터넷에서 쉽게 보는 404 error, 502 error 가 보다 http status code이다.

 

status code는 세 가지 숫자로 이루어져 있다.

1XX는 어떠한 정보를 나타내며, 2XX는 성공, 4XX는 클라이언트 에러, 5XX는 서버 에러를 의미한다.

 

100 클라이언트가 서버로 보낸 요청에 문제가 없다는 것을 의미
200 클라이언트의 요청이 성공했음을 의미
201 클라이언트 요청이 성공했으며, 자원이 성공적으로 생성되었음을 의미(post 요청에 대한 결과값)
301 요청한 리소스가 주어진 url로 영구적으로 옮겨졌음을 의미 
302 요청한 리소스가 주어진 url로 일시적으로 옮겨졌음을 의미 
400 서버가 클라이언트 오류를 감지해 요청을 처리할 수 없음을 의미 
401 요청한 클라이언트가 권한이 없기 때문에 처리되지 않았음을 의미
403 서버에 요청이 전달되었지만, 특정 권한이 없기 때문에 거절되었음을 의미 
404 서버가 요청받은 리소스(url)를 찾을 수 없음을 의미 
405 요청 메서드가 잘못도었음을 의미 
500 요청을 처리하는 중 서버에 예상치 못한 에러가 발생했음을 의미

 

 

2. HTTP Method (메서드)

http method(메서드)는 클라이언트가 서버에 데이터를 요청할 때, 그 목적이 무엇인지 나타내주는 메서드이다.

GET, POST, PUT, DELETE, HEAD, OPTIONS, PATCH, CONNENT 8개의 메서드가 존재한다. 

 

get, head, options, trace는 서버에 있는 데이터를 읽기만 할 때 사용하며,

post, put, delete, patch는 서버에 있는 데이터를 변경할 대 사용한다.

 

여기서 head, options, trace는 환경적인 요소를 확인하기 위한 메서드이다.

보통 웹서버에 어떤 문제 있을 때, 해당 문제를 진단하기 위해 사용한다. 

 

1) GET

get은 특정 데이터를 가져오도록 요청하는 메서드를 말한다. 

보통 데이터를 읽거나 검색할 때 사용하며, 데이터에 변화를 주는 작업은 할 수 없다.

 

성공적으로 데이터를 받아오면 200 상태 코드를 받게 된다.

 

2) POST

post는 주로 새로운 데이터를 생성할 때 사용한다.

성공적으로 데이터를 생성하면, 201 응답을 받아온다.

 

3) PUT

put은 데이터를 수정할 때 주로 사용한다.

 

4) DELETE

delete는 데이터를 삭제할 때 사용한다.

 

5) PATCH

patch는 변경 가능한 데이터의 일부를 업데이트할 때 사용한다.

보통 put을 사용하기 때문에 거의 사용되지 않는다.

 

6) HEAD

head는 클라이언트가 본문 없이 헤더만 많고 싶을 때 사용한다.

일반적으로 서버에 데이터가 있는지 확인하거나, 메타 데이터를 읽을 때만 사용한다.

 

서버에서 응답받은 상태코드가 200이면 콘텐츠가 웹 서버에 존재하는 것이고,

404이면 존재하지 않음을 의미한다.

 

실제 링크가 유효한지 아닌지 확인할 때 사용할 수도 있다.

 

7) OPTIONS

options는 서버에서 지원하는 HTTP 요청 방식을 확인하고 싶을 때 사용한다.

클라이언트가 서버에 options 메서드를 통해 요청하면, 서버에서 Allow 응답 헤더에 지원하는 메서드를 포함해서 전달한다.

 

8) TRACE

trace는 서버로 가는 네트워크 경로를 체크하는 메서드이다.

서버와 클라이언트 사이에 중간서버가 존재할 경우 trace를 이용해 확인할 수 있다. 

 

클라이언트가 trace로 서버에 요청을 하게 되면, 중간 서버가 이를 받고 요청 메시지를 서버에 전달한다.

이때 클라이언트 요청 메시지에 via header를 추가하여 전달하는데, 이 via에 중간서버 정보가 포함된다.

 

클라이언트에게 요청을 받은 서버는, 해당 메세지 전체를 응답 데이터에 포함하여 클라이언트에게 전달한다. 

클라이언트는 이 via 정보를 통해 중간 서버가 존재함을 확인할 수 있다. 

 

 

 

 

 

 

 

 

 

728x90