검수요청.png검수요청.png

프로토콜

해시넷
jingayoun (토론 | 기여)님의 2021년 2월 18일 (목) 16:23 판
이동: 둘러보기, 검색

프로토콜(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): 데이터가 전송될 때는 프로토콜 데이터 단위(Protocol Data Unit, PDU)를 통해서 하나의 데이터를 여러 개의 각 프로토콜에 맞는 단위로 쪼개어 전송하게 된다. 순서제어란 프로토콜 데이터 단위가 전송될 때 순서를 명시하는 기능이며, 연결 지향형에만 사용한다. 순서를 지정하는 이유는 흐름제어, 혼잡제어, 오류제어를 위해서다. 순서제어에 의해서 정해진 프로토콜 데이터 단위를 수신측에 보내면 순서에 맞게 데이터를 재구성한하고, 오류가 있을 경우 재전송을 요청한다. 해커는 순서가 뒤죽박죽인 패킷을 생성하여 보내, 시스템 과부하를 야기하기도 한다.
  • 분할 및 재조립(Fragmentation&Reassembly): 데이터의 크기와 종류는 다양한데, 한꺼번에 덩어리가 큰 데이터를 전달하는 것은 통신에 있어서 비효율적이기 때문에 하나의 데이터를 전송 효율이 높은 작은 단위로 분할하여 전송하고 수신측에서는 해당 데이터를 사용하기 위해 재조립하는 과정을 거친다. 해커는 이런 과정에서 데이터 분할 기능을 이용해 대량의 패킷을 공격 대상에게 보내기도 하고, 재조합 불가능한 데이터를 보내 혼란에 빠뜨리기도 한다.
  • 캡슐화(Encapsulation): 순서제어에서 언급한 프로토콜 데이터 단위는 PCI(Protocol Control Unit)와 서비스 데이터 단위(Sercive Data Unit, SDU)로 구성된다. PCI는 발신지 주소, 수신지 주소, 순서 번호, 오류 검출 코드 등 각종 헤더 정보를 담고 있고, 서비스 데이터 단위에는 실제 서비스 데이터 정보를 담고 있다. 통신을 구성하는 각각의 계층을 통과하기 위해서는 캡슐화를 통해 포장하는 과정을 거치며, 데이터를 사용하기 위해서는 캡슐화된 데이터는 수신측에서 역캡슐화 하는 과정을 통해 각각의 계층을 통과한다. 캡슐화는 해커로부터 자신의 통신 내용을 숨길 수 있게 해준다.
  • 흐름 제어(Flow Control): 송신측에서 오는 데이터의 양이나 속도를 조절하는 기능이다. 송신과 수신에 있어서 속도차이로 인한 데이터의 유실을 방지한다. 송신 노드의 송신 속도가 수신노드 측의 처리 속도, 처리 능력을 고려하여서, 송신자가 정보를 내보낼 때 상대방이 수신할 수 있는 만큼만 효율적으로 전송한다. 수신 장치의 데이터가 초과되어 상호 간에 데이터 손실이 발생하지 않도록 전송되는 정보 흐름의 양, 속도를 조절, 조정, 제어하기 위한 송신장치 제어 방법 혹은 기술이다. 정리하자면, 수신 장치가 모든 송신장치로부터 받은 데이터를 수신 장치의 버퍼에서 처리하기 전에, 송신장치로부터 수신 장치에게 다른 데이터가 추가적으로 전송되지 않도록 제어하는 방식이다. 수신 노드가 수신 확인응답을 송신 노드에 제공함으로써 흐름제어가 수행되는데, 수신 확인응답 방식은 2가지가 있다.
  1. 정지-대기(Stop and wait): 패킷에 대한 응답을 받은 후에 다음 패킷을 보내는 방식으로, 가장 단순한 형태의 자동 재전송 요구(ARQ)로서, 송신 측이 1개의 블록을 전송하면, 수신 측에서 오류의 발생을 점검하여 전송 중 오류가 발생하지 않았을 경우 긍정 응답(ACK)을, 오류가 발생하였을 경우 부정 응답(NAK)을 보낼 때까지 기다리는 방식이다. 이에 따라 송신 측은 다음의 데이터 블록을 전송하거나, 오류가 발생한 데이터 블록을 재전송한다. 즉, 송신장치에서 한 번에 하나의 프레임을 전송하고, 송신측에서 프레임을 전송한 후 확인 받을 때까지 다음 프레임을 보낼 수 없도록 대기하는 방식이다.[3]
  2. 슬라이딩 윈도우(sliding window): 가용 데이터 분량의 패킷을 한꺼번에 보낸 후 응답 패킷을 받으면 다시 그만큼의 데이터를 한꺼번에 보내는 방식이다. 송신측이 수신측의 확인 응답을 받기 전에 상대방의 윈도우 사이즈 범위 내 즉, 수신측의 수신 가능한 범위인 수신 버퍼의 여유 공간 크기 내에서 데이터에 해당하는 여러 프레임을 연속해서 전송하는 방식이다. 세그먼트를 전송할 때마다 수신확인응답을 수신한 후 전송하게 되면, 왕복 시간인 RTT(Round Trup Rime)가 길 경우, 단위 시간당 데이터 전송량(Throughput)이 매우 떨어지므로, 효율적으로 전송하기 위해 상대방이 받을 수 있는 범위 내에서 연속적으로 전송한다. 이 방식에서는 송수신 흐름을 위해서 각 프레임에 순서 번호를 부여한다. 순서번호를 부여하여 수신측에서 기대하는 다음 프레임의 순서번호를 포함하는 확인응답 번호를 송신측에 보내줌으로써 계속 받을 수 있는 프레임들의 번호를 알려준다.[4]
  • 혼잡 제어(Congestion Control): 네트워크의 혼잡 정도에 따라서 송신자가 데이터의 전송량을 제어하는 것을 말한다. 혼잡 정도에 대한 판단기준은 데이터의 손실 발생 유무로 판단한다. 전송한 데이터에 누락이 발생하면 네트워크가 혼잡한 상태로 판단하여 전송량을 조절하는 것인데, 손실, 폐기, 지연 등이 누락에 해당한다. 물리적인 네트워크 장애나, TTL(Time To Live) 초과 등은 손실에, 데이터 오류 등으로 인한 폐기는 폐기에, 네트워크 혼잡 등에 의한 지연은 지연에 해당한다.[5]
  • 연결 제어(Connection Control): 연결제어는 연결 지향형 데이터 전송(Connection oriented data transfer)과 비연결 지향형 데이터 전송(Connectionless data transfer) 두 가지 방식이 있다. 연결 지향형 데이터 전송은 두 시스템이 서로 데이터를 교환할 때 연결을 설정하는 경우로, 연결 설정, 데이터 전송, 연결 해제 3단계로 구성된다. 대표적인 예로 전송 제어 프로토콜(Transmission Control Protocol, TCP)가 있고, 이러한 연결 제어 패킷을 이용하면 네트워크 연결을 끊을 수도, 해당 세션을 빼앗을 수도 있다. 비연결 지향형 데이터 전송은 사용자 데이터그램 프로토콜(User Datagram Protocol, UDP)와 같이 연결을 설정하지 않은 경우다. 이렇게 전송되는 데이터들은 데이터그램(Datagram) 이라고 한다.
  • 오류 제어(Error Control): 프로토콜 데이터 단위로 데이터를 교환할 때 서비스 데이터 단위나 PCI가 잘못되었는지 발견하는 기법을 의미한다. 데이터의 오류나 누락 없이 안전한 전송을 보장해주어야 하는데, 오류나 누락이 발생할 경우 재전송을 수행하여 이를 보장한다. 데이터의 오류는 송신측에서 계산한 체크섬(checksum)을 수신측에서 검증하여 오류 여부를 판단한다. 오류의 발생 여부는 패리티 비트(parity bit)나 잉여도 검사(Cyclic Redundancy Check)를 통해 발견할 수 있다. 오류 제어는 순서 검사나 특정 시간 안에 데이터를 받지 못하면 재전송을 요구하는 방식으로 이루어진다.
  • 동기화(Synchronization): 송·수신측 간의 데이터를 주고받는 시점을 정확하게 일치시키기 위한 기법이다.
  • 다중화(Multiplexing): 하나의 통신 선로에서 시스템이 동시에 통신할 수 있는 기법을 다중화라고 한다. 조금 더 쉽게 말하자면 하나의 기능 혹은 매체를 여러 영역에서 동시에 사용하는 기법을 말한다. 역다중화는 공유하는 기능이나 매체로부터 개별 영역으로 분할하는 기법을 말한다.
  • 전송 서비스: 우선순위를 결정하고, 서비스 등급과 보안 요구 등을 제어하는 서비스이다.[6]

