본문 바로가기
일/Network

데이터가 전달되는 과정 TCP/IP 통신 과정

[주제] 데이터가 전달되는 과정 (TCP/IP)

 

이번 글에서는 이전에 살펴보았던 웹 사이트에 접속되는 전체 흐름 중, TCP/IP를 통한 데이터 송수신 과정을 정리해보도록 하겠습니다.

 

1.    데이터란?

데이터는 사실 수많은 0과 1로 이루어진 숫자이며, 컴퓨터는 이진법의 숫자를 전기의 켜짐과 꺼짐으로 표현할 수 있습니다. 

즉, 데이터는 아주 긴 전기신호인 것이고, 이는 케이블을 통해 목적지로 전달됩니다.

 

2.    프로토콜(Protocol)

클라이언트(사용자 컴퓨터)에서 발생한 데이터가 상대방 컴퓨터 혹은 서버로 전달되기 위해서는 표준화된 약속 또는 절차를 따라야 합니다.

보내는 쪽에서는 데이터를 안전하고 정확하게 규격화 하는 방법이 필요하고, 받는 쪽에서는 그 데이터를 해석하는 방법이 필요합니다. 

이러한 기술적인 약속을 프로토콜이라고 하며, TCP/IP는 다양한 프로토콜 집합의 총칭입니다.

 

3.    TCP/IP 계층

TCP/IP는 TCP와 IP를 중심으로 하는 프로토콜의 집합으로, 네트워크 공통 언어입니다.

TCP/IP 계층구조는 아래부터 네트워크 연결 계층, 인터넷 계층, 전송 계층, 응용 계층으로 모두 4계층입니다.

- 응용 계층 (Application Layer)

사용자와 가장 가까운 계층이며, 사용자-소프트웨어 간 소통을 담당합니다.

서버나 응용 프로그램이 동작하는 계층이며, 대표적으로 80번 포트를 사용하는 HTTP 프로토콜이 여기에 속합니다.

-  전송 계층 (Transport Layer)

데이터를 적절한 애플리케이션에 배분함으로써, 통신 노드 간의 연결을 제어하고, 신뢰성 있는 전송 기능을 제공합니다. 

대표적인 프로토콜로는 TCP, UDP가 있습니다.

-  인터넷 계층 (Internet Layer)

해당 계층에서는 서로 다른 네트워크 간의 이동경로를 다루는데, 네트워크를 연결한 라우터에서 적절히 전송하는 기능(라우팅)을 수행합니다.

-  네트워크 연결 계층 (Network Access Layer)

같은 네트워크 안에서 데이터를 전송하는 역할을 수행하며, 레이어2 스위치로 하나의 네트워크를 구성하므로, 

같은 레이어2 스위치에 연결된 다른 PC의 인터페이스까지 데이터를 전송할 수 있습니다. 

이 때 ‘0’, ‘1’의 디지털 데이터를 물리적 신호로 변환해 전달해 갑니다.

 

4.    캡슐화, 역캡슐화

-  캡슐화

각 프로토콜에서는 각각의 기능을 실현하기 위한 제어 정보(헤더)가 필요합니다. 

데이터를 전송하는 프로토콜이라면 헤더에는 출발지와 도착지의 주소가 지정되며, 각 프로토콜은 데이터를 전송할 때 헤더를 추가합니다. 이를 ‘캡슐화’ 라고 합니다.

-  역캡슐화

또한, 프로토콜이 데이터를 받으면 각 프로토콜 헤더를 바탕으로 적절하게 처리하여 헤더를 벗겨내고 다른 프로토콜로 처리를 넘기는데, 이를 ‘역캡슐화’ 라고 합니다.

 

5.    웹 브라우저에서 웹 서버 애플리케이션으로의 데이터 전달 과정

프로토콜 및 TCP/IP 계층에 대해 정리해보았으니, 이 개념을 기반으로 이제 데이터가 전송되는 흐름을 살펴보겠습니다.

 

A.     Application층 → Network Access층 송신 과정 (캡슐화)

-      Application 계층에서는 애플리케이션이 사용하는 프로토콜의 필요한 정보를 헤더로 담으며, 프로토콜이 HTTP라면 HTTP Request 헤더가 들어갑니다.

-      Transport 계층에서는 TCP 헤더로 송신지 포트번호와 수신지 포트번호가 들어갑니다.

-      Internet 계층에서는 IP 헤더로 송신지 IP주소와 수신지 IP주소가 들어갑니다.

-      Network Access 계층에서는 이더넷 헤더로 송신지 MAC주소와 수신지 MAC주소가 들어가며, 

    FCS(Frame Check Sequence)가 추가되면 네트워크로 내보낼 데이터 전체가 완성됩니다.

     FCS(Frame Check Sequence) : 에러 체크를 위한 정보

 

B.     Network Access층 → Application층 수신 과정 (역캡슐화)

-      Network Access 도착지인 웹 서버까지 물리적인 신호가 도착하면, ‘0’, ‘1’의 데이터로 변환합니다. 

    그리고 이더넷 헤더를 참조해 자기 앞으로 온 데이터인지 확인하고, FCS로 데이터에 오류가 없는지 확인합니다. 

    자기 앞으로 온 데이터라면, 이더넷 헤더와 FCS를 제거하고 IP 헤더 처리를 인터넷 계층으로 넘깁니다.

-      Internet 계층에서는 IP 헤더를 참조하여 자기 앞으로 온 데이터인지 확인하고, 자기 앞으로 온 데이터라면 IP 헤더를 제거하고 TCP로 데이터 처리를 넘깁니다.

-      Transport 계층에서는 TCP 헤더를 참조하여 어느 애플리케이션의 데이터인지 확인하고, TCP 헤더를 제거하여 해당 웹 서버 애플리케이션으로 넘깁니다.

-      이렇게 웹 서버 애플리케이션까지 데이터가 도달하면, HTTP 헤더와 그 뒤 데이터 부분을 처리합니다.

 

송신하는 쪽과 수신하는 쪽이 반드시 정해져 있는 것은 아니며, 통신은 양방향으로 이루어집니다. 

클라이언트 요청에 의해 데이터 캡슐화 → 패킷 전송 → 역캡슐화의 과정을 거쳐 데이터가 안전하게 송수신되고, 

이러한 흐름을 통해 우리가 원하는 정보를 주고받을 수 있는 것입니다.