Image
Network/Basic

[인터넷 프로토콜 스택 4계층] 인터넷 프로토콜을 이용한 패킷 전송을 위해 필요한 기술요소

인터넷 프로토콜 스택 4계층

인터넷 프로토콜 스택 4계층이란 인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 프로토콜의 모음이다. 이러한 프로토콜은 용도에 따라 4개 계층으로 이루어져 있다.

 

  • 어플리케이션 계층 : 프로세스간 통신을 위해 설계된 계층. 예시) HTTP, FTP, TLS/SSL
  • 전송 계층(Transport Layer) : 송신자와 수신자를 연결하는 서비스에 대한 정보를 담는하는 계층. 예) TCP, UDP
  • 인터넷 계층 : 패킷을 목적지로 전송하기 위한 정보를  계층 예) IP
  • 네트워크 인터페이스 계층 : LAN 드라이버, LAN 장비 등 물리적 전송을 위한 계층

개발자인 우리는 어플리케이션 계층, 전송 계층, 인터넷 계층 3개 계층에서 어떤 일이 나는지 아는 것이 중요하다.

 

각 계층은 어떤 일을 하는가?

자 우리가 안드로이드 어플리케이션을 개발했다고 해보자. 우리는 HTTP 기반의 REST API를 이용해 서버로부터 데이터를 받아 안드로이드 어플리케이션에 표시하고자 한다. 이를 위해 우리는 다음과 같은 과정을 거쳐야 한다.

그림1. 어플리케이션에서 데이터 요청

<그림1>에서 Packet을 어플리케이션에서 서버로 전달하는 간단한 요청을 한 것처럼 보인다. 하지만, 이 요청을 처리하기 위해서는 위에서 다뤘던 인터넷 프로토콜 스택 4계층에 대한 정보가 필요하다. 

 

자 그러면 어플리케이션 계층부터 살펴보도록 하자.

 

어플리케이션 계층

먼저 어플리케이션 계층에서는 서버로 전달할 Packet(데이터)들이 생성될 것이다.

어플리케이션 계층에서는 서버로 전달할 데이터를 생성한다.

 

 요청 Packet이 두 개이고 서버에서 두 개의 패킷을 모두 받아야 데이터를 처리할 수 있는 상황을 가정한다. 이 두 Packet에는 순서가 있고, 두 Packet을 순서대로 받아야 서버에서 연산을 처리할 수 있는 상황을 가정해보자.

 

생성된 Packet1, Packet2 만으로는 어떤 Packet을 먼저 처리해야하는지 서버가 알 수 없다. 이러한 처리 순서에 대한 정보 등 전송을 위해 필요한 정보들을 Packet에 추가하기 위해 전송계층이 존재한다.

 

 

전송계층(TCP)

Packet에 필요한 추가적인 정보를 추가하기 위해 전송 계층은 어플리케이션으로부터 Packet을 전달 받는다.

*TCP 방식과 UDP 방식의 두가지 방식이 있지만, TCP 방식을 기준으로 설명한다.

그림3. 전송계층 패킷 전달 받음

<그림3>에서는 Packet1을 전송계층이 어플리케이션 계층으로부터 전달 받는 상황을 가정한다.

 

그림4. 전송계층 정보 추가

<그림4>와 같이 전송계층에서는 순서 보장을 위한 순서값, 중복 제어를 위한 고유값 등의 정보를 추가해준다.

*실제로는 PORT등의 정보도 추가해주지만, 이해를 위해 위와 같이 표현하였다.

 전송계층에서는 전송을 위해 필요한 추가적인 정보를 패킷에 추가한다.

하지만, 여전히 이 Packet이 어느 네트워크 노드(서버)로 전달되어야 할지에 대한 정보가 없다. 이 정보가 없다면 이 패킷은 목적지까지 가지 못하고 네트워크를 떠돌다가 사라질 것이다. 이러한 정보를 추가하기 위해 Packet을 인터넷 계층으로 옮긴다.

 

인터넷 계층

인터넷 계층으로 패킷이 전달되면, 인터넷 계층에서는 Packet에 출발지 IP Address와 목적지 IP Address에 대한 정보를 추가함으로써 Packet이 어떤 노드(목적지)로 가야하는지 설정한다.

그림5. 인터넷 계층 정보 추가

인터넷 계층에서는 패킷의 출발지와 목적지에 대한 정보를 패킷에 추가한다.

이제 전송하려는 Packet을 위한 모든 정보가 완성되었다. 이 이후에는 네트워크 인터페이스 계층에서 해당 Packet을 네트워크를 이용해 목적지로 전송한다. 

 

인터넷 프로토콜 스택 3계층의 의의

원래 4계층이지만 패킷에 데이터를 추가하는 계층은 3개 어플리케이션 계층, 전송 계층, 인터넷 계층 계층이다.

 

어플리케이션 계층에서는 보내야 하는 정보를 생성하고, 전송 계층에서는 전송을 위한 정보를 추가해주고, 인터넷 계층에서는 출발지와 목적지에 대한 정보를 설정해준다. 이 과정을 통해 패킷이 어디로 가야하는지에 대한 정보가 완성된다. 

 

 

목차

자 이제 각 계층에서 다루는 내용을 상세하게 살펴보자. 다음과 같은 순서로 글이 진행된다.

1. [인터넷 계층] IP, IP Address란 무엇인가

1.1 [DNS] 도메인 이름을 IP Address로 바꿔주는 시스템

1.2 [전송 계층] 포트(PORT)란 무엇인가?

2. [전송 계층] 데이터 전달을 위한 정보를 추가해주는 TCP

3. HTTP(HyperText Transfer Protocol)와 그 특징

4.1. [HTTP 메세지] 1. 메세지 구조

4.2. [HTTP 메세지] 2. HTTP 메서드 정리 - GET, POST, PUT, PATCH, DELETE

4.3. [HTTP 메세지] 3. HTTP 응답코드 정리 - 200, 300, 400, 500

5. URI, URL, URN 정리

5.1 API를 위한 URI설계

반응형

 

이 글의 저작권은 '조세영의 Kotlin World' 에 있습니다. 글, 이미지 무단 재배포 및 변경을 금지합니다.

 

 

Kotlin, Android, Spring 사용자 오픈 카톡

오셔서 궁금한 점을 질문해보세요!
비밀번호 : kotlin22

open.kakao.com