계층별 분류

OSI 모형

프로토콜은 통신 기능의 확장과 새로운 통신 기술, 방식의 도입을 쉽게 만들기 위하여 적절한 기능 단위로 프로토콜 층이라 불리는 계층으로 분할된다. 아키텍처에 따라 다소 다르지만, 기본적으로는 물리적, 전기적 인터페이스, 노드 간의 데이터 전송 등을 규정하는 데이터 전송제어에 관한 계층과 메시지 전송, 파일 전송 가상 단말 기능 등을 규정하는 통신처리에 관한 계층으로 구분하고 있다. OSI 모형은 응용계층, 프레젠테이션 계층, 세션 계층, 네트워크 계층, 데이터 링크 계층, 물리 계층 총 7개의 층으로 계층화하고 있다. OSI 7계층을 이해하고 있으면, 해당 계층에 존재하는 프로토콜의 역할을 이해하는 데 도움을 준다. 물리 계층은 데이터 링크 계층의 프레임을 받고, 다음 장치에 구리나 광섬유(케이블) 또는 무선 통신 매체를 통신해 전송하기 위한 신호로 바꾸어준다. 물리적 매체를 통해 비트 단위 데이터를 전송하기 위해 요구되는 기능들을 정의하고, USB 케이블, 동축 케이블 등 두 디바이스 간의 실제 접속을 위한 기계적, 전기적 특성에 대한 규칙을 정의하는 역할을 한다. 물리적인 기기의 대부분이 해당된다. 데이터링크 계층은 네트워크 계층 패킷 데이터를 물리적 매체에 실어 보내기 위한 계층으로, 포인트 투 포인트 간 신뢰성 있는 전송을 보장하기 위한 계층이다. 신뢰성 있는 전송을 위해 오류 검출 및 회복을 위한 오류 제어 기능을 수행하고, 송수신 측의 속도 차이 해결을 위해 흐름 제어 기능을 수행한다. 프레임 단위의 데이터를 전송하고, 대표적인 프로토콜로는 이더넷(Ethernet), 점대점 프로토콜(Point-to-Point Protocol, PPP), HDLC(High Level Data Link Control), 알로하(ALOHA) 등이 있다. 네트워크 계층은 상위 레벨 데이터를 패킷 안으로 캡슐화하여 데이터 종류에 상관없이 한 호스트에서 다른 호스트로 그 패킷들을 라우팅한다. 데이터는 패킷 안으로 캡슐화되며, 패킷 헤더는 패킷의 송신지와 수신지 주소들을 포함하는 필드를 가진다. 패킷 단위의 데이터를 전송하고, 인터넷 프로토콜(Internet Protocol, IP), 라우팅 정보 프로토콜(Routing Information Protocol, RIP), 주소 결정 프로콜(Address Resolution Protocol, ARP), ICMP(Internet Control Message Protocol) 등의 프로토콜이 있다.

