네트워크 기초: 데이터 전송 과정과 프로토콜

一、IP 데이터 캡슐화 및 디캡슐화 과정

1.계층 모델

애플리케이션 계층:사용자와 네트워크의 인터페이스로, 사용자의 애플리케이션에 직접 서비스를 제공하며, 애플리케이션이 네트워크 서비스를 사용하는 방법 및 데이터 형식, 인코딩 등을 규정합니다. 일반적인 애플리케이션 계층 프로토콜로는 HTTP(하이퍼텍스트 전송 프로토콜, 웹 브라우징용), FTP(파일 전송 프로토콜, 파일 업로드 및 다운로드용), SMTP(단순 메일 전송 프로토콜, 메일 발송용), POP3(메일함 프로토콜 버전 3, 메일 수신용), DNS(도메인 네임 시스템, 도메인을 IP 주소로 변환용) 등이 있습니다.

전송 계층:소스 포트에서 목적지 포트로 연결을 설정하고, 데이터 전송 프로세스와 데이터 수신 프로세스 간의 데이터 통신을 구현합니다. 이는 상위 애플리케이션에 네트워크 계층의 세부 정보를 숨기고 데이터가 올바르고 순서대로 전송되도록 보장합니다. 주요 프로토콜로는 TCP(전송 제어 프로토콜)와 UDP(사용자 데이터그램 프로토콜)가 있습니다. TCP는 연결 지향적이고 신뢰성 있는 바이트 스트림 서비스를 제공하며, 3-way 핸드셰이크를 통해 연결을 설정하고, 확인 응답, 재전송, 슬라이딩 윈도우 메커니즘을 통해 데이터의 신뢰성 있는 전송을 보장합니다; UDP는 비연결형이고 신뢰성 없는 데이터그램 서비스를 제공하며, 전송 효율이 높아 실시간성 요구가 높지만 데이터 정확성 요구가 상대적으로 낮은 시나리오에 자주 사용됩니다.

네트워크 계층:서로 다른 네트워크 간의 통신을 위한 논리 주소(예: IP 주소)를 제공하고, 라우팅 선택 및 패킷 전달을 수행하여 데이터 패킷이 소스에서 목적지까지의 경로를 선택합니다. 이는 여러 데이터 링크를 넘어 다른 네트워크로 데이터를 전송할 수 있습니다. 일반적인 프로토콜로는 IP(인터넷 프로토콜), ICMP(인터넷 제어 메시지 프로토콜), IGP(내부 게이트웨이 프로토콜, 예: RIP, OSPF), BGP(경계 게이트웨이 프로토콜) 등이 있습니다.

데이터 링크 계층:물리 계층에서 전달된 원시 비트 스트림을 데이터 프레임으로 구성하고, 오류 제어, 흐름 제어 및 링크 관리를 수행합니다. 프레임 헤더와 프레임 트레일러를 추가하여 소스 MAC 주소, 목적지 MAC 주소 등의 정보를 포함함으로써 동일 링크 내 인접 노드 간의 데이터 전송을 구현합니다. 일반적인 프로토콜로는 이더넷 프로토콜, PPP(포인트 투 포인트 프로토콜) 등이 있습니다.

물리 계층:물리 매체(예: 트위스티드 페어, 광섬유, 라디오 파 등)에서 원시 비트 스트림을 전송하며, 물리 장비의 인터페이스 표준, 전송 매체의 특성, 신호 인코딩 방식, 데이터 전송 속도, 전송 거리 등을 정의합니다.

2.피어 투 피어 통신

생각해볼 점:피어 투 피어 통신, 어떻게 보장할 것인가? (수신 측이 송신 측의 캡슐화 형식을 올바르게 식별하도록 만드는 방법은?)

상위 프로토콜 식별자를 통해 피어 투 피어 통신을 구현합니다.

(1) 정의:

데이터가 네트워크를 통해 전송될 때, 각 계층은 데이터를 수신한 후 식별자를 통해 "해당 데이터가 상위의 어떤 프로토콜에 의해 처리되어야 하는지"를 결정하여 파싱 오류를 방지합니다.

