데이터 송신자와 수신자 사이에 통신을 하기 위해서 서로 간에 약속이 필요하다
어떻게 데이터를 보낼 것이고 데이터 포맷은 어떻게 할 것이고 등에 대한 전반적인 약속
이처럼 통신망에서 통신을 원하는 양측 시스템에서 데이터를 주고받기 위해
미리 약속된 운영상의 통신 규약이고 데이터 통신 수행 규칙들의 집합이다
구성 요소
프로토콜의 이러한 규약은 송신자와 수신자 간에 구문, 의미, 순서를 규약한다
구문 : 데이터 형식, 신호 레벨, 부호화
의미 : 개체의 조정, 에러 제어 정보
순서 : 순서 제어, 통신 속도 제어
전송 방식
비트 단위 데이터 전송 : 전송 할 때 특수 플래그를 포함시켜 전송하는 방법
SDLC 프로토콜과 HDLC 프로토콜이 있다
바이트 단위 데이터 전송 : 전송을 위한 제어 정보를 데이터 헤더에 포함시켜서 전송
DDCM 프로토콜이 있다
문자 단위 데이터 전송 : 데이터의 시작과 끝에 특수문자를 포함시켜 전송한다
BSC 프로토콜이 있다
통신 프로토콜 중에서 가장 대표적인 것은 ISO에서 정의한 OSI 7게층 프로토콜이 있다
개방형 시스템의 효율적인 네트워크 이용을 위하여, 모든 데이터 통신 기준을 계층으로 분할,
각 계층 간의 필요한 프로토콜을 규정한다
목표 : 정보가 전달되는 Framework를 제공하여 네트워크 형태에 차이가 발생해도 통신을 지원
특징 : 개방형 시스템간의 상호 접속을 위해 표준화된 방법을 제시
OSI 7 계층별로 정보 흐름을 최소화하여 각 계층의 독립성을 향상시켰다
프로토콜의 표준화를 제시하여 효율성 및 생산성을 향상 시켰다
캡슐화 : OSI 7 계층의 각 계층에서 계층에 대한 정보를 헤더에 추가해서
메세지에 헤더를 붙이는 과정
애플리케이션 계층
사용자들이 사용하는 프로그램이 있는 계층
데이터 송신을 위해서 메세지를 만든다
최상위 계층으로 하위 계층의 구조를 몰라도 네트워크를 사용할 수 있다
HTTP(인터넷), FTP(파일), SNMP(네트워크 모니터링), SMTP(전자우편) 와 같은 프로토콜이 있다
사용자에게 최종 서비스를 제공한다
표현 계층
애플리케이션에서 전송한 메세지에 대해 코드화를 수행
사전에 정해진 코드로 변환
메세지를 압축하여 데이터량을 줄인다
스니핑을 방지하기 위해 암호화를 수행한다
포맷기능, 압축, 암호화 수행
텍스트 및 그래픽 정보를 컴퓨터가 이해할 수 있는 16진수 데이터로 변환
세션 계층
송수신자 간에 통신을 위해 동기화 신호를 주고받는다
세션 연결을 하고 가상 연결을 제공한다
통신 방식인 단순, 반이중, 전이중 방식을 결정한다
가상 연결을 제공하여 Login/Logout 수행
전송 계층
송수신자 간에 논리적 연결을 수행한다
종단 간에 연결을 관리한다
전송 계층의 프로토콜은 TCP와 UDP가 있다
종단간 에러를 탐지하고 재전송하는 방법으로 에러를 수정한다
TCP와 UDP는 헤더와 함께 데이터에 에러가 있는지 확인한다
가상 연결, 에러제어, Data 흐름제어, Segment 단위
신뢰도, 품질 보증, 오류 탐지 및 교정기능 제공
다중화 발생
네트워크 계층
수신자의 IP 주소를 읽어서 라우터가 경로를 결정한다
최단경로 알고리즘과 같은 라우팅 알고리즘을 사용하여 경로가 설정되면 포워딩한다
IPv4, IPv6 주소가 있다
네트워크의 에러 확인을 위해서 ICMP 프로토콜을 사용한다
데이터 흐름 조절, 주소 지정 매커니즘 구현, 노드에 전송되는 패킷 흐름을 통제,
상태 메세지가 네트워크 상에서 어떻게 노드로 전송되는가를 정의
Datagram 단위
데이터 링크 계층
네트워크 계층에서 붙인 IP 헤더에서 IP주소를 읽어 하드웨어 주소인 MAC 주소를 구한다
에러를 탐지하고 교정한다
네트워크에 부하가 발생하지 않도록 흐름제어를 한다
물리 주소 결정, 에러제어, 흐름 제어, 데이터 전송
Frame 단위, 전송 오류를 처리하는 최초의 계층
물리 계층
물리적 선로로 전송하기 위해서 전기적 신호인 비트로 데이터를 전송한다
만약 전송 거리가 멀면 리피터와 같은 장치를 사용하여 신호를 증폭시킨다
전기적, 기계적 연결 정의, 실제 Data Bit 전송
Bit 단위, 전기적 신호, 전압구성, 케이블, 인터페이스 등을 구성
End to End : 7~4 계층, 송수신자 간의 에러 제어
Point to Point : 3~1 계층, 각 구간에 대해 에러 제어
물리 계층
Cable : Twisted Pair, Coaxial, Fiber-Optic Cable
Repeater : 네트워크 구간의 케이블의 전기적 신호를 재생하고 증폭
디지털 신호제공, 아날로그 신호 증폭시 잡음과 왜곡까지 증폭
데이터 링크 계층
Bridge : 서로 다른 LAN Segment를 연결, 관리자에게 MAC 주소 기반 필터링 제공
더 나은 대역폭 사용과 트래픽 통제, 리피터와 같이 신호를 증폭하나 MAC 기반에서 동작
Switch : 목적지의 MAC 주소를 알고있는 지정된 포트로 데이터를 전송
리피터와 브릿지의 기능을 결합, 네트워크의 속도 및 효율적 운영
네트워크 계층
Router : 패킷을 받아 경로를 설정하고 패킷을 전달
브릿지는 MAC주소를 참조하나 라우터는 네트워크 주소까지 참조하여 경로 설정
IP 주소를 확인하여 목적지 네트워크로만 전달하여 Broadcastion을 차단한다
애플리케이션 계층
GateWay : 서로 다른 네트워크 망과의 연결(PSTN, Internet, Wireless Network 등)
패킷 헤더의 주소 및 포트 외의 거의 모든 정보를 참조한다
에러가 발생하면 우선 에러가 발생했는지 탐지하고 그 다음 에러를 수정해야 한다
수신 받은 데이터에 에러가 없는지 확인하는 것은 FEC(Forward Error Correction)이라 하고
수신자가 데이터를 수신 받지 못하면 재전송해야하는데 이를 BEC(Backward Error Correction) 라고 한다
오류 검출 및 정정 코드
해밍코드 : 오류 발견 및 교정이 가능한 코드, 1비트의 에러 검출 및 교정
CRC코드 : 데이터 통신에서 전송 중에 오류가 발생했는지를 확인하기 위해서 덧붙이는 코드
패리티 비트 : 하나의 비트로 코드의 에러를 검출하는 것, 데이터 내의 Set(1) 비트 수를 체크하여
짝수와 홀수에 따라 코드를 그대로 두거나 1비트를 추가하여 에러를 검출
가장 간단한 방법은 패리티 검사이다
특정 합계를 게산하여 합이 맞는지 확인하는 블록합계 검사도 있다
수정까지 할 수 있는 기법은 해밍코드 이나, 실제 많이 사용되는 방법은 CRC 기법이다
이는 Check Sum 비트를 전송하여 수신자가 연산하여 에러 여부를 확인하는 것으로
무선 LAN과 이더넷 프레임에서 사용한다
오류를 검출하여, 오류를 재전송 요구 없이 수정하며, 역 채널이 필요없고, 연속적인 데이터 전송이 가능하다
오류 검출 및 수정을 위한 잉여 비트들이 추가 전송되므로 전송 효율이 감소한다
해밍 코드와 상승 코드 방식이 있다
BEC 기법
수신 측이 에러 검출 후 송신측에게 에러가 발생한 데이터 블록을 다시 전송 요청하는 방식
송신 측이 에러 처리 (ARQ : Auto Repeat reQuest)
패리티 검사, CRC 등 Checksum을 이용하여 오류 검출 후 오류 제어는 ARQ가 처리한다
Stop and Wait, Go-Back-N, Selective Repeat ARQ, Adaptive ARQ가 있다
Stop and Wait 방식 : 송신자가 데이터를 전송하고 수신응답이 오면 다음 데이터를 전송한다
에러 발생 즉시 재전송, 순차적으로 수신한다
가장 단순한 구현이며, 신뢰성이 있는 전송이나 대기 시간 존재로 전송 효율이 저하된다
Go-Back-N 방식 : 수신자가 데이터를 수신받지 못할 경우
마지막으로 수신받은 데이터 이후의 모든 데이터를 재전송하는 방식으로
TCP프로토콜에서 사용하는 방법이다
프레임의 송신 순서와 수신 순서가 동일해야 수신한다
구현이 간단하며, 수신 측 버퍼 사용량이 적다
Selective Repeat 방식 : 수신자가 수신 받은 데이터 중에서
중간에 빠져 있는 것만 재전송하는 방식으로 에러를 처리
순서와 상관없이 윈도우 크기만큼의 범위 내에서 자유롭게 수신한다
구현이 복잡하며, 버퍼 사용량이 크나, 재전송 대역폭이 적다