HTTP 통신의 요청과 응답에 대해 알아보자

람다·2021년 6월 23일
0

HTTP

목록 보기
1/2
post-custom-banner

HTTP 프로토콜이란 무엇일까?

HTTP는 인터넷상에서 데이터를 주고받기 위한 서버/클라이언트 모델을 따르는 통신 프로토콜이다.
통신 프로토콜을 한 줄로 말하자면 “너 이거 줄게 넌 이렇게 받아, 그리고 난 네가 준 거 이렇게 받을게”라고 할 수 있을 것 같다.

HTTP의 특징

HTTP 프로토콜은 상태가 없는 프로토콜이다. 상태가 없다는 말은 데이터를 주고받기 위한 각각의 데이터 요청이 서로 독립적으로 관리가 된다. 즉, 1번 데이터 요청과 2번 데이터 요청이 서로 관련이 없다.

이러한 특징은 서버에서 세션과 같은 별도의 추가 정보를 관리하지 않아도 되고, 다수의 요청 처리 및 서버의 부하를 줄일 수 있는 성능의 이점이 생긴다.

또한, HTTP는 어떤 종류의 데이터든지 전송할 수 있다.(HTML문서, 이미지, 동영상, 오디오 등)

HTTP는 TCP/IP 통신 위에서 동작한다.

HTTP 1.1과 2.0의 차이

가장 큰 차이는 속도이며 2.0으로 와서 Header를 압축시켜서 보낼 수 있고, 한 번의 연결로 동시에 여러 메시지를 주고 받을 수 있다.

HTTP와 HTTPS의 통신 방식 차이

결정적 차이는 보안이다.

HTTP 방식은 네트워크상 누구나 정보를 열람, 수정이 가능하며 HTTP 방식이 HTTPS방식보다 빠르다. 그래서 HTTP방식은 민감한 정보를 다룰 때 항상 변조, 해킹 가능성을 염두해야한다.

HTTPS 방식은 누가 볼 수 없도록 개인 보안이 우수하다.

즉, 민감한 정보가 있는 페이지의 경우 HTTPS 그럴 필요가 없으면 HTTP로 만들면 된다.

HTTP 요청과 응답


HTTP 프로토콜로 데이터를 주고받기 위해서는 요청(Request)을 보내고 응답(Response)을 받아야 한다. 그리고 요청과 응답을 보면 클라이언트와 서버를 이해해야 한다.

클라이언트란 요청을 보내는 쪽을 의미하며 일반적으로 웹 관점에서 브라우저를 의미한다. 서버란 요청을 받는 쪽을 의미하며 일반적으로 데이터를 보내주는 원격지의 컴퓨터를 의미한다.

URL

서버에 자원을 요청하기 위해 입력하는 영문 주소이다. 숫자로 되어 있는 IP 주소보다 훨씬 기억하기 쉽다.

캡틴판교님의 블로그에 잘 정리 되어 있어 가져왔다.

Protocol: 어떤 방식으로 자원에 접근할 것인가의 규칙
Host: 웹서버에서 방문할 웹서버의 위치를 지정
Port: 웹서버에서 접근하기 위해 사용하는 번호
Resource Path : 웹서버에서 자원에 대한 경로
Query: key = value 형태로, ?시작해 &로 추가가 가능

HTTP 요청 메서드

서버에 특정 데이터를 요청하고 특정 동작을 수행하고 싶을 때는 HTTP 요청 메서드를 이용한다. 일반적으로 HTTP 요청 메서드는 다음과 같이 주요 메서드를 갖고 있다.

GET: 정보를 요청하기 위해 사용
POST: 정보를 밀어 넣기 위해 사용
PUT: 정보를 업데이트 하기 위해 사용
DELETE: 정보를 삭제하기 위해 사용

이처럼 이 데이터에 대한 조회, 생성, 변경, 삭제 동작을 HTTP 요청 메서드로 정의할 수 있다.

HTTP 상태 코드

요청 메서드가 클라이언트에서 설정해야 할 정보라면 HTTP 상태 코드는 서버에서 설정해주는 응답 정보이다. 예를 들어 서버에 사과 이름을 받아오는 GET 메서드 요청을 보냈을 때, 응답으로 오는 상태 코드는 크게 2개로 나뉜다.
200(성공)과 404(실패)이다.

나의 작업물 ohco.kr 의 요청 메서드다.
GET 메서드 요청을 보냈고 성공적으로 응답하여 Status code가 200이 된 것을 알 수 있다.

주요한 상태 코드를 더 살펴보자면,

200대 - 성공

200: GET 요청에 대한 성공
204: 성공했지만 응답 본문에 데이터가 없음, 헤더는 의미 있을 수 있음
205: 성공했으나 클라이언트의 화면을 새로고침 하도록 알려줌
206: 성공했으나 일부 범위의 데이터만 반환

300대 - 리다이렉션

300번대의 상태 코드는 클라이언트가 이전 주소로 데이터를 요청해 서버에서 새 URL로 리다이렉트를 유도한다.

300: 요청에 대해 하나 이상의 응답이 가능, 하나를 반드시 선택해야 함
301: 요청한 자원이 URL 이 변경되었음을 의미, 새로운 URL가 존재함
303: 요청한 자원이 임시 주소에 존재
304: 요청한 자원이 변경되지 않아 클라이언트에서 캐싱된 자원을 사용하도록 권고

400대 - 클라이언트 에러

400번대 상태 코드는 대부분 클라이언트의 코드가 잘못된 경우이다. 유효하지 않은 자원을 요청했거나 요청이나 권한이 잘못된 경우에 발생한다.

400: 잘못된 요청
401: 미승인(unauthorized)를 의미하지만, 의미상 비인증(unauthenticated)를 의미함, 클라이언트는 요청한 응답을 받기 위해 반드시 인증을 해야함
403: 서버에서 해당 자원에 대해 접근 금지
405: 요청한 메소드는 서버에서 알고 있지만 제거 되었고 허용되지 않음
409: 최신 자원이 아닌데 업데이트 하는 경우(파일 업로드시 버전 충돌)

500대 - 서버 에러

500번대 상태 코드는 서버 쪽에서 오류가 난 경우이다.

501: 요청한 동작에 대해 서버가 수행할 수 없는 경우
503: 서버가 과부하 또는 유지 보수로 내려간 경우

profile
오늘의 람다
post-custom-banner

0개의 댓글