(2) 예시:

1. 데이터 링크 계층:이더넷 프레임 헤더의 "유형 필드"
  • 위치:이더넷 프레임 헤더의 3-4바이트(16비트)。
  • 역할:프레임이 전송하는 상위 프로토콜(예: IP, ARP 등)을 식별하며, 일반적인 값은 다음과 같습니다:
  • 0x0800:IPv4 프로토콜(상위가 IP 데이터 패킷);
  • 0x0806:ARP 프로토콜(주소 확인 프로토콜);
  • 0x86DD:IPv6 프로토콜。
  • 예시:이더넷 스위치가 프레임을 수신한 후, 유형 필드를 통해 IP 데이터 프레임인지 판단하고, 그렇다면 네트워크 계층으로 전달합니다.

유형 (2바이트):상위 프로토콜을 나타냅니다

유형, 예를 들어: 0x0800:IPv4 프로토콜 0x0806:ARP 프로토콜 0x86DD:IPv6 프로토콜

2. 네트워크 계층:IP 프로토콜 헤더의 "프로토콜 필드"
  • 위치:IP 데이터 패킷 헤더의 9번째 바이트(8비트)。
  • 역할:IP 패킷의 상위 프로토콜 유형을 식별하며, 일반적인 값은 다음과 같습니다:| 프로토콜 값 | 해당 상위 프로토콜 | 예시 시나리오 | |---|---|---| | 6 | TCP | 웹 브라우징(HTTP는 TCP 기반) | | 17 | UDP | 비디오 라이브 스트리밍(RTMP는 UDP 기반) | | 1 | ICMP | 네트워크 진단(ping 명령) |
  • 예시:IP 패킷의 프로토콜 필드가 6일 경우, 수신 측 네트워크 계층은 데이터를 전송 계층의 TCP 모듈에 전달합니다.
3.전송 계층:TCP/UDP 헤더의 "포트 번호"
  • 포트 번호는 주로 애플리케이션 프로세스를 식별하는 데 사용되지만, 상위 애플리케이션 프로토콜도 간접적으로 식별합니다
  • 역할:전송 계층은 소스 포트와 목적지 포트 번호를 통해 데이터를 애플리케이션 계층의 해당 프로세스(예: 80 포트는 HTTP 서비스, 25 포트는 SMTP 메일 서비스에 해당)에 전달합니다。
  • 예시:TCP 헤더의 목적지 포트가 80일 경우, 전송 계층은 데이터를 애플리케이션 계층의 HTTP 서버 프로세스에 전달합니다.

3.ARP 프로토콜:IP 주소를 해당 MAC 주소로 변환

4.다른 네트워크 세그먼트 간 라우팅 전달

(1) 데이터 전송 초기 단계(PC31 측)

  1. 애플리케이션 계층에서 전송 계층, 네트워크 계층으로 캡슐화 PC31이 PC13으로 데이터를 전송할 필요가 있을 때, 먼저 애플리케이션 계층에서 해당 프로토콜에 따라 데이터를 캡슐화한 후, 전송 계층에서 포트 번호 등 정보를 추가하고, 네트워크 계층에서는 소스 IP(192.168.3.31)와 목적지 IP(192.168.1.13)를 캡슐화하여 IP 데이터 패킷을 생성합니다。
  2. 데이터 링크 계층 캡슐화 네트워크 계층의 IP 데이터 패킷이 데이터 링크 계층으로 전달되면, PC31은 게이트웨이의 MAC 주소를 얻어야 합니다. PC31의 ARP 테이블에 해당 레코드가 없으면, ARP 요청(브로드캐스트 프레임, 192.168.3.1의 MAC 주소를 질의)을 보내고 라우터의 응답을 받은 후, PC31의 ARP 테이블에 라우터의 MAC 주소가 기록됩니다; 레코드가 이미 있으면 해당 MAC을 목적지 MAC으로 사용하고, 자체 MAC을 소스 MAC으로 사용하여 FCS(프레임 검사 시퀀스)와 함께 이더넷 프레임으로 캡슐화하고, 물리 계층을 통해 라우터 R1의 Fa0/3 인터페이스로 전송합니다。

