IP(인터넷 프로토콜)

조 은길·2022년 3월 4일
0

HTTP 웹 기본 지식

목록 보기
1/32
post-thumbnail

이번 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 주소를 보고, 클라이언트 쪽으로 메세지를 전달해준다.

참고로, 클라이언트에서 서버로 전달된 루트와 서버에서 클라이언트로 메세지가 전달되는 루트는 다를 수도 있다.
=> 인터넷 망이 복잡하기 때문

다만, 이러한 IP 방식에는 한계가 있다.

  • 비연결성
    • 미국에 있는 친구가 "아직 거기 있겠지" 하고 메세지를 던졌는데, 그 친구 PC가 꺼져있거나, 존재하지 않는 IP 일수도 있다.
    • 하지만, 그런 경우에도 여전히 보내지는 상황이다.
    • 즉, 패킷을 받을 대상이 없거나, 응답을 할 수 있는 상황이 아닌지 내가 모르더라도 일단 보내고 보는 한계점이 있다.
  • 비신뢰성
    • 패킷을 던졌는데, 중간에서 사라질 수도 있다.
      • 패킷이 거쳐가는 노드(서버) 중 하나가 문제가 생기면, 패킷도 사라진다.
      • 단, 이 패킷이 소실되도, 우리는 그것을 알 방법이 없다.
    • 패킷을 여러 개 던졌는데 순서대로 도착한다는 보장은 없다.
      • 패킷의 용량이 크면, 패킷을 나눠서 보낸다.
      • 즉, "Hello"와 "World!"로 나눠서 보냈는데, "World!"가 먼저 도착할 수도 있는 거다.
      • 받은 사람은 "World! Hello"
    • 즉, 이런 문제들이 해결이 안 된다.
  • 프로그램 구분
    • PC의 IP는 하나이다. 하지만, 하나의 PC로 게임도 하고, SNS도 한다.
    • 그러면, 게임용으로 전달되는 내용과 SNS 메시지용으로 전달되는 것을 하나의 IP로 어떻게 구분할 것인가?? 하는 문제가 생긴다.

정리하면, IP 프로토콜만으로는 이러한 문제들을 해결할 수 없다.

그래서, 이 문제를 보완하고자 나온 것이 TCP, UDP 이다.


profile
좋은 길로만 가는 "조은길"입니다😁

0개의 댓글