TCP/IP 4계층 구조에 대해 알아보자 !

2025. 10. 13. 00:56·CS/면접을 위한 CS전공지식

이번 글은 면접을 준비하며 읽은 ' 면접을 위한 CS 전공지식 노트 ' 를 정리했습니다.

https://product.kyobobook.co.kr/detail/S000001834833

 

면접을 위한 CS 전공지식 노트 | 주홍철 - 교보문고

면접을 위한 CS 전공지식 노트 | 디자인 패턴, 네트워크, 운영체제, 데이터베이스, 자료 구조, 개발자 면접과 포트폴리오까지! CS 전공지식 습득과 면접 대비, 이 책 한 권이면 충분하다! 개발자 면

product.kyobobook.co.kr

 

 

안녕하세요.

오늘은 TCP/IP 4계층에 대해 알아보겠습니다.

 

TCP/IP 4계층 모델이란? (Transmission Control Protocol/Internet Protocol)

TCP/IP 4계층 모델은 인터넷에서 컴퓨터들이 서로 통신하는 방식을 설명하는 네트워크 모델입니다.

OSI 7계층 모델과 함께 Internet Protocol Suite를 설명하는 대표적인 모델로, 프로토콜의 네트워킹 범위에 따라 4개의 추상화 계층으로 구성됩니다.
(애플리케이션/전송/인터넷/링크)

Internet Protocol Suite
인터넷에서 컴퓨터들이 서로 정보를 주고받는데 사용되는 프로토콜의 집합입니다. (= 통신 규약 모음)

 

TCP/IP와 OSI 7계층 비교

  • TCP/IP 계층은 애플리케이션/전송/인터넷/링크 4개의 계층으로 나뉩니다.
  • OSI 7계층은 애플리케이션 계층을 3개로 나눕니다. (애플리케이션/프레젠테이션/세션)
  • OSI 7계층은 인터넷 계층을 네트워크 계층이라고 부릅니다. (TCP/IP 4계층에서는 인터넷 계층)
  • OSI 7계층은 링크 계층을 2개로 나눕니다. (데이터 링크/물리)
  • OSI 7계층은 특정 계층이 변경되었을 때, 다른 계층이 영향받지 않도록 설계되었습니다.

 

 

 

 

애플리케이션 계층

응용 프로그램( FTP, HTTP, SSH, SMTP, DNS 등 )이 사용되는 포로토콜 계층입니다.

서비스를( 웹 서비스, 이메일 등 ) 실질적으로 사람들에게 제공하는 층입니다.

FTP (File Transfer Protocol)

장치와 장치 간 파일을 전송하는 데 사용되는 표준 통신 프로토콜

SSH (Secure SHell)

보안되지 않은 네트워크에서 네트워크 서비스를 안전하게 운영하기 위한 암호화 네트워크 프로토콜

HTTP (HyperText Transfer Protocol)

World Wide Web을 위한 데이터 통신의 기초, 웹 사이트를 이용하는 데 쓰는 포로토콜

SMTP (Simple Mail Transfer Protocol)

전자 메일 전송을 위한 인터넷 표준 통신 포로토콜

DNS (Domain Name System)

도메인 이름과 IP 주소를 매핑해주는 서버

www.naver.com ->  [Root DNS] -> [.com DNS] -> [.naver DNS] -> [.www DNS] 를 거쳐 IP 주소 매핑

IP 주소가 바뀌어도 사용자에게 똑같은 도메인 주소로 서비스할 수 있다.

 

 

 

 

 

전송 계층

송신자와 수신자를 연결하는 통신 서비스를 제공합니다.

연결 지향 데이터 스트림, 신뢰성, 흐름 제어를 제공합니다.

대표적으로 TCP와 UDP가 있습니다.

 

TCP (Transmission Control Protocol)

