ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TCP/IP를 통한 인터넷 통신 흐름
    네트워크 2025. 7. 12. 00:47

    이번엔 클라이언트가 서버에 데이터를 요청할때 이루어지는 전체적인 데이터 처리 과정에 대해 알아보자.

     

    인터넷 기반의 통신은 OSI 7계층 모델을 참조해서 나온 TCP/IP 모델로 동작한다.

    신뢰성 있는 통신을 보장하는 TCP와 IP 주소를 기반으로 패킷을 목적지까지 전송하는 IP를 기반으로 동작하는 것이다.

     

    IP는 패킷들의 순서를 보장하지 않고, 패킷이 유실될 수 있다는 한계가 있다.

    이러한 IP의 한계를 TCP가 보완하여, 패킷들이 순서대로 도착하고 유실되지 않는 신뢰성있는 통신을 보장해준다!

     


    [예시 네트워크의 구성]

     

    웹 사이트에 접속할 때 OSI 모델 상위 응용 계층부터 하위 물리 계층까지에서 각각 어떤 일이 일어나는지 살펴볼 것이다.

    아래는 예시 네트워크이다.

     

    그림과 같이 컴퓨터, 스위치, 라우터, 웹 서버로 구성된 네트워크가 있다고 가정해보자.

    이 구성은 192.168.1.0/24, 172.16.0.0.16, 192.168.10.0/24로 총 3개의 네트워크로 나누어져 있다.

     

    이를 OSI 모델로 나타내면 그림과 같이 구성된다.

     


    [컴퓨터의 데이터가 전기 신호로 변환되는 과정]

     

    TCP/IP 4계층이 데이터를 전달하고 처리하는 전체적인 과정을 살펴볼 것이다.

     

    웹 브라우저에 URL을 입력할 때부터 웹 서버에 도착할 때까지 이루어지는 OSI 모델의 캡슐화와 역캡슐화를 살펴 볼 것이다.

     

     

    상위계층에서 하위계층으로 가면서 캡슐화가 이루어진다.

     

    웹 사이트에 접속해야 하므로 응용 계층에서 시작한다.

     

    브라우저에서 URL을 입력하면 DNS를 통해 도메인이름을 IP 주소로 변환한다.

    즉, 응용계층에서 Domain Name System을 활용하여 IP 주소를 받아온다.

     

    전송 계층에서 TCP 헤더가 붙는다.

    TCP Header에서 출발지 포트 번호와 목적지 포트 번호로 목적지 서버의 어느 애플리케이션에 데이터를 보내야 하는지 명시한다.
    출발지 포트 번호는 잘 알려진 포트가 아닌 포트(1025번 이상인 포트) 중에서 무작위로 선택된다.

    목적지 포트 번호는 HTTP 프로토콜이므로 80번 포트가 된다.

     

    아래 그림과 같이 TCP 헤더가 붙어 세그먼트가 된다.

    TCP 헤더를 가진 데이터를 세그먼트라고 부른다.
    이 세그먼트는 네트워크 계층에 전달된다.

     

     

    네트워크 계층에서는 전송 계층에서 전달받은 세그먼트(데이터)에 IP Header를 붙인다.

    그 IP Header에 출발지 IP 주소와 목적지 IP 주소가 추가되고, 이 IP Header가 붙은 데이터를 IP 패킷이라고 한다.


    이 패킷은 데이터 링크 계층에 전달된다.

     

    데이터 링크 계층에서는 이더넷 헤더가 추가되고, 이더넷 헤더가 있는 데이터를 이더넷 프레임이라고 한다.
    그 다음으로 물리 계층에서 전기 신호로 변환되어 네트워크로 전송된다.

     

    여기까지가 컴퓨터에서 데이터 링크 계층까지의 캡슐화 흐름이다.
    추가적으로, 물리 계층에서 전기 신호로 변환할 때는 랜 카드가 사용된다.

     


    [스위치와 라우터에서의 데이터 전달과 처리]

     

    이제 컴퓨터 밖으로 나간 전기적 신호에 대해

    스위치와 라우터에서 데이터가 처리되는 과정을 알아보자.

     

    그 전에 알고 가야할 내용이다.

    • 스위치 내에 대응되는 OSI 모델의 계층은 물리 계층과 데이터 링크 계층이다.
    • 라우터 내에 대응되는 OSI 모델의 계층은 물리 계층, 데이터 링크 계층, 네트워크 계층이다.

     

    [스위치에서의 데이터 전달과 처리]

     

     

    스위치 A의 과정을 보자.

     

    그림과 같이 스위치 A는 데이터 링크 계층에서 데이터를 전기 신호로 변환하여 라우터 A로 전송한다.

     

    [라우터에서의 데이터 전달과 처리]

     

    계속해서 데이터는 스위치 A에서 라우터 A로 전기신호로 전달된다.


    라우터 A에서의 캡슐화와 역캡슐화에 대해 살펴보자.

    그림과 같이 스위치 A에서 데이터가 전기 신호로 변환되어 케이블을 통해 흘러가 라우터 A에 도착한다.

     

    라우터 A는 데이터 링크 계층에서 해당 프레임이 자신에게 온 것이 맞는지 확인하기 위해

    이더넷 프레임의 목적지 MAC 주소와 자신의 MAC 주소를 비교한다.


    이때 주소가 같으면 이더넷 헤더와 트레일러를 분리하는 역캡슐화를 수행한다.

    하지만 주소가 다르다면 무시하고 폐기해버린다.

     

    다음으로 네트워크 계층에 전달하고 자신의 라우팅 테이블과 목적지 IP 주소를 비교한다.

    라우터 A의 라우팅 테이블에서 목적지 IP 주소의 경로를 알 수 있으므로 라우팅을 할 수 있다.

     

    그래서 그림과 같이 현재 출발지 IP 주소 192.168.1.10을 라우터의 외부 IP 주소인 172.16.0.1로 변경한다.


    그런 다음 데이터 링크 계층으로 전달하여 라우터 B로 보내지도록 이더넷 헤더와 트레일러를 붙인 후에

    물리 계층에서 데이터를 전기 신호로 변환하여 네트워크로 전달한다.

     

    그 다음 데이터는 전기 신호 형태로 라우터 A에서 라우터 B로 전달된다.


    라우터 B에서 이루어지는 OSI 모델의 역캡슐화와 캡슐화를 살펴보자.

     

    라우터 B도 라우터 A와 동일하게 데이터링크 계층에서 해당 프레임이 자신에게 온 것이 맞는지 확인하기 위해

    이더넷 프레임의 목적지 MAC 주소와 자신의 MAC 주소를 비교한다.

     

    주소가 같으면 이더넷 헤더와 트레일러를 분리하는 역캡슐화를 수행한다.

    하지만 주소가 다르다면 무시하고 폐기해버린다.

     

    그 다음 네트워크 계층으로 전달되면 자신의 라우팅 테이블과 목적지 IP 주소를 비교한다.
    (라우터 A와 마찬가지로 라우터 B도 목적지의 네트워크를 알아야 하기 때문에 라우팅 테이블을 확인한다.)

     

    라우터 B의 라우팅 테이블을 확인해 보면 목적지 IP 주소의 경로를 알 수 있으므로 라우팅을 할 수 있다.

    이전 과정과 같이 IP 주소를 바꾸고, 데이터 링크 계층에 전달, 스위치에 전달되도록 이더넷 헤더와 트레일러 붙인 후

    물리 계층에서 데이터를 전기 신호로 변환하여 네트워크로 전달한다.

     

    라우터B 에서 스위치 B로 전달된다

     

    전기 신호 형태의 데이터가 라우터 B에서 스위치 B로 전달된다.

    스위치 B를 보자.

    그림과 같이 전기 신호를 데이터 링크 계층에서 처리하고 웹 서버에 데이터를 전기 신호로 전달한다.

     


    [웹 서버에서의 데이터 전달과 처리]

     

    컴퓨터에서 라우터와 스위치를 거쳐 웹 서버까지 들어왔다.

    이제 웹 서버에서 이루어지는 데이터 처리 과정을 알아보자.

     

    웹 서버에서의 데이터 전달과 처리

     

     

    스위치 B에서 웹 서버로의 데이터 전달 과정을 살펴보았다.

    이번엔 웹 서버에서 이루어지는 OSI 모델의 역캡슐화를 살펴보자.

     

     

    1. 데이터가 전기 신호로 웹 서버에 도착하면 웹 서버는 데이터 링크 계층에서 이더넷 프레임의 목적지 MAC 주소와 자신의 MAC 주소를 비교한다. 주소가 같으면 이더넷 헤더와 트레일러를 분리하고 네트워크 계층에 전달한다.

    2. 네트워크 계층에서는 자신에게 온 것이 맞는지 확인하기 위해 목적지 IP 주소와 웹 서버의 IP 주소가 같은지 확인한다.

    주소가 같으면 IP 헤더를 분리하고 전송 계층에 전달한다.

    3. 전송 계층에서는 목적지 포트 번호를 확인 하여 어떤 애플리케이션으로 전달해야 되는지 판단하고 TCP 헤더를 분리하여 응용 계층에 전달한다.

    4. 웹 서버의 응용 계층에 성공적으로 도착했다!!

    '네트워크' 카테고리의 다른 글

    CSRF 공격  (0) 2025.05.07
    서브넷  (0) 2025.05.04
    브라우저 요청에 대한 네트워크 흐름 정리  (1) 2025.05.04
    전송계층과 TCP/UDP  (0) 2025.05.03
    SOP와 CORS  (0) 2025.04.24