인터넷 프로토콜은 데이터 통신을 위한 규칙들을 정의하며, 특히 인터넷에서 데이터를 안전하고 효율적으로 전송하기 위해 여러 계층으로 구성되어 있다. 이 중에서도 네트워크 통신의 핵심을 이루는 4계층은 다음과 같다.
- 링크 계층 (Link Layer): 이 계층은 네트워크의 가장 낮은 단계로, 물리적인 매체를 통해 데이터를 전송하는 역할을 한다. 이러한 매체에는 케이블, 광섬유, 무선 연결 등이 포함된다. 링크 계층의 대표적인 예로는 이더넷(Ethernet)과 Wi-Fi가 있다.
- 인터넷 계층 (Internet Layer): 이 계층의 가장 중요한 프로토콜은 인터넷 프로토콜(IP)이며, IP 주소를 사용하여 데이터를 송수신하는 기기 간의 라우팅을 담당한다. 이 계층에서는 패킷이 올바른 목적지로 전송되도록 경로를 설정하고, 필요에 따라 패킷을 분할하거나 재조합하는 역할을 한다.
- 전송 계층 (Transport Layer): 이 계층은 통신을 보다 신뢰성 있게 만들어 주는 역할을 하며, 대표적인 프로토콜로는 TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)가 있다. TCP는 연결 기반의 서비스를 제공하여 데이터가 순서대로, 정확히 전달되도록 보장하며, UDP는 연결을 설정하지 않고 데이터를 보내는 비연결형 서비스를 제공하여 빠른 전송을 가능하게 한다.
- 응용 계층 (Application Layer): 사용자가 직접적으로 인터넷을 통해 서비스를 이용할 때 사용하는 계층으로, HTTP, FTP, SMTP 등 다양한 프로토콜이 포함된다. 이 계층의 프로토콜들은 사용자의 요청에 따라 데이터를 생성하고, 이를 전송 계층으로 보내어 다른 시스템과의 통신을 가능하게 한다.
이렇게 각 계층은 특정 기능과 역할을 수행하며, 서로 다른 계층 간에는 각각의 계층만의 독립적인 프로토콜이 사용되어 인터넷 전체의 원활한 데이터 교환을 지원한다.
TCP/IP 패킷은 인터넷을 통해 데이터를 전송할 때 사용되는 데이터 묶음으로, TCP(Transmission Control Protocol)와 IP(Internet Protocol)를 포함하여 여러 계층의 정보를 담고 있다. 여기서 각 계층의 정보는 다음과 같은 구성 요소를 포함한다:
1. IP 헤더
IP 헤더는 데이터 패킷을 올바른 목적지로 라우팅하는 데 필요한 정보를 포함한다. 주요 구성 요소는 다음과 같다:
- 버전: IP 프로토콜의 버전 (IPv4 또는 IPv6).
- 헤더 길이: 헤더의 길이를 나타내며, 헤더 뒤에 데이터가 어디서 시작하는지 알려준다.
- 서비스 유형: 데이터 패킷의 처리 우선순위를 정의한다.
- 전체 길이: 헤더와 데이터를 포함한 전체 패킷의 길이.
- 식별자, 플래그, 조각 위치: 패킷 분할과 재조합에 사용된다.
- 생존 시간 (TTL): 패킷이 네트워크를 통해 이동할 수 있는 최대 시간 또는 점프 수.
- 프로토콜: 패킷이 전송 계층의 어떤 프로토콜(TCP, UDP 등)을 사용하는지를 나타낸다.
- 헤더 체크섬: 헤더의 오류를 검사하는 데 사용된다.
- 출발지 주소 및 목적지 주소: 패킷을 보내는 소스와 받는 대상의 IP 주소.
2. TCP 헤더
TCP 헤더는 연결 지향적이고 신뢰성 있는 데이터 전송을 보장하는 정보를 담고 있다. 주요 구성 요소는 다음과 같다:
- 출발지 포트와 목적지 포트: 통신을 시작하고 받는 양쪽의 애플리케이션을 식별한다.
- 시퀀스 번호: 데이터의 순서를 보장하고, 데이터가 올바르게 조립되었는지 확인하는 데 사용된다.
- 확인 응답 번호: 수신된 데이터의 시퀀스를 확인하고, 다음에 기대하는 데이터를 알린다.
- 데이터 오프셋: 헤더의 길이를 나타내며, 데이터 시작 위치를 알려준다.
- 플래그: SYN, ACK, FIN 등의 다양한 제어 플래그를 포함하며, 연결 설정, 유지 및 종료 등을 관리한다.
- 윈도우 크기: 데이터의 흐름 제어를 위해 사용되며, 한 번에 얼마만큼의 데이터를 보낼 수 있는지를 정의한다.
- 체크섬: 전송 중 오류 검사를 위해 사용된다.
- 긴급 포인터: 긴급 데이터의 처리를 나타낸다.
이러한 헤더 정보는 네트워크를 통한 데이터의 안전하고 효율적인 전송을 보장하는데 필수적인 역할을 한다.
TCP(Transmission Control Protocol)
TCP(Transmission Control Protocol)는 인터넷 프로토콜 스위트의 핵심 프로토콜 중 하나로, 데이터를 신뢰성 있고 순서대로 전달하기 위해 설계된 연결 지향적 프로토콜이다. TCP의 주요 특징은 다음과 같다:
TCP의 특징
- 연결 지향적: TCP는 데이터 전송 전에 통신할 장치들 간의 연결을 설정한다. 이 과정에서 양쪽 장치는 서로 통신할 준비가 되었는지 확인한다.
- 신뢰성 있는 데이터 전송: TCP는 데이터가 손실, 중복, 오류 없이 정확히 도착했는지 확인한다. 데이터의 순서가 바뀌었거나 손실된 경우 재전송을 요청한다.
- 흐름 제어: TCP는 수신자의 버퍼 크기를 고려하여 데이터의 흐름을 조절한다. 이는 네트워크 혼잡을 방지하고 데이터 처리 속도를 최적화한다.
- 혼잡 제어: TCP는 네트워크의 혼잡 상태를 감지하고 데이터 전송 속도를 조절하여 혼잡을 관리한다.
- 순서 보장: TCP는 각 데이터 조각에 순서 번호를 부여하고, 목적지에서 이를 기반으로 데이터를 재조립한다.
TCP의 3-Way Handshake
TCP의 연결 설정 과정인 3-way handshake는 신뢰성 있는 세션을 시작하기 위해 사용된다. 이 과정은 다음 세 단계로 이루어진다:
- SYN: 클라이언트는 서버에 연결을 요청하며 SYN(Synchronize Sequence Numbers) 패킷을 보낸다. 이 패킷에는 클라이언트가 데이터를 시작할 시퀀스 번호가 포함된다.
- SYN-ACK: 서버는 클라이언트의 SYN 요청을 받고, 연결을 수락하는 의미로 SYN-ACK 패킷을 클라이언트에게 보낸다. 이 패킷에는 서버의 시퀀스 번호와 클라이언트의 시퀀스 번호에 대한 확인 응답 번호가 포함된다.
- ACK: 클라이언트는 서버의 SYN-ACK를 받고, 이를 확인하는 ACK(Acknowledge) 패킷을 서버에게 보낸다. 이 패킷을 통해 클라이언트와 서버 사이의 연결이 성공적으로 설정된다.
UDP(User Datagram Protocol)
UDP(User Datagram Protocol)는 TCP와 함께 사용되는 주요 인터넷 프로토콜 중 하나이며, 특히 실시간 응용 프로그램에서 널리 사용된다. UDP는 간단하고 효율적인 전송 방식을 제공하지만, TCP와 달리 연결 지향적이지 않으며, 데이터의 신뢰성과 순서를 보장하지 않는다. 이러한 특징들로 인해 특정 상황에서 TCP보다 선호되기도 한다.
UDP의 주요 특징
- 비연결형: UDP는 연결 설정 없이 데이터를 전송한다. 이는 데이터를 송수신하기 전에 상대방과 연결을 설정하는 과정이 없다는 것을 의미하며, 따라서 연결 설정에 소요되는 시간과 자원을 절약할 수 있다.
- 간단한 헤더 구조: UDP 헤더는 포트 번호, 길이, 체크섬만을 포함하며, 이는 헤더의 크기가 작다는 것을 의미한다. 이로 인해 네트워크 오버헤드가 적고, 처리 속도가 빠르다.
- 신뢰성 없는 서비스: UDP는 패킷의 도착을 보장하지 않으며, 도착한 패킷의 순서를 조정하거나 재조정하지 않는다. 데이터의 일부가 손실되거나 순서가 뒤바뀌어도 자동으로 복구하지 않는다.
- 흐름 제어 및 혼잡 제어 없음: UDP는 흐름 제어나 혼잡 제어 기능이 없어, 네트워크 상황에 관계없이 일정한 속도로 데이터를 전송한다.
UDP의 응용 분야
UDP의 이러한 특징들은 특정 응용 프로그램에 적합하다. 예를 들어:
- 실시간 응용 프로그램: VoIP(음성 통화), 온라인 게임, 실시간 비디오나 오디오 스트리밍과 같은 서비스는 지연 시간을 최소화하는 것이 중요하며, 간혹 패킷 손실이 발생해도 전체 서비스 품질에 치명적인 영향을 미치지 않는 경우가 많다.
- 간단한 요청/응답 프로토콜: DNS(도메인 이름 시스템) 조회나 SNMP(Simple Network Management Protocol)와 같은 프로토콜은 간단한 정보를 빠르게 교환해야 할 때 UDP를 사용한다.
UDP는 네트워크 통신에서 다양한 역할을 하며, 각각의 응용 프로그램 요구 사항에 따라 TCP와 UDP 중 적합한 프로토콜을 선택하는 것이 중요하다.
'CS' 카테고리의 다른 글
[HTTP | HTTP 웹 기본지식 | HTTP 메서드 활용] HTTP API 설계 예시 (0) | 2024.05.22 |
---|---|
[HTTP | HTTP 웹 기본지식 | HTTP 메서드] HTTP 메서드 (0) | 2024.05.21 |
[HTTP | HTTP 웹 기본지식 | HTTP 기본] HTTP 구조 (0) | 2024.05.21 |
[HTTP | HTTP 웹 기본지식 | URI와 웹 브라우저 요청 흐름]URI (0) | 2024.05.21 |
[HTTP | HTTP 웹 기본지식 | 인터넷 네트워크] IP, PORT, DNS (0) | 2024.05.09 |