본 자료 정리는 '쉽게 배우는 데이터 통신과 컴퓨터 네트워크(개정판)' 원서에 출처합니다.
Copyright © 한빛 아카데미.
모듈화
복잡한 시스템을 기능별로 모듈화하면 시스템 구조가 단순해짐
프로그래밍 언어에서는 함수 개념을 사용해 전체 프로그램을 모듈화함
-> 매개변수에 의한 인터페이스로 이해가 용이함, 나만의 라이브러리 생성가능
모듈화의 장점: 설계의 독립성(재활용성), 디버깅의 용이, 유지보수 성능 개선
다음 그림은 시스템 모듈화의 장점: 전체 수정교체가 아닌 모듈 B만 처리
계층 구조
특정 모듈이 다른 모듈에 서비스를 제공하는 형식의 계층 구조: 추상화수준의 차이, Granulartiy 고려, 일의 절차나 기능으로도 구분
네트워크에서도 독립적인 고유 기능을 수행하는 모듈들이 상하위의 계층 구조(Layered Structure)로 연결되어 동작
모듈화된 계층 구조 프로토콜의 장점
전체 시스템을 이해하기 쉽고, 설계 및 구현이 용이: 작은 시스템으로 재구성 가능
모듈간의 표준 인터페이스를 제공. 이 인터페이스가 단순하면 모듈의 독립성이 향상됨 -> 모듈의 독립성은 시스템 구조를 단순화 -> 설계와 유지보수에 큰 장점이 됨
전송매체 양단의 프로토콜은 좌우 대칭구조의 특징 -> 대칭 구조에서는 동일 계층 사이의 인터페이스인 프로토콜을 단순화시킬 수 있음
각 계층의 오류 수정 또는 기능 개선 시, 특정 모듈만 교체하면 됨 -> 특정 모듈의 외부 인터페이스가 변하지 않으면 내부 기능의 변화가 전체 시스템의 동작에 영향을 미치지 않음
: 대표적인 것 -> 네트워크 호스트의 주소 표현방법, 데이터 전송 오류제어(데이터 분실, 변형 등의 복구), 통신 양단의 속도를 제어하는 흐름제어
주소표현
주소(Address)체계: 시스템을 구분하여 지칭하기 위해 이름을 부여하는 것
주소의 역할: 서로를 구분하여 목적지를 정하기 위함
주소의 활용도를 높이기 위하여 구조적 정보를 포함
일대일(1:1) 통신이 기본
다수의 호스트를 묶어 하나의 그룹주소로도 표시
일대다(1:n) 통신도 지원
오류제어(Error Control): 전송매체의 물리적 오류, 논리적 전송 오류
데이터 번형 오류: 데이터가 깨져서 도착
데이터 분실 오류: 데이터가 도착하지 못함
오류 제어기능은 통신 프로토콜의 가장 기본적인 기능
오류가 발생하는 1차원인: 전송매체에 의한 물리적 오류(바로 위 상위계층인 데이터 링크계층에서 물리적 전송오류를 해결함)
기타 상위계층의 논리적오류도 발생: 상위계층에서 해결
가장 일반적인 오류복구 방법: 재전송(Retransmission)
*(b) 분실되는 경우: 전송경로 오류, 상위계층의 논리적 처리 오류, 수신 호스트가 분실되었음을 알리기 쉽지 않음 -> 송신 호스트가 오류 감지
*논리적 오류의 예: 송신 호스트가 보낸 순차적 데이터의 순서가 뒤바뀌는 경우
-> 데이터의 순서를 나타내는 순서번호 필요
흐름 제어(Flow Control)
송수신 호스트의 처리속도 차이: 수신 호스트의 버퍼 처리 속도보다 송신 호스트가 데이터를 전송하는 속도가 빠르면 논리적인 데이터 분실 오류가 발생할 수 있음
(수신 호스트의 내부 입력 버퍼 용량부족 등: 수신 호스트의 CPU가 데이터를 가져가기 전 수신호스트의 내부 입력 버퍼의 내용이 업데이트될 수 있음)
따라서 송신 호스트의 전송 속도를 조절하는 흐름 제어기능이 필요: 수신 호스트의 전송허가를 확인 후, 다음 데이터를 송신호스트가 전송
데이터 전달 방식: 프로토콜 설계 시 고려사항
단방향(Simplex): 데이터를 한 쪽 방향으로만 전송
전이중(Full Duplex): 데이터를 양쪽에서 동시에 전송, 보통의 프로토콜이 지원하는 방식
반이중(Half Duplex): 양방향으로 전송할 수 있지만, 특정 시점에서는 한쪽 방향으로만 전송, 양쪽이 동시에 전송을 못하므로 전송시점의 제어가 가능해야 함
데이터 사이의 전송 우선순위 설정방법이나, 긴급 데이터 전송방식도 고려해야 함
서비스 프리미티브 (Primitive)
계층 구조 프로토콜에서 하위 계층이 상위 계층에 제공하는 서비스의 종류에는 연결형과 비연결형이 있으며 서비스 프리미티브 형태로 구현됨
연결형 서비스
연결형 서비스를 이용하는 3단계: 서비스 프리미티브를 암기할 것
비연결형 서비스
서비스 프리미티브의 기능
서비스 프리미티브의 동작 원리
Request: 연결 설정 요청, 데이터 전송 요청, 연결 해제 요청
(= CONNECT.Request, DATA.Request, DISCONNECT.Request)
Indication: 연결 설정 요청, 데이터 전송 요청, 연결 해제 요청
(= CONNECT.Indication, DATA.Indication, DISCONNECT.Indication)
Response: 연결 설정 요청, 데이터 전송 요청, 연결 해제 요청
(= CONNECT.Response, DATA.Reponse, DISCONNECT.Response)
Confirm: 연결 설정 요청, 데이터 전송 요청, 연결 해제 요청
(= CONNECT.Confirm, DATA.Confirm, DISCONNECT.Confirm)
OSI(Open System Interconnection) 7-Layer Model
라우팅: 경로 배정 기능, 라우터 좌우의 네트워크가 다를 경우 헤더 정보 값을 변환하는 작업도 라우터가 수행함
계층 별 기능: 전송 계층이 제일 중요 -> End-to-End 프로세스 연결
: 1~4 계층은 OS 내부에서 처리, 5~7 계층은 사용자 프로그램으로 구현
물리 계층 (Physical Layer)
데이터 링크 계층 (Data Link Layer)
네트워크 계층 (Network Layer)
전송 계층 (Transport Layer)
세션 계층 (Session Layer)
표현 계층 (Presentation Layer)
응용 계층 (Application Layer)
시스템 공간 (계층 1~4)
TCP(연결형 서비스 제공)와 UDP(비연결형 서비스 제공)는 시스템 운영체제인 커널 내부에 구현됨
네트워크 계층은 IP로 구현, 전송 패킷의 올바른 경로 선택 기능을 제공
사용자 공간 (계층 5~7)
사용자 프로그램으로 구현
전송 계층의 기능을 제공하는 소켓(socket) 시스템 콜을 호출해 TCP와 UDP 기능을 사용: Socket Interface라는 전송계층의 프리미티브를 사용하여 응용 프로그램을 작성
프로그램에서 소켓 사용시 소켓마다 부여되는 고유주소인 포트번호를 관리해야함: 포트번호 하나와 사용자 프로그램 하나가 일대일로 대응
-> 인터넷 응용 프로그램의 고유주소 = IP주소+포트번호
TCP/IP 계층 구조
ARP와 RARP
ICMP
수정해야될 사항이 있을경우 댓글로 알려주세요 :)