전송 계층은 헤더에 송수신지 [포트번호]]를 포함하여 올바르게 전달될 수 있게 하는 계층으로, 전체 메시지에 대하여 양 끝 간 제어와 오류를 관리한다. 패킷의 전송이 유효한지 확인하고, 전송에 실패된 패킷을 재전송 하는 등 신뢰성 있는 통신을 보장해야한다. 주소 설정, 오류 제어, 흐름 제어, 다중화 수행 등의 기능을 하고, 전송 제어 프로토콜일 때는 세그먼트 단위로, 사용자 데이터그램 프로토콜일 때는 데이터그램 단위로 데이터를 전송한다. 세션 계층은 양 끝단의 응용 프로세스가 통신을 관리하기 위한 방법을 제공하는 역할을 하며, 통신 세션을 구성하고, 포트 번호를 기반으로 연결한다. 메시지나 데이터 단위의 데이터 전송을 하고, 넷바이오스(NetBIOS), 시큐어 셸(Secure Shell Protocol, SSH) 등의 프로토콜이 있다. 표현 계층은 응용 계층으로부터 받은 데이터를 하위 계층인 세션 계층에 보내기 전에, 통신에 적당한 형태로 변환한다. 세션 계층에서 받은 데이터는 응용 계층에 맞게 변환하는 역할을 수행한다. 코드 변환, 구문 검색, 데이터 압축 및 암호화 등의 기능 수행을 한다. 메시지나 데이터 단위의 데이터를 전송하고, JPG, 엠펙(Moving Picture Experts Group, MPEG), 애플 파일링 프로토콜(Apple Filing Protocol, AFP), 비밀번호 인증 프로토콜(Password Authentication Protocol, PAP) 등의 프로토콜이 있다. 응용 계층은 컴퓨터 네트워크 프로그래밍에서 인터넷 프로토콜 컴퓨터 네트워크를 통하는 프로세스 간 통신 접속을 위해 설계되어 통신 프로토콜과 방식을 위해 보유된 추상 계층이다. 응용 계층 프로토콜은 기반이 되는 전송 계층 프로토콜을 사용하여 호스트 간 연결을 확립했다. 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행하고, 응용 프로세스 간의 정보 교환, 전자 메일, 파일 전송 등의 서비스를 제공한다. 메시지나 데이터 단위로 데이터를 전송하고, HTTP(Hyper Text Transfer Protocol), 파일 전송 프로토콜(File Transfer Protocol, FTP), 도메인 네임 시스템(Domain Name System, DNS), 간이 전자 우편 전송 프로토콜(Simple Mail Transfer Protocol, SMTP) 등이 응용 계층 프로토콜에 해당한다.[7]

TCP/IP

TCP와 IP는 각각 다른 프로토콜을 뜻하지만 TCP/IP 프로토콜이라고 쓰여 있을 경우, TCP/IP를 사용하는 프로토콜의 모음으로, 응용 계층, 전송 계층, 네트워크 계층, 링크 계층, 물리 계층 5개의 계층을 가지는 프로토콜을 사용한다는 것을 의미한다. 계층을 나눈 이유는 복잡하고 큰 작업을 각각의 계층을 여러 개의 모듈처럼 생각하여, 여러 개의 작고 단순한 작업들로 나누어 수행할 수 있기 때문이다. 모듈성이 있어, 서비스 구현의 분리, 전문화, 중가 시스템의 통신이 가능하다. 프로토콜을 계층화할 때는 각 계층은 각 방향으로 한 가지씩, 상반되는 두 가지 작업을 수행할 수 있도록 해줘야 한다. 또한 양측의 각 계층에 있는 객체는 서로 동일해야 한다. OSI 모형은 7계층인 반면, TCP/IP는 4계층으로 이루어져 있다. 네트워크 액세스 계층은 OSI 7 계층에서의 물리 계층과 데이터 링크 계층에 해당한다. 물리적인 주소로 맥 주소(Media Control Address, MAC)을 사용하고, 근거리 통신망(LAN), 패킷망 등에 사용된다. 네트워크 액세스 계층에 해당하는 프로토콜은 랜 상인지, 광역 통신망(WAN) 상인지에 따라 다르다. 근거리 통신망의 경우 이더넷, 토큰 링, 점대점 프로토콜 등이 있고, 광역 통신망의 경우 X.25, 프레임 릴레이(Frame Relay), 점대점 프로토콜 등이 있다. 인터넷 계층은 OSI 7계층의 네트워크 계층에 해당하고, 통신 노드 간의 인터넷 프로토콜 패킷을 전송하는 기능과 라우팅 기능을 담당한다. 해당하는 프로토콜로는 인터넷 프로토콜, 주소 결정 프로토콜, 역순 주소 결정 프로토콜(Reverse ARP, RARP), 인터넷 제어 메시지 프로토콜(Internet Control Message Protocol, ICMP), 인터넷 그룹 관리 프로토콜(Internet Group Message Protocol, IGMP), 라우팅 프로토콜인 최단경로 우선 프로토콜(Open Shortest Path First, OSPF), 내부 게이트웨이 라우팅 프로토콜(Interior Gateway Routing Protocol, IGRP), 향상된 내부 게이트웨이 라우팅 프로토콜(enhanced Interior Gateway Routing Protocol, EIGRP), RIP, 경계 경로 프로토콜(Boarder Gateway Protocol, BGP) 등이 있다. 전송 계층은 OSI 7계층의 전송계층에 해당한다. 통신 노드 간의 연결을 제어하고, 신뢰성 있는 데이터 전송을 담당한다. 신뢰성 있는 연결 지향형 프로토콜인 전송 제어 프로토콜과 비신뢰성 비연결형 프로토콜인 사용자 데이터그램 프로토콜이 전송 계층의 프로토콜이다. 응용 계층은 OSI 7계층의 세션 계층, 표현 계층, 응용 계층에 해당하고, 전송 제어 프로토콜과 사용자 데이터그램 프로토콜 기반의 응용 프로그램을 구현할 때 사용된다. 응용 계층 프로토콜에는 HTTP, HTTPS, 파일 전송 프로토콜, 텔넷(Telnet), 간이 전자 우편 전송 프로토콜, 간이 망 관리 프로토콜(Simple Network Management Protocol, SNMP), 포스트 오피스 프로토콜(Post Office Protocol, POP), 시큐어 셸 프로토콜, 도메인 네임 시스템, 직렬 동기 인터페이스(Serial Synchronous Interface, SSI), SSL(Secure Sockets Layer), TLS(Transfer Layter Protocol), 동적 호스트 구성 프로토콜(Dynamic Host Configuration Protocol, DHCP) 등이 있다.[8]

