컴퓨터 시스템/CSAPP

네트워크 프로그래밍

bewisesh91 2021. 12. 16. 15:06
728x90

클라이언트-서버 모델

대부분의 네트워크 응용 프로그램은 클라이언트-서버 모델에 기반하고 있다.  해당 모델은 한 개의 서버 프로세스와 한 개 이상의

클라이언트 프로세스로 구성되며, 서버는 리소스를 관리하고, 이 리소스를 조작해서 클라이언트를 위한 서비스를 제공한다.

서버는 클라이언트의 요청에 의해서 활성화된다. 클라이언트 서버 모델에서 근본적인 연산은 트랜잭션(Transaction)이다.

트랜잭션은 아래와 같이 네 단계로 구성된다.

 

네트워크 호스트의 하드웨어 구성

클라이언트와 서버는 많은 경우 별도의 호스트에서 동작하며, 컴퓨터 네트워크의 하드웨어 및 소프트웨어 자원을 사용해서 통신한다.

호스트에게 있어 네트워크는 또 다른 종류의 I/O 장치이며, I/O 버스 확장 슬롯에 꽃혀 있는 어댑터를 물리적 인터페이스로 이용한다.

네트워크에서 수신한 데이터는 어뎁터, I/O 버스, 메모리 버스를 거쳐 메모리로 이동한다. 

 

컴퓨터 네트워크

네트워크는 박스와 와이어로 구성된 계층적 시스템이라고 할 수 있다. 하위수준의 네트워크는 LAN(Local Area Network)로

빌딩이나 캠퍼스 수준에서 설치된다. 이더넷(Ethernet)은 가장 대중적인 LAN 기술로서 대개 방이나 빌딩의 층과 같이 작은 지역에

설치한다. 아래 그림과 같이 허브에 와이어로 연결된 여러개의 호스트들로 구성된다.

 

 

각 이더넷 어뎁터는 어댑터의 비휘발성 메모리에 고유한 48비트 주소를 지닌다. 호스트는 프레임이라고 부르는 비트들을 다른

호스트에게 보낼 수 있다. 각 프레임은 프레임의 소스와 목적지, 길이 등을 식별할 수 있는 헤더 비트와 데이터 비트로 구성된다.

다수의 이더넷 세그멘트를 와이어와 브릿지를 이용하여 연결하면 브릿지형 이더넷이라고 하는 더 큰 LAN을 구성할 수 있다.

브릿지 이더넷은 전체 빌딩이나 캠퍼스 규모로 설치될 수 있다.

다수의 비호환성 LAN들은 라우터라고 부르는 특별한 컴퓨터에 의해서 연결될 수 있으며, 라우터는 네트워크 간 연결을 구성한다.

LAN보다 지리적으로 더 넓은 지역에서 운용되기 때문에 이를 WAN(Wide Area Network)라고 부르며, 연결된 네트워크들은

internet(소문자)으로 불린다. internet의 중요한 특징은 매우 다르고 비호환적인 기술을 갖는 여러 가지 LAN과 WAN들로

이루어져 있다는 점이다. 아래는 세 개의 라우터로 연결된 internet의 예이다. 

 

상호 비호환적인 기술을 갖는 LAN과 WAN 사이의 데이터 전송은 각각의 호스트와 라우터들에서 실행되고 있는 프로토콜 

소프트웨어에 의해 가능해진다. 이 소프트웨어는 어떻게 호스트들과 라우터들이 데이터를 전송하기 위해 협력해야 하는지 결정하는

프로토콜을 구현한 것이다. 해당 프로토콜은 아래 두 가지를 제공한다.

internet에서 데이터가 하나의 호스트에서 다른 호스트로 이동하는 과정은 아래 그림과 같다.