(2) 라우터 R1 전달 처리 단계

  1. 수신 및 디캡슐화 R1의 Fa0/3 인터페이스가 이더넷 프레임을 수신하면, 먼저 목적지 MAC이 자체 Fa0/3의 MAC인지 확인하고 수신을 확인합니다. 그런 다음 데이터 링크 계층은 MAC 헤더와 FCS를 제거하고 IP 데이터 패킷을 네트워크 계층에 전달합니다。
  2. 라우팅 테이블 조회 네트워크 계층은 IP 데이터 패킷의 목적지 IP(192.168.1.13)를 확인하고 R1 라우팅 테이블에서 일치시킵니다. 목적지 네트워크 세그먼트 192.168.1.0/24가 직접 연결된 라우팅이므로, 해당 출력 인터페이스가 Fa0/1이며, Fa0/1 인터페이스에서 전달할 것을 결정합니다。
  3. 재캡슐화(데이터 링크 계층) IP 데이터 패킷이 Fa0/1 인터페이스의 데이터 링크 계층으로 전달되면, PC13의 MAC 주소를 얻어야 합니다. R1은 Fa0/1 인터페이스의 ARP 테이블을 확인하고, PC13에 해당하는 MAC 레코드가 있으면 해당 MAC을 새로운 목적지 MAC으로 사용하고, Fa0/1 인터페이스의 MAC을 새로운 소스 MAC으로 사용하여 이더넷 프레임을 재캡슐화합니다(MAC 헤더, FCS 추가); 레코드가 없으면 R1은 ARP 요청(192.168.1.0/24 네트워크 세그먼트에서 브로드캐스트하여 192.168.1.13의 MAC 주소를 질의)을 보내고, 얻은 후에 캡슐화합니다。
  4. 데이터 전달 캡슐화된 새로운 이더넷 프레임이 R1의 Fa0/1 인터페이스에서 전송되어 PC13이 위치한 네트워크 세그먼트로 들어갑니다.

(3) 데이터 수신 단계(PC13 측)

  1. 수신 및 디캡슐화 PC13이 이더넷 프레임을 수신하면, 목적지 MAC이 자체 MAC인지 확인하고, 데이터 링크 계층은 MAC 헤더와 FCS를 제거하여 IP 데이터 패킷을 네트워크 계층에 전달합니다. 네트워크 계층은 목적지 IP가 자체(192.168.1.13)인지 확인하고, IP 헤더를 제거하여 데이터를 전송 계층에 전달하고, 전송 계층은 포트 번호에 따라 해당 애플리케이션 계층 프로그램에 전달하여, 최종적으로 PC31에서 PC13으로의 데이터 액세스를 완료합니다.

전체 과정의 핵심은 라우터가 라우팅 테이블을 기반으로 네트워크 세그먼트 간 전달을 수행하고, 라우터를 거칠 때마다 데이터 링크 계층의 MAC 헤더가 재캡슐화(소스, 목적지 MAC 교체)되지만, 네트워크 계층의 IP 헤더(소스, 목적지 IP)는 변경되지 않음으로써 서로 다른 네트워크 세그먼트의 호스트 간 데이터가 정확하게, 네트워크 세그먼트 간 전송될 수 있도록 보장합니다.

5.일반적인 프로토콜

주의!!

ARP(주소 확인 프로토콜):IP 주소를 해당 MAC 주소로 변환하는 데 사용되는 네트워크 프로토콜입니다. 네트워크 계층 프로토콜이지만, 데이터 링크 계층에서 작동합니다!!

애플리케이션 계층 프로토콜