종류

TCP/IP 계층을 기준으로 분류하였다. 이더넷, 토큰링, 점대점 프로토콜, 인터넷 프로토콜, 주소 결정 프로토콜, 역순 주소 결정 프로토콜, 최단경로 우선 프로토콜, 내부 게이트웨이 라우팅 프로토콜, 향상된 내부 게이트웨이 라우팅 프로토콜, 라우팅 정보 프로토콜, 경계 경로 프로토콜, 전송 제어 프로토콜, 사용자 데이터그램 프로토콜, HTTP, HTTPS, 파일 전송 프로토콜, 텔넷, 도메인 네임 시스템, SSL, 동적 호스트 구성 프로토콜 등이 있다.

네트워크 액세스 계층

  • 이더넷: 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바이트로 이루어져 있는데, 생성된 제어토큰이 한 방향으로 링을 순환하면서 스테이션들의 네트워크 접속을 제어한다. 어느 스테이션도 전송을 하지 않으면 제어토큰 프레임이 끊임없이 링을 순환한다. 데이터 프레임을 같은 네트워크 내의 스테이션에 전달하고자 하면, 제어 토큰이 돌아오기를 기다렸다, 토큰이 전달되면 토큰을 보내지 않고, 전송하고자 하는 프레임을 보내야 한다. 순차적으로 링 안의 스테이션들로 넘어가다 프레임이 수신자에게 전달되면, 이 프레임의 복사본을 만들어 보관한 뒤, 계속해서 프레임을 넘긴다. 프레임을 전송한 스테이션에 도달할 때 까지 프레임을 넘기고, 전송자가 다시 프레임을 받으면, 해당 프레임은 흡수하고 토큰 프레임을 넘긴다.[10]
  • 점대점 프로토콜: 점대점 프로토콜 역시 OSI 7 계층의 데이터 링크 계층에서 사용되는 프로토콜이다. 점 대 점으로, 양단 사이에 링크를 개설, 유지, 관리, 시험 및 종료하는 등의 역할을 해준다. 링크를 통해 네트워크 계층의 프로토콜을 다중화하여 복합적으로 전송하고, 데이터그램을 캡슐화 해주는 기능을 한다. 기본적으로 가장 많이 쓰이는 프로토콜인 인터넷 프로토콜을 캡슐화하는 용도로 많이 사용되고, 오류 검출, 압축, 인증, 암호화 등 다양한 기능을 추가적으로 수행한다. 점대점 프로토콜의 주요 구성요소에는 캡슐화(Encapsulation), 링크 제어 프로토콜(Link Control Protocol, LPC), NCP(Network Control Protocol)이다. 캡슐화는 데이터 링크에서 3계층의 데이터그램에 여러 가지 데이터를 추가해, 2계층의 프레임으로 매핑하는 것을 의미한다. HDLC의 프레이밍 방식을 기초로 하기 때문에, 비트 단위의 데이터를 전달하고, HDLC의 프레임과 유사한 형식의 프레임을 사용한다. 링크 제어 프로토콜은 데이터 링크를 실질적으로 제어하는 프로토콜로, 커넥션을 개설, 유지, 종료하고 시험하는 역할을 한다. 다양한 옵션을 통해 최대 프레임 길이, 인증용 프로토콜, 프레임 압축 여부 등을 결정하거나 매직 넘버 옵션으로 링크가 루프백 되어있지는 않은지 검사를 수행한다. NCP는 서로 다른 3계층 프로토콜들에 대해 세부적인 제어를 하고, 데이터를 송수신할 수 있도록 설계된 프로토콜이다. 하나의 점대점 프로토콜 링크 상에 여러 개의 3계층 프로토콜을 사용할 수 있고, 각각의 프로토콜들은 그에 상응하는 NCP등의 제어를 받게 된다. NCP 중 대표적인 것으로는 IP를 제어하기 위한 IPCP(IP Control Protocol)이 있다. IPCP는 유동 IP를 할당받고, 도메인 네임 시스템과 Default Gateway 등 IP의 주소를 얻는 역할을 한다. 다양한 옵션을 통해 패킷의 압축 여부와 방식을 결정하거나, 피어에게 원하는 IP 주소를 요구하는 등의 기능을 수행한다.[11]

