September 30, 2020
참고도서: 컴퓨터 네트워킹 : 하향식 접근. 7판. James F. Kurose , Keith W.Ross 지음
네트워크 어플리케이션의 구조는 어플리케이션 개발자에 의해서 이 어플리케이션이 여러 end system에서 어떻게 구성되어야 하는지에 대해 담고있다. 일반적으로 클라이언트-서버 구조 와 P2P 구조를 사용한다.
서버: 항상 켜져있는 호스트클라이언트: 서버에 요청을 보내는 호스트클라이언트끼리는 통신하지 않고 항상 서버를 거쳐 통신하게 된다.고정 IP 주소를 사용한다.데이터 센터 라고 한다.피어(peer)라고 한다.자가확장성(self-scalability)를 가지고 있다. 자가 확장성이란 피어가 파일을 다른 피어들에게 분배해서 서비스 능력을 향상시키는 것을 의미한다.네트워크 통신을 수행하는 것은 호스트이지만 엄밀히 따져보면 호스트에서 실행되고 있는 프로세스라는 표현이 더 맞을 것이다. 그리고 통신을 하는 두 프로로세스는 메세지 교환 방식으로 서로 통신한다.
클라이언트 라고 하고 세션을 시작하기 위해 접속을 기다리는 프로세스를 서버 라고 한다.소켓(socket)을 이용한다.API(Application Programming Interface) 라고 부를 수 있다.IP 주소로 식별하고, 호스트 내에 수신 프로세스를 식별하기 위해 포트를 사용한다.80번 이고, 이런 포트번호를 well-known 포트 번호라고 한다.어플리케이션에서 소켓을 거쳐 트랜스포트 계층에 도달한 메세지는 네트워크를 통해 해당 메세지를 목적지로 이동시켜야 한다. 트랜스포트 계층은 메세지 전달을 위해서 다양한 트랜스포트 프로토콜 중 하나를 선택해서 사용하게 된다. 이 트랜스포트 서비스가 제공해야할 서비스들은 다음과 같은 기준으로 분류할 수 있다.
신뢰적 데이터 전송(Reliable Data Transfer)을 제공한다고 할 수 있다.손실 허용 어플이케이션(Loss-tolerant Application) 은 어느정도의 데이터 손실이 발생하더라도 데이터를 전송할 수 있게 한다.Throughput(처리량)은 송신 프로세스가 수신 프로세스로 비트를 전달할 수 있는 비율을 나타낸다.대역폭 민감 어플리케이션(Bandwidth-sensitive Application) 이라고 한다. 예를 들어 인터넷 전화와 같은 어플리케이션들은 일정한 처리량으로 음성을 인코딩하기 때문에 네트워크가 해당 처리량보다 낮은 처리량을 제공한다면 어플리케이션을 사용할 수 없을 것이다.탄력적 어플리케이션(Elastic Application)은 가용한 처리율을 모두 사용해서 데이터를 전송하게 된다. 예를 들어 파일 전송과 같은 경우에는 처리량에 상관없이 현재 속도를 모두 사용하면서 데이터를 송수신하게 된다.시간 보장(timing quarantee)을 제공하기도 한다.연결지향형 서비스(Connection-oriented Service) 를 제공한다. 연결지향형 서비스는 메세지가 전달되기 전에 클라이언트와 서버가 전송제어정보를 교환해서 연결을 미리 설정한다.핸드셰이킹(Handshaking) 이라고 한다.전이중(full-duplex) 연결이라고 한다.Congestion Control 을 제공한다. Congestion Control 은 네트워크가 처리할 수 있는 양 이상의 정보가 라우터에 들어오게 되면 sender 에게 메세지를 보내서 보내는 송신하는 데이터 전송량을 낮추게끔 한다.Flow Control 역시도 제공하는데, Flow Control 은 end-to-end 사이에 수신버퍼의 overflow를 제한하는 방법인데, 송신측의 속도가 너무 빠를 경우에 송신 측의 데이터 전송량을 수신측에 맞추어 조절하는 기능을 한다.Congestion Control 은 네트워크 라우터의 데이터 처리량이 송신측의 전송량을 모두 처리하기 어려운 상황에서 송신측의 전송량을 줄이는 방법이고, Flow Control 은 송신측의 전송량이 수신측의 데이터 처리 속도보다 빠른 상황에서 송신측의 전송량을 줄이는 방법이다.신뢰적 데이터 전송 서비스(Reliable Transport) 를 제공한다. 신회적 데이터 전송 서비스는 프로세스가 모든 데이터를 오류없이, 그리고 올바른 순서대로 전달하는 것을 보장한다.