[Network] TCP/IP 4계층 모델
TCP/IP 계층 구조
TCP/IP는 컴퓨터 네트워크 통신을 위한 표준 프로토콜 집합으로, 데이터를 주고받을 때 사용하는 규칙과 절차를 정의합니다. 이 구조는 총 4계층으로 구성되어 있으며, 각 계층은 서로 협력하여 안정적이고 효율적인 통신을 가능하게 합니다.
1. 애플리케이션 계층(Application Layer) : 사용자에게 직접적인 서비스를 제공하는 계층입니다. 웹, 이메일, 파일 전송 등 다양한 응용 프로그램에서 사용되는 프로토콜이 존재합니다.
주요 프로토콜
- FTP: 장치 간 파일 전송을 위한 프로토콜
- HTTP: 웹 사이트 접속을 위한 웹 통신 프로토콜
- SSH: 보안이 적용된 원격 접속을 위한 암호화 통신 프로토콜
- SMTP: 이메일 전송을 위한 표준 프로토콜
- DNS: 도메인 이름을 IP 주소로 변환하는 시스템
예시: www.naver.com에 접속
[Root DNS] → [.com DNS] → [.naver DNS] → [.www DNS] → IP 주소 반환
2. 전송 계층(Transport Layer) : 신뢰성 있는 통신을 보장하거나, 빠른 속도 위주의 비신뢰성 전송을 수행하는 계층입니다. 애플리케이션 계층과 인터넷 계층 사이의 데이터 전달을 책임집니다.
주요 프로토콜
- TCP(Transmission Control Protocol)
- 연결 지향, 신뢰성 보장
- 데이터의 순서 보장 및 재전송 기능 제공
- 가상회선 패킷 교환 방식 사용
- UDP(User Datagram Protocol)
- 비연결형, 순서 미보장
- 빠른 속도, 단순한 구조
- 데이터그램 패킷 교환 방식 사용
TCP 연결 성립 과정 : TCP는 신뢰성을 확보할 때 '3-way handshake' 진행
1) SYN : 클라이언트 → 서버 (ISN 포함)
2) SYN+ACK : 서버 → 클라이언트 (서버 ISN + 승인번호)
3) ACK : 클라이언트 → 서버 (서버 ISN + 1)
- UDP는 이 과정이 없기 때문에 신뢰성이 없는 계층이라고 함
TCP 연결 해체 과정 : TCP가 연결을 해제할 때 '4-Way handshake' 진행
1) 클라이언트 → 서버 (FIN)
2) 서버 → 클라이언트 (ACK)
3) 서버 → 클라이언트 (FIN)
4) 클라이언트 → 서버 (ACK) → TIME_WAIT
TIME_WAIT? 지연된 패킷 문제를 방지하기 위해 일정 시간 소켓을 유지하는 상태
데이터 무결성? 데이터의 정확성과 일관성을 유지하려는 보증
TCP 가상회선 패킷 교환 방식
- 각 패킷에는 가상 회선 식별자가 포함되며 모든 패킷을 전송하면 가상 회선이 해제되고 패킷들은 전송된 '순서대로' 도착하는 방식
UDP 데이터그램 패킷 교환 방식
- 패킷이 독립적으로 이동하며 최적의 경로를 선택하여 가는데, 하나의 메시지에서 분할된 여러 패킷은 서로 다른 경로로 전송될 수 있으며 도착한 '순서가 다를 수' 있는 방식을 뜻함
3. 인터넷 계층(Internet Layer) : 데이터를 목적지 IP 주소로 전달하는 역할을 수행합니다. 패킷 라우팅 및 주소 지정이 주요 기능입니다.
주요 프로토콜
- IP: 패킷 주소 지정 및 전송
- ARP: IP → MAC 주소 변환
- ICMP: 오류 및 제어 메시지 처리
❗ 이 계층은 비신뢰성 전송이 기본입니다 (받았는지 여부 확인 X)
4. 링크 계층(Link Layer) : 실제 데이터 전송을 담당하는 가장 하위 계층입니다. 유선, 무선, 광섬유 등 물리적인 네트워크 매체를 통해 데이터를 전송합니다. 두 개의 서브 계층으로 나뉩니다.
물리 계층(Physical Layer) : 0과 1의 비트를 전기적 신호 또는 빛의 신호로 변환하여 실제로 데이터를 전송하는 계층입니다. 유선 LAN, 무선 LAN 모두 물리 계층의 하위에서 동작합니다.
유선 LAN 통신
1. 전이중화 통신(Full Duplex)
- 양쪽 장치가 동시에 송신과 수신 가능
- 송신로와 수신로가 분리
- 현대 고속 이더넷은 대부분 이 방식 사용
2. CSMA/CD(Carrier Sense Multiple Access with Collision Detection)
- 반이중화 통신 기반
- 데이터를 보내고 나서 충돌이 감지되면 일정 시간 후 재전송
- 하나의 경로를 공유하기 때문에 충돌을 감지하고 대응해야 함
유선 LAN 케이블
1. 트위스트 페어 케이블
- 실제로는 8개의 구리선을 2개씩 꼬아서 묶은 케이블
- UTP (Unshielded Twisted Pair): 실드 처리 X
- STP (Shielded Twisted Pair): 실드 처리 O
2. 광섬유 케이블
- 레이저 빛을 이용한 고속·장거리 통신
- 최대 100Gbps의 전송 속도
- 밀도가 다른 섬유 재질로 구성되어 내부에서 계속 반사하며 신호 전달
무선 LAN 통신
1. 반이중화 통신(Half Duplex)
- 양방향 통신 가능하지만, 동시 송수신은 불가능
- 응답 전에 전송이 끝날 때까지 기다려야 함
- 동시에 전송 시 충돌 발생 위험 존재
2. CSMA/CA(Collision Avoidance)
- 충돌 발생 전 방지
- 데이터 전송 전 프레임 전송 절차 수행
프레임 전송 절차?
1) 사용 중인 채널 감지 → 유휴 채널 발견 시 진행
2) IFS (InterFrame Space) 시간 대기 => IFS가 짧을수록 우선순위 높음
3) 0 ~ 2ⁿ - 1 사이에서 랜덤 시간 선택 후 대기
4) 프레임 전송 => ACK 수신 시 성공, 실패 시 k+1, 재시도 (K > Kmax → 전송 중단)
무선 LAN 주파수 및 구조
1. 와이파이(Wi-Fi)
- 유선 LAN 신호를 무선 신호로 변환
- 공유기(AP)를 통해 신호가 닿는 범위 내에서 무선 인터넷 사용 가능
2. BSS(Basic Service Set)
- 하나의 AP로 구성된 단일 무선 네트워크
- 같은 BSS 내에서는 통신 가능하지만, 이동 시 끊김 발생
3. ESS(Extended Service Set)
- 여러 BSS를 연결한 장거리 무선 네트워크
- 장소를 이동해도 연결 유지 가능 → 로밍 지원
데이터 링크 계층(Data Link Layer) : 데이터 전송 시 프레임 단위로 에러 검출, MAC 주소 기반 통신, 링크 제어 등의 기능을 수행합니다.
이더넷 프레임
- Preamble : 프레임의 시작을 알림
- SFD(Start Frame Delimiter) : MAC 주소 필드 시작 위치 지정
- DMAC, SMAC : 목적지 / 출발지 MAC 주소
- EtherType : 상위 계층 프로토콜 지정(예 : IPv4, IPv6)
- Payload : 실제 전달할 데이터
- CRC : 에러 확인을 위한 코드(순수 비트 오류 감지)
💡 MAC 주소란?
- 각 장치의 고유 식별자로, LAN 카드에 부여됨
- 총 6바이트(48비트)로 구성
- 네트워크 상에서 장치 간 통신 식별에 사용
계층 간 데이터 송수신 과정
1) 애플리케이션 계층에서 전송 계층으로 보내는 요청(request)값들이 캡슐화 과정을거쳐 전달
2) 다시 링크 계층을 통해 해당 서버와 통신을 하고
3) 해당 서버의 링크 계층으로부터 애플리케이션까지 비캡슐화 과정을 거쳐 데이터가 전송
캡슐화(Encapsulation) 과정? 데이터가 상위 계층 → 하위 계층으로 전송될 때, 각 계층의 헤더 정보를 삽입하는 과정
1) 애플리케이션 계층에서 사용자의 요청(Request)이 발생합니다.
2) 이 데이터는 전송 계층으로 내려가면서 TCP 또는 UDP 헤더가 붙고, 세그먼트 또는 데이터그램이 됩니다.
3) 인터넷 계층에서는 IP 헤더가 붙으면서 패킷이 됩니다.
4) 마지막으로 링크 계층에서는 MAC 주소 등의 정보가 담긴 프레임 헤더와 트레일러가 붙어 최종 프레임이 됩니다.
5) 이 프레임은 물리 계층을 통해 전기적 또는 무선 신호로 전송됩니다.
비캡슐화(Decapsulation) 과정? 데이터가 수신 측에서 하위 → 상위 계층으로 올라가며 헤더를 하나씩 제거하는 과정
1) 수신 측 물리 계층에서 신호를 받아 프레임을 복원합니다.
2) 링크 계층은 프레임의 헤더/트레일러를 제거하고 패킷을 상위 계층으로 전달합니다.
3) 인터넷 계층에서는 IP 헤더를 제거하고 세그먼트/데이터그램을 전송 계층으로 넘깁니다.
4) 전송 계층은 TCP 또는 UDP 헤더를 제거하고, **순수 데이터(메시지)**를 애플리케이션 계층에 전달합니다.
5) 애플리케이션 계층에서는 사용자가 요청한 응답(Response)을 최종적으로 확인할 수 있습니다.