연결지향적 프로토콜로, 데이터를 안전하게 전달하는 데 초점을 맞춥니다.

  • 연결 지향: 송신자와 수신자가 먼저 연결을 맺음 (=가상회선)
  • 순서 보장: 전송한 패킷이 항상 순서대로 도착
  • 신뢰성: 패킷이 도착하지 않으면 재전송
  • 흐름 제어: 너무 빨리 보내서 수신 측이 못받는 것을 방지
  • 가상 회선 패킷 교환 
가상회선 패킷 교환 방식
각 패킷에는 가상회선 식별자가 포함되며, 모든 패킷을 전송하면 가상회선이 해제되고 패킷들은 전송된 순서대로 도착합니다.
( 💡비유: TCP는 택배와 같아요. 송장 번호가 붙어서 순서대로 도착하고, 분실되면 재배송까지 해줍니다. )

 

UDP (User Datagram Protocol)

비연결 포로토콜로, 속도를 중시하고 신뢰성이 낮습니다.

  • 비연결: 송신자와 수신자가 연결을 맺지 않습니다.
  • 순서 미보장
  • 신뢰성 없음: 패킷이 도착했는지 확인하지 않음
  • 데이터그램 패킷 교환
데이터그램 패킷 교환
패킷이 독립적으로 이동하며 최적의 경로를 선택하여 전송됩니다.
하나의 메시지에서 전송된 여러 패킷은 서로 다른 경로로 전송될 수 있으며, 도착한 순서가 다
( 💡비유: UDP는 우편 엽서와 같아요. 그냥 보내고 끝. 도착 여부도 확인하지 않고, 순서도 맞지 않을 수 있습니다.)

 

 

 

 

TCP 3-way handshake (연결 과정)

TCP는 신뢰성을 확보하기 위해 3-way hanshake라는 작업을 진행합니다.

1. SYN 단계

   클라이언트는 서버에 클라이언트의 ISN을 담아 SYN을 보냅니다.
   (ISN은 새로운 TCP 연결의 첫 번째 패킷에 할당된 임의의 시퀀스 번호로 장치마다 다릅니다. 예: 12010)

2. SYN + ACK 단계

    서버는 클라이언트의 SYN을 수신하고, 서버의 ISN과 승인번호(클라이언트의 ISN + 1)를 보냅니다.

3. ACK 단계

    클라이언트는 승인번호(서버의 ISN + 1)를 담아 ACK를 서버에 보냅니다.

SYN (SYNchronization)
연결 요청 플래그
ACK (ACKnowledgement)
응답 플래그
ISN (Initial Sequence Numbers)
초기 네트워크 연결할 때 할당된 32비트 고유 시퀀스 번호

 

 

 

 

 

세그먼트

TCP에서 데이터를 전송할 때 사용하는 데이터의 단위입니다.

// 세그먼트 생성 과정

애플리케이션 계층 데이터
    ↓
일정 크기로 분할
    ↓
TCP 헤더 추가 → 세그먼트 완성
    ↓
IP 패킷에 캡슐화되어 전송

 

세그먼트는 헤더와 데이터로 나뉩니다.

┌─────────────────┬──────────────┐
│   TCP 헤더      │    데이터     │
│ (20~60 bytes)   │  (가변 크기)  │
└─────────────────┴──────────────┘


주요 헤더 필드

1. Source Port / Destination Port

  • 출발지 / 목적지 포트 번호
  • 어떤 애플리케이션과 통신할지 식별

2. Sequence Number (순서 번호)

  • 전송하는 데이터의 순서 번호
  • 받는 쪽에서 데이터를 올바른 순서로 재조립하기 위해 사용
  • 예: 1000, 1500, 2000... (바이트 단위)

3. Acknowledgment Number (확인 응답 번호)

  • 다음에 받고 싶은 데이터의 순서 번호
  • "여기까지 잘 받았어, 다음 거 보내줘" 의미
  • 신뢰성 보장의 핵심