인터넷 계층

  • 인터넷 프로토콜: 송신 호스트와 수신 호스트가 패킷 교환 네트워크에서 정보를 주고받는 데 사용하는 정보 위주의 규약으로, OSI 7계층 중 네트워크 계층에서 호스트의 주소 지정과 패킷 분할 및 조립 기능을 담당한다. 어떠한 것도 보장하지 않고 데이터 전송에 최선을 다하는 것으로, 비신뢰성이며, 비연결형이다. 비신뢰성일 경우 오류 제어와 흐름제어를 하지 않아 오류가 발생해도 복구 작업을 취하지 않고, 송신 속도를 조절하지 않는다. 옵션에 따라 헤더의 길이가 가변적으로 변한다는 등의 특성이 있다. 필요한 경우 패킷을 단편화 하는 작업을 한다. 단편화는 네트워크 전송 가능량에 맞추어 데이터그램을 자르는 것이다. 인터넷은 여러 네트워크들이 모여 있는 것이기 때문에 한 네트워크에서 통과시킬 수 있는 최대 바이트가 정해져 있다. 따라서 최대 바이트량인 MTU(Maximum Transfer Unit)에 따라 인터넷 프로토콜의 데이터그램을 분할해야 한다.[12]
  • 주소 결정 프로토콜: 주소 결정 프로토콜로, 해당 IP를 그 IP주소에 맞는 물리적인 주소, 맥 주소를 가지고 오는 프로토콜이다. 2계층에서 물리적 주소를 사용하여 통신하는 경우 목적지 주소를 알아와 캡슐화를 완성하기 위한 목적으로 사용한다. IP를 이용하여 맥 주소를 알아내기 위해 연결된 모든 장비에게 요청 메시지를 보내고, 주소 결정 프로토콜의 요청 메시지를 받은 장비들은 누구에게 전달된 요청인지 IP 주소를 확인하여 자신의 IP일 경우 요청을 보내준다. 주소 결정 프로토콜은 요청을 보내기 위해 브로드캐스트 방식을 사용한다. 목적지 IP 주소가 같은 네트워크일 경우에는 해당 장비를 직접 찾는 요청 메시지를 브로드캐스트로 보내고, 다른 네트워크일 경우에는 직접 브로드캐스트를 보낼 수 없으니 게이트웨이로 데이터는 전달하기 위해 게이트웨이로 요청을 보낸다. 주소 결정 프로토콜의 종류에는 주소 결정 프로토콜, 주소 결정 프로토콜과 반대되는 개념인 역순 주소 결정 프로토콜, 주소 결정 프로토콜 프로그램을 수신했을 때, 해당 네트워크가 자신의 라우팅테이블에 있으면 자신의 맥 주소를 알려주는 Proxy ARP, 송신지 IP와 목적지 DLCI를 매핑하여 프레임 맵에 저장하고, 처음 연결할 경우 자신과 연결된 모든 선로를 멀티플렉싱하여 목적지 IP를 알아내는 Inverse ARP, 같은 네트워크에서 IP주소가 중복되는지 확인하고, 다른 장치들이자신의 IP주소를 갱신하도록 주기적으로 알려주는 GARP(Gratuitous ARP)가 있다.[13]
  • 역순 주소 결정 프로토콜: 주소 결정 프로토콜과 반대로, 물리 네트워크 주소(맥 주소)를 가지고, 서버로부터 IP주소를 요청하기 위해 사용된다. 주로 디스크가 없는 시스템을 부팅할 경우 사용하고, 요청 장치는 역순 주소 결정 프로토콜의 클라이언트 프로그램을 수행하여 맥 정보를 담고 있는 역순 주소 결정 프로토콜의 정보를 브로드캐스트로 전송한다. 응답 장치는 역순 주소 결정 프로토콜의 서버 프로그램을 수행하여, 요청자의 IP 주소를 담은 RARP 응답을 유니캐스트로 전송한다.[14]
  • 최단경로 우선 프로토콜: 최저 비용을 가지는 경로를 최적 라우팅 경로로 결정하는 방식이다. 가장 대표적인 링크 상태 프로토콜로, 최단 거리 우선 알고리즘(SPF)을 통해 라우팅 테이블을 생성한다. 주로 내부 게이트웨이 프로토콜(Interior Gateway Protocol, IGP)로 대규모 기업망에서 사용된다. 특히 ‘영역’이라는 개념을 사용하여 전체 네트워크를 작은 영역으로 나누어 효율적으로 관리하는 방식을 택한다. 각 영역은 백본영역에 연결되어 있다. 최단경로 우선 프로토콜은 링크 상태에 변화가 있을 경우 즉각적으로 반영해주기 때문에 컨버전스 타임이 매우 빠르다. 헬로 패킷을 송수신하여 이웃 관계를 유지하는데, 헬로 패킷 안에는 DR과 BDR을 선출하기 위한 우선순위 필드가 존재한다. 가변 길이 서브넷 마스크(Variable Length Subnet Mask, VLSM)을 지원하기 때문에 IP 주소를 효율적으로 사용할 수 있고, 라우팅 테이블을 줄일 수 있다.[15]
  • 내부 게이트웨이 라우팅 프로토콜: 거리백터 라우팅 프로토콜의 하나다. 시스코사에서 만든 프로토콜로, 시스코 라우터만 사용가능하다. 라우팅 테이블은 90초를 주기로 업데이트 한다. 라우팅 정보 프로토콜과 비슷한데, 가장 큰 차이점은 내부 게이트웨이 라우팅 프로토콜은 대역폭(Bandwidth), 지연(Delay), 신뢰성(Reliability), 부하(Load), MTU(Maximum Transmission Unit) 5가지 요인으로 가장 빠른 경로를 찾는 것이다. 라우팅 정보 프로토콜과 또 다른 점은 서브넷 마스크 값이 붙지 않아 가변 길이 서브넷 마스크 지원이 불가능하다는 것이다. 대역폭을 계산할 때 홉 카운트보다는 그 구간의 속도를 계산하여 가장 빠른 경로를 찾는 데 중점을 두고, 대역폭 값과 라우터 포트에 연결되어 있는 회선의 종류에 따라 지연값을 계산해야 한다. 신뢰성은 패킷이 출발지로부터 목적지에 도착하기까지 오류가 발생한 패킷의 비율로, 0~255사이의 정수로 나타낸다. 숫자가 높을수록 신뢰도가 높다. 부하는 출발지와 목적지 상의 경로에 어느 정도의 부하가 걸리고 있는지 측정한 값으로, 1/255~1사이의 값으로 나타내며, 1에 가까울수록 부하가 크다. MTU는 경로의 최대 전송 유닛의 크기를 말한다. 바이트 단위로 표시한다.[16]
  • 향상된 내부 게이트웨이 라우팅 프로토콜: IGRP와 마찬가지로 시스코사에서 나온 시스코 전용 라우팅 프로토콜이다. 내부 게이트웨이 라우팅 프로토콜의 장점을 최대한 반영해 발전시킨 프로토콜로, 동적 라우팅 프로토콜에 해당한다. 라우팅 정보 프로토콜와 같이 스플릿 호라이즌이 적용되고, 자동 요약(auto-summary)이 사용된다. DUAL(Diffusing Update Algorithm)알고리즘과 최적 경로(Successor)와 후속 경로(Feasible Successor)를 선출하는 방식이다. 매트릭 값이 다른 경로로 부하 분산을 시킬 수 있다는 장점이 있지만, 대규모 네트워크에서 사용하기 어렵다는 단점이 있다.[17]
  • 라우팅 정보 프로토콜: 최소 홉 카운트를 파악하여 라우팅하는 프로토콜이다. 동적 거리벡터 라우팅 프로토콜로, 라우팅 테이블에 인접 라우터 정보를 저장하여 경로를 결정한다. 최대 홉 카운트는 15로 거리가 짧아 주로 내부용으로 많이 이용하는 프로토콜이다. 직접 연결되어 있는 라우터는 홉으로 계산하지 않고 30초 주기로 인접 라우터로 정보를 전송한다. 4~6개까지 로드 밸런싱이 가능하다는 특징이 있고, 주로 사용자 데이터그램 프로토콜 세그먼트에 캡슐화 되어 사용된다. 단순히 홉의 수를 세어 경로를 결정하는 방식으로, 네트워크 속도는 판단하지 않기 때문에 비효율적인 경로를 사용하게 될 수도 있고, 거리벡터 알고리즘이기 때문에 컨버전스 타임이 느리다는 단점이 있다.
  • 경계 경로 프로토콜: 외부 라우팅 프로토콜(EGP)로 관리 도메인(AS)과 관리 도메인 간에 사용되는 라우팅 프로토콜이다. 정해진 정책에 의하여 최적 라우팅경로를 수립하며, 경로 벡터 방식의 라우팅 프로토콜로 다른 내부 게이트웨이 프로토콜보다 컨버전스는 느리지만, 대용량의 라우팅 정보를 교환할 수 있는 프로토콜이다. 전송 제어 프로토콜 포트 179번을 통하여 인접 라우터들과 이웃 관계를 성립하며, 이웃 라우터 간에는 유니캐스트 라우팅 업데이트를 실시한다.[15]

