[CS] TCP/IP 개념 잡기

insung·2025년 4월 12일

CS

목록 보기
11/20

TCP/IP 개념 이해

TCP/IP는 현대 웹 애플리케이션의 통신 기반이 되는 핵심 프로토콜.

TCP/IP의 기본 개념과 중요성

TCP/IP는 Transmission Control Protocol(전송제어 프로토콜)/Internet Protocol(인터넷 프로토콜)의 약자로, 인터넷에서 사용되는 표준 통신 프로토콜.

서로 다른 시스템을 가진 컴퓨터들을 연결하여 데이터가 의도된 목적지에 정확하게 도달할 수 있도록 보장하는 통신 규약

TCP/IP는 단일 프로토콜이 아니라 TCP와 IP를 함께 부르는 용어로 이 프로토콜을 사용한다는 것은 IP 주소 체계를 따르고, IP 라우팅을 이용해 목적지에 도달하며, TCP의 특성을 활용해 송/수신자 간 논리적 연결을 생성하고 신뢰성을 유지한다는 뜻

웹 개발에서 TCP/IP의 중요성:

  • 웹 브라우저와 서버 간의 데이터 교환이 TCP/IP 기반으로 이루어짐
  • HTTP, WebSocket 등 웹 기술들이 모두 TCP/IP 위에서 작동
  • 네트워크 문제 해결과 성능 최적화에 필수적인 지식

TCP/IP 4계층 구조

TCP/IP는 4개의 계층으로 구성되어 있으며, 각 계층은 특정 역할을 담당

1. 네트워크 인터페이스 계층(Network Interface Layer)

  • 역할: 실제 데이터인 프레임을 송수신하는 물리적 연결 담당
  • 데이터 단위: 프레임(Frame)
  • 주소 체계: MAC 주소
  • 주요 프로토콜: 이더넷(Ethernet), 무선 LAN(Wi-Fi), PPP 등
  • 장비: 브릿지, 스위치

이 계층은 0과 1의 2진법 디지털 데이터를 전기 신호 등의 물리적 신호로 변환하여 전송 매체로 전달

2. 인터넷 계층(Internet Layer)

  • 역할: 데이터 전송을 위한 논리적 주소 지정 및 경로 설정
  • 데이터 단위: 패킷(Packet) 또는 데이터그램(Datagram)
  • 주소 체계: IP 주소
  • 주요 프로토콜: IP, ARP, RARP, ICMP 등
  • 장비: 라우터

이 계층은 여러 네트워크 간의 데이터 전송을 담당하며, 라우팅과 엔드 투 엔드 통신을 지원

3. 전송 계층(Transport Layer)

  • 역할: 호스트 간 신뢰성 있는 데이터 전송 담당
  • 데이터 단위: 세그먼트(Segment)
  • 주소 체계: 포트 번호(Port)
  • 주요 프로토콜: TCP, UDP 등
  • 장비: 게이트웨이

이 계층은 데이터를 적절한 애플리케이션으로 분배하며, 소스와 대상 간의 데이터 송수신을 관리

4. 애플리케이션 계층(Application Layer)

  • 역할
    • 애플리케이션 간 데이터 교환
  • 데이터 단위
    • 데이터(Data) 또는 메시지(Message)
  • 주요 프로토콜
    • HTTP, HTTPS, FTP, SMTP, DNS, SSH 등
  • 포트 번호
    • HTTP(80), HTTPS(443), FTP(21), SMTP(25) 등

이 계층은 사용자와 가장 가까운 계층으로, 웹 브라우저, 이메일 클라이언트, FTP 클라이언트 등의 응용 프로그램이 작동하는 계층

TCP와 UDP의 차이점

웹 개발자로서 TCP와 UDP의 차이점을 이해하는 것은 중요

TCP(Transmission Control Protocol)

  • 연결 지향적
    • 데이터 전송 전 연결 설정 (3-way handshake)
  • 신뢰성 보장
    • 데이터 손실 시 재전송 요청
  • 순서 보장
    • 패킷에 일련번호를 부여하여 순서대로 재조합
  • 흐름 제어
    • Window size를 이용해 한 번에 받고 보낼 수 있는 데이터 양 조절
  • 혼잡 제어
    • 네트워크 상황에 따라 데이터 송출량 조절
  • 주요 용도
    • 웹 브라우징(HTTP), 이메일, 파일 전송 등 신뢰성이 중요한 서비스

