백엔드 개발자
TCP/IP 본문
TCP/IP란 무엇인가?
TCP/IP는 인터넷과 네트워크의 기본이 되는 통신 규약(Protocol)의 모음이다.
네트워크에서 애플리케이션 간의 데이터 전송, IP 주소간의 통신 등 다양한 규칙이 필요한데 이런 규칙들을 모아놓은 것이다.
TCP/IP는 서로 다른 기기 간에 신뢰성 있고 효율적으로 전송될 수 있도록 설계된 구조로, 계층적 설계(layered architecture)를 기반으로 동작한다. 이를 통해 TCP/IP는 다양한 하드웨어와 소프트웨어 환경에서도 통합적으로 작동할 수 있다.
Layered 계층 구조란?
Layered 계층 구조는 네트워크를 여러 독립적인 계층으로 나누어 각각의 계층이 특정 기능을 담당하도록 설계된 모델이다. 각 계층은 상위 계층이나 하위 계층과 상호작용하지만, 자신의 역할에만 집중해 데이터를 처리한다.
Layered 계층 구조의 설계 이유와 장점
- 모듈화된 설계
- 각 계층이 독립적으로 설계되므로, 한 계층의 변경이 다른 계층에 영향을 주지 않는다.
- 예: 새로운 전송 프로토콜 추가 시, 네트워크 계층이나 응용 계층을 수정할 필요가 없음.
- 문제 해결 용이
- 계층별로 명확히 정의된 역할 덕분에 문제 발생 시 어느 계층에서 오류가 생겼는지 쉽게 진단할 수 있다.
- 확장성
- 새로운 프로토콜이나 기술을 추가할 때 전체 시스템을 다시 설계할 필요 없이, 해당 계층에만 변경 사항을 적용하면 된다.
- 재사용성
- 한 계층에서 설계된 기능을 다양한 상위 계층이 공통적으로 사용할 수 있다.
- 표준화
- 계층 구조를 기반으로 글로벌 표준이 만들어져, 다양한 하드웨어와 소프트웨어 간 상호운용성이 보장된다.
OSI 7계층과의 관계
OSI는 국제표준화기구(ISO)에서 개발한 모델이다.
TCP/IP는 OSI 7계층 모델에 기반을 두고 있고, 인터넷 통신은 이러한 TCP/IP 기반으로 동작한다.
- OSI 모델은 7계층(물리, 데이터 링크, 네트워크, 전송, 세션, 표현, 응용 계층)으로 이루어져 있으며, 이론적으로 세부적이고 정교한 설계를 목표로 한다.
- TCP/IP는 4계층(응용, 전송, 인터넷, 네트워크 인터페이스)으로 단순화된 구조를 가지며, 실용적인 구현에 중점을 둔다.
TCP/IP 모델에서는 세션 계층과 표현 계층이 응용 계층에 통합되었고, 물리, 데이터 링크도 통합되었다.
그런데 이 TCP/IP 모델도 업데이트되어 물리, 데이터 링크 계층이 나눠져 동작하므로, 업데이트된 버전으로 설명할 것이다.
TCP/IP 각 계층의 상세 설명
1. 5계층 응용 계층 (Application Layer)
역할
- 사용자에게 제공되는 서비스로, 사용자와 네트워크 간 인터페이스를 제공한다.
- 데이터의 형식과 처리 방식을 애플리케이션 요구에 맞게 정의한다.
주요 프로토콜
- HTTP/HTTPS: 웹 브라우징.
- SMTP: 이메일 전송.
- DNS: 도메인 이름을 IP 주소로 변환.
- FTP: 파일 전송.
데이터 흐름
- 사용자가 애플리케이션에서 요청을 생성.
- 데이터를 적절한 형식(예: HTTP 요청)으로 변환 후 전송 계층으로 전달.
ex ) 헤더 + 바디 구조의 http 패킷이 생성됨.
2. 전송 계층 (Transport Layer)
역할
- 데이터를 세그먼트(Segment)로 분할하여 전송하며, 애플리케이션 간 신뢰성과 효율성을 보장.
- 송신자와 수신자 간 논리적 연결을 설정하고 관리한다.
주요 프로토콜
- TCP: 연결 지향적, 신뢰성 보장, 데이터 흐름 제어.
- UDP: 비연결형, 빠른 전송, 낮은 신뢰성.
참고: TCP/IP는 전송 계층에서 반드시 TCP만을 사용하는 것이 아니라, UDP도 사용된다. 사용 목적에 따라 선택되는데 예를 들어, HTTP는 TCP를, DNS는 UDP를 사용한다.
세부 동작
- TCP의 3-Way Handshake: 연결 설정.
- 클라이언트가 서버에 SYN 패킷 전송 → 서버가 SYN+ACK 응답 → 클라이언트가 ACK로 확인.
- 데이터 재조립: 수신자는 순서가 뒤바뀐 세그먼트를 올바르게 정렬.
- 오류 제어: 손실된 패킷은 재전송 요청.
=> 애플리케이션 간 통신을 위해 port번호를 추가.
3. 인터넷 계층 (Internet Layer)
역할
- 데이터를 패킷(Packet) 단위로 분할하고, 전 세계 네트워크를 통해 목적지로 전달.
- 데이터 전송 경로를 선택하고 최적의 경로를 계산.
주요 프로토콜
- IP (Internet Protocol):
- 목적지 주소로 데이터 전달.
- IPv4(32비트), IPv6(128비트) 지원.
- ICMP (Internet Control Message Protocol):
- 네트워크 문제 진단 및 오류 메시지 전송.
- 예: "목적지 도달 불가" 메시지.
- ARP (Address Resolution Protocol):
- IP 주소를 MAC 주소로 변환하여 데이터 링크 계층에서 사용할 수 있도록 함.
데이터 흐름
- 전송 계층에서 받은 세그먼트에 IP 헤더를 추가하여 패킷 생성.
- 최적의 경로를 선택하여 데이터 전송.
4. 데이터 링크 계층 (Data Link Layer)
역할
- 로컬 네트워크(LAN)에서 송신 노드와 수신 노드 간 데이터 전송을 담당.
- 데이터를 프레임(Frame) 단위로 처리.
주요 프로토콜
- ARP (Address Resolution Protocol):
- IP 주소 → MAC 주소 변환.
- 송신자는 수신자의 MAC 주소를 알아야 데이터 전송 가능.
- RARP (Reverse ARP):
- MAC 주소 → IP 주소 변환.
데이터 흐름
- 프레임 생성:
- 인터넷 계층에서 받은 패킷에 이더넷 헤더와 트레일러를 추가.
- 헤더: 송신 MAC 주소, 수신 MAC 주소 포함.
- 트레일러: 오류 검출용 CRC(Cyclic Redundancy Check) 포함.
- CRC: 데이터의 무결성을 확인하기 위해 프레임 끝에 추가된 검증 값.
- 인터넷 계층에서 받은 패킷에 이더넷 헤더와 트레일러를 추가.
- 노드 간 통신:
- 스위치나 브리지 같은 네트워크 장비를 통해 송신자와 수신자 간 프레임 전달.
- 오류 검출:
- 프레임이 손상되었는지 확인(CRC 검사). 오류가 감지되면 해당 프레임은 버려지고, 상위 계층(TCP 등)이 필요에 따라 재전송 요청을 처리.
5. 물리 계층 (Physical Layer)
역할
- 데이터를 전기 신호, 광 신호, 또는 무선 신호로 변환하여 물리적인 매체를 통해 전송.
주요 동작
- 비트 스트림 변환:
- 데이터 링크 계층에서 받은 프레임을 0과 1의 비트로 변환.
- 신호 전달:
- 전기적 펄스(유선), 광 신호(광섬유), 무선 주파수(Wi-Fi)를 통해 데이터를 전달.
- 매체 동기화:
- 송신자와 수신자가 동일한 타이밍으로 데이터를 주고받을 수 있도록 조정.
'CS > 네트워크' 카테고리의 다른 글
HTTP & HTTPS (3) | 2024.10.31 |
---|---|
IP 인터넷 프로토콜 (0) | 2024.10.24 |
UDP (2) | 2024.10.17 |
TCP (0) | 2024.10.17 |