본문 바로가기
네트워크

[네트워크] 계층구조의 개념

by 서피 2021. 7. 21.

모듈

독립적으로 동작하며, 유기적으로 통합 가능하게 만드는 규격

ex)자동차, 컴퓨터 하드웨어의 부품 규격, 소프트웨어의 함수 및 객체지향 개념

 

계층화된 모듈 구조

하위 계층이 서비스를 제공하며, 상위 계층이 이를 이용한다.

 

모듈화된 계층 프로토콜의 장점

작고 간단한 여러 시스템을 구성하여 크고 복잡한 시스템을 만들 수 있다.

모듈간에 연동할 수 있는 인터페이스를 제공한다.

오류가 발생시 해당 모듈만 교체하여 개선 가능하다. 전체 시스템을 교체할 필요가 없다.

전송매체 양단의 호스트가 수행하는 프로토콜은 상호 대칭이다.

 

프로토콜 설계시 고려할 사항

주소 표현

상대방을 구분할 수 있는 방법이 필요하다. 이 때, 주소가 이용된다.

브로드캐스트(방송): 모두가 볼 수 있다. 수신자에 대한 주소가 필요없다.

멀티캐스트: 특정 그룹만 볼 수 있다. 특정 그룹 식별에 주소를 이용한다.

 

오류 제어 (Error control)

->정상

ABCD 전송 - ABCD 수신

->오류: 분실

ABCD 전송 - 도착하지 않음

->오류: 변형

ABCD 전송 - DCBA 도착

->오류: 중복도착

ABCD 전송 - ABCD, ABCD 도착

 

각 오류에 대한 해결 방안은?

->오류: 분실    해결방안: 응답

수신 호스트에게 정보가 도착하면, 도착했다는 사실을 발신 호스트에게 알림

->오류: 변형    해결방안: 변형을 판단하기 위한 검증 정보 추가전송

각 데이터에 대한 순서 번호를 함께 전송할 수 있다.

->오류: 중복도착    해결방안: 요청에 대한 순서번호를 함께 전송

동일한 번호의 요청이 두 번 도착하는 경우, 한 번은 무시할 수 있다.

 

흐름제어 (flow control)

송수신 호스트의 데이터 처리속도가 다를 경우, 분실이 발생할 수 있다.

->일반적으로 수신 호스트의 부하가 더 크다.

버퍼(대기, buffer)를 이용하면 완화 가능하지만, 버퍼 크기에 제한이 있다.

->송신 호스트가 전송 속도를 조절한다.

->n번째 데이터 송신 후, 수신 호스트가 수신 완료 데이터를 응답하면 n+1번째 데이터를 송신하는 방식이 가능하다.

 

데이터 전달 방식

단방향 (Simplex): 한쪽 방향으로만 송신

송신자 -> 수신자

반이중 (Half duplex): 양방향 전송이 가능하지만, 동시에는 불가능하다. 따라서 데이터 전송 시점 관리가 필요하다.

송신자 -> 수신자, 송신자 <- 수신자

전이중 (Full duplex): 양쪽이 동시에 송신 가능

송신자 <-> 수신자

 

서비스의 종류

연결형

전달경로를 연결하는 과정이 필요하다.

->데이터를 어떤 경로로 보낼지 정하고, 준비를 시키는 과정

해제시에는 해제 과정도 필요하다.

 

 

 

 

비연결형

연결 및 해제 과정없이 바로 데이터를 전송한다.

매 전송마다 다른 경로를 이용하게 될 수도 있다.

 

 

 

 

많은 데이터를 보내야 할 때에는 연결형, 단 건의 데이터를 보낼때는 비연결형이 유리하다.

 

 

서비스 프리미티브

연결형 서비스에서 사용하는 프리미티브

CONNECT: 연결 설정

DATA: 데이터 전송

DISCONNECT: 연결 해제

 

비연결형 서비스에서 사용하는 프리미티브

DATA: 데이터 전송

 

서비스 프리미티브의 기능

Request: 클라이언트가 서버에 서비스를 요구한다. (발신자: 클라이언트)

하위 계층에 대한 요구이다.

CONNECT.request, DATA.request, DISCONNECT.request

Indication: 서버에 서비스 요구가 도착했음을 통지한다. (발신자: 서버)

클라이언트의 Request가 있었다는 것을 상위 계층에 알린다.

CONNECT.indication, DATA.indication, DISCONNECT.indication

Response: 서버가 클라이언트에 서비스를 응답한다. (발신자: 서버)

클라이언트로 응답한다.

CONNECT.response, DATA.response, DISCONNECT.response

Confirm: 클라이언트에 응답이 도착했음을 통지한다. (발신자: 클라이언트)

서버에서 보낸 응답을 클라이언트로 통보한다.

CONNECT.confirm, DATA.confirm, DISCONNECT.confirm

Request, Confirm, Response, Indication

 

[출처]

댓글