ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [네트워크] 3. Protocol stack과 Application Layer
    CS/네트워크 2023. 3. 9. 23:32

    Protocol Stack

    네트워크는 계층구조로 이루어져 여러 layer로 구성된다. 각 layer는 transparent(무관한) 관계를 가진다.

    과거에는 총 7개의 layer로 나뉘었지만, 현재는 presentation layer과 session layer가 application layer에 흡수되었다.

     

    • application : HTTP, FTP, SMTP등과 같은 응용 애플리케이션이 돌아가는 계층입니다.
    • transport : 송수신 측 데이터 전송의 신뢰성을 위한 계층으로, TCP, UDP 방식이 있습니다.
    • network : 송수신 간 어떤 라우터를 거쳐야 할지 결정합니다.
    • link : 이웃한 네트워크 요소끼리 정보가 전달되는 계층입니다.
    • physical : 전기신호를 전달하는 물리적인 계층입니다.
    • presentation : 데이터의 의미를 해석하는 계층입니다.
    • session : 데이터의 싱크를 맞추거나, 복구하는 계층입니다.

    위 두 개의 layer는 이후 application layer에 합쳐졌습니다.

     

     

     

    Encapsulation : 캡슐화

    데이터를 보낼 때 각각 계층에서 해당하는 헤더를 붙여 보내게 됩니다. 이렇게 하는 이유는 데이터가 전송되는 계층은 application이 아닌 link이기 때문에, 계층을 내려가면서 필요한 정보를 붙여나가는 것입니다.

    각각 계층에서 붙는 헤더는 다음과 같습니다.

     

    application layer : message

    transport layer : segment

    network layer : datagram

    link layer : frame

     

    데이터가 이동하면서 스위치 또는 라우터를 통해 지나가는데, 경로 설정은 라우터만 하기 때문에 라우터만 network를 갖고 있습니다.

    link 계층에서 데이터가 전송될 때, link에 대한 헤더는 빠지게 됩니다.

    그리고 라우터에 도착하면 새로운 link 계층의 헤더가 다시 붙어 가게 됩니다.

     

    이런 방식으로 네트워크 계층이 분리되어 있기 때문에, 네트워크 애플리케이션 개발자는 application layer 외 다른 계층에서의 동작을 잘 몰라도 된다는 장점이 있습니다. (하지만 우리는 알아야 합니다)

     

     

     

     

    Application architectures

    네트워크 애플리케이션의 구조는 두 가지가 있습니다.

    1. client-server 
    2. peer-to-peer(P2P) 

    각각에 대해 알아봅시다.

    Client-Server architecture

    • 서버 : 하나의 서버가 항상 켜져있고, 고정된 IP주소를 사용합니다. 데이터 센터의 역할을 합니다.
    • 클라이언트 : 항상 켜지 있지 않을 수 있습니다. 동적인 IP주소를 사용하고, 다른 클라이언트와 직접 통신하지 않습니다.

     

    P2P architecture

    • 말하는 peer가 서버가 되고, 듣는 peer가 클라이언트가 되어, 어떤 peer든 서버나 클라이언트가 될 수 있습니다.
    • 자가 확장성(self-scalability)를 가지기 때문에, 크기에 제약을 받지 않습니다.
    • peer들은 간헐적으로 연결되며, 전체적으로 복잡한 구조를 띄웁니다.

     

     

     

     

    Processes communicating

    데이터를 전송할 때 최종 주소는 process가 됩니다.

    두 process가 같은 호스트 내에서 통신할 때, IPC(Inter-process-communication) 를 통해 통신합니다.

    다른 호스트에 있을 경우 메세지를 교환하는 것으로 통신합니다.

     

    process는 client측과 server측이 있습니다.

    • client process : 클라이언트가 서버로 요청하는 process
    • server process : 클라이언트의 요청을 기다리는 process

     

     

     

     

     

    Socekts

    process간 통신은 소켓을 통해 메세지를 주고 받습니다.

    소켓은 application process가 네트워크로 보내기 위한 관문(창구)이라고 할 수 있습니다.

    소켓은 application layer과 transport layer 사이에 위치하며, 소켓에 데이터를 쓰거나, 데이터가 쓰여진 소켓을 읽는 등의 방식으로 데이터가 교환됩니다.

     

     

     

     

    Addressing Processes

    메세지를 제대로 받기 위해선 구분자가 필요합니다. 이는 IP 주소와 port number로 구성되어 있습니다.

    • 포트 번호 : HTTP 서버의 포트는 80이 기본이고, mail 서버의 포트는 25가 기본입니다.

    동일한 호스트에서 여러 process들이 돌 수 있기 때문에 동일한 IP주소에서도 여러 processe들이 돌게 됩니다.

    기존에 32bit 주소인 IPv4 방식을 사용했지만, 인구수가 늘어나면서 IPv6도 사용되고 있습니다.

     

     

     

    Application layer protocal

    애플리케이션 계층의 프로토콜은 다음과 같은 요소를 정의합니다.

    • 명령 : request / response
    • 문법(syntax)
    • 의미(semantics) : 담고 있는 정보의 의미
    • 규칙

    프로토콜의 종류는 표준 프로토콜(open protocol : HTTP, SMTP)과 사유 프로토콜(proprietary protocol : skype)이 있습니다.

     

     

     

     

    Transport Service that App needs

    애플리케이션은 다음과 같은 특징들을 transport layer에게 요구합니다.

    • data integrity(무결성) : 데이터가 100% 믿을 수 있는 정확한 데이터여야 합니다.
    • timing(시간) : low delay로 빠르게 도착할 수 있어야 합니다.
    • throughput(성능) : 시간보다 양에 대한 개념으로, 최소 도착해야 하는 데이터의 양이 정의됩니다.
    • 보안 : 사실 보안은 application layer에서 책임을 지게 합니다..

     

    모든 애플리케이션이 이 4가지 조건을 만족시키지 못하고, 종류에 따라 요구하는 정도가 달라지게 됩니다.(아래 표 참고)

     

     

     

     

     

    Internet Transport Protocol Services ( TCP / UDP )

    TCP와 UDP의 차이와, 위에서 살펴본 특징 중 지원하는 것이 어떤 게 있는지 살펴보도록 하겠습니다.

     

    TCP

    • reliable transport : data 무결성만 지원합니다.
    • flow control : 수신자가 감당할 수 있는 양의 데이터만 보냅니다.(송신자가 수신자보다 빠르지 않게 속도 조절)
    • congestion control : 수신자가 아닌 중간의 노드가 감당이 가능하도록 조절합니다.(라우터 버퍼 크기 조절, 송신자 속도 조절)
    • does not provide : 데이터 무결성 외 다른 특징들은 지원하지 않습니다.
    • connection-oriented : 클라이언트와 서버의 연결에 대한 설정 단계를 거칩니다.

     

    UDP

    • 어떤 4가지 특징도 지원하지 않습니다.
    • 데이터 통신에 대한 책임을 지지 않습니다.
    • 하지만 속도는 빠르기 때문에 빨리 보내기 위해 사용합니다.

     

     

    아래는 인터넷 애플리케이션을 TCP와 UDP로 구분한 것입니다.

     

     

    Securing TCP

    TCP나 UDP 모두 보안은 해주지 않습니다. 따라서 SSL이 application layer에서 보안을 해주게 됩니다.

     

     

    본 글은 Computer networking : a top-down approach 라는 책을 통해 작성되었습니다.

    댓글

Designed by Tistory.