전송 계층

  • 전송 제어 프로토콜: 전송을 제어하는 프로토콜로, 인터넷 상에서 데이터를 메시지 형태로 보내기 위해 인터넷 프로토콜과 함께 사용하는 프로토콜이다. 인터넷 프로토콜이 데이터의 배달을 처리하면, 전송 제어 프로토콜은 패킷을 추적하고 관리하는 기능을 한다. 연결형 서비스를 지원하는 프로토콜로 인터넷 환경에서 기본으로 사용한다. 전송 제어 프로토콜은 연결형 서비스로 가상 회선 방식을 제공하고, 3-Way Handshaking 과정을 통해 연결하고, 4-Way Handshaking을 통해 해제했다. 흐름 제어 및 혼잡 제어를 수행하고, 사용자 데이터그램 프로토콜 보다 속도가 느리지만 높은 신뢰성을 보장한다. 1대1 통신으로, 전송 순서를 보장하고, 수신여부를 확인한다. 전송 제어 프로토콜 서버는 클라이언트와 1대1로 연결되고, 스트림 전송으로 전송데이터의 크기가 무제한이다. 서버 소켓은 연결만을 담당하고, 연결과정에서 반환된 클라이언트 소켓은 데이터의 송수신에 사용된다.
  • 사용자 데이터그램 프로토콜: 데이터를 데이터그램 단위로 처리하는 프로토콜로, 여기서 데이터그램이란 독립적인 관계를 지니는 패킷을 의미한다. 전송 제어 프로토콜과 달리 비연결형 프로토콜이고, 연결을 위해 할당된 논리적인 경로가 없기 때문에, 각각의 패킷은 다른 경로로 전송되고, 각각의 패킷은 독립적인 관계를 지니게 되는데 이러게 서로 다른 경로를 처리하게 되고, 이러한 프로토콜을 사용자 데이터그램 프로토콜이라고 한다. 사용자 데이터그램 프로토콜은 비연결형 서비스로 데이터그램 방식을 제공한다. 정보를 주고받을 때 정보를 보내거나 받는다는 신호절차를 거치지 않고, 사용자 데이터그램 프로토콜 헤더의 체크섬 필드를 통해 최소한의 오류만을 검출한다. 흐름 제어나 혼잡 제어와 같은 기능을 사용하지 않기 때문에 전송 제어 프로토콜보다 속도가 빠르고, 네트워크 부하가 적지만, 신뢰성이 낮다. 1대1 또는 1대N, N대N 통신까지 가능하고, 전송 순서와 수신 여부를 보장하지 않는다. 사용자 데이터그램 프로토콜에는 연결 함수가 불필요하기 때문에 서버 소켓과 클라이언트 소켓의 구분 없이, 인터넷 프로토콜을 기반으로 데이터를 전송한다. 65535바이트 크기의 데이터그램 단위로 전송되고, 크기를 초과할 경우 잘라서 보낸다.[18]

