기본적으로 네트워크 통신을 할 때 처음 접하는 게 http 통신이다.
그러므로 이번 기회에 정리를 해보고자 한다!
📌 HTTP Protocol
HTTP는 HyperText Transfer protocol의 줄임말로 www상에서 사용하는 프로토콜이다. 1990년 대 팀 버너스 리가 월드와이드 웹을 만들어서 하이퍼텍스트 문서들을 주고받기 위한 규약으로 만든 것이 HTTP이다. 현재에는 문서들 뿐만 아니라 이미지, 비디오, 음성 등 거의 모든 형식의 데이터를 전송하는 데 사용되고 있다.
HTTP는 서버와 클라이언트 사이에 요청과 응답을 주고받는 프로토콜로 우리가 흔히 웹브라우저 주소창에 입력하는 웹 주소인 URL을 통해 요청과 응답이 이루어진다. 실제 전송은 TCP를 통해 이루어지며 포트는 80번을 이용한다.
HTTP 메시지는 기본적으로 클라이언트가 요청하고 서버가 응답하는 구조이기 때문에 메시지는 요청이냐 응답이냐에 따라 각 메시지의 구성 내용이 달라진다.
Header에 있는 용도 (Method)에 따라 무슨 동작을 할지 정해진다.
- Header 받는 곳, 보내는 곳, 데이터의 용도 등의 내용
- HTTP Methods 용도
- Body 실제 내용물
✅ 데이터를 담는 방법 2가지
1. 보내는 주소 뒤에 붙이는 방법
Query String (?key=value)
- 데이터를 필터링 (ex. 검색)하는 용도로 많이 사용된다.
- ex) https://www.youtube.com/watch?v=43GjRpeHd9w
Path Variable (/domain/:target)
- /users/1 (1번 User가 대상임을 의미)
- /stores/12 (12번 가게가 대상임을 의미)
특정 데이터를 직접 지정하는 용도로 많이 사용한다. (특정 사용자, 특정 가게 ..)
2. Body로 보내는 방법
주로 지정된 포맷으로 보낸다.
Form-data: Http 프로토콜에 정의된 방식으로 전달
- key-value 형태
- 파일을 전송할 땐 이 방식으로 보내야 함

raw: 보내는 사람이 임의로 전달
- 그러나 서버 개발자와 협의된 형태로 보내야 올바른 통신 가능
- XML, JSON
HTTP Methods 중 GET과 DELETE는 Body를 사용하지 않는다.
- 주소에 표현하는 Query String이나 Path Variable만으로 원하는 대상을 충분히 표현 가능하기 때문이다.
HTTP는 상태를 저장하지 않는 (Stateless)한 통신 방식
즉, 한 번 연결이 이루어지고 원하는 바를 이루면 연결을 해제하고 상태를 저장하지 않는다.

📌 HTTP 메서드
HTTP 메서드는 클라이언트가 서버에 요청의 목적 및 종류를 알리는 수단이다. HTTP 요청 시에 메시지 시작 줄에 표시된다. RestFul API 구조 등이 많이 사용되기 때문에 주로 GET , POST, PUT, DELETE 정도의 메서드 위주로 알아 두면 좋다.


❗ GET vs POST
GET은 지정된 리소스에서 데이터를 요청할 때 사용된다. 데이터를 읽거나, 검색할 때 사용되는 메서드이며 요청을 전송할 때 URL 주소 끝에 쿼리 스트링(QueryString) 으로 전송된다. GET은 설계 원칙에 따라 서버에게 동일한 요청을 여러 번 전송하더라도 동일한 응답이 돌아와야 한다. 그래서 브라우저에서 웹 페이지를 열어보거나 게시글을 읽는 등 조회를 하는 행위는 GET으로 요청하게 된다.
POST는 리소스를 생성하기 위해 서버에 데이터를 보내는 데 사용된다. 전송해야될 데이터를 HTTP 메세지의 Body에 담아서 전송한다. HTTP 메세지의 Body는 길이의 제한없이 데이터를 전송할 수 있다. 그래서 POST 요청은 GET과 달리 대용량 데이터를 전송할 수 있는 이유도 이 때문이다. POST로 요청을 하게 되면 서버의 무언가는 변경되도록 사용된다.

[네트워크] http 란
기본적으로 네트워크 통신을 할 때 처음 접하는게 http 통신이다. 개발자가 아니더라도 http는 많이 듣는 용어일 정도로 우리가 많이 접하고 있고, 중요하다. 내가 사용하는 기술이 최소한 어떤
noahlogs.tistory.com
HTTP 응답코드 메소드 정리 GET, POST, PUT, PATCH, DELETE, TRACE, OPTIONS
HTTP Request 정보 GET /index.html HTTP/1.1 요청 URL정보 (Mehotd /URI HTTP버젼) user-agent: MSIE 6.0; Window NT 5.0 사용자 웹 브라우져 종류 accept: test/html; */* 요청 데이터 타입 (응답..
javaplant.tistory.com
'🍞 Computer Science > 네트워크' 카테고리의 다른 글
[CS] 네트워크 총정리 (0) | 2024.07.23 |
---|---|
[네트워크] SocketIO vs WebSockets (0) | 2023.02.02 |
[네트워크] HTTP vs WebSockets (0) | 2023.02.02 |
[네트워크] REST와 RESTful API (1) | 2022.10.07 |