UDP(User Datagram Protocol)

  • 비연결형
    • 연결 설정 과정 없이 바로 데이터 전송
  • 비신뢰성
    • 데이터 손실이나 순서 보장 없음
  • 속도 우선
    • 빠른 데이터 전송 가능
  • 오버헤드 적음
    • 헤더 크기가 작고 처리 과정이 단순
  • 주요 용도
    • 실시간 스트리밍, 온라인 게임, 화상 회의 등 속도가 중요한 서비스

웹 브라우저에서의 TCP/IP 통신 과정

웹 개발자로서 브라우저의 요청 흐름을 이해하는 것은 필수적

1. 주소 입력 및 DNS 조회

  • 사용자가 브라우저에 URL 입력
  • 브라우저가 DNS 서버를 통해 도메인 이름을 IP 주소로 변환
  • IP 주소, 포트, 경로, 쿼리 등 정보 확인

2. HTTP 요청 메시지 생성 및 TCP 연결 수립

  • SOCKET 라이브러리를 통해 HTTP 메시지를 TCP/IP 계층에 전달
  • 3-way handshake를 통해 서버와 연결 설정9
    1. 클라이언트가 서버에 SYN 신호 전송
    2. 서버가 클라이언트에 SYN+ACK 신호 전송
    3. 클라이언트가 서버에 ACK 신호 전송하여 연결 확립

3. 데이터 전송 및 처리

  • HTTP 메시지를 포함한 TCP/IP 패킷 생성
  • 패킷은 여러 네트워크 노드를 거쳐 서버에 전달
  • 서버는 전달받은 패킷을 해석하여 요청에 맞는 로직 처리

4. 응답 전송 및 렌더링

  • 서버가 처리 결과를 담은 응답 패킷 생성
  • 응답 패킷을 클라이언트(웹 브라우저)에 전달
  • 브라우저는 응답 패킷을 해석하여 렌더링 과정을 통해 화면에 출력

웹 개발자로서 알아야 할 TCP/IP 관련 지식

1. HTTP와 TCP/IP의 관계

  • HTTP는 TCP/IP 위에서 작동하는 애플리케이션 계층 프로토콜.
  • HTTP 통신은 TCP/IP의 기능을 기반으로 이루어짐
    • HTTP는 TCP 연결을 통해 데이터를 전송하며, IP 주소를 사용하여 데이터가 올바른 목적지에 도달하도록 보장

2. 로컬 개발 환경에서의 TCP/IP

  • 로컬 개발 환경에서도 웹 서버와 브라우저 간의 통신은 TCP/IP를 통해 이루어짐.
    • 주로 localhost(127.0.0.1)와 특정 포트를 통해 통신

3. API 통신과 TCP/IP

  • 프론트엔드 개발에서 흔히 사용하는 AJAX, Fetch API, Axios 등을 통한 API 호출도 모두 TCP/IP 기반의 HTTP 통신.
    • 이러한 통신 과정을 이해하면 네트워크 관련 문제 해결에 도움이 됨

4. 웹소켓과 TCP/IP

  • 실시간 양방향 통신을 위한 WebSocket도 TCP/IP 위에서 작동.
    • WebSocket은 초기 연결 시 HTTP를 사용하여 핸드셰이크를 수행한 후, TCP 연결을 유지하며 데이터를 교환.

TCP/IP 지식의 실무 활용

1. 네트워크 디버깅

  • 개발자 도구의 Network 탭을 활용하여 TCP/IP 기반 HTTP 요청의 상태, 헤더, 응답 시간 등을 모니터링가능.
    • 이를 통해 네트워크 병목 현상이나 오류를 식별하고 해결할 수 있음

2. 성능 최적화

  • TCP 연결 설정 시간을 줄이기 위한 기법(Keep-Alive, Connection Pooling)을 적용하여 웹 애플리케이션의 성능을 향상시킬 수 있음

3. 보안 강화

  • HTTPS(TLS/SSL over TCP)를 이해하고 적용함으로써 데이터 전송 중 보안을 강화할 수 있음

4. 문제 해결 능력 향상

  • 네트워크 지연, 연결 끊김, 타임아웃 등의 문제 발생 시 TCP/IP 관련 지식을 바탕으로 효과적으로 원인을 파악하고 해결할 수 있음
profile
안녕하세요 프론트엔드 관련 포스팅을 주로 하고 있습니다

0개의 댓글