. 11.1 클라이언트-서버, 11.2 네트워크
본문 바로가기
프로그래밍 공부/CSPP

11.1 클라이언트-서버, 11.2 네트워크

by 불냥이_ 2021. 1. 22.

11.1 클라이언트-서버 프로그래밍 모델

 모든 네트워크 응용 프로그램은 클라이언트-서버 모델에 기초하고 있다.

서버는 일부 리소스를 관리하고, 이 리소스를 조작해서 클라이언트를 위한 서비스를 제공한다. 클라-서버 모델에서 근본적인 연산은 트랜잭션;Transaction 이다. 이 트랜잭션은 4단계로 구분된다.

 

그림 1. 클라이언트-서버 모델의 트랜잭션

1. 클라가 서비스를 필요로 할 때, 클라는 요청;Request를 서버에 보내는 것으로 트랜잭션을 시작한다. 

2. 서버는 요청을 받고 서버가 행할 수 있는 클라의 요청에 응답할 수 있도록 작업한다.

3. 서버는 응답;Response를 클라로 보낸다.

4. 클라는 응답을 받고 이것을 유저에게 전달할 수 있도록 처리한다.

 

 

11.2 네트워크

 클라이언트와 서버는 종종 별도의 호스트에서 돌아간다. 

 

그림 2. Hub로 연결된 이더넷

 가장 기본적인 네트워크는 LAN;Local Area Network로 가장 알려진 LAN은 이더넷;Ethernet 이다.

이더넷 세그먼트;는 허브의 포트와 각 컴퓨터(호스트의 어댑터)를 이어주는 랜선으로 이어져있으며, 허브는 각 포트에서 수신한 데이터를 다른 포트로 복사한다. (재미있는 사실은 한 포트에서 다른 하나의 포트로 보내는 것이 아니라, 허브에 종속되어있는 모든 포트로 보낸다는 사실이다.) 

 

 각 이더넷 어댑터는 고유의 48비트 주소를 가진다. 호스트는 프레임이라고 부르는 비트들을 세그먼트의 다른 호스트에 보낼 수 있다. 각 프레임은 헤더와 데이터로 구성되어있으며, 헤더에는 프레임의 소스와 목적지, 프레임의 크기가 저장되어 있다. 윗 문단에서 말했듯이 허브에 연결된 모든 호스트들은 이 프레임들을 받지만 실제로 읽는 것은 목적지 호스트 뿐이다.

 

 LAN은 그렇게 많은 호스트들을 수용할 수 없기 때문에, 방 하나나 한 층정도에서 사용된다. 그렇다면 더 많은 호스트들을 서로 연결하기 위해서 어떻게 해야할까?

 

그림 3. 브릿지로 연결된 허브들

 우리는 브릿지를 사용해서 허브들을 연결시켜 줄 수 있다. 대체로 빌딩 하나나 캠퍼스에 브릿지 하나가 들어간다. 그림 3처럼 브릿지로 허브들을 연결시킨다. 이러한 LAN들이 여러개 모이면 브릿지들을 연결시켜주는 것만으로는 감당할 수 없게 된다. 그래서 라우터라는 특별한 컴퓨터가 등장한다. 

 

 라우터는 LAN의 중심에 있으며 광역 LAN을 대표하는 라우터들을 이어줌으로서 WAN;Wide Area Network 우리가 알고있는 인터넷이 발생하게 된다. 아래의 그림은 LAN과 WAN으로 구성된 인터넷의 예이다. 

 

그림 4. LAN과 WAN으로 구성된 작은 인터넷

 

 

  그렇다면 한 호스트가 보낸 데이터를 어떻게 목적지 호스트로 전달할 수 있을까.

이는 프로토콜을 이용해서 호스트와 라우터들이 데이터를 무사히 목적지로 전달할 수 있게한다. 프로토콜은 다음과 같이 구현된다. 

 - 명명법 : 인터넷 프로토콜은 호스트를 유일하게 식별하는 인터넷 주소를 할당한다. 

 - 전달기법 : 인터넷 프로토콜은 헤더와 데이터를 묶는 패킷이라는 통일된 방법으로 전달한다. 

 

 이 두 가지 방법을 사용해서, 비호환적인 네트워크라 할지라도 무사히 데이터를 전달할 수 있도록한다.

 

 

그림 5. 프로토콜 소프트웨어를 통한 데이터 이동 방법

 

 그림 5는 두 개의 LAN으로 구성된 인터넷을 보여준다. LAN1의 호스트A가 LAN2의 호스트B로 데이터를 전송하기 위해서 다음과 같은 8단계를 거친다.

 

1) 호스트 A의 클라는 보낼 데이터를 복사하는 시스템 콜을 호출한다. 

 

2) 호스트 A의 프로토콜 소프트웨어는 인터넷 헤더와 LAN1 프레임 헤더를 추가한다. 인터넷 헤더에는 목적지인 호스트 B의 인터넷 주소가 지정되어있고, LAN1 프레임 헤더에는 라우터 (LAN1과 LAN2를 이어주는 곳) 가 주소로 지정되어 있다. 

 

3) LAN1 어뎁터는 이 프레임을 네트워크로 복사하여 라우터로 보낸다. 

 

4) 프레임이 라우터에 도달하면, 라우터 안의 LAN1 어댑터는 이것을 라우터의 프로토콜 소프트웨어로 복사한다.

 

5) 라우터는 인터넷 페킷 헤더에서 목적지 인터넷 주소를 가져온다. 이제 목적지 주소를 알았음으로 LAN1 의 프레임헤더를 벗겨낸다. (LAN1의 프레임 헤더는 호스트A에서 라우터의 LAN어댑터로 보내기 위해 달았으므로 소기의 목적을 달성했다.) 이제 라우터는 LAN2를 통해서 호스트B까지 데이터를 보내야하므로 LAN2 프레임 헤더를 달아준다. 

 

6) 데이터에 이제 인터넷 헤더와 LAN2 프레임 헤더가 달려있고, 이를 통해 호스트B까지 보내준다. 

 

7) 이 데이터가 호스트 B까지 도착하면 호스트B의 어댑터는 이를 읽어들이고 프로토콜 소프트웨어로 보내준다.

 

8) 마지막으로, 호스트 B의 프로토콜 소프트웨어는 해킷 헤더와 프레임 헤더를 벗겨내고 데이터를 읽는다. 

 

 

 

댓글