




모듈화의 장점은 재사용성이 용의하다는 점이다.
우리가 필요한 기능을 붙이고 때고를 할 수 있기 때문에 모듈화는 큰 도움이 된다.
하드웨어 측면에서 모듈화는 작은 부품들이 모여 하나의 시스템을 구성하는 것이고
소프트웨어 측면에서 모듈화는 언어에서 함수 개념을 사용해 전체 프로그램을 모듈화할 수 있다는 것이다.

그럼 시스템 모듈화의 장점은 한 부분만 고장 나도 전체 시스템이 아닌 고장난 부분만 교체하면 된다는 것이다.
우리가 물리 계층에서 데이터를 보낼 때 발생되는 오류를 제어하는 방식이 마음에 안 들면 그 프로토콜만 빼서 새롭게 업데이트한 프로토콜을 넣으면 되는 것이 모듈화의 장점이다.
그래서 이러한 모듈화의 장점을 이용해서 만든 것이 지금의 7계층 모델, 5계층 모델이다.

이렇게 계층으로 나눈
계층 구조에서
상위 계층이 하위 계층한테 기본적으로 서비스를 요청하고
하위 계층은 상위 계층에세 서비스를 제공해주어야 한다.

이건 한 번 읽어보고 넘기기

계층 구조의 통신 프로토콜을 설계할 때 대표적으로 고려해야 할 요소가
3가지이다.
먼저 주소 표현에 대해 보자.
주소 = 상대를 구분하기 위해 사용
주소 체계를 어떻게 할 것인지,
주소를 표현할 때 개인과 그룹을 나누어 주소를 표현하는데
IP 주소에서도 호스트마다 주소를 하나씩 부여하기도 하고 다수의 호스트로 묶어서 하나의 그룹 주소로 표기하기도 한다.
그래서 그룹과 개인을 따로 구분지어 주소를 표현할 것이냐 아니냐를 고려해야 한다.

A가 B에게 데이터를 보내는데 받는 입장인 B는 데이터가 뒤바뀌었는지 손실된 것인지 알지 못함.
따라서 데이터의 오류를 인지하는 것이 가장 먼저이고
이후 재전송을 통해 오류 복구 절차가 이루어짐.
즉 오류를 먼저 인지하고 재전송을 하는 방식으로 오류 복구 절차가 진행되는데
이때 어떤 식으로 오류를 인지하고 재전송을 할 때도 어떤 방식으로 재전송을 요청할 것인지에 대해 고려하는 부분이 바로 오류 제어 방법이다.

통신할 때 발생하는 현상 3가지
정상
분실
변형
2번과 3번이 오류라고 부르고
해결 방법은 재전송임.

흐름 제어 = 송신 호스트의 전송 속도를 조절하는 흐름 제어 기능이 필요
수신 호스트의 버퍼 처리 속도보다 송신 호스트의 데이터를 전송하는 속도가 더 빠르면 논리적인 데이터 분실 오류가 발생함.
WHY?
수신 호스트 버퍼에 저장된 데이터를 아직 처리하지 못했는데 새로운 데이터가 오면 새로운 데이터를 저장할 공간이 없기 때문

그래서 송신 호스트가 데이터를 전송하려면 반드시 수신 호스트로부터 명시적인 전송 허가를 받아야 한다.
하지만 이런 방법은 데이터를 보내고 수신에서 다시 데이터를 보내도 된다고 데이터를 또 보내야 하기 때문에 너무 느려 사용되지 않음.

데이터를 전달하는 방식은 크게 3가지로 나뉜다.
전이중 방식 : 양쪽에서 데이터를 동시에 전송하는 것
반이중 방식 : 데이터가 양방향으로 전송되지만 특정 시점에서는 한 방향으로만 전송할 수 있는 것(양방향은 가능하지만 동시에는 불가능 = 무전기)
단방향 방식 : 데이터를 오른쪽이나 왼쪽의 한 방향으로만 전송하는 것

프로토콜
프리미티브 = 프로토콜을 설계할 때 가장 기본적으로 해야 되는 기초적인 동작
간단하게 프로토콜을 설계할 때 프로토콜이 무언가 목적을 가지고 있을 것인데
그 목적을 수행하기 위해서 모든 프로토콜이 기본적으로 가져야 하는 최소한의 조건, 단계를
서비스 프리미티브 라고 한다.
프로토콜이 최소한의 갖추어야 할 소양이 연결형과 비연결형 2개로 나뉜다.
연결형 = A가 D에게 데이터를 보낼 때 B와 C를 거쳐 데이터를 보내도록 경로를 준비
비연결형 = A가 D에게 데이터를 보내는데 데이터가 알아서 길을 찾아가도록 두는 것
이 2가지 방법에 따라 프로토콜이 갖춰야 할 소양이 다르다.
연결형의 기초 소양 3가지
과정대로 먼저 데이터를 보내기 위한 연결을 설정, 데이터를 전송, 연결한 길을 해제하는 과정이다.
비연결형의 기초 소양
비연결형은 데이터를 보내기 위한 연결을 설정하지 않고 준비하지 않고 단지 데이터만 전송함.

통신 프로토콜에서 프리미티브를 올바르게 수행하려면각 프리미티브가 4가지 기능을 포함하도록 설계해야 함.
위에서 말한 연결형, 비연결형 서비스도 프리미티브가 정상적으로 수행되려면 기본적으로 위 4가지 기능은 갖추고 있어야 한다.

위 그림이 4 기능의 진행 순서를 보여준다.
차하위 계층 = 물리 계층

중간고사 느낌의 문제가 있으니 한 번 읽어보기
예를 들어


위 사진을 보면 우리가 보던 7계층 모델에서 내려갈수록 추가적인 정보가 머리에 붙는 것을 볼 수 있다.
이것을 헤더라고 부른다.
그리고 뒤에 있는 정보를 트레일러라고 부른다.
데이터가 전송되어 상대방에게 도착하면 아래 계층에서 위의 계층으로 올라가면서 헤더가 점점 떨어지는 것을 확인할 수 있다.
그리고 각 계층 마다 계층 n 프로토콜이라고 적혀 있는데 이는 각각의 계층에 대한 프로토콜을 부르는 말이다.
물리 계층은 계층 1 프로토콜, 응용 계층은 계층 7 프로토콜이라고 부른다.


헤더 정보는 프로토콜마다 다르게 정의되며
헤더 정보에는 주소, 오류 제어, 흐름 제어를 위한 정보들이 포함된다.
우리가 네트워크 계층에서 주소 표현이라고 했을 때 IP 주소가 헤더 정보에 붙는다.