1. TCP

🧱 TCP의 핵심 개념

📌 연결 지향(Connection-Oriented)

  • 통신을 시작하기 전에 3-way handshake로 연결을 먼저 설정
  • 데이터를 보낼 준비가 되었는지를 양측이 확인

📌 신뢰성 보장(Reliable)

  • 패킷의 순서 보장
  • 손실되거나 손상된 데이터는 재전송
  • 중복 데이터는 제거
  • 흐름 제어와 혼잡 제어로 네트워크 과부화 방지

📌 전이중(Full-Duplex)

  • 양방향 동시에 데이터 송수신 가능

🔄 TCP 연결 설정 – 3-Way Handshake

TCP 연결을 설정하기 위해 세 단계가 필요하다:

  1. 클라이언트 -> 서버: SYN 전송
    • 클라이언트가 연결 요청 (SYN 플래그)
    • 시퀀스 번호 포함
  2. 서버 -> 클라이언트: SYN + ACK 응답
    • 서버가 요청 수락
    • 자체 시퀀스 번호 포함 (SYN)
    • 클라이언트의 번호에 대한 응답 (ACK)
  3. 클라이언트 -> 서버: ACK 전송
    • 최종 승인
    • 연결 완료 후 데이터 전송 가능

이 과정을 통해 TCP는 통신 전 서로를 “알고” 시작하게 된다.

📬 데이터 전송 방식

✅ 시퀀스 번호와 ACK

  • 각 바이트는 고유한 시퀀스 번호를 가짐
  • 수신자는 데이터 수신 후 다음에 올 시퀀스 번호를 ACK 번호로 응답
  • 예: 송신자가 1000번부터 1049번까지 보냈다면, 수신자는 ACK = 1050으로 응답

✅ 재전송 (Retransmission)

  • ACK가 일정 시간 내 오지 않으면 재전송
  • 타이머에 기반한 손실 감지

🌊 흐름 제어 (Flow Control) - 슬라이딩 윈도우 (Sliding Window)

  • 수신 측은 한 번에 받을 수 있는 데이터 크기를 윈도우 크기로 알려줌
  • 송신자는 이 범위 내에서만 데이터를 보냄
  • 수신자가 과부하 상태이면 윈도우 크기를 줄여 송신 속도 조절

🌐 혼잡 제어 (Congestion Control)

네트워크 자체가 과부하 상태일 때를 감지하고 조절:

  • Slow Start: 처음엔 천천히 시작하여 점점 전송량 증가
  • Congestion Avoidance: 혼잡을 감지하면 전송 속도 줄임
  • Fast Retransmit: ACK가 연속 중복되면 빠르게 재전송
  • Fast Recovery: 재전송 이후 속도 회복

이 기능들은 전체 네트워크 안정성을 지키는 데 핵심이다.

🔚 연결 종료 - 4-Way Handshake

TCP 연결 해제는 데이터가 양방향 모두 완료된 뒤 다음 4단계로 진행:

  1. FIN (클라이언트 -> 서버): 연결 종료 요청
  2. ACK (서버 -> 클라이언트): 요청 수락
  3. FIN (서버 -> 클라이언트): 서버도 종료 요청
  4. ACK (클라이언트 -> 서버): 종료 승인 -> 연결 완전 종료

종료 후에도 일정 시간 동안 포트를 TIME_WAIT 상태로 유지하여 중복 패킷 처리

⚔️ TCP vs UDP 특징 비교

항목 TCP (Transmission Control Protocol) UDP (User Datagram Protocol)
연결 방식 연결 지향 (3-way handshake) 비연결형 (connectionless)
데이터 전송 보장 보장 (순서, 무결성, 재전송 등) 보장하지 않음
속도 느림 (검증과 제어 때문) 빠름 (제어 없음)
패킷 순서 보장 보장함 보장하지 않음
재전송 메커니즘 있음 (ACK, timeout) 없음
흐름 제어 / 혼잡 제어 있음 (슬라이딩 윈도우, 혼잡 제어 알고리즘 등) 없음
헤더 크기 20 바이트 이상 8 바이트
전송 단위 세그먼트(segment) 데이터그램(datagram)
신뢰성 높음 낮음
용도 예시 웹 브라우징, 파일 전송, 이메일 등 스트리밍, 실시간 게임, VoIP, DNS 요청 등

3. TCP vs UDP 실제 사용 사례 비교

