HTTP가 뭔가요?
HTTP(Hypertext Transfer Protocol)는 클라이언트(웹 브라우저)와 서버가 데이터를 주고받기 위한 통신 규약
- 웹 문서, 이미지, 음성, 영상, 파일, JSON, XML 등 거의 모든 형태의 데이터를 전송함
- URL로 접속할 때 http://로 시작하면 해당 주소의 데이터를 HTTP 통신 규약에 따라 주고받는 것을 의미함
서버 간에 데이터를 주고받을 때 대부분 HTTP라는 프로토콜을 사용해서 통신한다고 보면 된다. 예를 들어 인터넷 주소를 지정할 때 http://www.naver.com와 같이 시작하는 것은 www.naver.com이라는 인터넷 주소가 가진 데이터 정보 등의 교환을 HTTP의 통신 규약대로 처리하라는 것을 의미한다고 볼 수 있다.
그럼 HTTP랑 HTTPS의 차이가 뭔가요?
HTTPS(HyperText Transfer Protocol Secure)는 HTTP에 보안 기능을 더한 프로토콜
즉, 클라이언트(브라우저)와 서버가 데이터를 주고받을 때,
암호화를 통해 제삼자가 중간에서 데이터를 엿보거나 위변조 하지 못하도록 보호해 준다
HTTPS는 기본적으로 443번 포트를 사용하며, 데이터 암호화에는 TLS(또는 SSL) 프로토콜이 사용
http://www.ktword.co.kr/test/view/view.php?m_temp1=648
위 웹 사이트는 http 프로토콜로 데이터를 주고받는 사이트인데 기본적으로 브라우저에서 보안 경고를 띄워준다!
![]() |
![]() |
실제로 아무 웹사이트나 들어가서 f12를 눌러 개발자 모드를 켜보자. Mac 환경은 -> 검사
네트워크 탭으로 가서 웹사이트의 프로토콜을 살펴보면
사용자가 요청한 하나의 화면을 불러오기 위해 많은 유형의 데이터들이 어떻게 요청되고 응답됐는지 볼 수 있다.
h3부터 가끔 h2, http/1.1 이렇게 나와있는데 이는 사용된 http 프로토콜의 버전을 나타낸다.
현재는 대부분 h2~h3 프로토콜을 사용하지만,
각 프로토콜 버전이 증가할 때마다 파일을 주고받는 방식과 속도가 개선되어 왔다고 생각하면 편하다
HTTP의 진화 - HTTP | MDN
HTTP (HyperText Transfer Protocol)은 월드 와이드 웹의 기반이 되는 프로토콜입니다. 1989년부터 1991년까지 Tim Berners-Lee와 그의 팀이 개발한 HTTP는 유연함을 형성하는 동시에 단순함을 지키는 데 도움이
developer.mozilla.org
HTTP 이거 왜 쓰나요?
HTTP 통신은 클라이언트(Front-End)와 서버(Back-End)로 나뉜 구조로 되어있다.
클라이언트가 요청(Request)하면 서버가 응답(Response) 함!
예를 들어 클라이언트가 HTTP 메시지를 만들어 보내고, 서버에서 요청에 대한 응답이 올 때까지 기다린다.
그리고 서버는 요청에 대한 결과를 만들어서 응답한다.
이러한 구조 덕분에 웹 애플리케이션은 사용자 인터페이스와 데이터 처리 로직을 분리하여 효율적으로 운영할 수 있다
왜 클라이언트랑 서버를 분리해야 하나요?
그 이유는 각자의 역할에 집중할 수 있기 때문 클라이언트에서는 복잡한 비즈니스로직이나 데이터를 다룰 필요 없고, UI를 그리는데 집중할 수 있다.
서버에서는 복잡한 비즈니스 로직이나, 데이터를 다루는데만 집중하면 된다.
만약 트래픽이 폭주해 고도화가 필요한 경우 클라이언트는 신경 쓰지 않고 서버만 개선하면 된다. 즉, 클라이언트와 서버를 독립적으로 구분한다는 것은 각자의 책임을 나눠 해당 책임에만 집중하여, 클라이언트와 서버 양쪽이 각각 독립적으로 고도화할 수 있다는 것이다.
HTTP 통신의 대표 메서드 두 가지 GET, POST
GET 메서드
GET 메서드는 서버로부터 정보를 조회하기 위해 사용됨.
이 메서드는 요청할 때 필요한 데이터를 URL의 쿼리 스트링에 포함시켜 전송하는데, 예를 들어, https://www.google.com/search?q=감자 같이 URL에 데이터를 붙여서 보내는 방식
- 데이터 노출: URL에 데이터가 포함되므로 누구나 볼 수 있어 보안에 취약
- 데이터 길이 제한: URL 길이에 제한이 있어 전송할 수 있는 데이터의 크기가 제한적
- 캐싱 가능: 브라우저가 요청을 캐싱하므로, 같은 요청을 반복할 때 서버에 불필요한 부하를 줄일 수 있음
- 멱등성: 여러 번 요청하더라도 서버의 상태가 변하지 않으므로 안전한 요청 방식
쉽게 말해 브라우저 URL입력창에 입력하는 건 GET요청이라고 생각하면 편하다
POST 메서드
POST 메서드는 서버에 데이터를 전송하여 새로운 리소스를 생성, 기존 리소스를 수정할 때 사용,
이 메서드는 전송할 데이터를 HTTP 요청의 본문(body)에 담아서 서버로 보냄
- 데이터 숨김: 데이터가 요청 본문에 포함되어 URL에 노출되지 않으므로 비교적 안전
- 데이터 길이 제한 없음: 요청 본문에 데이터를 담기 때문에 전송할 수 있는 데이터의 크기에 제한이 거의 없음
- 캐싱 불가: 브라우저가 요청을 캐싱하지 않으므로, 매번 서버에 요청을 보냄
- 멱등성 아님: 같은 요청을 여러 번 보내면 서버의 상태가 변할 수 있으므로 주의가 필요함
다시 개발자 모드로 가서 로드된 브라우저창에서 응답된 아무 요청이나 열어보자
방금 위에서 GET 요청은 브라우저의 URL 창에 치는 것과 똑같다고 했다,
그렇다면 위 요청 URL을 그대로 긁어서 브라우저 검색창에 넣어보자
내 구글 프로필사진이 요청되었고 똑같이 잘 가져와진다.
HTTPS 요청은 텍스트나 웹파일뿐만 아니라 jpg 데이터도 요청하고 응답받을 수 있다.
그렇다면 POST 요청으로 들어온 파일은 어떻게 확인할까?
youtube 로그 같은 게 post 요청/응답되었는데 한 번 확인해 보자
GET요청이 아니기 때문에 당연히 브라우저 URL에서 요청하면 에러가 날 테니 postman을 사용해 요청해 보자
빈 응답이 왔지만 200 OK 정상적으로 요청되고 응답된 것이 확인된다!
HTTP 프로토콜 | 토스페이먼츠 개발자센터
HTTP(Hypertext Transfer Protocol)는 웹에서 데이터를 주고받는 서버-클라이언트 모델의 프로토콜입니다. 쉽게 설명하자면 웹 브라우저가 서버와 통신하는 규칙이에요.
docs.tosspayments.com