본문 바로가기

웹/네트워크 기본

IP란 무엇일까? - IP의 특징(1)

네트워크를 컴퓨터끼리의 연결망이라고 하자. 연결망이 있어도 통신은 어떻게 할까? 

현실에서 예를 찾아보자. 만약 한국인과 일본인이 있다. 하지만 둘 다 영어를 할 줄 안다면? 영어를 사용해 소통을 하지 않을까? 마찬가지로 컴퓨터들끼리의 소통을 할 때에도 공통적으로 쓰는 언어를 사용해야 통신이 가능하다. 

TCP / IP는 네트워크 상에서 사용하는 공통적인 언어라고 생각하면 된다. 

 

1. TCP / IP

tcp/ip 는 4개의 층으로 이루어져 있다. 네트워크의 계층은 OSI 7계층으로 되어 있지만. TCP/IP는 4개의 계층으로 되어있다. 응용계층 / 전송 계층/ 인터넷 계층/ 네트워크 인터페이스층 이다.

출처: https://parodev.tistory.com/28

통신은 4개의 계층이 모두 정상적으로 기능해야 이루어진다. 통신을 하는 대상들은 같은 프로토콜을 써야한다. 

실생활에서 예를 들어보자. 영어와 한국어는 어순이 다르다. 일본어와 한국어를 비교해보자 어순은 같아도 단어가 다르다. 어떤 언어로 소통을 하려면, 우리는 같은 어순과 단어를 써야한다. 

이와같이 통신에서 요청하는 측이 HTTP - TCP - IP 라는 프로토콜을 쓰면, 응답을 하는 쪽도 HTTP = TCP -IP 라는 프로토콜을 사용해야 통신이 성립된다.

 

  • 네트워크 인터페이스 층 (네트워크 접근 계층)

네트워크 안에서 데이터를 전송하는 역할을 담당한다. 위의 그림에서 네트워크 접근 계층은 맨 아래에 있지만 제일 먼저설명하는 이유는 네트워크 접근 계층을 맨 처음 거치기 때문이다. 통신을 위해선 전자신호를 wi-fi이나 이더넷 케이블과 같은 접속수단을 거쳐서 네트워크 망에 접속을 해야한다. 이런 네트워크망에 데이터 전송을 위한 접속을하는 계층이다.

이 계층은 상대방과 같아야할 필요가 없다는 특징이 있다.

 

  • 인터넷 계층

인터넷 네트워크에서는 많은 네트워크에 다양한 기기가 연결되어 있는 다대다의 통신이 이루어진다. 인터넷층은 네트워크 사이에서 데이터를 전송하는 역할은 한다. 네트워크끼리 연결을 해주고 데이터를 전송하는 기기는 라우터이다. 그래서 네트워크간 데이터의 전송을 라우팅이라고 한다. 이런 라우팅이 이루어지는 계층이 인터넷 계층이다. 

 

  • 전송 계층

우리는 PC로 네트워크를 통해 많은 애플리케이션을 사용한다. 대부분의 애플리케이션은 인터넷으로 데이터를 주고 받는다. 예를 들어 지금 보고 있는 블로그의 글도 데이터지만 지금 온라인 게임을 동시에 실행한다고 해보자. 게임의 데이터도 인터넷을 통해서 주고받아야한다. 그럼 지금 케이블을 타고온 데이터가 게임의 데이터인지 블로그의 글 데이터인지 어떻게 알 수 있을까? 

전송 계층은 그런 데이터의 올바른 전송을 위해 존재한다. 전송 계층에 있는 프로토콜들 UDP 나 TCP는 출발지와 목적지 애플리케이션의 정보를 바탕으로 올바른 데이터 전송을 이루어지게끔 하는 프로토콜이다. 또 게임의 데이터와 블로그의 데이터가 마구 엉켜서 케이블을 타고 들어오는데, 데이터를 풀어서 올바른 요청 혹은 응답 데이터로 조립을 해주는 역할도 한다. 조립 이후에는 당연히 올바른 애플리케이션에 데이터를 전달을 한다. 하지만 여기서 만약 데이터가 잘못된 경우도 있을 수 있지 않을까? 그 때에도 전송계층의 프로토콜들은 그 잘못됨을 감지하고 데이터를 다시 보내주는 역할도 하고 있다.

 

  • 애플리케이션 (응용 계층)