용도 TCP 사용 이유
웹사이트 접속 (HTTP/HTTPS) 정확한 데이터 수신 필요, 페이지가 누락되면 문제 발생
이메일 (SMTP, IMAP) 메일 누락 방지 필요, 순서 중요
파일 다운로드 (FTP) 전체 데이터를 정확히 받아야 함
용도 UDP 사용 이유
실시간 게임 지연보다 실시간 반응 중요, 일부 패킷 손실 감수 가능
영상/음성 스트리밍 연속성 우선, 손실 시 품질 저하 감수
DNS 요청 빠른 질의/응답 필요, 재시도 전략으로 보완 가능
VoIP 끊김 없는 통신 중요, 재전송 시 오히려 지연 유발 가능

3. IP

✅ 핵심 역할

  1. 주소 지정 (Addressing): 각 기기에 고유한 IP 주소를 부여하여 식별 가능하게 함
  2. 패킷 전달 (Routing): 데이터를 목적지까지 전달하도록 네트워크 간 경로를 설정

📦 IP의 기본 단위: 패킷(Packet)

  • IP는 데이터를 작게 나눈 패킷 단위로 전달
  • 패킷은 헤더(Header) + 데이터(Payload)로 구성됨

🧱 IP의 두 가지 주요 버전

🔹 IPv4 (Internet Protocol version 4)

  • 32비트 주소체계, 4개 옥텟: 192.168.0.1
  • 총 약 43억 개의 주소 지원
  • 주소 고갈 문제 존재 → 사설 IP, NAT로 임시 대응

🔹 IPv6 (Internet Protocol version 6)

  • 128비트 주소체계, 16진수 8개 블록: 2001:0db8:85a3::8a2e:0370:7334
  • 사실상 무한대에 가까운 주소 지원
  • 보안, 확장성, 효율성이 개선됨

🚚 라우팅(Routing)과 전달

IP는 최종 목적지까지 데이터를 보내기 위한 경로를 찾는다. 이 역할은 라우터가 수행한다.

  • IP는 베스트 에포트 방식(Best-effort delivery) 사용 -> 전송 성공 여부를 보장하지 않음 (TCP가 이를 보완)
  • TTL(Time to Live)은 패킷이 무한 루프에 빠지지 않도록 일정 홉(hop, 라우터 수)을 초과하면 폐기되도록 설정

🔧 공용 IP vs 사설 IP

항목 공용 IP (Public IP) 사설 IP (Private IP)
정의 인터넷 상에서 고유하게 사용되는 IP 내부 네트워크에서만 사용되는 IP
사용 예 웹 서버, 클라우드 인스턴스, 외부 노출 서버 가정용 라우터, 사무실 내부 PC, 프린터 등
주소 예시 13.124.67.89, 142.250.206.110 192.168.x.x, 10.x.x.x, 172.16.x.x ~ 172.31.x.x
접근성 인터넷과 직접 통신 가능 외부 인터넷과 직접 통신 불가 (NAT 필요)
NAT 필요 여부 필요 없음 필요함 (NAT 통해 공용 IP로 변환)
중복 여부 전 세계에서 고유해야 함 네트워크 내에서 중복 가능
보안 측면 외부에 노출되므로 방화벽 등 보안 강화 필요 기본적으로 외부 접근 불가, 보안성 높음
사용 목적 외부 공개 서비스, 인터넷 자원 연결 내부 통신, 네트워크 자원 공유
주소 할당 ISP나 클라우드 제공자가 할당 공유기나 DHCP 서버가 자동 할당
비용 일반적으로 유료 (특히 클라우드에서 과금 대상) 무료, 무제한 사용 가능

4. TCP와 IP의 관계

구분 TCP (Transmission Control Protocol) IP (Internet Protocol)
역할 데이터를 어떻게 보낼 것인가 (신뢰성 있는 전송) 데이터를 어디로 보낼 것인가 (주소 지정과 전달 경로 설정)
계층 전송 계층 (Transport Layer) 인터넷 계층 (Internet Layer)
주요 기능 - 연결 설정 (3-way handshake)
- 순서 보장
- 재전송
- 흐름/혼잡 제어
- IP 주소 부여
- 라우팅
- 패킷 분할/조립
- TTL 관리
전송 단위 세그먼트 (Segment) 패킷 (Packet)
신뢰성 있음 (데이터 손실/오류 시 재전송) 없음 (최대한 전송만 시도함)
주소 관리 없음 (IP를 기반으로 동작함) 있음 (IPv4, IPv6로 주소 지정)
헤더 포함 정보 포트 번호, 시퀀스 번호, ACK 번호, 제어 플래그 등 출발지/목적지 IP, TTL, 프로토콜 정보 등

태그:

카테고리:

업데이트:

댓글남기기