이번 TIL은 인프런의 "모든 개발자를 위한 HTTP 웹 기본 지식"을 학습하고, 정리한 내용입니다.
만약, 제 글의 내용을 퍼갈 시에는 " 모든 개발자를 위한 HTTP 웹 기본 지식 "도 출처에 첨부하시기 바랍니다.
웹 기술들은 이미 HTTP를 잘 이해하고 있다고 가정을 하고, 기능 사용법 위주로 설명을 한다.
즉, HTTP에 대한 깊은 이해도 없이는 웹 기술을 제대로 사용할 수 없다.
ex) API UI, 상태 코드 선정 등등
개발자는 평생 HTTP 기반으로 개발을 해야한다.
웹이나 Http 전부 인터넷 망에 기반해서 동작한다. 그래서 http를 이해하려면, “인터넷 네크워크”에 대한 기본 지식이 필요하다.
클라이언트와 서버의 관계가 케이블을 꽂아서 연결되는 관계라면, http가 필요없을 것이다.
그러나, 메시지를 주고 받고 싶은 대상이 미국에 있다면, 인터넷을 사용해야하는데, 이 메시지가 광케이블을 통해서 전달되는지 인공위성을 통해서 전달되는지 수많은 중간 노드를 거쳐서 가게 된다.
그럼 도대체 어떤 규칙으로 어떻게 넘어갈까??
바로 그 규칙을 “ IP(인터넷 프로토콜) “라고 부른다.
이 복잡한 인터넷 망에서 내가 미국에 있는 친구에게 메시지를 보내려면, 뭔가 최소한의 규칙은 있어야 한다.
그게 바로 “IP 주소”라는 것을 통해서 가능해진다.
먼저 클라이언트인 내가 IP 주소를 부여받아야 한다.
물론, 메시지를 받는 친구 역시도 IP 주소가 필요하다.
여기서 IP의 역할은 다음과 같다.
IP는 패킷이라는 통신 단위도 데이터를 전달하는데, 이제 메세지를 그냥 보는게 아니라, IP 패킷이라는 규칙이 있다.
IP 패킷이 뭐냐면, 전송할 데이터에 출발지 IP 와 목적지 IP 등을 넣어주는 것을 말한다.
출발지 IP : 출발지 주소
목적지 IP : 목적지 주소
=> 마치 우리가 편지를 보내는 것과 같다.
목적지 IP 주소를 보고, 전달 전달을 거쳐서 서버로 전달된다.
서버에서도 동일하게 IP 주소를 보고, 클라이언트 쪽으로 메세지를 전달해준다.
참고로, 클라이언트에서 서버로 전달된 루트와 서버에서 클라이언트로 메세지가 전달되는 루트는 다를 수도 있다.
=> 인터넷 망이 복잡하기 때문
다만, 이러한 IP 방식에는 한계가 있다.
정리하면, IP 프로토콜만으로는 이러한 문제들을 해결할 수 없다.
그래서, 이 문제를 보완하고자 나온 것이 TCP, UDP 이다.