Network 통신이란 Client 와 Server 가 통신하는 것이다.
Network 내부 구조가 어떻게 되어있고, 이런 CS 적인 지식 물론 알고 있으면 너무 좋다. 그런데 내용이 방대해서 이를 다 공부하고 나서 HTTP 통신을 공부하려면 시간이 너무 많이 걸리기 때문에, 우선 HTTP 통신을 하는데 문제가 없을 정도만 알아보고 추후에 CS적인 지식의 부채를 채우면 되겠다.
Network 통신은 여러 개층으로 나누어져 있다.
Client에서 Server로 정보를 보내면,
응용계층 -> 표현계층 이런 순서를 따라 물리계층 까지 도착하고
다시 물리 계층에서 응용계층까지 역순으로 서버에 정보가 도착하게 된다.
각각의 계층에는 규격이 정해져 있는데 그 규격들을 🌟프로토콜🌟 이라고 한다.
계층이 왜 존재하는 건지? 각 계층에 특성은 무엇인지 이런것에 대해 알고 싶다면
osi 7계층
TCP/IP 4계층
등으로 검색해 보면 된다.
우리는 Client 입장에서 통신을 할 것이기 때문에 응용계층의 프로토콜을 지켜서 통신을 시도 하면 된다!
대표적인 응용 계층의 프로토콜 (규격)이 HTTP 이다.
우린 일반적으로 이것을 HTTP(Hyper Text Transfer Protocol) 통신이라고 말한다.
주소창에 https://www.google.com
이런식의 http 또는 http 로 주소를 찾아서 페이지를 띄우는 것이 대표적인 http 통신이다.
특징은 이런 것들이 있다.
Request, Response 를 직접해보고 사용해보면 특징이 이해가 갈 것이다.
(Request 보다 Response를 먼저 보는 이유는... 눈으로 확인하기가 쉽다.)
무슨 request 인지는 뭐르겠지만, 서버에 요청을 보냈다고 치자.
(터미널 curl 을 이용하면 터미널로 http 통신 가능)
이런 응답이 왔다!
크게는 Status Line, Header, Body 로 나눌 수 있으니 뜯어서 보자.
response가 시작되는 줄로 다음과 같은 3가지 정보를 가지고 있다.
HTTP StatusCode (상태 코드)
1xx : Informational - 요청 정보를 처리 중
2xx : Success - 요청을 정상적으로 처리함
3xx : Redirection - 요청을 완료하기 위해 추가 동작이 필요함
4xx : Client Error - 클라이언트의 요청 오류
5xx : Server Error - 서버 측 오류가끔 보이는
404 Not Found
이게 바로 요청한 request 가 잘못되었다는 유명한 상태코드 오류 중 하나다
예제는 Header 에
Content-Type: application/json
Content-Length: 154
이 있으므로 body 에 온 데이터가 json 형태이고 길이가 154인 단일 데이터 인 것을 알 수 있다.
다중 데이터 일 경우 Content-Type이 multipart/form-data; 로 시작한다.
request가 시작되는 줄 이다. 다음과 같은 3가지 요소를 가지고 있다.
HTTP Method
GET : 존재하는 자원에 대한 요청
POST : 새로운 자원을 생성
PUT : 존재하는 자원에 대한 변경 (자원 전체를 갱신)
PATCH : 존재하는 자원에 대한 변경 (자원 일부를 교체)
DELETE : 존재하는 자원에 대한 삭제
OPTIONS : 웹 서버에 지원되는 메서드의 종류를 확인할 경우 사용