본문 바로가기

IT 살이/04. 기술 - 인프라

네트워킹 기본 - 06. 프로토콜 개념

2015/10/27 - [01. 기술 - 인프라] - 네트워킹 장비 - 01. 허브, 스위치, 라우터

2015/10/27 - [01. 기술 - 인프라] - 네트워킹 장비 - 02. L2, L3, L4, L7 스위치

2015/10/27 - [01. 기술 - 인프라] - 네트워킹 장비 - 03. 백본 스위치

2015/10/28 - [01. 기술 - 인프라] - 네트워킹 기본 - 04. L4, L7 로드 밸런싱

2015/10/28 - [01. 기술 - 인프라] - 네트워킹 기본 - 05. LAN, WAN, VLAN

2015/11/05 - [01. 기술 - 인프라] - 네트워킹 기본 - 06. 프로토콜 개념

2015/11/08 - [01. 기술 - 인프라] - 네트워킹 기본 - 07. TCP/IP 4 계층 모델

2015/11/08 - [01. 기술 - 인프라] - 네트워킹 기본 - 08. 어플리케이션 계층 프로토콜 HTTP

2015/11/24 - [01. 기술 - 인프라] - 네트워킹 기본 - 09. TCP, IP, Ethernet 프로토콜 그리고 통신



앞에서는 주로 네트워킹을 가능하게 하는 장비 중에서 스위치에 대해서 알아봤다. 스위치를 포함한 모든 네트워킹 장비는 오고 가는 패킷에 포함된 "정보"를 이용해서 자신이 할일을 한다. 즉 어떤 레이어(3레이어)의 장비는 헤더 부분에 포함된 정보 값을 근거로 해서 다른 네트워크 영역으로 전달해야 한다고 생각해서 다른 라우터로 전달하거나 또는 어떤 레이어(2레이어)의 장비에서는 자신이 속한 네트워크 안에서 어떤 MAC 주소를 갖는 머신으로 보내야 할지 판단해서 전송을 하게 된다.  



(그림 출처 : http://www.fastweb.it/internet/commutazione-di-pacchetto-cos-e-e-come-funziona/ )


패킷에 포함된 정보란 것은 결국 프로토콜이라는 약속에 의해서 정의된다. 



즉 프로토콜은 패킷의 "몇번째부터는 주소이고 몇번째부터는 데이터이고" 등을 정의하고 있다. 패킷을 생성할때는 프로토콜이라는 약속대로 패킷을 구성하고 필요한 정보를 포함시켜야 한다. 그래야 받는 쪽에서도 프로토콜이라는 약속을 기준으로 패킷을 파싱해서 클라이어언트가 보내길 원하는 데이터를 얻게 된다. 그런데 패킷 구조의 정의는 레이어별로 사용되는 프로토콜에 따라서 달라진다.


패킷 구조의 정의( 정보의 구조 정의)는 프로토콜이 사용되는 레이어별로 달라진다. 


전송 레이어에서 사용되는 프로토콜인 TCP가 만들어 내는 패킷(세그먼트라는 용어가 더 정확하지만, 개념에 중점을 두고 있으므로 그냥 패킷으로 통칭한다)의 구조와 네트워크 레이어에서 사용되는 프로토콜 IP가 만들어내는 패킷의 구조가 다르다. 예를 들어 패킷의 헤더 부분의 사이즈와 구성은 레이어별 프로토콜마다 달라지게 된다.  장비가 레이어 3 장비이냐 레이어 4 장비이냐는 이렇게 각 레이어에서 사용되는 프로토콜을 이해할 수 있느냐 즉 패킷을 파싱할 수 있느냐 없느냐의 의미이다.


"몇 레이어의 장비"라는 의미는 그 레이어에서 사용되고 있는 프로토콜의 의미를 알고 있다는 것이다.


프로토콜은 지금까지 말한 대로 전달되는 데이터 즉 정보의 구조를 정의하는 역할도 하지만 다음과 같은 역할도 한다. 프로토콜은 기능 정의도 하고 있다. 


프로토콜은 그것이 사용되는 레이어에서 어떤 기능을 할 수 있는지도 정의하고 있다.


즉 전송 계층에서 사용되는 프로토콜 TCP에서는 반드시 패킷이 상대방에 전달되었는지를 확인하는 기능이 있다. 이 기능은 네트워크 계층의 IP에는 정의되지 않은 기능이다. 즉 이런 전송 보증 기능은 레이어 프로토콜을 설계할때 전송 계층에 포함시키는 것이 적절하다고 판단했고, 그 설계가 표준으로 잡힌 것이다.  

지금까지 내용을 정리해보면 프로토콜 설계와 우리가 흔히 알고 있는 객체의 클래스 설계와 유사하다는 것을 알 수 있다.


객체 : 속성(필드)과 메소드 정의 

프로토콜 : 정보(데이터) 구조 정의와 기능 정의


다음부터는 프로토콜의 특별한 클래스(타입)인  TCP, IP, Ethernet 등에 대해서 정리하려고 한다.

참고로, 프로토콜이라하면 TCP/IP 프로토콜을 주로 떠올릴텐데, 어떤 장비라도 서로 통신을 하기 위해서는 프로토콜이 필요하다. 


업데이트 : 2015.11.08(일)


USB : PC <--> 마우스 같은 주변 장치와의 플러그&플레이를 목적으로 하는 연결 프로토콜

SCSI(스쿠지) : PC <--> 저장 장치 연결 프로토콜( 디스크 드라이브, 테이프 드라이브, 테이프 드라이브, 프린터, 스캐너 등 )

그리고 멀티 코어 CPU가 당연시되고 있는데 이런 환경에서는 CPU안에서도 통신이 필요한데, 이를 위한 프로토콜도 존재한다.