4. Flags (플래그)

연결 상태와 제어를 위한 비트들

  • SYN: 연결 시작 요청
  • ACK: 확인 응답
  • FIN: 연결 종료 요청
  • RST: 연결 강제 종료
  • PSH: 데이터를 즉시 애플리케이션에 전달
  • URG: 긴급 데이터 표시

5. Window Size (윈도우 크기)

  • 수신자가 받을 수 있는 버퍼 크기
  • 흐름 제어에 사용
  • "나 이만큼까지 받을 수 있어!" 알림

6. Checksum (체크섬)

  • 데이터 무결성 검증
  • 전송 중 데이터가 손상되었는지 확인

7. Data Offset (데이터 오프셋)

  • TCP 헤더의 길이 정보
  • 실제 데이터가 어디서부터 시작하는지 표시

8. Urgent Pointer (긴급 포인터)

  • URG 플래그가 설정되었을 때 사용
  • 긴급 데이터의 위치 표시

9. Options/Padding (옵션/패딩)

  • 추가 기능을 위한 선택적 필드
  • 예: MSS(Maximum Segment Size), Window Scaling

 

세그먼트 vs 패킷

  • 세그먼트: TCP 계층의 데이터 단위
  • 패킷: IP 계층의 데이터 단위 (세그먼트를 포함)
 
TCP 세그먼트 → IP 패킷에 캡슐화 → 네트워크 전송

 

 

 

4-way handshake (연결 해제 과정)

TCP가 연결을 해제할 때는 4-way handshake를 통해 연결을 해제합니다.

1. FIN (Client -> Server)

  • 클라이언트가 연결 종료 요청
  • 상태: Client FIN_WAIT_1

 

2. ACK (Server -> Client)

  • 서버가 종료 요청 확인
  • 상태: Server CLOSE_WAIT, Client FIN_WAIT_2

 

3. FIN (Server -> Client)

  • 서버도 연결 종료 준비 완료
  • 상태: Client TIME_WAIT

4. ACK (Client -> Server)

  • 클라이언트가 최종 확인
  • 상태: Server CLOSED
  • 이후 클라이언트는 일정 시간 대기 후 CLOSED

 

 

왜 TIME_WAIT 단계에서, 클라이언트는 일정 시간 대기 후 연결을 닫을까?

TIME_WAIT
소켓이 바로 소멸되지 않고 일정 시간 유지되는 상태입니다.
연결이 깔끔하게 종료되도록 보장하는 안전장치입니다.
os 마다 시간은 다릅니다. (CentOS6,Ubuntu - 60s, Window - 4m)

 

1. 안전한 연결 종료 보장

    서버가 마지막 ACK를 받지 못하면 'LAST_ACK' 상태에서 FIN 재전송

    클라이언트가 TIME_WAIT 상태로 대기하며 재전송된 FIN에 ACK 응답 가능

    서버의 정상적인 종료 보장

2. 지연 패킷 처리

    같은 포트로 새 연결 시, 이전 연결의 지연된 패킷이 새 연결에 전달되는(패킷 혼선) 것을 방지
    

 

 

 

 

 

인터넷 계층

IP 주소 기반으로 패킷을 목적지까지 전달하는 계층입니다.

패킷을 전달하기 위해 프로토콜로 IP, ARP, ICMP를 사용합니다.

비연결형이고, 전달을 보장하지 않고(신뢰성 X), IP 주소로 목적지를 지정하는 특징이 있습니다.

IP (Internet Protocol)

데이터를 패킷 단위로 분할하여 목적지까지 전송합니다.

IP 주소로 송신자/수신자를 식별합니다.

최적 경로를 찾아 패킷을 전달합니다.

 

ARP (Address Resolution Protocol)

같은 네트워크 내에서 실제 하드웨어와 통신하기 위해 IP주소를 MAC 주소로 변환합니다.