전송 계층에서 성공적으로 데이터를 받았다 해도 우리가 컴퓨터가 아니기 때문에, 데이터가 우리가 사용하고자 하는 형식으로 변환될 필요가 있다. 게임을 예로 들어보면 전투, 이동, 대화 이런 행동들은 전부 0과1로 이루어진 신호와 데이터로 이루어진다. 응용 계층은 데이터를 우리가 실제로 사용하는 형태로 변환해 준다. HTTP 프로토콜이 이에 해당된다.

하지만 그런 역할만 하는건 아니다. DHCP나 DNS와 같은 애플리케이션의 통신을 준비하는 프로토콜도 응용 계층에 속한다. 정리하자면 응용 계층은 데이터의 형태나 처리 순서, 통신 순서를 정해주는 계층이다.

 

 

2. 데이터 송수신 규칙

자 우리는 이제 4계층에서 각각 사용되는 프로토콜들이 조합이 되어 네트워크에서 통신이 된다는 걸 알고 있다. 하지만 여기서 데이터 전송지정보는 어디에 있을까? 전송계층이라고 생각할 수도 있겠지만, 각 계층의 프로토콜들 각각은 전부다 가지고 있다. 그리고 각 프로토콜에 있는 전송지 정보를 헤더(header)라고 한다.

그림에서 보이는것 처럼 모든 계층에서 헤더가 있는걸 볼 수 있다. 헤더는 데이터를 전송 할 때 추가가 된다. 실생활에서 예를 들면 프로토콜이라는 상자에 데이터라는 내용물을 넣고 그 상자를 닫는 헤더라는 뚜껑이 있다고 생각하자. 내가 알기로는 뚜껑은 맨 마지막에 닫는걸로 알고 있다.  마찬가지로 헤더는 맨 마지막에 데이터를 보내기 직전에 추가가 된다. 그리고 이런 헤더의 추가작업을 캡슐화 라고 한다. 데이터를 받은 쪽은 헤더를 해석하고 다른 프로토콜로 처리를 넘긴다. 이런 작업을 역캡슐화 혹은 비캡슐화라고 한다. 

 

마지막으로 이더넷 헤더가 추가되었을때 헤더 이외에 추가가 되는게 있다. FCS 라고 하는 것인데 Frame Check Sequence의 약자로 에러 체크를 위한 정보이다. 그림에서는 Ethernet trailer 라고 되어 있는데 이부분이 FCS이다. 이더넷 헤더가 추가되는 네트워크 인터페이스 계층에서 각 계층에서 합해진 header와 FCS가 붙는것으로 네트워크로 보낼 데이터는 완성이 된다.

 

데이터의 요청에 대한 흐름을 정리하자면

요청을 하는 측에서 응용계층 - 헤더추가 - 전송계층 - 헤더추가 - 인터넷계층 - 헤더추가 -네트워크 접근계층 헤더추가 - FCS 추가 순서로 요청을하고 요청을 받는 측에서는 이 역순으로 진행이 된다. 

FCS로 에러가 있는지 확인하고 헤더정보를 읽어 올바르게 도착했는지 확인한뒤 데이터를 처리하고 다음 계층으로 넘긴다. 다음 계층에서도 마찬가지로 헤더를 통해 데이터가 올바르게 도착했는지 확인하도 데이터를 다음 계층으로 넘긴다. 

최종적으로는 응용계층의 헤더를 먼저 확인하고 데이터 부분을 처리한다.

 

3. 데이터를 부르는 명칭

여담으로 계층별로 데이터를 부르는 명칭은 다음과 같다.

/ 응용계층은 메시지 

/ 전송계층은 세그먼트나 데이터그램

/ 인터넷층은 패킷

/ 네트워크 접근층은 프레임

이때 각각의 명칭은 각계층의 데이터 + 헤더를 의미한다.

예를들어 

HTTP의 데이터와 헤더가 결합되었을때 HTTP 메시지라고 부를 수 있다.

