인터넷 프로토콜 스택의 4계층이란?
스택이란 이름에서 알 수 있듯이 특정한 프로토콜이 아닌 프로토콜의 모임으로 인터넷에서 컴퓨터들이 서로 데이터를 주고 받는데 쓰이는 프로토콜이 모인 것이다.
4계층은 인터넷 기반의 효율적인 데이터 전송이라는 문제를 하나의 덩치 큰 프로토콜 설계로 해결하는 것이 아니고, 그 문제를 작게 나눠서 4개로 계층화한것이다. 계층은 다음과 같이 네트워크 인터페이스 계층, 인터넷 계층, 전송 계층, 애플리케이션 계층으로 나눌 수 있다.
네트워크 인터페이스 계층이란?
네트워크 인터페이스는 이름처럼 인접한 네트워크 기기 간에 데이터를 전송하는 역할을 담당하고 있다. 직접 연결된 네트워크용 하드웨어 기기 간에 데이터 전송을 제어함으로써 상위 계층은 하드웨어의 종류에 상관없이 통신할 수 있게 된다. 다수의 컴퓨터를 연결하여 하나의 네트워크(LAN)를 만드는 스위치가 네트워크 인터페이스 계층의 역할을 수행하는 대표적인 네트워크 장비이다.
그러나 물리적으로 직접 연결되지 않고 다른 네트워크에 속한 컴퓨터간의 데이터 통신은 네트워크 인터페이스 계층만으로는 불가능하고 인터넷 계층의 기능이 필요하다.
인터넷 계층이란?
인터넷(Internet) 이라는 이름처럼 네트워크와 네트워크를 연결하여 직접 연결되지 않은 컴퓨터 간에 데이터 통신을 구현하는 역할을 한다. 인터넷에 연결된 네트워크 기기인 노드 중에서 컴퓨터를 호스트, 호스트 사이에 위치한 노드를 중간 노드라고 한다. 네트워크 인터페이스에서는 인접한 두 개의 노드 간의 데이터 전송을 하는 반면, 인터넷 계층은 데이터를 송신하는 호스트부터 수신하는 호스트까지 데이터가 전송되는 경로를 책임진다.
IP(인터넷 프로토콜)
"목적지로 데이터를 전송하기 위해 어떤 경로를 거쳐가야 할것인가?" => IP(Internet Protocol)이 해결해줄거야!
복잡한 인터넷 망에서 호스트를 식별하기 위해서 유일한 번호로 부여된 IP주소를 부여한다. IP(인터넷 프로토콜)는 지정한 IP주소에 패킷이라는 통신 단위로 전달하게 된다.
그러나 IP는 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송(비연결성)하고, 중간에 패킷이 소실되거나 패킷 전달 순서 문제가 발생(비신뢰성)할 수 있으며 같은 IP 주소를 사용하는 서버에서 통신하는 애플리케이션이 두 개 이상이면 프로그램을 구분할 수 없다는 한계를 갖는다. 이를 해결하기 위해서 전송 계층의 기능이 필요하다.
전송 계층이란?
데이터 전송을 위한 경로의 검색을 인터넷 계층에서 해결해주니, 그 경로를 기준으로 데이터의 실제 송수신을 담당하는 계층이다. 때문에 이 계층을 가리켜 전송 계층이라 한다. 전송 계층에는 데이터 전송의 신뢰성이나 효율성을 중시하는지 여부에 따라 크게 TCP, UDP 프로토콜이 사용된다.
신뢰성 있는 TCP
전송 계층은 TCP(Transmission Control Protocol, 전송 제어 프로토콜)를 사용하여 인터넷 계층의 IP 한계를 극복할 수 있다.
첫번째로 TCP는 3 way handshake를 통해 IP의 비연결성 한계를 극복할 수 있다. 3 way handshake는 1. 클라이언트가 서버에게 접속 요청(SYN) -> 2. 서버가 클라이언트에게 요청 수락 및 접속 요청(ACK+SYN) -> 3. 클라이언트가 서버에게 요청 수락(ACK) 과정을 거치기 때문에 클라이언트와 서버 양쪽에서 신뢰하는 연결지향 특징을 갖고 있다. 이는 물리적으로 연결된 것이 아닌 논리적으로 가상 연결 된것이다.
두번째로 데이터 전송시 데이터를 잘 받았다는 응답을 받아 데이터 전달 보증이 된다.
세번째로 순서 보장이 된다. 예를 들어 패킷1, 패킷2, 패킷3 순서로 전송이 되었는데 패킷1, 패킷3, 패킷2 순서로 도착이 된다면 패킷2부터 다시 보내라는 요청을 보낸다.
이러한 특징을 갖고 있는 TCP는 신뢰할 수 있는 프로토콜로 현재는 대부분 TCP를 사용하고 있지만, 복잡하고 속도가 느리다는 단점이 있다.
효율성 있는 UDP
UDP(User Datagram Protocol, 사용자 데이터그램 프로토콜)는 연결지향, 데이터 전달보증, 순서 보장 세가지 모두 되지 않지만 단순하고 빠르다는 특징을 갖고 있다.
PORT
"같은 IP 주소를 사용하는 컴퓨터에서 두 개 이상의 프로세스를 어떻게 구분하지?" -> "프로세스에 포트 번호를 할당해!"
TCP 세그먼트에는 출발지 PORT와 목적지 PORT, 전송제어, 순서, 검증 정보 등을 담고 IP 패킷 생성 시에 포함시킨다.
애플리케이션 계층이란?
애플리케이션의 기능을 실행하기 위해 애플리케이션이 다루는 데이터 형식과 처리 순서를 결정하여 사용자에게 서비스를 제공하는 역할을 한다. 애플리케이션의 종류마다 다양한 프로토콜이 존재하는데 대표적으로 웹 서비스를 제공하는 HTTP, 파일을 전송할 때는 FTP, 메일을 보낼 때는 SMTP, 메일을 받을 때는 POP3라는 프로토콜을 사용한다.
'Network' 카테고리의 다른 글
JWT와 토큰 기반 인증 방식에 대해 알아보겠습니다. (0) | 2024.09.24 |
---|---|
[Network] 소켓과 소켓 통신 (0) | 2023.07.19 |