응용 계층

  • HTTP: 하이퍼 텍스트 마크업 언어(Hyprt Text Markup Language, HTML)과 같은 문서를 전달하기 위한 응용 계층 프로토콜이다. 브라우저가 웹 사이트와 호환하기 위해 브라우저는 요청을, 웹 사이트는 응답을 한다. 흔히 볼 수 있는 403 응답코드와, 404코드를 예로 들 수 있는데, 403 응답 코드는 권한이 없는 페이지에 접근하는 경우 회신되고, 404 응답 코드는 존재하지 않는 페이지에 접근하는 경우에 회신된다. 일반 텍스트 프로토콜로 설계되었기 때문에 보안이 취약하다는 단점을 보완하기 위해서 HTTP의 보안 버전으로 HTTPS 프로토콜을 사용할 수 있다.
  • 파일 전송 프로토콜: 웹 페이지 파일들을 서버로 파일을 옮기는 과정에서 사용하거나 서버의 파일을 자신의 컴퓨터에 옮기는 다운로드에 사용한다. 최초의 파일 전송 프로토콜 클라이언트는 명령 줄 인터페이스(Command Line Interface)의 형태였다. 보안 프로토콜로 계획된 것이 아니기 때문에 여러 보안 취약점이 존재한다. 이런 문제점이나 기능을 보완하기 위해 FTPS, 시큐어 셸 파일 전송프로토콜(Secure shell File Transger Protocol, SFTP), 간단한 파일 전송 프로토콜(Trivial File Transfer Protocol, TFTP) 등이 있다.
  • 텔넷: 인터넷이나 근거리 통신망에서 사용되는 프로토콜이다. 원격 지원 프로토콜로서 다른 사람의 호스트 컴퓨터의 사용권한을 가지고 있다는 전제하에 원격지에서 접근할 수 있도록 도와준다. 웹 서비스를 제공하는 파일 전송 프로토콜과 HTTP 프로토콜은 특정 파일을 요구하는 프로토콜인 반면, 텔넷은 정식 사용자로서 그 컴퓨터에 로그인 한 뒤 특정 응용 프로그램이나 데이터를 이용할 수 있다.
  • 도메인 네임 시스템: 호스트에 대한 이름 주소 변환을 위한 분산 데이터베이스 시스템으로, 실제 IP 주소가 아닌 도메인 이름을 입력해도 접속할 수 있게 도와준다. 도메인 네임 시스템 서버는 도메인 이름과 이에 대응하는 IP 주소에 관한 데이터베이스를 가지고 있다. 예를 들어 최상위 계층의 도메인에는 영리를 목적으로 하는 기관인 “com”, 네트워킹 회사가 사용하는 “net”, 비영리기관이 사용하는 “org”, 한국 서버에 사용하는 “kr”이 있다.[19]
  • SSL: 보안 소켓 계층으로, 인터넷 상에서 데이터를 안전하게 전송하기 위한 인터넷 암호화 통신프로토콜을 말한다. 전자상거래 등의 보안을 위해 넷스케이프에서 처음 개발된 것으로, 시간이 흐르면서 인터넷상의 표준 프로토콜로 자리매김하게 되었고, SSL이란 이름이 특정 회사의 제품 이름 같다고 하여, IETF(Internet Engineering Task Force)에 의해 TLS(Transport Layer Security)로 표준화되었다. TLS는 SSL을 기반으로 만들어졌기 때문에 아주 근소한 차이를 제외하면 거의 같다고 볼 수 있다. SSL은 사이트 인증(Site Authentication), 기밀성(data Privacy), 무결성(Data Intergrity) 크게 3가지의 기능들을 제공하여 인터넷 상에서 일어나는 트랜잭션의 기밀성(Privacy)을 보장한다. 사이트 인증은 사용자가 선택한 웹 사이트를 인증한다는 것을 의미하고, 기밀성은 데이터가 전달되는 도중, 다른 사용자에게 의해서 판독되지 않는 다는 것을 보장하는 것이다. 무결성은 사용자의 브라우저로부터 상대방의 웹 서버까지 전달되는 동안, 데이터가 도중에 누군가에 의해 변경되지 않도록 보장하는 것이다. SSL 상에서 HTTP를 구현한 것을 HTTPS라고 볼 수 있다.[20]
  • 동적 호스트 구성 프로토콜: 동적 호스트 설정 통신 규약이다. 동적 호스트 구성 프로토콜 서버에서 설정되어 있는 IP를 자동으로 할당해주어, 각 PC들은 자동으로 IP를 받아오기만 하면 되기 때문에 편하게 IP를 관리할 수 있다. 동적 호스트 구성 프로토콜 서버에 자신의 IP를 요청하고, 부여받는 동적 호스트 구성 프로토콜 클라이언트와 클라이언트로부터 IP 할당 요청을 받아 설정된 범위 안에서 사용하고 있지 않은 IP를 클라이언트에 부여하여 할당 가능한 IP 영역을 관리하는 동적 호스트 구성 프로토콜 서버, IP 주소와 TCP/IP 기본 설정을 개별 클라이언트에게 자동적으로 할당하는 역할을 하는 프로토콜 3가지로 구성되어 있다. 동적 호스트 구성 프로토콜을 사용하면 IP를 충돌 없이 편리하게 관리할 수 있고, 이동식 PC와 네트워크 연결에 특별한 설정이 필요 없어, 네트워크 연결 설정 시간을 단축시킬 수 있다는 장점이 있다. 다만 동적 호스트 구성 프로토콜 서버가 다운되면 인터넷 사용이 불가능하고, 악의적인 사용자에 의해 동적 호스트 구성 프로토콜 서버의 자원이 고갈될 수도 있다. UDP 기반 프로토콜로, 네트워크 부하에 따라 IP 할당이 지연되거나 실패할 수도 있다.[21]

