IP(인터넷 프로토콜)

beautiflow·2023년 1월 19일
0

HTTP

목록 보기
1/5
post-thumbnail

1. 인터넷 통신


인터넷 망에서 컴퓨터들은 어떻게 통신할까?

예를 들어 클라이언트 옆에 서버가 있으면 케이블을 연결해 “Hello world” 라는 메시지를 보내면 통신이 된다. 하지만 이 클라이언트와 서버 사이에 인터넷 망이 있다면 어떻게 될까? 클라이언트가 한국에 있고 서버가 미국에 있다면 한국에 있는 클라이언트가 “Hello world” 라는 메시지를 보내야 하는데 중간에 케이블이든 인공위성으로 보내든 이러한 수많은 중간 노드라고 하는 서버들을 걸쳐서 미국에 있는 서버에게 안전하게 메시지를 도착해야 한다. 어떤 규칙으로 미국에 있는 서버에게 안전하게 도착할 수 있는지 IP프로토콜을 알아보자.

2. IP(인터넷 프로토콜)


IP(Internet Protocol)


  • TCP/IP 프로토콜 스택에서 인터넷 계층으로 인터넷에서 생성 및 사용되는 주소로 네트워크 환경에서 내 컴퓨터의 주소
  • 네트워크 환경에서 컴퓨터(노드)간 통신하기 위해 각 컴퓨터의 부여된 네트워크상의 주소

→ 네트워크 주소 : 공통 영역

→ 호스트 주소 : 중복이 없는 식별자 역할의 값

→ 실제로는 32자리의 2진수로 이뤄져 있으며 위의 나온 192.168.0.103 이라는 IP 주소는 실제로는 다음과 같이 표기

💡 11000000.10101000.00000000.01100111
  • IP 주소는 0~ 개 정도 만들 수 있다.
    • 하지만 대부분 사용되고 있어 IPv6으로 대체중이다.

IP 주소 부여

IP(인터넷 프로토콜) 역할

  • 지정한 IP 주소(Address)에 데이터 전달
  • 패킷(Packet)이라는 통신 단위로 데이터 전달

클라이언트에게 IP 주소, 서버에게도 IP 주소가 있어야 하고 서버에게 메시지를 보낼 때 최소한의 규칙이 있어야 보낼 수 있는 데 패킷이라는 규칙으로 보내야 한다.

IP 패킷 정보


  • 노드끼리는 IP 주소를 이용해 데이터를 전달하는데 데이터 전달 단위를 패킷(Packet)이라고 함
  • 패킷은 다음과 같이 구성
    • Payload : 전송하고자 하는 데이터의 한 블록
    • 주소지 정보 : 발신지, 목적지 주소
    • 관리 정보 : Header, IPv6 과 같이 망이 패킷을 목적으로 전달하는데 필요한 정보

메시지에 패킷의 정보인 출발지 IP 와 목적지 IP 등등을 넣고 보내는데 IP 프로토콜에 의해서 서버들이 규약을 따르고 있다.

클라이언트 패킷 전달

인터넷망에서 내가 보낸 패킷을 서로 노드들끼리 출발지가 무엇이고 목적지가 무엇인지 이해하면서 서버 IP 주소인 200.200.200.2 까지 정확하게 도착한다.

서버 패킷 전달

서버도 마찬가지로 새로 메시지를 만들어서 메시지에 패킷의 정보인 출발지 IP 와 목적지 IP 등등을 넣고 클라이언트에게 보내는데 클라이언트가 보낼 때랑 서버가 보낼때랑 인터넷 망이 복잡하기 때문에 서로 다른 곳으로 전달될 수 있다. 그래서 IP 라는 패킷에 담는 방식으로는 한계가 있다.

IP 프로토콜의 한계점


  1. 비연결성 : 패킷을 받을 대상이 없거나 서비스가 불가능해도 패킷을 전송함

미국에 있는 서버가 PC가 꺼져있는 것도 모르고 클라이언트는 계속 메시지를 보내게 된다. 그래서 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷은 계속 전송한다.

  1. 비신뢰성 : 패킷이 중간에 소실될 수도 있고 순서도 보장되지 않는다

서버들이 전달하는 사이에서 한 서버가 문제가 생겨서 패킷이 유실이 된다.

메시지를 한 번에 보낼 때 보통 1500byte 가 넘어가게 되면 부담스러워서 나눠서 보낸다.

  • 'Hello,' : 1500byte
  • 'World!' : 1500byte

두 개의 패킷을 나눠서 보내는데 인터넷 망안에있는 노드들을 통해서 패킷마다 노드를 각각 선택을 해서 따로 따로 보내게 되는 상황이 오다보니 클라이언트가 보낸 메시지 순서가 서버가 받은 메시지 순서와 상이하게 된다.

  1. 구분의 모호함 : 같은 IP를 사용하는 하나의 서버에 하나 이상의 애플리케이션이 구동중일 경우 어떤 어플리케이션에 패킷을 전달해야할 지 알 수 없다.

    클라이언트에서 게임도 하고 음악도 듣고 여러가지 프로그램으로 같은 IP로 쓰고 있는데 어떤 방식으로 구분되지 않아 한계가 있다.

출처 :
김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식을 수강하면서 정리한 내용입니다.
모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의

참고 블로그 :
{ 모든 개발자를 위한 HTTP 웹 기본 지식 } #1 - 인터넷 네트워크

[요약] 모든 개발자를 위한 HTTP 웹 기본 지식

0개의 댓글