티스토리 뷰

IT/Network

TCP/IP와 네트워크 패킷 흐름

Stv 2025. 4. 4. 20:24

목차


    1. TCP/IP란 무엇인가?

    : TCP/IP는 인터넷을 포함한 대부분의 네크워크에서 사용되는 표준 통신 프로토콜 집합이다. 여기서 IP는 주소를 담당하고, TCP는 데이터를 안전하게 보내는 역할을 한다.

    OSI 7계층은 이론적 모델이고, TCP/IP 모델은 실제 구현에 사용되는 모델이다.

     

    ✅ TCP/IP 4계층 구조

    계층 설명 관련 프로토콜
    응용 계층 사용자와 가장 가까운 계층(HTTP, FTP, DNS 등) HTTP, SMTP, DNS
    전송 계층 데이터의 정확한 전송 보장 TCP, UDP
    인터넷 계층 목적지까지의 경로 설정 및 주소 설정 IP, ICMP
    네트워크 액세스 계층 물리적인 데이터 전송 이더넷, MAC, ARP

     

    2. TCP vs UDP - 뭐가 다를까?

    항목 TCP UDP
    연결 방식 연결지향(Connection-oriented) 비연결지향(Connectionless)
    신뢰성 높음(전송 보장, 순서 보장) 낮음 (손실가능)
    속도 느림 빠름
    용도 파일 전송, 웹 이메일 실시간 스트리밍, 게임, VoIP
    특징 3-Way Handshake, 흐름 제어, 오류 검출 단순 전송, 헤더 작음, 빠름

     

    💡 언제 뭘 쓸까?

    • TCP : 전송 보장이 중요할 때 -> 웹 브라우징, 파일 다운로드
    • UDP : 속도가 중요하고 약간의 손실은 괜찮을 때 -> 게임, 스트리밍

    3. TCP의 연결 과정 (3-Way Handshake)

    : TCP는 신뢰성 있는 전송을 위해 연결을 맺는 절차가 필요하다. 이것이 3-Way Handshake이다.

     

    💬 시나리오

    클라이언트가 서버에 연결 요청을 보내고, 서버가 수락하고, 클라이언트가 확인한다.

     

    🌀 흐름

    1. SYN (Synchronize)
      • 클라이언트가 서버에 연결 요청
    2. SYN-ACK (Synchronize-Acknowledge)
      • 서버가 요청을 수락 + 자신도 연결 요청(SYN + ACK)
    3. ACK (Acknowledge)
      • 클라이언트가 수락 완료 메시지(ACK) -> 연결 완료
    Client                        Server
       | ------- SYN -------->     |
       | <----- SYN + ACK -----    |
       | ------- ACK -------->     |
       |     [ 연결 성립 ]         |

     

    4. TCP 연결 종료 (4-Way Handshake)

    : 연결을 종료할 때는 4단계의 절차를 따른다.

     

    🌀 흐름

    1. FIN
      • 클라이언트가 연결 종료 요청
    2. ACK
      • 서버가 요청 수락
    3. FIN
      • 서버도 연결 종료 요청
    4. ACK
      • 클라이언트가 최종 수락 -> 연결 종료
    Client                        Server
       | ------- FIN -------->     |
       | <------ ACK ---------     |
       | <------ FIN ---------     |
       | ------- ACK -------->     |
       |     [ 연결 종료 ]         |

     

    5. 데이터가 네트워크에서 어떻게 전송되는가? 

    : 이제 실제 데이터를 보낼 때 어떤 식으로 패킷이 만들어지고 전송되는지를 살펴보자

     

    ✅ 전송 흐름 요약

    1. 데이터 생성 : 브라우저 등에서 전송할 데이터 생성
    2. 세분화 (Segmentation) : TCP가 데이터를 작은 패킷으로 분할
    3. 패킷에 헤더 추가
      • TCP 헤더 : 포트 번호, 순서, 체크섬 등 포함
      • IP 헤더 : 발신지 IP, 수신지 IP 포함
    4. 패킷 전송 : 데이터는 라우터, 스위치 등을 거쳐 목적지로 전달됨
    5. 데이터 수신 및 재조립 : 수신 측에서 순서대로 조립
    6. 응답 처리 : ACK를 통해 수신 확인

    💡 예시 : HTTP 요청 전송 시 흐름

    [HTTP 요청 데이터]
      ↓ 응용 계층
    [TCP로 분할 + TCP 헤더 추가]
      ↓ 전송 계층
    [IP 헤더 추가]
      ↓ 인터넷 계층
    [MAC 주소 추가]
      ↓ 링크 계층
    [전기 신호로 변환]
      ↓ 물리 계층
    → 네트워크 전송

     

    📌 마무리

    1. TCP/IP는 실제 네트워크 통신의 핵심 구조이며, IP는 주소를, TCP는 신뢰성을 담당한다.
    2. TCP는 연결지향, UDP는 비연결지향으로 각각의 특징과 쓰임새가 다르다.
    3. 3-Way / 4-Way Handshake는 TCP의 연결/종료 메커니즘으로서 네트워크 안정성을 보장한다.
    4. 데이터를 보낼 때는 헤더를 단계별로 감싸는 캡슐화(Encapsulation)가 이루어진다.
    5. 이러한 과정 덕분에 우리는 웹사이트에 접속하고, 파일을 주고받고, 게임을 원활하게 즐길 수 있다.

    🔜 다음 포스팅에서는 "DNS가 도대체 뭔데 www.goole.com을 을 입력할 수 있는 걸까?" 라는 궁금증을 해고해줄 예정이다.

    1. 도메인 -> IP 주소로 변환되는 과정
    2. DNS 서버 구조
    3. 로컬 캐시, 루트 네임서버, 재귀적 질의