각주

  1. 1.0 1.1 1.2 밤공기후하후하, 〈프로토콜 – Protocol 이란 무엇인가〉, 《네이버 블로그》, 2019-04-09
  2. 2.0 2.1 2.2 탕탕탕구리, 〈프로토콜(Protocol) 그래서 그게 뭔데?〉, 《티스토리》, 2019-03-15
  3. 밤공기후하후하, 〈프로토콜 – Stop and Wait, 정지 대기 기법이란 무엇인가〉, 《네이버 블로그》, 2019-04-16
  4. 밤공기후하후하, 〈프로토콜 – Sliding Window, 슬라이딩 윈도우 방식 이란 무엇인가〉, 《네이버 블로그》, 2019-04-16
  5. 밤공기후하후하, 〈프로토콜 – Congestion Control, 혼잡 제어 란 무엇인가〉, 《네이버 블로그》, 2019-04-20
  6. 홀인원, 〈(네트워크 실습) 3. 프롵토콜의 기능〉, 《네이버 블로그》, 2014-07-06
  7. 99CORN, 〈OSI 7계층 (OSI 7 LAYER)〉, 《티스토리》, 2015-12-01
  8. 99CORN, 〈TCP/IP 4계층(TCP/IP 4 Layer)〉, 《티스토리》, 2015-12-12
  9. valuecreator, 〈#1 Ethernet, TCP/IP 프로토콜 총 정리〉, 《티스토리》, 2019-06-13
  10. 토큰링〉, 《위키백과》
  11. ProHub, 〈(PPP) Point-to-Point Protocol이란 무엇인가?<1>〉, 《네이버 블로그》, 2015-12-22
  12. galid1, 〈Network – Network 계층 – 인터넷 프로토콜(IP)〉, 《티스토리》, 2019-02-27
  13. 찬차니, 〈(Neetwork) ARP와 ARP의 종류 5가지〉, 《네이버 블로그》, 2016-12-19
  14. 스윗봉봉, 〈RARP(Reverse Address Resolution Protocol)〉, 《네이버 블로그》, 2007-11-06
  15. 15.0 15.1 무미닝, 〈(네트워크) 라우팅 프로토콜 (RIP,OSPF,BGP)〉, 《네이버 블로그》, 2017-05-23
  16. Zenis, 〈IGRP〉, 《티스토리》, 2012-09-09
  17. chwitch, 〈9. EIGRP (Advanced Dostance Vector)〉, 《네이버 블로그》, 2016-05-06
  18. 망나니개발자, 〈(TCP/UDP) TCP와 UDP의 특징과 차이〉, 《티스토리》, 2017-11-05
  19. Rondeau, 〈통신 프로토콜 종류(FTP, HTTP, Telnet, 운)〉, 《네이버 블로그》, 2019-02-19
  20. 야기, 〈SSL Protocol 개념과 동작 원리〉, 《티스토리》, 2007-12-08
  21. 네트웍쟁이, 〈DHCP란 그 개념부터 알아보자〉, 《네이버 블로그》, 2013-02-19

참고자료

같이 보기


  검수요청.png검수요청.png 이 프로토콜 문서는 인터넷에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.