SP - 3.1 Network Programming (1)

hyeok's Log·2022년 4월 4일
1

SystemProgramming

목록 보기
9/29
post-thumbnail

  본 포스팅은 System Programming을 다루고 있는데, 왜 갑자기 '네트워크'인가? System Programming에서 가장 주요한 부분 중 하나가 'Concurrent Program', 'Concurrency'이다. 이들을 더 깊이 있게 이해하기 위해선 네트워크에 대한 이해가 필수적이다. 따라서 본 Chapter3 연재에서는 네트워크에 대해 다룰 것이다. 단, 우리는 System Programming이 핵심이므로, 세부적인 네트워크 개념은 대체적으로 언급만하고 넘어갈 것이다.


Client-Server Model

  • 대부분의 네트워크 프로그램은 Client-Server Model을 기반으로 한다.

    • 하나의 Server Process가 있고, 하나 이상의 Client Processes가 있다.
    • Server는 여러 리소스(메모리에 저장)를 관리한다.
    • Server는 Client들에게 해당 리소스를 이용해 서비스를 제공한다. (Server의 어원)
    • Client는 Server에 Request를 보낸다. 서버는 클라이언트의 요청에 의해 동작한다.
  • 서버는 SSD같은 리소스를 가지고 있다.


※ Server-Client Transaction
1) 클라이언트가 서버에 요청을 보낸다.
2) 서버가 이에 대한 동작을 수행한다.
3) 서버가 그 결과를 클라이언트에게 알린다.
4) 클라이언트는 그 결과에 대해 반응한다.


Inside the Computer

  아래는 컴퓨터의 Motherboard를 아주 단순하고 직관적으로 나타낸 Diagram이다.

  • I/O버스와 연결된 확장 슬롯 중 특정 슬롯은 네트워크 어댑터가 연결되어 있다.

    • 네트워크 어댑터는 외부의 네트워크 통신 장치(LAN 선, 와이파이 등)와 연결되어 있다.
  • 네트워크에서 넘어온 정보가 어댑터를 거쳐서 I/O버스로 들어온다.

    • I/O버스에서 I/O브릿지를 거치고, 메모리 버스를 통해 메인 메모리에 적재된다.
  • 메모리 버스와 시스템 버스를 통해 CPU와 소통한다.

  • 반대의 절차를 거쳐서 CPU에서 메인 메모리의 정보를 외부 네트워크로 보낼 수 있다.

  • 마찬가지 방식으로 외부의 보조저장장치, 그래픽 장치, USB 장치 등과 소통할 수 있다.

컴퓨터가 디스크와 소통하는 절차와 동일하게, 네트워크와도 소통한다. 특별한 절차를 거치는 것이 아니다. ★


Network 분류

  네트워크는 지리적인 근접 정도에 따라 아래와 같이 분류할 수 있다. 이를 'Hierarchical System of Boxes and Wires'라고 한다.

  • SAN : System Area Network

    • Cluster나 Room(말 그대로 방 사이즈) 단위이다. 즉, 작다는 것이다.
    • ex) Switched Ethernet, Ethernet Segment, Quadrics QSW
  • LAN : Local Area Network

    • Building, Campus 정도 단위이다. 지역 단위 네트워크이다.
    • ex) Ethernet
  • WAN : Wide Area Network

    • 국가, 세계 단위의 방대한 크기의 네트워크를 의미한다.
    • ex) Point-to-Point Phone Line
  • internetwork : 흔히 우리가 internet이라고 부르는 분류 범위로, 인터넷은 'Network of networks'이다.

    • 이 '분류'의 의미의 internet은 의도적으로 앞을 소문자로 표기한다.
      • 우리가 흔히 '인터넷'이라고 여기는 실제 'Global IP Internet'의 경우, 이는 대문자 I를 사용하여 표기한다. ★

SAN : Ethernet Segment

  소규모 이더넷 네트워크를 의미한다.

Ethernet Segment : Host들의 집합, Host들은 Wire를 통해 Hub로 연결된다.

  • 방, 빌딩의 한 층, 클러스터 수준의 단위이다.

  • 48-Bit Address로 각각의 유니크한 주소를 부여한다.

    • 이를 MAC Address라고 한다
  • Host는 다른 Host에게 Chunk(512B) 단위로 비트를 보낸다. 이를 따로 'Frame'이라고 부른다.

  • Hub는 각 포트로부터 온 비트 정보를 모든 포트로 전송한다. (분배가 아니다)

    • "Every Host sees every bit!"
    • 현대에는 Bridge(Switch, Router 등)로 이 Hub를 대체한다.
      • 여담) 물론 군대나 소규모 회사같은 곳에 가면 허브를 많이 본다.