HTTP(하이퍼텍스트 전송 프로토콜)

  • 역할:웹 페이지 데이터 전송에 사용되며, 브라우저와 서버 간 웹 페이지 콘텐츠 요청/응답의 기본 프로토콜, 포트 80.

HTTPS(하이퍼텍스트 전송 보안 프로토콜)

  • 역할:HTTP에 SSL/TLS 암호화를 추가하여 웹 페이지 전송 보안을 보장하고, 데이터 유출 또는 변조를 방지하며, 포트 443.

FTP(파일 전송 프로토콜)

  • 역할:파일이 네트워크에서의 업로드 및 다운로드를 구현하고, 제어 연결(포트 21)과 데이터 연결(포트 20)을 통해 신뢰성 있는 파일 전송을 완료합니다.

DNS(도메인 네임 시스템)

  • 역할:도메인을 IP 주소로 변환하여 사용자가 도메인을 통해 네트워크 서비스에 액세스할 수 있도록 지원하며, UDP(일반 쿼리)와 TCP(복잡한 데이터 전송)를 지원합니다.

SMTP(단순 메일 전송 프로토콜)

  • 역할:메일이 클라이언트에서 메일 서버로 전송되거나 서버 간 메일을 전달하는 것을 담당하며, 포트 25.

POP3(메일함 프로토콜 제3 버전)

  • 역할:메일 클라이언트가 메일 서버에서 메일을 수신하는 데 사용되며, 포트 110.

Telnet

  • 역할:원격 로그인 서비스를 제공하여 사용자가 네트워크를 통해 원격 호스트를 제어할 수 있지만, 데이터가 암호화되지 않아 보안성이 낮으며, 포트 23.

SSH(보안 셸 프로토콜)

  • 역할:Telnet을 대체하여 암호화를 통해 안전한 원격 로그인 및 명령 실행을 구현하며, 포트 22.

TFTP(단순 파일 전송 프로토콜)

  • 역할:간단하고 가벼운 파일 전송을 구현하며, 소규모 파일 시나리오에 적합하며, UDP 기반 전송(포트 69)을 사용하여 신뢰성을 희생하고 효율성을 높입니다.

Server(445 포트)

  • 일반적인 프로토콜:예를 들어 SMB(서버 메시지 블록 프로토콜)는 로컬 네트워크 내 파일 공유, 프린터 공유 등 서비스에 사용되며, TCP 포트 445를 기반으로 합니다.

전송 계층 프로토콜

TCP(전송 제어 프로토콜)

  • 역할:신뢰성 있고 연결 지향적인 전송 서비스를 제공하며, 3-way 핸드셰이크를 통해 연결을 설정하고 데이터가 순서대로, 오류 없이 전송되도록 보장하며, 프로토콜 번호 6.

UDP(사용자 데이터그램 프로토콜)

  • 역할:비연결형, 신뢰성 없는 전송 서비스를 제공하며, 전송 효율이 높아 실시간성 요구가 높은 시나리오(예: 비디오, 오디오)에 적합하며, 프로토콜 번호 17.

네트워크 계층 프로토콜

IP(인터넷 프로토콜)

  • 역할:네트워크에서 데이터 패킷의 주소 지정 및 전달을 담당하고, 장치에 IP 주소를 할당하여 서로 다른 네트워크 간의 통신을 구현합니다.

ICMP(인터넷 제어 메시지 프로토콜)

  • 역할:네트워크 장애 진단 및 제어에 사용되며, "ping" 요청을 보내 네트워크 연결성을 테스트하고 네트워크 오류 정보를 전달합니다.

ARP(주소 확인 프로토콜)

  • 역할:기존 IP 주소를 통해 대상 장치의 MAC 주소를 얻고, IP 주소와 물리 주소 간의 매핑을 구현합니다.

데이터 링크 계층