예) "이 IP 주소 가진 사람, MAC 주소 알려줘." 네트워크의 모든 장치에게 broadcast -> 해당 IP를 가진 장치가 MAC 주소 응답

MAC 주소
LAN 카드(컴퓨터나 노트북 같은 장치에 네트워크를 연결하기 위한 장치)를 구별하는 식별번호이다.
6바이트(48비트)로 구성된다.

ICMP (Internet Control Message Protocol)

패킷 전달 실패, 목적지 도달 불가 등의 패킷 전달 오류를 보고합니다.

ping, traceroute 등 네트워크 진단 명령어에 사용됩니다.

예) "Host Unrecheable", "Time Exceeded"

 

종합 요약
IP: "192.168.0.10으로 보내자!"
ARP: "192.168.0.10의 실제 하드웨어 주소(MAC)가 뭐지?"  boradcast로 물어봄 -> 해당 IP를 가진 하드웨어가 응답
데이터 전송: MAC 주소로 실제 전송
ICMP: 문제 생기면 "전달 실패!" 알림

 

 

 

 

 

링크 계층 ( = 네트워크 접근 계층)

전선, 광섬유, 무선 등으로 실질적으로 데이터를 전달하며 장치 간 신호를 주고받는 '규칙'을 정합니다.

물리 계층과 데이터 링크 계층으로 나누기도 합니다.

물리 계층
무선 LAN과 유선 LAN을 통해 0과 1로 이루어진 데이터를 보냅니다.
데이터 링크 계층
이더넷 프레임(데이터 송수신 단위, = 컨테이너)을 통해 에러 확인, 흐름 제어, 접근 제어를 담당합니다.

 

유선 LAN의 Full Duplex (전이중화 통신)

양쪽 장치가 동시에 송수신할 수 있는 방식입니다.
송신로와 수신로로 나눠서 데이터를 주고받고, 현대의 고속 이더넷의 통신 기반입니다.

이전에는 CSMA/CD 방식을 사용했습니다. (송신/수신로 한 경로로)

유선 LAN을 이루는 케이블

TP 케이블(Twist Pair Cable)과 광섬유 케이블이 대표적입니다.

Twist Pair Cable
하나의 케이블처럼 보이지만 실제로는 8개의 구리선을 2개씩 꼬아 묶은 케이블입니다.
예) LAN 케이블 (= UDP 케이블)
광섬유 케이블
레이저를 이용해 통신하여 장거리 및 고속 통신이 가능한 케이블입니다.
보통 100Gbps데이터를 전송합니다.
광섬유 내부와 외부는 다른 밀도를 가지도록 제작하여 빛이 내부에서 계속적으로 반사하며 전진하는 원리를 이용합니다.
빛의 굴절률이 높은 부분을 코어, 낮은 부분을 클래딩이라고 합니다.

 

 

 

 

무선 LAN의 Half Duplex

양 방향 모두 송수신이 가능하지만, 동시에는 통신할 수 없습니다.
한 번에 한 방향만 통신할 수 있습니다. (한쪽이 보내면 다른쪽은 보낼 수 없음. 받기만 가능)

Half Duplex인 CSMA/CD (Carrier Sense Multiple Access with Collision Detection)