HTTP 메시지에 TCP 헤더를 추가해야지 TCP 세그먼트라고 부를 수 있다. 

TCP 세그먼트에 IP 헤더를 추가해야지 IP 패킷이라 부를 수 있다.

IP 패킷에 이더넷 헤더와 FCS를 추가해야지 이더넷 프레임이라 부를 수 있다.

 

4. IP란?

  • IP 주소에 대해서

IP 는 네트워크상에 어떤 PC(출발지) 에서 다른 PC(목적지)로 데이터를 전송하는 역할이다. IP 패킷은 데이터 + IP헤더이다. IP헤더에 들어있는 정보중 가장 중요한것은 데이터가 전송되어야되는 IP주소이다. 즉, 목적지 정보가 가장 중요하다. 

때문에 반드시 통신시에는 데이터 전송을 위한 상대방의 주소가 지정되어야한다.

 

그럼 ip주소는 어떻게 정해지는걸까. 그걸 알기 위해선 IP가 어디서 동작하는지 알아야한다. 

IP는 호스트(사용자의 컴퓨터) 운영체제에서 동작하고 있다. 호스트 내부에 있는 인터페이스는 IP프로토콜과 연결이 된다. 정확히는 IP의 주소를 인터페이스가 사용한다. 때문에 통신시에 쓰이는 IP주소는 인터페이스의 주소이다. 

 

인터페이스가 기억이 안난다면, 랜카드를 떠올려보자. 랜카드는 전자신호로 된 데이터의 정보를 받는다. '받기' 때문에 인터페이스는 자신의 IP주소를 IP프로토콜과 연결하여 사용한다. WI-FI 와 유선 인터넷을 쓴다고 해보자 그럼 전자 신호를 받아야 되기 때문에 무선 랜카드와 유선 랜카드는 필연적으로 존재한다. 이 때 인터페이스가 두개라 하더라도 각각의 인터페이스에 IP주소를 연결시키는 것도 가능하다.

 

 

  • IP의 주소의 구성 - 서브넷 마스크

IP 주소는 ipv4 기준으로 32비트이다. 즉, 1과 0이 32개 나열된다.

IP주소는 네트워크부와 호스트부 이 두개의 부분으로 구성이 된다. 그럼 어디까지가 네트워크부이고 호스트부인줄 알까? 네트워크부와 호스트부는 설상가상으로 가변적이다. 때문에 어디까지가 네트워크부인지 알 필요가 있다. 

서브넷마스크는 네트워크부를 명시해주는 역할을 한다. IP주소처럼 서브넷 마스크도 32비트이다. 32개의 숫자중에 1은 네트워크부를 나타내고, 0은 호스트부를 나타낸다. 서브넷마스크는 반드시 연속한 1과 연속한 0이다. 1과 0이 교대로 나타나는 경우는 없다.

 

글로 설명하니 와닿지가 않을수도 있다.

앞서 서술한 서브넷 마스크 규칙은 이런것이다. 1과 0이 번갈아서 쓰면 안된다는 소리. 

 

때문에 ipconfig에서 서브넷 마스크를 보면 255.255.255.0 이라고 되어있는 것을 본적이 있을지도 모른다. 이때 0을 제외한 부분이 네트워크부 이고 0이 호스트 부분이다.

출처 https://lamarr.dev/networkingbeginner/2020/03/22/09.html

 

IP Address에서 네트워크부와 호스트부를 알고 싶다면 다음과 같이 하면 된다.

IP 주소와 서브넷 마스크의 숫자를 2진수로 전부 바꾸고 AND 연산을 해보자.

위 사진에서 한 AND 연산결과로 IP주소의 네트워크부분은 203.0.113 이라는 걸 알 수 있다.

 

' > 네트워크 기본' 카테고리의 다른 글

TCP 와 UDP  (0) 2022.04.06
IP란 무엇일까? - IP의 특징(2)  (0) 2022.03.30
네트워크의 구성  (0) 2022.03.16
네트워크란? , 통신의 종류는?  (0) 2022.03.10
HTTPS 란 무엇일까  (0) 2022.03.03