네트워크
[네트워크] 계층 정리
recordari
2025. 5. 9. 16:39
1. Network Core (네트워크 코어)
메시지를 전달하는 두 가지 방식
- Circuit Switching (회선 교환)
데이터를 주고받기 전에 송신자와 수신자 간 **고정된 경로(회선)**를 미리 연결하여 사용하는 방식
→ 통신 중에 전체 대역폭을 독점. (전화망 시스템이 대표 예) - Packet Switching (패킷 교환)
데이터를 작은 단위(패킷)로 쪼개어, 각각 최적 경로로 독립적으로 전송하는 방식
→ 패킷은 목적지에 도착한 후 다시 재조합. (인터넷이 사용하는 방식)
2. Application Layer (응용 계층)
사용자가 사용하는 앱과 네트워크 간 연결 담당
주요 프로토콜
- HTTP:
- 웹 브라우저가 사용하는 프로토콜
- 요청(Request)과 응답(Response)이 한 번 발생할 때마다 TCP 연결을 새로 만들거나 재사용
- TCP 소켓/UDP 소켓:
- 어플리케이션이 통신하려면 먼저 소켓(socket)을 만들어야 한다
- 소켓 생성 시 TCP(신뢰성) 또는 UDP(속도 중시)를 선택
- HTTP는 기본적으로 상태를 저장하지 않는다 (Stateless):
- 서버는 이전 요청에 대한 정보를 기억하지 않는다
- 따라서 매번 요청마다 새로 데이터를 보내야 한다
- DNS (Domain Name System)
- 사람이 읽을 수 있는 도메인 이름을 IP 주소로 변환
3. Transport Layer (전송 계층)
애플리케이션 간 데이터 전송의 신뢰성/효율성 확보
프로토콜
- TCP (Transmission Control Protocol)
- 연결 지향형, 신뢰성 높은 데이터 전송 보장
- 세그먼트(Segment): 데이터를 헤더+페이로드 형태로 감싸서 전송
- 3-Way Handshake: 세 단계로 통신 연결 수립.
- Acknowledgment & Retransmission: 오류 발생 시 자동 재전송 (Go-Back-N, Selective Repeat)
- Flow Control: 수신자의 처리 속도에 맞춰 데이터 흐름 제어 (Sliding Window 사용)
- Congestion Control: 네트워크 혼잡을 감지하고 전송 속도 조절 (ex: Slow Start, AIMD)
- UDP (User Datagram Protocol)
- 비연결형, 신뢰성 없는 빠른 전송. (게임, 스트리밍 등에 사용)
- 포트 번호 기반 Multiplexing/Demultiplexing
- 여러 애플리케이션의 데이터 흐름을 포트 번호로 구분하여 전송하거나 수신
- Multiplexing: 여러 앱의 데이터를 포트 번호로 나누어 보내기
- Demultiplexing: 받은 데이터를 포트 번호를 기준으로 다시 해당 앱으로 분배하기
4. Network Layer (네트워크 계층)
데이터를 최적 경로를 통해 목적지까지 전달 ➡️ tcp 세그먼트 + ip 패킷
주요 프로토콜 및 기능
- IP (Internet Protocol)
- IP 패킷: TCP 세그먼트를 IP 헤더로 감싼 형태로 전송
- IPv4/IPv6: 주소 공간 부족 문제 해결을 위해 IPv6 사용
- Routing (라우팅)
- 패킷이 갈 수 있는 최적 경로 결정
- (OSPF, BGP 등 라우팅 프로토콜 사용)
- Forwarding (포워딩)
- 패킷을 다음 라우터나 목적지로 실제 전송하는 작업
- DHCP (Dynamic Host Configuration Protocol)
- 네트워크 접속 시 자동으로 IP 주소 할당받음
- ARP (Address Resolution Protocol)
- IP 주소를 기반으로 실제 통신에 필요한 MAC 주소를 얻는 프로토콜
- (IP는 알지만 MAC 주소를 모를 때 ARP 요청/응답으로 확인 후 통신)
- ICMP (Internet Control Message Protocol)
- 오류 알림 및 상태 진단용. (ex: ping, traceroute)
- IP Fragmentation
- MTU(Maximum Transmission Unit)를 초과하는 큰 패킷은 여러 조각으로 나누어 전송
- NAT (Network Address Translation)
- 사설 IP와 공인 IP를 변환해 외부와 통신 가능하게 함
DHVP로 IP주소 받음 → IP 패킷 만들어서 전송 → 패킷이 크면 fragmentation
5. Ethernet Layer (데이터 링크 계층)
같은 네트워크(LAN) 내 장치 간 데이터 전송
구성 요소
- MAC 주소 기반 통신
- MAC 주소를 사용하여 장치 식별
- Ethernet Frame (이더넷 프레임)
- 데이터를 패킹하여 전송하는 단위 (헤더+데이터)
- 스위칭 (Switch)
- MAC 주소 테이블을 기반으로 목적지 장비로 빠르게 데이터 전송
- CSMA/CD (Carrier Sense Multiple Access/Collision Detection)
- 충돌 발생 시 재전송을 통해 네트워크 혼잡 조절
6. Network Interface Layer (네트워크 인터페이스 계층)
실제 물리적인 전송 계층(실제 전기 신호/무선 신호를 다루는 최하위 계층)
구성 요소
- NIC (Network Interface Card): 장치가 네트워크에 접속할 수 있도록 함
- 전송 매체: 케이블(UTP, 광섬유) 또는 무선(Wi-Fi, Bluetooth)
JNI (Java Native Interface)
- 자바에서 C, C++로 작성된 네이티브 네트워크 드라이버를 호출할 때 사용
- (ex: 고성능 서버에서 TCP/UDP 소켓 커널 호출 최적화 시 사용)
네트워크 흐름 예시
- 앱이 HTTP 요청 생성 → TCP 소켓 오픈
- TCP 3-Way Handshake로 연결 수립
- IP 주소를 모르면 DNS 질의
- 목적지 IP 주소를 얻음
- IP 주소를 MAC으로 변환하려고 ARP 요청
- MAC 주소 얻으면, Ethernet Frame 생성해서 NIC로 전송
- NIC가 프레임을 물리적 신호로 변환해 전송