데이터를 보내고, 충돌이 발생하면 일정시간 이후 재전송하는 방식입니다.
수신로와 송신로가 분리되어 있는 것이 아니라, 한 경로를 기반으로 데이터를 보내기 때문에 충돌을 대비하기 위한 방법입니다.

  1. Carrier Sense(캐리어 감지)
    • 장치가 데이터를 보내기 전, 해당 채널이 사용 중인지 감지한다.
    • 채널이 사용 중이면 기다렸다가, 유휴 상태(Idle)가 되면 다음 단계로 이동한다.
  2. IFS(InterFrame Space)
    • 여러 장치가 동시에 감지하더라도, 프레임 우선순위에 따라 각자 정해진 시간(IFS)만큼 대기한다.
    • IFS가 짧은 프레임일수록 우선순위가 높다.
  3. 랜덤 백오프 시간 대기 후 전송
    • 각 장치는 랜덤한 백오프(backoff) 시간(0~2^k-1)만큼 기다린 뒤 데이터를 보낸다.
    • 데이터 전송 중에는 충돌이 일어나는지 계속 감지한다(충돌 감지, CD).
  4. 충돌 발생 시
    • 충돌이 발생하면 프레임 전송을 중단하고 Jamming 신호를 보낸 뒤,
    • 재전송 횟수(k)를 증가(k = k + 1)시키며, 백오프 알고리즘(예: Binary Exponential Backoff)에 따라 다시 대기한 후 재시도한다.
    • 전송 성공 시 ACK를 받고 종료.
    • 만약 재전송 횟수(k)가 Kmax(통상 15회)를 넘으면 해당 프레임 전송은 포기한다.

 

 

무선 LAN을 이루는 주파수

WLAN (Wireless Local Area Network)은 무선 신호 전달 방식을 이용하여 2대 이상의 장치를 연결하는 기술입니다.

비유도 매체인 공기에 주파수를 쏘아 무선 통신망을 구축합니다. (2.4GHz 또는 5GHz)

 

wifi

전자기기들이 무선 LAN 신호에 연결할 수 있게 하는 기술입니다.

AP(Access Point, 무선 접속 장치)가 유선 LAN 신호를 무선 LAN으로 바꿔주기 때문에 AP가 있어야 합니다. (공유기)

BSS (Basic Service Set)

기본 서비스 집합입니다.
동일 BSS 내에 있는 AP들과 장치들이 서로 통신 가능한 구조입니다.
하나의 AP만을 기반으로 구축되어, 사용자가 자유롭게 이동하며 네트워크에 접속하는 것은 불가능합니다.

ESS (Extended Service Set)

하나 이상 연결된 BSS 그룹입니다.

장거리 무선 통신을 제공하며 BSS보다 더 많은 가용성과 이동성을 지원합니다.
한 장소에서 다른 장소로 이동하며 중단 없이 네트워크에 계속 연결할 수 있습니다.

 

 

 

이더넷 프레임

데이터 링크 계층은 이더넷 프레임을 통해 전달받은 데이터의 에러를 검출하고 캡슐화합니다.

 

  • Preamble: 이더넷 프레임이 시작임을 알립니다.
  • SFD(Start Frame Delimiter): 다음 바이트부터 MAC 주소 필드가 시작됨을 알립니다.
  • DMAC, SMAC: 수신, 송신 MAC 주소입니다. (Destination MAC Address/Source MAC Address)
  • EtherType: 데이터 계층 위의 계층인 IP 프로토콜을 정의합니다. (예: IPv4, IPv6)
  • Payload: 전달받은 데이터
  • CRC: 에러 확인 비트

 

캡슐화와 비캡슐화

데이터가 네트워크를 통해 전송될 때 각 계층을 거치며 헤더를 추가/제거하는 과정입니다.

 

캡슐화

상위 계층의 헤더와 데이터를 하위 계층의 데이터 부분에 포함시키고 해당 계층의 헤더를 삽입하는 과정입니다.

데이터 전송 시: 상위 계층 → 하위 계층으로 내려가며 헤더 추가

애플리케이션 계층: 메시지 (Message)
           ↓ HTTP 헤더 추가
전송 계층: 세그먼트 (Segment) - TCP 헤더 추가
           ↓ TCP 헤더 추가
인터넷 계층: 패킷 (Packet) - IP 헤더 추가
           ↓ IP 헤더 추가
링크 계층: 프레임 (Frame) - Ethernet 헤더 추가
           ↓
물리적 전송

 

