Network

TCP/IP 네트워크 이해하기 (1)

경딩 2025. 1. 24. 23:00

우리가 사용하고 만드는 대부분의 인터넷 서비스는 TCP/IP를 이용해 통신한다.

휴대폰 어플에서 인터넷이 안된다고 가정해보자! 

아마 이용할 수 있는 어플이 상당히 제한적일 것이다.

 

어떻게 네트워크를 통해 데이터가 오가는지를 이해하면, 튜닝을 통한 성능 개선이나, 트러블 슈팅등에

많은 도움이 된다고 한다.  이 글에서 데이터의 전반적인 흐름을 알아보자!

 

 

프로토콜 

프로토콜이란?

복수의 컴퓨터 사이나 중앙 컴퓨터와 단말기 사이에서 데이터 통신을 원활하게 하기 위한 필요한 통신 규약.

신호 송신이 순서, 데이터의 표현법, 오류 검출법 등을 정함. 통신 규약

 

편지를 보낼때 우편번호, 보내는 주소,  우표 등을 꼭 적어야 한다. 우표를 붙이지 않거나 잘못된 주소를 적게 되면, 일련의 절차 중 하나라도 문제가 생기면 편지 전달에 실패한다.

즉 네트워크 상에서 컴퓨터 간의 통신하기 약속이다.

TCP/IP 5계층

TCP / IP 5 계층은 네트워크의 기본 구조를 5개의 계층으로 나눠서 표준화한 것이다.

네트워크를 이용한 통신을 서로 다른 역할을 갖고 있는 5개의 계층을 통해 일어난다.

 

 

그림과 같이 응용 (Application) , 전송 (Transport),  네트워크 (Network), 데이터 링크 (Data Link), 물리 (Physical) 계층으로 구성되어 있다. 각각의 계층은 독립적이므로 데이터가 전달되는 동안에 다른 계층의 영향을 받지 않는다.

 

계층별 역할

  • 1 계층 - 물리 : 물리적인 연결과 전기 신호 변환/제어를 담당한다.
  • 2 계층 - 데이터 링크 : 네트워크 기기 간 데이터 전송 및 물리 주소를 결정한다. (LAN 통신)
  • 3 계층 - 네트워크 : 다른 네트워크와 통신하기 위한 경로를 설정하고 논리 주소를 결정한다. IP 주소라는 개념이 이 계층에 위치한다.
  • 4 계층 - 전송 : 네트워크 계층에서 보내온 데이터 정렬, 오류 정정 등을 수행하고 신뢰할 수 있는 통신을 확보한다. TCP/UDP 같은 프로토콜이 이 계층에 위치한다,
  • 5 계층 - 응용: 이메일, 웹 브라우저, 파일 전송 등 통신하기 위해 필요한 서비스를 제공한다.

 

패킷(Packet)의 정의

 

패킷(packet, 문화어: 파케트, 소포)은 정보 기술에서 패킷 방식의 컴퓨터 네트워크가 전달하는 데이터의 형식화된 블록이다
패킷은 제어 정보와 사용자 데이터로 이루어지면 사용자 데이터는 페이로드라고도 한다.

통신을 할 때 데이터는 패킷이라는 단위로 나눠져서 전송된다. 

왜 데이터를 통으로 보내지 않고 나눠 보낼까?

그렇게 하면 빠르고 좋겠지만 큰 데이터는 대역폭 (신호를 전송할 수 있는 주파수 범위 또는 폭)을 너무 많이 차지하기 때문에 패킷의 흐름을 원활하게 하지 못한다. 트래픽이 많아진다. 예를 들어 도로가 4차선인데 차가 2차선을 차지하고 있는 경우 각 차선마다 차가 다니는 것보다 정체가 일어난다. 이런 것을 방지하기 위해 패킷을 사용한다.

 

작은 패킷들로 분할되어 전달되기 때문에 전달될 때 번호를 붙여서 전달한다. 그래야지 순서대로 나열하여 원하는 데이터를 얻을 수 있다.

 

패킷의 기본 구조

패킷은 헤더, 페이로드, 풋터(주로 사용 X)로 구성되어 있으며, 각자 수행하는 역할이 다르다.

헤더 

  • 페이로드의 앞부분에 위치하는 정보이다. 헤더는 데이터의 속성, 정보 등을 포함하고 있다.

페이로드

  • 패킷에 의해 전송되는 실제 데이터이다.

풋터 

  • 일반적으로 뒷부분에 위치하는 정보이다. 헤더와 기능 면에서 큰 차이는 없다.

(일반적으로 사용하지 않고 특정 프로토콜에만 사용)

 

실제 패킷을 사용할 때는 여러 프로토콜을 캡슐화(Encapsulation) 하여 최종적인 하나의 패킷을 사용한다.

 

캡슐화 / 역캡슐화

여러 프로토콜로 캡슐화된 패킷

 

서로 다른 계층 간의 데이터를 주고받는 과정에서 캡슐화와 역캡슐화가 발생하게 된다.

응용계층에서 처음 요청 데이터가 생성되고  나면, 데이터가 응용 -> 전송 -> 네트워크 -> 데이터 링크 순으로 전달된다. 이때 계층 별로 맡은 역할에  따라 추가적으로 정보가 생성되면, 이것을  헤더의 형태로 하나씩 붙여 나가게 된다. 이렇게 헤더를 차례대로 붙여가는 과정을 캡슐화하고 한다.

반대로 데이터를 수신하는 쪽에서 수신받은 데이터가 데이터 링크 -> 네트워크 -> 전송 -> 응용 계층 순으로 타고 올라간다. 이 과정에서 양파 껍질 벗기듯 헤더를 차례대로 제거하면서 데이터를 전달하는 과정을 역캡슐화라 한다,

 

 

캡슐화(Encapsulation)

데이터 송신

 

하나의 패킷을 페이로드로 사용하여 또 다른 패킷을 만드는 과정을 캡슐화라고 한다.

페이로드 앞에 위치하는 헤더와 페이로드는 계층의 순서를 따른다.

 

역캡슐화(Decapsulation)

데이터 수신

 

캡슐화된 패킷을 전달받아 확인하는 과정을 역캡슐화라고 한다. 패킷을 하나씩 확인하면서 패킷의 정보와 데이터를 확인한다.

패킷을 확인할 때는 하위 프로토콜부터 순차적으로 확인한다.

 

 

네트워크 데이터들을 통칭해서 패킷이라 부르며 계층별 패킷의 이름 즉 PDU (Protocol Data Unit )가 있다.

 

 

와이어 샤크를 통해 확인해 보자!

arp (3 계층) IP 패킷 확인

풋터가 붙는 경우도 있고 안 붙는 경우도 있다.

 

 

ICMP (3 계층) IP 패킷 확인