[Network] 3. 프로토콜(Protocol), 프로토콜 데이터 단위(PDU, Protocol Data Unit)
프로토콜 (Protocol)
- 프로토콜은 서로 다른 시스템이나 기기들 간의 데이터 교환을 원활히 하기 위한 표준화된 통신규약이다. 즉 컴퓨터와 컴퓨터가 서로 이해 할 수 있는 언어이자 통신규약 및 약속이다.
- 통신을 위해 프로토콜이 가져야 하는 일반적인 기능에는 데이터 처리 기능, 제어기능, 관리적 기능이 있다.
- 프로토콜 기본 3요소
- 구문(Syntax): 데이터 형식, 코딩, 신호 레벨 등의 규정
- 의미(Semantic): 정보 전송을 위한 제어 정보로 조정과 에러 처리를 위한 규정
- 타이밍(Timing): 시스템 간 정보 전송을 위한 속도 조절과 순서 관리 규정
프로토콜의 기능
- 단편화
- 송신 측에서는 긴 데이터 블록을 손쉽게 전송할 수 잇도록 크기가 똑같은 작은 블록으로 나누어 전송
- 재합성
- 수신 측에서 쪼개진 작은 데이터 블록을 재합성하여 원래의 페이지로 복원하는 기능
- 캡슐화
- 각 프로토콜에 적합한 데이터 블록을 만들려고 데이터에 정보를 추가하는 것
- 플래그, 주소, 제어 정보, 오류 검출 부호 등을 부착하는 기능
- 연결제어
- 비연결 데이터 전송과 연결 위주 데이터 전송을 위한 통신로를 개설 유지 종결하는 기능
- 흐름제어
- 데이터 양이나 통신 속도 등이 수신 측의 처리 능력을 초과하지 않도록 조정하는 기능
- 오류제어
- 데이터 전송 중 발생할 수 있는 오류나 착오 등을 검출하고 정정하는 기능
- 순서 결정
- 연결 위주의 데이터를 전송할 때 송신 측이 보내는 데이터 단위 순서대로 수신 측에 전달하는 기능
- 주소 설정
- 발생지 목적지 등의 주소를 명기하여 데이터를 정확하게 전달하는 기능
- 동기화
- 두 통신 객체의 상태를 일치시키는 기능
- 다중화
- 하나의 통신로를 여러 개로 나누거나 회선 여러 개를 하나의 통신로로 변환시켜 다수의 가입자가 동시에 사용할 수 있도록 하는 기능
- 전송 서비스
- 통신 객체를 사용하기 쉽도록 별도로 추가 서비스를 제공하는 기능
프로토콜 예시
- HTTP(Hyper Text Transfer Protocol)
- 포트번호: 80
- packet 사용 (header 와 body로 구성)
- HTTP 는 클라이언트와 서버 사이에 이루어지는 요청/응답(request/response) 프로토콜이다. 주로 W3 상에서 정보를 주고받을 수 있는 프로토콜이다.
- 주로 HTML 문서를 주고받는 데에 쓰인다. 예를 들면, 클라이언트인 웹 브라우저가 HTTP 를 통하여 서버로부터 웹페이지(HTML)나 그림 정보를 요청하면, 서버는 이 요청에 응답하여 필요한 정보를 해당 사용자에게 전달하게 된다. 이 정보가 모니터와 같은 출력 장치를 통해 사용자에게 나타나는 것이다.
- HTTPS(Hyper Text Transfer Protocol Secure)
- 포트번호: 443
- 월드 와이드 웹(W3) 통신 프로토콜인 HTTP 의 보안이 강화된 버전이다.
- HTTPS 는 통신의 인증과 암호화를 위해 넷스케이프 커뮤니케이션즈 코퍼레이션이 개발한 넷스케이프 웹 프로토콜이며, 전자 상거래에서 널리 쓰인다.
- HTTPS 는 소켓 통신에서 일반 텍스트를 이용하는 대신에, SSL 이나 TLS 프로토콜을 통해 세션 데이터를 암호화한다. 따라서 데이터의 적절한 보호를 보장한다.
- FTP(File Transfer Protocol)
- 포트번호: 21
- TCP/IP 프로토콜을 가지고 서버와 클라이언트 사이의 파일 전송을 하기 위한 프로토콜이다.
- 파일 전송 프로토콜은 TCP/IP 프로토콜 테이블의 응용 계층에 속하며, 역사는 오래 되었지만 지금도 인터넷에서 자주 사용된다.
- 최초의 FTP 클라이언트 애플리케이션들은 운영 체제가 그래픽 사용자 인터페이스를 갖추기 이전에 개발된 명령 줄 프로그램이었으며, 대부분의 윈도우, 유닉스, 리눅스 운영 체제에 현재도 기본 포함되어 있다. 그 뒤로 수많은 FTP 클라이언트 및 오토메이션 유틸리티들이 데스크톱, 서버, 모바일 장치, 하드웨어용으로 개발되고 있으며, FTP는 웹 페이지 편집기와 같은 생산성 응용 프로그램들에 통합되고 있다.
- SFTP(Secure File Transfer Protocol)
- 포트번호: 22
- 신뢰할 수 있는 데이터 스트림을 통해 파일 접근, 파일 전송, 파일 관리를 제공하는 네트워크 프로토콜이다.
- 국제 인터넷 표준화 기구(IETF)가 보안 파일 전송 기능을 제공할 목적으로 Secure Shell Protocol(SSH) 버전 2.0의 확장으로 설계하였다.
- IETF 인터넷 초안에 따르면 이 프로토콜이 SSH-2 프로토콜의 문맥 안에 기술되어 있지만 전송 계층 보안(TLS)를 통하는 보안 파일 전송 프로그램이나 VPN 응용 프로그램의 관리 정보 전송과 같은 다른 수많은 응용 프로그램들에도 사용할 수 있다고 언급되어 있다.
- 이 프로토콜은 SSH 와 같은 보안 채널을 통해 수행되는데, 이 말은 서버가 이미 클라이언트와 인증이 되어 있으면서, 클라이언트 사용자 증명을 프로토콜에 이용할 수 있는 상태여야 한다는 것을 뜻한다.
- MYSQL
- 포트번호: 3306
- MySQL 에서는 접속할 때라든지 SQL 문 실행을 할 때의 갖은 처리에 있어서 클라이언트와 서버 사이에 MySQL 독자적인 규칙에 따른 패킷송수신을 한다.
- SSH(Secure Socket Layer)
- 포트번호: 22
- 네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해 주는 응용 프로그램 또는 그 프로토콜을 가리킨다.
- 기존의 rsh, rlogin, telnet 등을 대체하기 위해 설계되었으며, 강력한 인증 방법 및 안전하지 못한 네트워크에서 안전하게 통신을 할 수 있는 기능을 제공한다.
- SSH 는 암호화 기법을 사용하기 때문에, 통신이 노출된다고 하더라도 이해할 수 없는 암호화된 문자로 보인다.
프로토콜 데이터 단위 (PDU, Protocol Data Unit)
- PDU 는 데이터 통신에서 상위 계층이 전달한 데이터에 붙이는 제어정보를 뜻한다.
-
모든 계층에서 데이터 자체는 동일하지만, 각 레이어를 거치면서 헤더 정보가 추가되고 이름이 달라진다.
OSI 7계층에 따른 PDU
- 각 계층의 입장에서, 사용자(Application)는 Data, TCP 혹은 UDP(Transport) 는 Segments(TCP), Datagram(UDP), IP(Network) 는 Packets, 데이터 링크(Data Link)는 Frames, 하드웨어(Physical)는 Bits 로 부른다.
Segments (전송 계층, L4)
- 상위 계층에서
Data
를 전달받은 전송 계층(L4)에서는 아래의 정보들을 추가해서 그룹화 한다. - 이 때부터 데이터는
Data
가 아니라,Segment
라고 불린다.- 발신지 포트 : 발신하는 applicatio n의 포트
- 목적지 포트 : 수신해야 할 application 의 포트
- 순서 번호 : 순차적으로 전송할 경우 순서를 붙이며, 순서가 어긋나면 목적지 프로토콜이 이를 바로 잡는다.
- 오류검출코드 : 발신지와 목적지 프로토콜은
Segment
를 연산하여 오류 검출 코드를 각각 만든다. 만약 발신지에서 전송한 Segment 에 포함된 오류 검출 코드와 목적지에서 만든 오류 검출 코드가 다르다면 전송되는 과정에서 오류가 발생한 것이다. 이 경우, 수신측은 그 Segment 를 폐기하고 복구 절차를 밟는다. 오류검출코드는Checksum
,프레임 체크 시퀀스
라고도 부른다.
Packets (네트워크 계층, L3)
- 전송 계층(L4)으로 부터 전달받은
Segment
는 아래의 네트워크 계층의 정보를 포함해Packet
이라고 불리게 된다.- 발신지 컴퓨터 주소(Destination IP) : 패킷의 발신자 주소
- 목적지 컴퓨터 주소(Source IP) : 패킷의 수신자 주소
- 서비스 요청 : 네트워크 접속 프로토콜은 우선 순위와 같은 서브 네트워크의 사용을 요청할 수 있다.
그 외 용어
- Datagram : 데이터그램은 사용자의 순수한
message
를 다르게 부르는 말이다. - IP Packet : IP packet 에서의 packet 은 사용자 datagram 을 데이터 링크 계층(L2)의 MTU 에 맞춰서 토막 낸 상태이다. 즉 packet 은 토막난 상태의 사용자 정보 스트림을 말한다.
- MTU(Maximum Transmission Unit)
- 데이터 링크(L2)에서 하나의 프레임 또는 패킷에 담아 운반 가능한 최대 크기다. 즉 TCP/IP 네트워크 등과 같은 패킷 또는 프레임 기반의 네트워크에서 전송될 수 있는 최대 크기의 패킷 또는 프레임을 말한다.
- 상위 계층(네트워크, 전송, 세션, 표현, 응용)으로부터 전달된 데이터(헤더를 포함한 전체 사이즈)의 수용 가능한 최대 크기로 생각할 수 있다.
- 따라서 상위 계층 프로토콜은 하위 계층인 데이터 링크에서의 MTU 에 맞춰야 한다. 그래서 IP 단편화 등을 시행할 수밖에 없다.
- SDU(Service Data Unit)
- PDU 와 SDU 는 다른 용어다. SDU 는 상향/하향 통신 레이어 간에 전달되는 실제 정보를 말한다. PDU는 동일 레이어 내에서 데이터 단위를 부르는 이름이다.
- 즉,
PDU
는PCI
(프로토콜 통신 유닛의 줄인말로 쉽게 말하면 헤더 정보) +SDU
라고 생각하면 된다.
댓글 남기기