과정

  1. 애플리케이션에서 메시지 생성
  2. 전송 계층에서 TCP 헤더 추가 → 세그먼트
  3. 인터넷 계층에서 IP 헤더 추가 → 패킷
  4. 링크 계층에서 Ethernet 헤더 추가 → 프레임

각 계층의 헤더 = 해당 계층의 제어 정보

 

 

비캡슐화

데이터 수신 시: 하위 계층 → 상위 계층으로 올라가며 헤더 제거

물리적 수신
           ↓
링크 계층: 프레임 → Ethernet 헤더 제거
           ↓
인터넷 계층: 패킷 → IP 헤더 제거
           ↓
전송 계층: 세그먼트 → TCP 헤더 제거
           ↓
애플리케이션 계층: 메시지 → 사용자에게 전달

 

과정

  1. 프레임 수신 → Ethernet 헤더 제거
  2. 패킷 추출 → IP 헤더 확인 및 제거
  3. 세그먼트 추출 → TCP 헤더 확인 및 제거
  4. 메시지 추출 → 애플리케이션에 전달

각 계층에서 자신의 헤더를 확인하고 제거

 

 

PDU (Protocol Data Unit)

각 계층에서 사용하는 데이터 단위입니다.

헤더(제어 관련 정보)와 페이로드(데이터)로 구성되어 있으며, 계층마다 부르는 명칭이 다릅니다.

계층 PDU 이름 추가되는 정보
애플리케이션 메시지 (Message) -
전송 세그먼트 (Segment) TCP/UDP 헤더
인터넷 패킷 (Packet) IP 헤더
링크 프레임 (Frame) Ethernet 헤더

 

 

 

 

정리 후기

친절하셨던 컴네 교수님의 목소리가 어디서 자꾸만 들리는 것 같으내요...🫠🫠🫠

수업 때 졸아서 그런지 기억이 뜨문 뜨문 나서 아쉽네요,,,^^

그래도 이렇게 정리하니까 머릿속에 떠다니는 개념들이 확실해져서 조은 것 같습미다... ✨📚

'CS > 면접을 위한 CS전공지식' 카테고리의 다른 글

네트워크에 대해 알아보자! (개념/분류/명령어)  (0) 2025.10.09
디자인 패턴과 프로그래밍 패러다임에 대해 알아보자!  (0) 2025.10.08
'CS/면접을 위한 CS전공지식' 카테고리의 다른 글
  • 네트워크에 대해 알아보자! (개념/분류/명령어)
  • 디자인 패턴과 프로그래밍 패러다임에 대해 알아보자!
hyeblee
hyeblee
감자감자
  • hyeblee
    hyeblee
    hyeblee
  • 전체
    오늘
    어제
    • 분류 전체보기
      • PS
        • Programmers
        • BAEKJOON
        • CODETREE
      • ALGORITHM
      • JAVA
      • CS
        • 면접을 위한 CS전공지식
      • SPRING
      • 회고
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    backjoon
    구간 칠하기
    BOJ
    반닫힌 구간
    java #deque #자바 #덱
    플레이데이터 백엔드 부트캠프 후기
    알고리즘
    하한값
    플레이데이터 백엔드 후기
    플레이데이터 백엔드 부트캠프
    상한값
    dfs
    spring #springboot #스프링 #스프링부트
    arrays.sort #collections.sort #list.sort #객체정렬 #배열정렬 #timsort #dual pivot quicksort #정렬 #자바
    흐른 일수 계산
    java
    BFS
    탐색
    15652
    왔다 갔던 구역2
    자바
    날짜와 시간 계산
    숨바꼭질3
    흐른 시간 계산
    백트래킹
    java #스프링부트 #자바버전 #자바 버전 충돌 #jvm
    백준
    16954
    플레이데이터 백엔드
    spring #스프링 #스프링부트 #springboot #please sign in
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
hyeblee
TCP/IP 4계층 구조에 대해 알아보자 !
상단으로

티스토리툴바