프로토콜
프로토콜(protocol)이란 표준화된 절차를 서술한 규칙의 체계를 말한다. 규약(規約)이라고 한다. 일반적으로 통신 프로토콜을 의미한다. 통신 프로토콜은 네트워크상 통신 회선을 통해 컴퓨터, 단말기와 같은 시스템 간에 내부적으로 통신, 접속하기 위하여 정보, 자료, 메시지 등을 주고받는 프로토콜이다.[1]
목차
개요
공통의 데이터 교환 방법 및 순서에 대해 정의한 의사소통 약속, 규약 혹은 규칙 체계를 말한다. 프로토콜 종류는 여러 가지가 있지만, 일반적으로 프로토콜을 이야기 할 때는 통신 프로토콜을 의미한다. 통신 프로토콜 또는 통신 규약은 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고받는 양식과 규칙의 체계를 뜻한다. 신호 체계, 인증, 오류 감지 및 수정 기능 등을 포함할 수 있다. 비단 언어뿐만이 아니라, 데이터가 어떤 과정과 절차를 통해 송신했는지, 수신측에서는 어떻게 원래의 데이터로 복구할 수 있는지와 같은 약속도 포함된다.[2] 프로토콜을 정의하는 기관으로는 IEEE(Institute of Electrical Electronic Engineers), ISO(International Organization standardization), EIA(Electronic Industries Organization) 등이 있다. 프로토콜은 통신을 위한 물리적, 소프트웨어적 등 여러 가지 조건을 취하여 결정한다. 동일한 통신망에 연결되어 있더라도, 같은 프로토콜을 이용하는 컴퓨터들 사이에만 통신할 수 있다. 컴퓨터끼리 혹은 컴퓨터와 단말기 사이의 정보 교환이 필요한 경우, 상호 간에 접속되어 정보의 오류를 없애거나 최소화함으로써 정보를 원활하게 교환하게 해주는 여러 가지 통신 규칙과 방법의 집합이고, 상호 간에 이해할 수 있는 의미 내용을 신뢰성이 유지되도록 표현하는 형식이다. 이기종간의 정보통신을 하려면, 표준 프로토톨을 설정하여 통신망을 구축해야 한다. 단순한 메시지 전송 이외에 다른 노드 안에 있는 복수의 프로세스 끼리 파일이나 데이터베이스 등에 대한 접근과 처리 신청까지 포함한 통신기능을 실현하려면, 각종 제어정보 수수에 관한 약속을 사전에 엄밀히 정해 두기 위하여 프로토콜을 사용해야 한다.[1] 프로토콜의 구성 요소에는 구문(syntax), 의미(sematic), 타이밍(timing)이 있다. 구문은 데이터를 어떻게 구성할 지에 대한 형식, 구체적인 코딩 방법, 신호 레벨 등에 대한 형식을 규정한다. 의미는 데이터에 대하여 구체적으로 어떻게 제어할 것인지에 대한 처리 방법과 에러가 발생했을 때 어떻게 처리할 것인가에 대한 정보를 포함한다. 타이밍은 통신이 이루어질 때 데이터를 주고받을 속도에 대한 조절과, 여러 데이터가 동시에 통신을 해야 할 경우 순서 관리를 위한 기법을 포함한다.[2]
특징
네트워크는 여러 가지 계층으로 나누어져 있고, 각 계층마다 프로토콜이 하는 기능이 다른데, 계층적 역할의 관점에서 보면 물리적인 역할을 하는 측면과, 논리적인 역할을 하는 측면 두 가지로 볼 수 있다. 물리적 측면에서 프로토콜은 자료 전송에 쓰이는 전송 매체, 접속용 단자 및 전송신호, 회신규격 등을 말한다. 논리적 측면에서의 프로토콜은 프레임의 구성, 프레임 안에 있는 각 항목의 뜻과 기능, 자료 전송의 절차 등을 담는다. 논리적인 측면에서의 프로토콜은 폐쇄적인 프로토콜과 공개된 범용 프로토콜로 나눌 수 있다. 폐쇄적인 프로토콜은 자사 장치들끼리 통신하기 위한 독자적인 통신 규약이며, 자세한 규격이 공개되어 있지 않아, 크래킹 위협에 상대적으로 안전하다. 공개된 범용 프로토콜은 여러 장치에 쓰이는 널리 알려진 규격이며, 규격이 널리 공개되어 있어, 컴퓨터와 네트워크 크래킹에 취약한 편이다.[2] 같은 프로토콜을 사용하면 기종이나 모델이 달라도 컴퓨터 상호 간에 통신할 수 있게 되고, 각각의 컴퓨터상에서 다른 프로그램을 사용하고 있더라도 컴퓨터 사이에서 데이터의 의미를 일치시켜 프로그램을 동작시킬 수 있게 된다. 예전에는 각국의 각 기업에서 독자적인 프로토콜을 만들었지만, 타사 혹은 타국과의 통신이 어려워지면서, 국제적으로 프로토콜의 표준화가 시도되었다. ISO에서 개방형 시스템 간 상호접속(OSI)에 관하여 7계층으로 나눈 프로토콜을 검토하였다.[1] 특성에 따라 직접 프로토콜과 간접 프로토콜, 단일체 프로토콜과 구조적 프로토콜, 대칭 프로토콜과 비대칭 프로토콜 등이 있다.
기능
- 주소설정(Addressing): 통신을 하기 위해서는 통신의 대상이 누구인지를 알아야 데이터를 전송할 수 있고, 프로토콜에는 각 전송 계층에 맞는 주소를 지정하는 기능이 있다.
- 순서제어(Sequence Control): 데이터가 전송될 때는 PDU(Protocol Data Unit)을 통해서 하나의 데이터를 여러 개의 각 프로토콜에 맞는 단위로 쪼개어 전송하게 된다. 순서제어란 프로토콜 데이터 단위가 전송될 때 순서를 명시하는 기능이며, 연결 지향형에만 사용한다. 순서를 지정하는 이유는 흐름제어, 혼잡제어, 오류제어를 위해서다. 순서제어에 의해서 정해진 PDU를 수신측에 보내면 순서에 맞게 데이터를 재구성한하고, 오류가 있을 경우 재전송을 요청한다. 해커는 순서가 뒤죽박죽인 패킷을 생성하여 보내, 시스템 과부하를 야기하기도 한다.
- 분할 및 재조립(Fragmentation&Reassembly): 데이터의 크기와 종류는 다양한데, 한꺼번에 덩어리가 큰 데이터를 전달하는 것은 통신에 있어서 비효율적이기 때문에 하나의 데이터를 전송 효율이 높은 작은 단위로 분할하여 전송하고 수신측에서는 해당 데이터를 사용하기 위해 재조립하는 과정을 거친다. 해커는 이런 과정에서 데이터 분할 기능을 이용해 대량의 패킷을 공격 재상에 보내기도 하고, 재조합 불가능한 데이터를 보내 혼란에 빠뜨리기도 한다.
- 캡슐화(Encapsulation): 순서제어에서 언급한 PDU는 PCI(Protocol Control Unit)와 SDU(Sercive Data Unit)으로 구성된다. PCI는 발신지 주소, 수신지 주소, 순서 번호, FCS등 각종 헤더 정보를 담고 있고, SDU에는 실제 서비스 데이터 정보를 담고 있다. 통신을 구성하는 각각의 계층을 통과하기 위해서는 캡슐화를 통해 포장하는 과정을 거치며, 데이터를 사용하기 위해서는 캡슐화된 데이터는 수신측에서 역캡슐화 하는 과정을 통해 각각의 계층을 통과한다. 캡슐화는 해커로부터 자신의 통신 내용을 숨길 수 있게 해준다.
- 흐름 제어(Flow Control): 송신측에서 오는 데이터의 양이나 속도를 조절하는 기능이다. 송신과 수신에 있어서 속도차이로 인한 데이터의 유실을 방지한다. 송신 노드의 송신 속도가 수신노드 측의 처리 속도, 처리 능력을 고려하여서, 송신자가 정보를 내보낼 때 상대방이 수신할 수 있는 만큼만 효율적으로 전송해서, 이를 초과로 수신 장치의 데이터가 넘치지 않아 상호 간에 데이터 손실이 발생하지 않도록 전송되는 정보 흐름의 양, 속도를 조절, 조정, 제어하기 위한 송신장치 제어 방법 혹은 기술이다. 정리하자면, 수신 장치가 모든 송신장치로부터 받은 데이터를 수신 장치의 버퍼에서 처리하기 전에 송신장치로부터 수신 장치에게 다른 데이터가 추가적으로 전송되지 않도록 제어하는 방식이다. 수신 노드가 수신 확인응답을 송신 노드에 제공함으로써 흐름제어가 수행되는데, 수신 확인응답 방식은 2가지가 있다.
- 정지-대기(Stop and wait): 패킷에 대한 응답 후에 다음 패킷을 보내는 방식으로, 가장 단순한 형태의 자동 재전송 요구(ARQ)로서, 송신 측이 1개의 블록을 전송하면, 수신 측에서 오류의 발생을 점검하여 전송 중 오류가 발생하지 않았을 경우 긍정 응답(ACK)을, 오류가 발생하였을 경우 부정 응답(NAK)을 보낼 때까지 기다리는 방식이다. 이에 따라 송신 측은 다음의 데이터 블록을 전송하거나, 오류가 발생한 데이터 블록을 재전송한다. 즉, 송신장치에서 한 번에 하나의 프레임을 전송하고, 송신측에서 프레임을 전송한 후 확인 받을 때까지 다음 프레임을 보낼 수 없도록 대기하는 방식이다.[3]
- 슬라이딩 윈도우(sliding window): 가용 데이터 분량의 패킷을 한꺼번에 보낸 후 응답 패킷을 받으면 다시 그만큼의 데이터를 한꺼번에 보내는 방식이다. 송신측이 수신측의 확인 응답을 받기 전에 상대방의 윈도우 사이즈 범위 내에서 즉, 수신측의 수신 가능한 범위인 수신 버퍼의 여유 공간 크기 내에서 데이터에 해당하는 여러 프레임을 연속해서 전송하는 방식이다. 세그먼트를 전송할 때마다 수신확인응답을 수신한 후 전송하게 되면, 왕복 시간인 RTT(Round Trup Rime)이 길 경우, 단위 시간당 데이터 전송량(Throughput)이 매우 떨어지므로, 효율적으로 전송하기 위해 상대방이 받을 수 있는 범위 내에서 연속적으로 전송한다. 이 방식에서는 송수신 흐름을 위해서 각 프레임에 순서 번호를 부여한다. 순서번호를 부여하여 수신측에서 기대하는 다음 프레임의 순서번호를 포함하는 확인응답 번호를 송신측에 보내줌으로써 계속 받을 수 있는 프레임들의 번호를 알려준다.[4]
- 혼잡 제어(Congestion Control): 네트워크의 혼잡 정도에 따라서 송신자가 데이터의 전송량을 제어하는 것을 말한다. 혼잡 정도에 대한 판단기준은 데이터의 손실 발생 유무로 판단한다. 전송한 데이터에 누락이 발생하면 네트워크가 혼잡한 상태로 판단하여 전송량을 조절하는 것인데, 손실, 폐기, 지연 등이 누락에 해당한다. 물리적인 네트워크 장애나, TTL 초과 등은 손실에, 데이터 오류 등으로 인한 폐기는 폐기에, 네트워크 혼잡 등에 의한 지연은 지연에 해당한다.[5]
- 연결 제어(Connection Control): 연결제어는 연결 지향형 데이터 전송(Connection oriented data transfer)과 비연결 지향형 데이터 전송(Connectionless data transfer) 두 가지 방식이 있다. 연결 지향형 데이터 전송은 두 시스템이 서로 데이터를 교환할 EO 연결을 설정하는 경우로, 연결 설정, 데이터 전송, 연결 해제 3단계로 구성된다. 대표적인 예로 TCP가 있고, 이러한 연결 제어 패킷을 이용하면 네트워크 연결을 끊을 수도, 해당 세션을 빼앗을 수도 있다. 비연결 지향형 데이터 전송은 UDP와 같이 연결을 설정하지 않은 경우다. 이렇게 전송되는 데이터들은 데이터그램 이라고 한다.
- 오류 제어(Error Control): PDU로 데이터를 교환할 때 SDU나 PCI가 잘못되었는지 발견하는 기법을 의미한다. 데이터의 오류나 누락 없이 안전한 전송을 보장해주어야 하는데, 오류나 누락이 발생할 경우 재전송을 수행하여 이를 보장한다. 데이터의 오류는 송신측에서 계산한 체크섬을 수신측에서 검증하여 오류 여부를 판단한다. 오류의 발생 여부는 패리티 비트(parity bit)나 잉여도 검사(Cyclic Rebundancy Check)를 통해 발견할 수 있다. 오류 제어는 순서를 검사하거나, 특정 시간 안에 데이터를 받지 못하면 재전송을 요구하는 방식으로 이루어진다.
- 동기화(Synchronization): 송수신측 간의 데이터를 주고받는 시점을 정확하게 일치시키기 위한 기법이다.
- 다중화(Multiplexing): 하나의 통신 선로에서 시스템이 동시에 통신할 수 있는 기법을 다중화라고 한다. 조금 더 쉽게 말하자면 하나의 기능 혹은 매체를 여러 영역에서 동시에 사용하는 기법을 말한다. 역다중화는 공유하는 기능이나 매체로부터 개별 영역으로 분할하는 기법을 말한다.
- 전송 서비스: 우선 순위를 결정하고, 서비스 등급과 보안 요구 등을 제어하는 서비스이다.[6]
계층별 분류
OSI 7
프로토콜은 통신 기능의 확장과 새로운 통신 기술, 방식의 도입을 쉽게 만들기 위하여 적절한 기능 단위로 프로토콜 층이라 불리는 계층으로 분할된다. 아키텍처에 따라 다소 다르지만, 기본적으로는 물리적, 전기적 인터페이스, 노드 간의 데이터 전송 등을 규정하는 데이터 전송제어에 관한 계층과 메시지 전송, 파일 전송 가상 단말 기능 등을 규정하는 통신처리에 관한 계층으로 구분하고 있다. OSI 7계층에는 응용계층, 프레젠테이션 계층, 세션 계층, 네트워크 계층, 데이터 링크 계층, 물리 계층 총 7개의 기능으로 계층화하고 있다. OSI 7계층을 이해하고 있으면, 해당 계층에 존재하는 프로토콜의 역할을 이해하는 데 도움을 준다. 물리 계층은 데이터 링크 계층의 프레임을 받고, 다음 장치에 구리나 광섬유(케이블) 또는 무선 통신 매체를 통신해 전송하기 위한 신호로 바꾸어준다. 물리적 매체를 통해 비트 단위 데이터를 전송하기 위해 요구되는 기능들을 정의하고, USB 케이블, 동툭 케이블 등 두 디바이스 간의 실제 접속을 위한 기계적, 전기적 특성에 대한 규칙을 정의하는 역할을 한다. 물리적인 기기의 대부분이 해당된다. 데이터링크 계층은 네트워크 계층 패킷 데이터를 물리적 매체에 실어 보내기 위한 계층으로, 포인트 투 포인트 간 신뢰성 있는 전송을 보장하기 위한 계층이다. 신뢰성 있는 전송을 위해 오류 검출 및 회복을 위한 오류 제어 기능을 수행하고, 송수신 측의 속도 차이 해결을 위해 흐름 제어 기능을 수행한다. 프레임 단위의 데이터를 전송하고, 대표적인 프로토콜로는 이더넷(Ethernet), PPP, HDLC, ALOHA 등이 있다. 네트워크 계층은 상위 레벨 데이터를 패킷 안으로 캡슐화하여 데이터 종류에 상관없이 한 호스트에서 다른 호스트로 그 패킷들을 라우팅한다. 데이터는 패킷 안으로 캡슐화되며, 패킷 헤더는 패킷의 송신지와 수신지 주소들을 포함하는 필드를 가진다. 패킷 단위의 데이터를 전송하고, IP, RIP, ARP, ICMP 등의 프로토콜이 있다.
전송 계층은 헤더에 송수신지 포트번호를 포함하여 올바르게 전달될 수 있게 하는 계층으로, 전체 메시지에 대하여 양 끝 간 제어와 오류를 관리한다. 패킷의 전송이 유효한지 확인하고, 전송에 실패된 패킷을 재전송 하는 등 신뢰성 있는 통신을 보장해야한다. 주소 설정, 오류 제어, 흐름 제어, 다중화 수행 등의 기능을 하고, TCP(Transmission Control Protocol)일 때는 세그먼트 단위로, UDP(User Datagram Protocol)일 때는 데이터그램 단위로 데이터를 전송한다. 세션 계층은 양 끝단의 응용 프로세스가 통신을 관리하기 위한 방법을 제공하는 역할을 하고, 통신 세션을 구성하며 포트 번호를 기반으로 연결한다. 메시지나 데이터 단위의 데이터 전송을 하고, NetBIOS, SSH 등의 프로토콜이 있다. 표현 계층은 응용 계층으로부터 받은 데이터를 하위 계층인 세션 계층에 보내기 전 통신에 적당한 형태로 변환한다. 세션 계층에서 받은 데이터는 응용 계층에 맞게 변환하는 역할을 수행한다. 코드 변환, 구문 검색, 데이터 압축 및 암호화 등의 기능 수행을 한다. 메시지나 데이터 단위의 데이터를 전송하고, JPG, MPEG, AFP, PAP 등의 프로토콜이 있다. 응용 계층은 컴퓨터 네트워크 프로그래밍에서 인터넷 프로토콜(IP) 컴퓨터 네트워크를 통하는 프로세스 간 통신 접속을 위해 설계되어 통신 프로토콜과 방식을 위해 보유된 추상 계층이다. 응용 계층 프로토콜은 기반이 되는 전송 계층 프로토콜을 사용하여 호스트 간 연결을 확립했다. 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행하고, 응용 프로세스 간의 정보 교환, 전자 메일, 파일 전송 등의 서비스를 제공한다. 메시지나 데이터 단위로 데이터를 전송하고, HTTP, FTP, DNS, SMTP 등이 응용 계층 프로토콜에 해당한다.[7]
TCP/IP
TCP와 IP는 각각 다른 프로토콜을 뜻하지만 TCP/IP 프로토콜이라고 쓰여 있을 경우, TCP/IP를 사용하는 프로토콜의 모음으로, 응용 계층, 전송 계층, 네트워크 계층, 링크 계층, 물리 계층 5개의 계층을 가지는 프로토콜을 사용한다는 것을 의미한다. 계층을 나눈 이유는 복잡하고 큰 작업을 각각의 계층을 여러 개의 모듈처럼 생각하여, 여러 개의 작고 단순한 작업들로 나누어 수행할 수 있기 때문이다. 모듈성이 있어, 서비스 구현의 분리, 전문화, 중가 시스템의 통신이 가능하다. 프로토콜을 계층화할 때는 각 계층은 각 방향으로 한 가지씩, 상반되는 두 가지 작업을 수행할 수 있도록 해줘야 한다. 또한 양측의 각 계층에 있는 객체는 서로 동일해야 한다. OSI는 7계층인 반면, TCP/IP는 4계층으로 이루어져 있다. 네트워크 액세스 계층은 OSI 7 계층에서의 물리 계층과 데이터 링크 계층에 해당한다. 물리적인 주소로 맥(MAC)을 사용하고, 랜(LAN), 패킷망 등에 사용된다. 네트워크 액세스 계층에 해당하는 프로토콜은 랜 상인지, 광역 통신망(WAN) 상인지에 따라 다르다. 랜의 경우 이더넷, 토큰 링, PPP 등이 있고, 광역 통신망의 경우 X.25, Frame Relay, PPP 등이 있다. 인터넷 계층은 OSI 7계층의 네트워크 계층에 해당하고, 통신 노드 간의 IP 패킷을 전송하는 기능과 라우팅 기능을 담당한다. 해당하는 프로토콜로는 IP(Internet Protocol), ARP(Address Resolution Protocol), RARP(Reverse ARP), ICMP(Internet Control Message Protocol), IGMP(Internet Group Message Protocol), 라우팅 프로토콜인 OSPF, IGRP, EIGRP, RIP, BGP 등이 있다. 전송 계층은 OSI 7계층의 전송계층에 해당한다. 통신 노드 간의 연결을 제어하고, 신뢰성 있는 데이터 전송을 담당한다. 신뢰성 있는 연결 지향형 프로토콜인 TCP와 비신뢰성 비연결형 프로토콜인 UDP가 전송 계층의 프로토콜이다. 응용 계층은 OSI 7계층의 세션 계층, 표현 계층, 응용 계층에 해당하고, TCP, UDP 기반의 응용 프로그램을 구현할 때 사용된다. 응용 계층 프로토콜에는 HTTP, HTTPS, FTP, Telnet, SMTP, SNMP, POP, SSH, FTP, DNS, SSI, SSL, TLS, DHCP 등이 있다.[8]
종류
TCP/IP 계층을 기준으로 분류하였다. 이더넷, 토큰링, PPP, IP, ARP, RARP, OSPF. IGRP. EIGRP, RIP, BGP, TCP, UDP, HTTP, HTTPS, FTP, Telnet, DNS, SSL, DHCP 등이 있다.
네트워크 액세스 계층
- 이더넷: OSI 7계층에서 데이터 링크 계층을 담당하고 있는 프로토콜로, 물리 계층과 데이터 링크 계층의 통신 회선의 접근 제어를 정의하는 IEEE표준이다. IEEE802.3 규약이 대표적이다. 근거리 통신망(랜)에 사용하기 위해 개발한 기술이지만 802.3 규약으로 표준화한 뒤, 근거리 통신망과 광역 통신망 모두에서 활용 중이다. 이더넷은 네트워크 장치마다 부여하는 맥(mac)주소를 가지고 실제 물리 회선을 통해 프레임을 주고받는 것을 담당한다. CSMA/CD(Carrier Sense Multiple Access with Collision Detection) 논문이 나오면서, 네트워크를 같이 사용하여 발생하는 충돌을 회피하는 방법에 대하여 규정하고 있다. 표준 이더넷은 10Mbps로 64바이트를 필요로 한다.[9]
- 토큰링: 이더넷과 마찬가지로, OSI 7계층에서 데이터 링크 계층에서 쓰이는 근거리 통신망 프로토콜이다. 1980년대 초반에 IBM사에 의해 개발되었고, IEEE 802.5로 표준화되었다. 1990년대 초반 이더넷이 개발되면서 잘 사용되지 않고 있다. 토큰링을 사용하면, 여러 스테이션(컴퓨터)들이 하나의 링에 이어져 형성되며, 데이터는 항상 한 방향으로만 흐른다. 각각의 스테이션은 바로 이전의 스테이션이 전달해준 비트를 그대로 다음 스테이션에 전달해주는 역할을 수행한다. 토큰링의 제어토큰은 일반적으로 3바이트로 이루어져 있는데, 생성된 제어토큰이 한 방향으로 링을 순환하면서 스테이션들의 네트워크 접속을 제어한다. 어느 스테이션도 전송을 하지 dskgsmsek면 제어토큰 프레임이 끊임없이 링을 순환한다. 데이터 프레임을 같은 네트워크 내의 스테이션에 전달하고자 하면, 제어 토큰이 돌아오기를 기다렸다, 토큰이 전달되면 토큰을 보내지 않고, 전송하고자 하는 프레임을 보내야 한다. 순차적으로 링 안의 스테이션들로 넘어가다 프레임이 수신자에게 전달되면, 이 프레임의 복사본을 만들어 보관한 뒤, 계속해서 프레임을 넘긴다. 프레임을 전송한 스테이션에 도달할 때 까지 프레임을 넘기고, 전송자가 다시 프레임을 받으면, 해당 프레임은 흡수하고 토큰 프레임을 넘긴다.[10]
- PPP(Point-to-Point Protocol): PPP프로토콜 역시 OSI 7 계층의 데이터 링크 계층에서 사용되는 프로토콜이다. 점 대 점으로, 양단 사이에 링크를 개설, 유지, 관리, 시험 및 종료하는 등의 역할을 해준다. 링크를 통해 네트워크 계층의 프로토콜을 다중화하여 복합적으로 전송하고, 데이터그램을 캡슐화 해주는 기능을 한다. 기본적으로 가장 많이 쓰이는 프로토콜인 IP를 캡슐화하는 용도로 많이 사용되고, 에러 검출, 압축, 인증, 암호화 등 다양한 기능을 추가적으로 수행한다. PPP의 주요 구성요소에는 캡슐화(Encapsulation), LCP(Link Control Protocol), NCP(Network Control Protocol)이다. 캡슐화는 데이터 링크에서 3계층의 데이터그램에 여러 가지 데이터를 추가해, 2계층의 프레임으로 매핑하는 것을 의미한다. HDLC의 프레이밍 방식을 기초로 하기 때문에, 비트 단위의 데이터를 전달하고, HDLC의 프레임과 유사한 형식의 프레임을 사용한다. LCP는 데이터 링크를 실질적으로 제어하는 프로토콜로, 커넥션을 개설, 유지, 종료하고 시험하는 역할을 한다. 다양한 옵션을 통해 최대 프레임 길이, 인증용 프로토콜, 프레임 압축 여부 등을 결정하거나 매직 넘버 옵션으로 링크가 루프백 되어있지는 않은지 검사를 수행한다. NCP는 서로 다른 3계층 프로토콜들에 대해 세부적인 제어를 하고, 데이터를 송수신할 수 있도록 설계된 프로토콜이다. 하나의 PPP 링크 상에 여러 개의 3계층 프로토콜을 사용할 수 있고, 각각의 프로토콜들은 그에 상응하는 NCP등릐 제어를 받게 된다. NCP 중 대표적인 것으로는 IP를 제어하기 위한 IPCP(IP Control Protocol)이 있다. IPCP는 유동 IP를 할당받고, DNS와 Default Gateway 등 IP의 주소를 얻는 역할을 한다. 다양한 옵션을 통해 패킷의 압축 여부와 방식을 결정하거나, 피어에게 원하는 IP 주소를 요구하는 등의 기능을 수행한다.[11]
인터넷 계층
- IP(Internet Protocol): 송신 호스트와 수신 호스트가 패킷 교환 네트워크에서 정보를 주고받는 데 사용하는 정보 위주의 규약으로, OSI 7계층 중 네트워크 계층에서 호스트의 주소 지정과 패킷 분할 및 조립 기능을 담당한다. 어떠한 것도 보장하지 않고 데이터 전송에 최선을 다하는 것으로, 비신뢰성이며, 비연결형이다. 비신뢰성일 경우 에러제어와 흐름제어를 하지 않아 에러가 발생해도 복구 작업을 취하지 않고, 송신 속도를 조절하지 않는다. 옵션에 따라 헤더의 길이가 가변적으로 변한다는 등의 특성이 있다. 필요한 경우 패킷을 단편화 하는 작업을 한다. 단편화는 네트워크 전송 가능량에 맞추어 데이터그램을 자르는 것이다. 인터넷은 여러 네트워크들이 모여있는 것이기 때문에 한 네트워크에서 통과시킬 수 있는 최대 바이트가 정해져 있다. 따라서 최대 바이트량인 MTU(Maximum Transfer Unit)에 따라 IP 데이터그램을 분할해야 한다.[12]
- ARP(Adress Resolution Protocol): 주소 결정 프로토콜로, 해당 IP를 그 IP주소에 맞는 물리적인 주소, 맥 주소를 가지고 오는 프로토콜이다. 2계층에서 물리적 주소를 사용하여 통신하는 경우 목적지 주소를 알아와 캡슐화를 완성하기 위한 목적으로 사용한다. IP를 이용하여 맥 주소를 알아내기 위해 연결된 모든 장비에게 요청 메시지를 보내고, ARP 요청 메시지를 받은 장비들은 누구에게 전달된 요청인지 IP 주소를 확인하여 자신의 IP일 경우 요청을 보내준다. ARP 프로토콜은 요청을 보내기 위해 브로드캐스트 방식을 사용한다. 목적지 IP 주소가 같은 네트워크일 경우에는 해당 장비를 직접 찾는 요청 메시지를 브로드캐스트로 보내고, 다른 네트워크일 경우에는 직접 브로드캐스트를 보낼 수 없으니 게이트웨이로 데이터는 전달하기 위해 게이트웨이로 요청을 보낸다. ARP의 종류에는 ARP, ARP와 반대되는 개념인 RARP, ARP 프로그램을 수신했을 때, 해당 네트워크가 자신의 라우팅테이블에 있으면 자신의 맥 주소를 알려주는 Proxy ARP, 송신지 IP와 목적지 DLCI를 매핑하여 프레임 맵에 저장하고, 처음 연결할 경우 자신과 연결된 모든 선로를 멀티플렉싱하여 목적지 IP를 알아내는 Inverse ARP, 같은 네트워크에서 IP주소가 중복되는지 확인하고, 다른 장치들이자신의 IP주소를 갱신하도록 주기적으로 알려주는 Gratuitous ARP가 있다.[13]
- RARP(Reverse Address Resolution Protocol): ARP와 반대로, 물리 네트워크 주소(맥 주소)를 가지고, 서버로부터 IP주소를 요청하기 위해 사용된다. 주로 디스크가 없는 시스템을 부팅할 경우 사용하고, 요청 장치는 RARP 클라이언트 프로그램을 수행하여 맥 정보를 담고 있는 RARP 정보를 브로드캐스트로 전송한다. 응답 장치는 RARP 서버 프로그램을 수행하여, 요청자의 IP 주소를 담은 RARP 응답을 유니캐스트로 전송한다.[14]
- OSPF(Open Shortest Path First): 최단 경로 우선 프로토콜로, 최저 비용을 가지는 경로를 최적 라우팅 경로로 결정하는 방식이다. 가장 대표적인 링크 상태 프로토콜로, 최단 거리 우선 알고리즘(SPF)을 통해 라우팅 테이블을 생성한다. 주로 내부 게이트웨이 프로토콜(IGP)로 대규모 기업망에서 사용된다. 특히 ‘영역’이라는 래념을 사용하여 전체 네트워크를 작은 영역으로 나누어 효율적으로 관리하는 방식을 택한다. 각 영역은 백본영역에 연결되어 있다. OSPF는 링크 상태에 변화가 있을 경우 즉각적으로 반영해주기 때문에 컨버전스 타임이 매우 빠르다. 헬로 패킷을 송수신하여 이웃 관계를 유지하는데, 헬로 패킷 안에는 DR과 BDR을 선출하기 위한 우선순위 필드가 존재한다. VLSM을 지원하기 때문에 IP 주소를 효율적으로 사용할 수 있고, 라우팅 테이블을 줄일 수 있다.[15]
- IGRP(Interior Gateway Routing Protocol): 거리백터 라우팅 프로토콜의 하나로, 내부용 프로토콜(IGP)이다. 시스코사에서 만든 프로토콜로, 시스코 라우터만 사용가능하다. 라우팅 테이블은 90초를 주기로 업데이트 한다. RIP 프로토콜과 비슷한데, 가장 큰 차이점은 IGRP는 대역폭(Bandwidth), 지연(Delay), 신뢰성(Reliability), 부하(Load), MTU(Maximum Transmission Unit) 5가지 요인으로 가장 빠른 경로를 찾는 것이다. RIP와 또 다른 점은 서브넷 마스크 값이 붙지 않아 VLSM 지원이 불가능하다. 대역폭을 계산할 때 홉 카운트보다는 그 구간의 속도를 계산하여 가장 빠른 경로를 찾는 데 중점을 두고, 대역폭 값과 라우터 포트에 연결되어 있는 회선의 종류에 따라 지연값을 계산해야 한다. 신뢰성은 패킷이 출발지로부터 목적지에 도착하기까지 에러가 발생한 패킷의 비율로, 0~255사이의 정수로 나타낸다. 숫자가 높을수록 신뢰도가 높다. 부하는 출발지와 목적지 상의 경로에 어느 정도의 부하가 걸리고 있는지 측정한 값으로, 1/255~1사이의 값으로 나타내며, 1에 가까울수록 부하가 크다. MTU는 경로의 최대 전송 유닛의 크기를 말한다. 바이트 단위로 표시한다.[16]
- EIGRP(Enhanced Interior Gateway routing Protocol): IGRP와 마찬가지로 시스코사에서 나온 시스코 전용 라우팅 프로토콜이다. IGRP의 장점을 최대한 반영해 발전시킨 프로토콜로, 동적 라우팅 프로토콜에 해당한다. RIP와 같이 스플릿 호라이즌이 적용되고, 자동 요약(auto-summary)이 사용된다. DUAL(Diffusing Update Algorithm)알고리즘과 Successor(최적경로)와 Feasible Successor(후속경로)를 선출하는 방식이다. 매트릭 값이 다른 경로로 부하 분산을 시킬 수 있다는 장점이 있지만, 대규모 네트워크에서 사용하기 어렵다는 단점이 있다.[17]
- RIP(Routing Information Protocol): 최소 홉 카운트를 파악하여 라우팅하는 프로토콜이다. 동적 거리벡터 라우팅 프로토콜로, 라우팅 테이블에 인접 라우터 정보를 저장하여 경로를 결정한다. 최대 홉 카운트는 15로 거리가 짧아 주로 내부용으로 많이 이용하는 프로토콜이다. 직접 연결되어 있는 라우터는 홉으로 계산하지 않고 30초 주기로 인접 라우터로 정보를 전송한다. 4~6개까지 로드 밸런싱이 가능하다는 특징이 있고, 주로 UDP 세그먼트에 캡슐화 되어 사용된다. 단순히 홉의 수를 세어 경로를 결정하는 방식으로, 네트워크 속도는 판단하지 않기 때문에 비효율적인 경로를 사용하게 될 수도 있고, 거리벡터 알고리즘이기 때문에 컨버전스 타임이 느리다는 단점이 있다.
- BGP(Border Gateway Protocol): 외부 라우팅 프로토콜(EGP)로 AS(관리 도메인)와 AS 간에 사용되느느 라우팅 프로토콜이다. 정해진 정책에 의하여 최적 라우팅경로를 수립하며, 경로 벡터 방식의 라우팅 프로토콜로 다른 IGP보다 컨버전스는 느리지만, 대용량의 라우팅 정보를 교환할 수 있는 프로토콜이다. TCP 포트 179번을 통하여 인접 라우터들과 이웃 관계를 성립하며, 이웃 라우터 간에는 유니캐스트 라우팅 업데이트를 실시한다.[15]
전송 계층
- TCP(Transfer Control Protocol): 전송을 제어하는 프로토콜로, 인터넷 상에서 데이터를 베시지 형태로 보내기 위해 IP와 함께 사용하는 프로토콜이다. 일반적으로 IP와 함께 사용되는데, IP가 데이터의 배달을 처리하면, TCP는 패킷을 추적하고 관리하는 기능을 한다. 연결형 서비스를 지원하는 프로토콜로 인터넷 환경에서 기본으로 사용한다. TCP는 연결형 서비스로 가상 회선 방식을 제공하고, 3-Way Handshaking 과정을 통해 연결하고, 4-Way Handshaking을 통해 해제했다. 흐름 제어 및 혼잡 제어를 수행하고, UDP 보다 속도가 느리지만 높은 신뢰성을 보장한다. 1대1 통신으로, 전송 순서를 보장하고, 수신여부를 확인한다. TCP 서버는 클라이언트와 1대1로 연결되고, 스트림 전송으로 전송데이터의 크기가 무제한이다. 서버 소켓은 연결만을 담당하고, 연결과정에서 반환된 클라이언트 소켓은 데이터의 송수신에 사용된다.
- UDP(User Datagram Protocol): 데이터를 데이터그램 단위로 처리하는 프로토콜로, 여기서 데이터그램이란 독립적인 관계를 지니는 패킷을 의미한다. TCP와 달리 비연결형 프로토콜이고, 연결을 위해 할당된 논리적인 경로가 없기 때문에, 각각의 패킷은 다른 경로로 전송되고, 각각의 패킷은 독립적인 관계를 지니게 되는데 이러게 서로 다른 경로를 처리하게 되고, 이러한 프로토콜을 UDP라고 한다. UDP는 비연결형 서비스로 데이터그램 방식을 제공한다. 정보를 주고 받을 때 정보를 보내거나 받는다는 신호절차를 거치지 않고, UDP 헤더의 체크섬 필드를 통해 최소한의 오류만을 검출한다. 흐름 제어나 혼잡 제어와 같은 기능을 사용하지 않기 때문에 TCP보다 속도가 빠르고, 네트워크 부하가 적지만, 신뢰성이 낮다. 1대1 또는 1대N, N대N 통신까지 가능하고, 전송 순서와 수신 여부를 보장하지 않는다. UDP에는 연결 함수가 불필요하기 때문에 서버 소켓과 클라이언트 소켓의 구분 없이, IP를 기반으로 데이터를 전송한다. 65535바이트 크기의 데이터그램 단위로 전송되고, 크기를 초과할 경우 잘라서 보낸다.[18]
응용 계층
- HTTP, HTTPS, FTP, Telnet, SMTP, SNMP, POP, SSH, FTP, DNS, SSI, SSL, TLS, DHCP
- HTTP: HTML과 같은 웹문서를 전달하기 위한 응용 계층 프로토콜이다. 브라우저가 웹 사이트와 호환하기 위해 브라우저는 요청을, 웹 사이트는 응답을 한다. 흔히 볼 수 있는 403 응답코드와, 404코드를 예로 들 수 있는데, 403 응답 코드는 권한이 없는 페이지에 접근하는 경우 회신되고, 404 응답 코드는 존재하지 않는 페이지에 접근하는 경우에 회신된다.
- FTP: 파일 전송 프로토콜은 웹 페이지 파일들을 서버로 파일을 옮기는 과정에서 사용하거나 서버의 파일을 자신의 컴퓨터에 옮기는 다운로드에 사용한다. 최초의 FTP 클라이언트는 명령 줄 인터페이스(Command Line Interface)의 형태였다. 보안 프로토콜로 계획된 것이 아니기 때문에 여러 보안 취약점이 존재한다. 이런 문제점이나 기능을 보완하기 위해 FTPS, SFTP, TFTP 등이 있다.
- 텔넷: 인터넷이나 근거리 통신망에서 사용되는 프로토콜이다. 원격 지원 프로토콜로서 다른 사람의 호스트 컴퓨터의 사용권한을 가지고 있다는 전제하에 원격지에서 접근할 수 있도록 도와준다. 웹 서비스를 제공하는 FTP 프로토콜과 HTTP 프로토콜은 특정 파일을 요구하는 프로토콜인 반면, 텔넷은 정식 사용자로서 그 컴퓨터에 로그인 한 뒤 특정 응용 프로그램이나 데이터를 이용할 수 있다.
- DNS: 호스트에 대한 이름 주소 변환을 위한 분산 데이터베이스 시스템으로, 실제 IP 주소가 아닌 도메인 이름을 입력해도 접속할 수 있게 도와준다. DNS 서버는 도메인 이름과 이에 대응하는 IP 주소에 관한 데이터베이스를 가지고 있다. 예를 들어 최상위 계층의 도메인에는 영리를 목적으로 하는 기관인 “com”, 네트워킹 회사가 사용하는 “net”, 비영리기관이 사용하는 “org”, 한국 서버에 사용하는 “kr”이 있다.
각주
- ↑ 1.0 1.1 1.2 밤공기후하후하, 〈프로토콜 – Protocol 이란 무엇인가〉, 《네이버 블로그》, 2019-04-09
- ↑ 2.0 2.1 2.2 탕탕탕구리, 〈프로토콜(Protocol) 그래서 그게 뭔데?〉, 《티스토리》, 2019-03-15
- ↑ 밤공기후하후하, 〈프로토콜 – Stop and Wait, 정지 대기 기법이란 무엇인가〉, 《네이버 블로그》, 2019-04-16
- ↑ 밤공기후하후하, 〈프로토콜 – Sliding Window, 슬라이딩 윈도우 방식 이란 무엇인가〉, 《네이버 블로그》, 2019-04-16
- ↑ 밤공기후하후하, 〈프로토콜 – Congestion Control, 혼잡 제어 란 무엇인가〉, 《네이버 블로그》, 2019-04-20
- ↑ 홀인원, 〈(네트워크 실습) 3. 프롵토콜의 기능〉, 《네이버 블로그》, 2014-07-06
- ↑ 99CORN, 〈OSI 7계층 (OSI 7 LAYER)〉, 《티스토리》, 2015-12-01
- ↑ 99CORN, 〈TCP/IP 4계층(TCP/IP 4 Layer)〉, 《티스토리》, 2015-12-12
- ↑ valuecreator, 〈#1 Ethernet, TCP/IP 프로토콜 총 정리〉, 《티스토리》, 2019-06-13
- ↑ 〈토큰링〉, 《위키백과》
- ↑ ProHub, 〈(PPP) Point-to-Point Protocol이란 무엇인가?<1>〉, 《네이버 블로그》, 2015-12-22
- ↑ galid1, 〈Network – Network 계층 – 인터넷 프로토콜(IP)〉, 《티스토리》, 2019-02-27
- ↑ 찬차니, 〈(Neetwork) ARP와 ARP의 종류 5가지〉, 《네이버 블로그》, 2016-12-19
- ↑ 스윗봉봉, 〈RARP(Reverse Address Resolution Protocol)〉, 《네이버 블로그》, 2007-11-06
- ↑ 15.0 15.1 무미닝, 〈(네트워크) 라우팅 프로토콜 (RIP,OSPF,BGP)〉, 《네이버 블로그》, 2017-05-23
- ↑ Zenis, 〈IGRP〉, 《티스토리》, 2012-09-09
- ↑ chwitch, 〈9. EIGRP (Advanced Dostance Vector)〉, 《네이버 블로그》, 2016-05-06
- ↑ 망나니개발자, 〈(TCP/UDP) TCP와 UDP의 특징과 차이〉, 《티스토리》, 2017-11-05
참고자료
- 밤공기후하후하, 〈프로토콜 – Protocol 이란 무엇인가〉, 《네이버 블로그》, 2019-04-09
- 탕탕탕구리, 〈프로토콜(Protocol) 그래서 그게 뭔데?〉, 《티스토리》, 2019-03-15
- 밤공기후하후하, 〈프로토콜 – Stop and Wait, 정지 대기 기법이란 무엇인가〉, 《네이버 블로그》, 2019-04-16<
- 밤공기후하후하, 〈프로토콜 – Sliding Window, 슬라이딩 윈도우 방식 이란 무엇인가〉, 《네이버 블로그》, 2019-04-16
- 밤공기후하후하, 〈프로토콜 – Congestion Control, 혼잡 제어 란 무엇인가〉, 《네이버 블로그》, 2019-04-20
- 홀인원, 〈(네트워크 실습) 3. 프롵코콜의 기능〉, 《네이버 블로그》, 2014-07-06
- 99CORN, 〈OSI 7계층 (OSI 7 LAYER)〉, 《티스토리》, 2015-12-01
- 99CORN, 〈TCP/IP 4계층(TCP/IP 4 Layer)〉, 《티스토리》, 2015-12-12
- valuecreator, 〈Ethernet, TCP/IP 프로토콜 총 정리〉, 《티스토리》, 2019-06-13
- 〈토큰링〉, 《위키백과》
- roHub, 〈(PPP) Point-to-Point Protocol이란 무엇인가?<1>〉, 《네이버 블로그》, 2015-12-22
- galid1, 〈Network – Network 계층 – 인터넷 프로토콜(IP)〉, 《티스토리》, 2019-02-27
- 찬차니, 〈(Neetwork) ARP와 ARP의 종류 5가지〉, 《네이버 블로그》, 2016-12-19
- 스윗봉봉, 〈RARP(Reverse Address Resolution Protocol)〉, 《네이버 블로그》, 2007-11-06
- 무미닝, 〈(네트워크) 라우팅 프로토콜 (RIP,OSPF,BGP)〉, 《네이버 블로그》, 2017-05-23
- Zenis, 〈IGRP〉, 《티스토리》, 2012-09-09
- chwitch, 〈9. EIGRP (Advanced Dostance Vector)〉, 《네이버 블로그》, 2016-05-06
같이 보기