본 포스팅은 System Programming을 다루고 있는데, 왜 갑자기 '네트워크'인가? System Programming에서 가장 주요한 부분 중 하나가 'Concurrent Program', 'Concurrency'이다. 이들을 더 깊이 있게 이해하기 위해선 네트워크에 대한 이해가 필수적이다. 따라서 본 Chapter3 연재에서는 네트워크에 대해 다룰 것이다. 단, 우리는 System Programming이 핵심이므로, 세부적인 네트워크 개념은 대체적으로 언급만하고 넘어갈 것이다.
대부분의 네트워크 프로그램은 Client-Server Model을 기반으로 한다.
서버는 SSD같은 리소스를 가지고 있다.
※ Server-Client Transaction
1) 클라이언트가 서버에 요청을 보낸다.
2) 서버가 이에 대한 동작을 수행한다.
3) 서버가 그 결과를 클라이언트에게 알린다.
4) 클라이언트는 그 결과에 대해 반응한다.
아래는 컴퓨터의 Motherboard를 아주 단순하고 직관적으로 나타낸 Diagram이다.
I/O버스와 연결된 확장 슬롯 중 특정 슬롯은 네트워크 어댑터가 연결되어 있다.
네트워크에서 넘어온 정보가 어댑터를 거쳐서 I/O버스로 들어온다.
메모리 버스와 시스템 버스를 통해 CPU와 소통한다.
반대의 절차를 거쳐서 CPU에서 메인 메모리의 정보를 외부 네트워크로 보낼 수 있다.
마찬가지 방식으로 외부의 보조저장장치, 그래픽 장치, USB 장치 등과 소통할 수 있다.
컴퓨터가 디스크와 소통하는 절차와 동일하게, 네트워크와도 소통한다. 특별한 절차를 거치는 것이 아니다. ★
네트워크는 지리적인 근접 정도에 따라 아래와 같이 분류할 수 있다. 이를 'Hierarchical System of Boxes and Wires'라고 한다.
SAN : System Area Network
LAN : Local Area Network
WAN : Wide Area Network
internetwork : 흔히 우리가 internet이라고 부르는 분류 범위로, 인터넷은 'Network of networks'이다.
소규모 이더넷 네트워크를 의미한다.
Ethernet Segment : Host들의 집합, Host들은 Wire를 통해 Hub로 연결된다.
방, 빌딩의 한 층, 클러스터 수준의 단위이다.
48-Bit Address로 각각의 유니크한 주소를 부여한다.
Host는 다른 Host에게 Chunk(512B) 단위로 비트를 보낸다. 이를 따로 'Frame'이라고 부른다.
Hub는 각 포트로부터 온 비트 정보를 모든 포트로 전송한다. (분배가 아니다)
빌딩이나 캠퍼스 수준의 단위이다.
Bridge는 각 Port로부터 어떤 Host가 현재 접근 가능한지를 빠르게 계산한다.
Router라는 특수 컴퓨터를 이용해 물리적으로 떨어진 LAN들을 연결하여 네트워크를 구축하는 방식을 WAN이라 한다.
즉, LAN들을 라우터로 연결한 것이다.
이러한 네트워크를 internet이라고도 부르는 것이다.
Ad hoc Interconnection of Networks : 노드들에 의하여 자율적으로 구성되는, 기반 구조가 없는 네트워크를 '애드 혹(Ad hoc)' 방식이라 하는데, 인터넷이 바로 이러한 형태를 가진다.
각 네트워크를 거쳐가면서 Packet을 전달한다. 논리적인 구조로 보았을 때, "껑충껑충 뛰어가는 느낌이 든다"고 해서, 이를 'Hop through netwroks'라고 표현한다.
서로 다른 네트워킹 기술을 기반으로 하는 여러 LAN들과 WAN들이 서로 정보, Bit를 주고 받기 위해선 하나의 통일된 약속, 규격이 필요하다.
Protocol이라는 Software를 각 Router와 Host에 설치하여 서로 다른 네트워킹 기술 간의 소통을 가능케 한다.
Protocol : 하나의 네트워크에서 다른 네트워크로 정보가 전달될 때, Host와 Router가 서로 어떻게 협력(Cooperate)할지에 대한 규칙 모임
Protocol의 임무
Naming Scheme을 제공한다.
Delivery Mechanism을 제공한다.
(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에게 전달된다.
~> 이러한 과정을 익히도록 하자.
금일 포스팅은 여기까지이다.