LAN : Bridged Ethernet Segment

  • 빌딩이나 캠퍼스 수준의 단위이다.

  • Bridge는 각 Port로부터 어떤 Host가 현재 접근 가능한지를 빠르게 계산한다.

    • 관련 알고리즘이 존재한다.

  • Hub와 Bridge는 Encapsulation 속성을 보인다. 즉, Host 입장에선 브릿지와 허브가 명시적으로 드러나지 않는다.


WAN : internet

Router라는 특수 컴퓨터를 이용해 물리적으로 떨어진 LAN들을 연결하여 네트워크를 구축하는 방식을 WAN이라 한다.

즉, LAN들을 라우터로 연결한 것이다.

이러한 네트워크를 internet이라고도 부르는 것이다.

  • 이때, 각 구성 LAN들은 서로 다른 네트워킹 기술을 가질 수 있다.
    • 예를 들어, HostA에서 HostB로 데이터를 보낼 때, HostA에서는 Ethernet 기술을 사용하고 있고, HostB에선 FibreChannel 기술을 사용하고 있다고 해보자.
      • 이때, 서로 다른 두 네트워킹 기술을 맞춰주는 것을 Protocol이라 한다. (후술)

internet

Logical Structure

  • Router : Host에서 다른 Host로 데이터를 보낼 때, 어떤 경로를 거쳐 데이터가 흘러야할지를 Router가 결정한다.
    • 경로를 구축해가며, 현재 문제가 있는 Router가 포함된 경로는 피하는 식으로 진행한다.
      • by Routing Algorithm

  • Ad hoc Interconnection of Networks : 노드들에 의하여 자율적으로 구성되는, 기반 구조가 없는 네트워크를 '애드 혹(Ad hoc)' 방식이라 하는데, 인터넷이 바로 이러한 형태를 가진다.

    • "No particular topology"
    • 라우터들도 다 다르고, 링크 용량도 다 다르다.
  • 각 네트워크를 거쳐가면서 Packet을 전달한다. 논리적인 구조로 보았을 때, "껑충껑충 뛰어가는 느낌이 든다"고 해서, 이를 'Hop through netwroks'라고 표현한다.

    • Router는 각 네트워크 간의 Bridge 역할을 수행할 수 있다. ★
    • Packet은 다양한 경로를 거쳐서 라우팅된다.

internet Protocol

  서로 다른 네트워킹 기술을 기반으로 하는 여러 LAN들과 WAN들이 서로 정보, Bit를 주고 받기 위해선 하나의 통일된 약속, 규격이 필요하다.

Protocol이라는 Software를 각 Router와 Host에 설치하여 서로 다른 네트워킹 기술 간의 소통을 가능케 한다.

Protocol : 하나의 네트워크에서 다른 네트워크로 정보가 전달될 때, Host와 Router가 서로 어떻게 협력(Cooperate)할지에 대한 규칙 모임

  • Protocol의 임무

    • Naming Scheme을 제공한다.

      • Naming Scheme : Host Address에 대한 규격화된 Format
      • 각 Host와 Router는 자신을 Unique하게 구별할 수 있는 최소 하나의 internet 주소를 부여받는다. (by Protocol) ★
    • Delivery Mechanism을 제공한다.

      • Standard Transfer Unit인 Packet을 정의한다.
        • Packet Header : 패킷 사이즈, Src와 Dest 주소를 담는다. ★
        • Packet Payload : 실제로 보내고자 하는 데이터를 담는다. ★

(HostA를 Client, HostB를 Server라고 보자.)

  • internet : 서로 다른 기술을 가진 네트워크들을 프로토콜 소프트웨어로 연결해준다. 위의 그림은 이 과정을 Application 관점에서 보여준다.

  • LAN A에 속한 HostA가 Protocol을 이용해 HostB에게 보내고자 하는 데이터(Payload)에 Header를 붙여서 Packet을 형성한다. 네트워크 통신은 Chunk 크기의 Frame 단위로 한다고 했으므로, Frame Header를 붙여서 Frame을 형성한다.

  • 이를 Adapter를 거쳐 Router에게 보낸다. Router에도 Protocol Software가 있으며, 여기서는 이 Frame을 LAN B의 네트워킹 기술에 알맞는 형태로 변형한다. Frame Header를 교체함으로써 이를 수행한다.

  • Frame Header가 교체된 Packet은 LAN B로 들어간 다음, LAN 내부의 Protocol을 거쳐 해체된 다음, Data만 쏙 뽑아내서 HostB에게 전달된다.

    • Packet을 Frame화 하여 주고받는 과정을 'Encapsulation'되어 있다고 한다. ★
      • Router에서는 Frame의 Header를 변경하는 역할을 하는 것! ★
        • 각각의 네트워크 망은 Frame Size가 다를 수 있다.

~> 이러한 과정을 익히도록 하자.



  금일 포스팅은 여기까지이다.

0개의 댓글