로컬 네트워크
광역 네트워크:
  • HDLC(고급 데이터 링크 제어):비트 지향형 동기 링크 프로토콜로, 간단하고 효율적이며, 통신사 백본 네트워크, 장비 간 직렬 포트 연결에 자주 사용되어 광역 네트워크 데이터의 신뢰성 있는 전송을 보장합니다.
  • PPP(포인트 투 포인트 프로토콜):다이얼 업, 전용선 등 포인트 투 포인트 링크에서 널리 사용되며, 인증(PAP, CHAP 등)을 지원하고 다양한 네트워크 계층 프로토콜(IP, IPX 등)에 적응하여 가정용 브로드밴드 다이얼 업, 기업 전용선 상호 연결을 더 표준화합니다.
  • Frame Relay(프레임 릴레이):패킷 교환 기반의 광역 네트워크 기술로, "프레임" 단위로 데이터를 전송하며, 오류 제어를 단순화하여 실시간성 요구가 낮고 데이터량이 큰 시나리오(예: 초기 기업 지사 상호 연결)에 적합하며, 통계적 다중화를 통해 네트워크 대역폭 이용률을 향상시킵니다.

프레임 형식별 분류(핵심 표준)

1. Ethernet II 프레임(DIX 2.0)
  • 가장 일반적인 유형:현대 인터넷의 기본 표준(트래픽의 90% 이상을 차지)
  • 프레임 구조

plaintext

| 목적지MAC (6B) | 소스MAC (6B) | 유형 필드 (2B) | 데이터 (46-1500B) | FCS (4B) |
  • 핵심 필드

  • 유형 필드(Type):상위 프로토콜을 식별합니다(예: 0x0800=IPv4, 0x0806=ARP, 0x86DD=IPv6)

  • 길이 필드 없음:IEEE 802.3과의 핵심 차이점

2. IEEE 802.3 프레임(원본 표준)
  • 산업 제어 시나리오 잔존:기본적으로 Ethernet II에 의해 대체됨
  • 프레임 구조

plaintext

| 목적지MAC (6B) | 소스MAC (6B) | 길이 필드 (2B) | LLC 헤더 (3-4B) | 데이터 | FCS (4B) |
  • 핵심 필드

  • 길이 필드(Length):데이터 부분의 길이를 나타냅니다(≤1500)

  • LLC 헤더:논리 링크 제어 하위 계층 헤더(DSAP+SSAP+Control)

3. IEEE 802.3 SNAP 프레임
  • IEEE 802.3의 확장:원본 표준이 상위 프로토콜을 식별할 수 없는 문제를 해결
  • 프레임 구조

plaintext

| 목적지MAC | 소스MAC | 길이 필드 | LLC 헤더 | SNAP 헤더 (5B) | 데이터 | FCS |
  • SNAP 헤더 구성

  • OUI(3B):조직 고유 식별자(예: 0x000000=이더넷)

  • 유형 필드(2B):Ethernet II의 Type 필드와 동일(예: 0x0800=IPv4)

4. IEEE 802.1Q 프레임(VLAN 태그 포함)
  • 가상 로컬 네트워크 지원:소스MAC 뒤에 4바이트 VLAN 태그를 삽입
  • 프레임 구조

plaintext

| 목적지MAC | 소스MAC | 0x8100 (태그 프로토콜 식별자) | 우선순위/CFI/VID (2B) | 유형 필드 | 데이터 | FCS |
  • VLAN 태그 상세 정보

  • TPID(2B):고정 0x8100,802.1Q 프레임을 식별

  • TCI(2B)

  • 우선순위(3비트, 0-7)

  • CFI(1비트, 표준 형식 표시)

  • VID(12비트, VLAN ID, 1-4094)

물리 계층

네트워크 연결성 테스트 도구

Ping 도구

  • 기본 기능:Ping은 주로 네트워크의 연결성 및 통신 품질을 테스트하는 데 사용되며, 대상 호스트에 ICMP(Internet Control Message Protocol, 인터넷 제어 메시지 프로토콜) echo request(에코 요청) 데이터 패킷을 보내고 대상 호스트가 ICMP echo reply(에코 응답) 데이터 패킷을 반환할 때까지 기다려, 소스 호스트와 대상 호스트 간의 통신이 정상적으로 가능한지 판단합니다.
  • 작동 원리:명령줄에서 ping 명령을 실행할 때, 소스 호스트는 특정 형식의 ICMP echo request 메시지를 구성하여 대상 호스트의 IP 주소로 전송합니다. 대상 호스트가 ICMP echo request 메시지를 수신하면, 수신된 메시지 정보에 따라 ICMP echo reply 메시지를 구성하여 소스 호스트로 다시 전송합니다. 소스 호스트는 전송 및 수신된 데이터 패킷 수를 통계하여 패킷 손실률, 왕복 시간(RTT) 등 지표를 계산하여 네트워크 연결성 및 품질을 평가합니다.
  • 일반적인 사용 시나리오
  • 네트워크 연결이 정상인지 확인:예를 들어 로컬 컴퓨터와 게이트웨이, 서버 등 장치 간의 네트워크 링크가 원활한지 판단합니다.
  • 네트워크 지연 테스트:표시된 왕복 시간을 통해 네트워크 지연 상황을 직관적으로 이해하고, 네트워크가 끊김 없는지 판단합니다.
  • 네트워크 장애 진단:네트워크 문제가 발생할 때, 다른 노드를 Ping하여 장애 발생 위치를 초기에 판단할 수 있습니다. 예를 들어 내부 네트워크 장애인지 외부 네트워크 장애인지 등입니다.

Tracert 도구

  • 기본 기능:Tracert(리눅스 및 macOS 시스템에서는 traceroute)는 주로 대상 호스트에 도달하는 데 사용되는 3계층 장치(예: 라우터)의 인터페이스 IP를 탐지하여 데이터 패킷이 네트워크에서의 전송 경로를 이해하는 데 사용됩니다.
  • 작동 원리:소스 호스트는 일련의 IP 탐지 패킷을 전송하며, 이러한 탐지 패킷의 TTL(Time To Live, 생존 시간) 값은 초기에 1로 설정됩니다. 중간 장치(라우터 등)가 탐지 패킷을 수신하면 TTL 값을 1씩 감소시키고, TTL 값이 0이 되면 장치는 해당 탐지 패킷을 삭제하고 소스 호스트에 ICMP 시간 초과 오류 메시지로 응답합니다. 소스 호스트가 ICMP 시간 초과 오류 메시지를 수신하면, 한 개의 중간 장치를 거쳤음을 알게 되고, 다음 탐지 패킷의 TTL 값을 1씩 증가시켜 계속 전송합니다. 이 과정은 대상 호스트가 탐지 패킷을 수신하고 ICMP echo reply 메시지로 응답할 때까지 계속되며, 이때 소스 호스트는 자체에서 대상 호스트까지의 전체 경로 정보를 얻을 수 있습니다.
  • 일반적인 사용 시나리오
  • 네트워크 장애 위치 식별:네트워크 지연이 너무 높거나 패킷 손실이 발생할 때, Tracert를 사용하여 어느 노드에서 문제가 발생했는지 찾을 수 있습니다. 로컬 네트워크의 라우터인지, 통신사 네트워크의 특정 장치인지 등입니다.
  • 네트워크 경로 확인:네트워크 아키텍처 조정이나 새로운 네트워크 연결을 구성한 후, Tracert를 통해 데이터 패킷이 예상 경로에 따라 전송되는지 확인할 수 있습니다.
  • 네트워크 라우팅 최적화:데이터 패킷의 실제 전송 경로를 이해하면 네트워크에 불합리한 우회 경로가 있는지 분석하여 네트워크 라우팅 구성을 최적화할 수 있습니다.
  • 예시 명령:Windows 시스템 명령 프롬프트에서 tracert www.baidu.com을 실행하면, 로컬 호스트에서 바이두 웹사이트 서버까지 거치는 각 라우터의 IP 주소를 볼 수 있습니다.

태그: 네트워크 IP TCP/IP 프로토콜 라우팅

6월 18일 20:45에 게시됨