프로토콜(Protocol)

김하영·2021년 3월 22일
0

1. 프로토콜의 개념

프로토콜(Protocol)은 원래 외교상의 언어로써 의례나 국가간에 약속을 의미하며 통신에서는 어떤 시스템이 다른 시스템과 통신을 원활하게 수용하도록 해주는 통신 규약, 약속이다.

시스템 간의 통신을 위해 데이터 포맷, 시간, 요청/응답 형태 등 통신 규격 의미한다.

사용 목적과 종류에 따라 여러가지의 기능을 종합적으로 이루며, 모든 프로토콜 마다 전체 기능을 포함하기 보다 경우에 따라 몇 가지 기능이 포함 되었다.

- 프로토콜의 기본 요소

  1. 구문(Syntax) : 전송하고자 하는 데이터의 형식, 부호화, 신호 레벨 등을 규정

  2. 의미(Semantics) : 두 시스템 간의 효율적이고 정확한 정보 전송을 위한 협조 사항과 오류 관리를 위한 제어 정보를 규정

  3. 시간(Timing) : 두 기기 간의 통신 속도, 메시지의 순서 제어 등을 규정

- 프로토콜의 기능

  1. 단편화와 재결합

송신 측에서 전송할 데이터를 전송에 알맞은 일정 크기의 작은 블록으로 자르는 작업을 단편화(Fragmentation)라 하고, 수신 측에서 단편화된 블록을 원래의 데이터로 모으는 것을 재결합(Reassembly)이라 한다.

단편화를 통해 세분화된 데이터 블록을 프로토콜 데이터 단위(PDU, Protocol Data Unit)라고 한다.

데이터를 단편화하여 전송하면 전송 시간이 빠르고, 통신중에 오류를 효과적으로 제어할 수 있다.

너무 작은 블록으로 단편화 할 경우 재결합 시 처리 시간이 길어지고, 실제 데이터 외에 부수적인 데이터가 많아지므로 비효율적이다.

  1. 캡슐화

캡슐화는 단편화된 데이터에 송수신지 주소, 오류 검출 코드, 프로토콜 기능을 구현하기 위한 프로토콜 제어 정보 등의 정보를 부가하는 것이다. (요약화)

대표적인 예가 데이터 링크 제어 프로토콜의 HDLC 프레임이다.

정보 데이터를 오류 없이 정확하게 전송하기 위해 캡슐화를 수행한다.

  1. 흐름 제어

흐름 제어는 수신 측의 처리 능력에 따라 송식 측에서 송신하는 데이터의 전송량이나 전송 속도를 조절하는 기능이다.

정지-대기(Stop-and-Wait), 슬라이딩 윈도우(Sliding Window) 방식을 이용한다.

  1. 오류 제어

오류 제어(Error Control)는 전송중에 발생하는 오류를 검출하고 정정하여 데이터나 제어 정보의 파손에 대비하는 기능이다.

  1. 동기화

동기화는 송수신측이 같은 상태를 유지하도록 타이밍을 맞추는 기능이다.

  1. 순서 제어

순서 제어는 전송되는 데이터 블록(PDU)에 전송 순서를 부여하는 기능으로, 연결 위주의 데이터 전송 방식에만 사용된다.

송신 데이터들이 순서적으로 전송되도록 함으로써 흐름 제어 및 오류 제어를 용이하게 하는 기능이다.

  1. 주소 지정

주소 지정은 데이터가 목적지까지 정확하게 전송될 수 있도록 목적지 이름, 주소, 경로를 부여하는 기능이다.

목적지 이름을 전송할 데이터가 가리키는 곳, 주소는 목적지의 위치, 경로는 목적지에 도착할 수 있는 방법을 의미한다.

  1. 다중화

다중화는 한 개의 통신 회선을 여러 가입자들이 동시에 사용하도록 하는 기능이다.

  1. 경로 제어

경로 제어(Routing)는 송수신 측 간의 송신 경로 중에서 최적의 패킷 교환 경로를 설정하는 기능이다.

  1. 전송 서비스

전송하려는 데이터가 사용하도록 하는 별도의 부가 서비스이다.

  • 우선순위 : 특정 메시지를 최대한 빠른 시간 안에 목적지로 전송하기 위해서 메시지 단위에 우선순위를 부여하여 우선순위가 높은 메시지가 먼저 도착하도록 한다.
  • 서비스 등급 : 데이터의 요구에 따라 서비스 등급을 부여하여 서비스한다.
  • 보안성 : 액세스 제한과 같은 보안 체제를 구현한다.

2. 프로토콜의 종류

프로토콜은 두 가지로 이루어져 있으며 물리적 측면과 논리적 측면으로 나뉜다.

  1. 물리적 측면
    : 자료 전송에 쓰이는 전송 매체, 접속용 단자 및 전송 신호, 회선 규격 등(물리계층, 데이터 링크 계층, 네트워크계층)

  2. 논리적 측면
    : 프레임(Frame, 자료의 표현 형식 단위) 구성, 프레임 안에 있는 각 항목의 뜻과 기능, 자료 전송의 절차 등(전송 계층, 세션 계층, 표현 계층, 응용 계층)

  • 폐쇄적인 프로토콜:자사 장치들끼리 통신하기 위한 독자적인 통신 규약이며, 자세한 규격이 공개되어 있지 않아서 크래킹 위협에 상대적으로 안전하다. (보기: IBM의 SNA, SDLC 프로토콜)

  • 공개된 범용 프로토콜:여러 장치들에 쓰이는 널리 알려진 규격이며, 규격이 널리 공개되어 있기 때문에 컴퓨터와 네트워크 크래킹에 취약한 편이다. (보기: 인터넷의 TCP/IP)

  • 이더넷(Ethernet) 프로토콜 : MAC주소 기반 하드웨어 간의, LAN구간 통신 프로토콜이다.

    최소 길이 64KByte ~ 최대 1,518 KByte

  1. Preamble ( 7Byte ) : 패킷이 입력되고 있음을 네트워크 인터페이스에 알리기 위한 부분 0과 1이 번갈아 입력, 데이터 전송의 시작을 알림

  2. SFD ( Start Frame Delimiter, 1Byte ) : 통신을 위한 최초의 패킷에 101011을 입력, 해당 패킷이 최초 패킷임을 알려줌

  3. Destination MAC address (목적지 MAC 주소, 6Byte) : 패킷을 받을 네트워크 인터페이스에 대한 MAC 주소

  4. Source MAC address (출발지 MAC 주소, 6Byte) : 패킷을 보내는 네트워크 인터페이스에 대한 MAC 주소

  5. Length of Type ( 2Byte ) : 버전에 따른 길이 혹은 타입이 기록

  6. Data ( 0 ~1,500 Byte ) : 전송 데이터 저장

  7. Pad (가변) : 전송하고자 하는 데이터의 길이가 46Byte보다 적을시 패킷의 최소 길이인 64Byte를 맞추고자 임의의 데이터를 쓴다

  8. FCS (Frame Check Sequence, 4Byte ) : 전송되는 패킷의 오류 등을 확인하기 위해 CRC를 계산하여 입력

- 3계층 : 네트워크 (Network Layer) 프로토콜

  • ARP(Address Resolution Protocol)
    : LAN과 같은 물리적 매체에 연결된 두 장비가 통신하기 위해서는 하위 계층인 데이터 링크 계층 간의 통신 경로를 먼저 확보해야 한다.
    즉 ARP는 통신 대장 시스템에 도달하기 위한 다음 네트워크 인터페이스의 MAC 주소를 알아내야 할때 사용, 선택된 매체에 브로드캐스트를 통해 특정 IP주소를 사용하는 호스트가 응답하도록 요구하는 방식이다.

  • RARP(Reverse ARP)
    : 데이터 링크 계층의 주소인 MAC주소를 가진 네트워크 계층의 주소, 즉 IP를 확인하는 프로토콜이다.

  1. Hardware Type(HRD, 2Byte) : ARP패킷이 사용되는 물리계층의 네트워크 유형 정의

1 : 이더넷 (10Mb)
6 : IEEE802 네트워크
15 : 프레임 릴레이
16 : ATM
17 : HDLC
18 : 광 채널
19 : ATM (Asynchronous Transfer Mode)
20 : 직렬 연결

  1. Protocol Type (PRO, 2Byte) : ARP를 위해 사용할 상위 계층 프로토콜의 종류 지정,
    일반적으로 IPv4 사용, 값 = 2048 (0800 hex)

  2. Hardware Address Length(HLN, 1Byte) : 하드웨어 주소 값의 길이 MAC 주소 값 = 6

  3. Protocol Address Length(PLN, 1Byte) : 상위 계층 프로토콜의 주소 값 길이, IPv4 주소 값 = 4

  4. Opcode (OP, 2Byte) : ARP 패킷 동작 종류

1 : ARP Request
2 : ARP Reply
3 : RARP Request
4 : RARP Reply

  1. Sender Hardware Address (SHA, =HLN) : 패킷 송신자의 MAC 주소

  2. Sender Protocol Address (SPA, =PLN) : 패킷 송신자의 IP 주소

  3. Target Hardware Address (THA, =HLN) : 패킷 수신자의 MAC 주소

  4. Target Protocol Address (TPA, =PLN) : 패킷 수신자의 IP 주소

  • IP(Internet Protocol)

: 하위 계층의 서비스를 이용하여 주로 두 노드 간의 데이터 전송 경로를 확립역할

  • 데이터링크 계층 : 같은 회선(LAN)에 있는 두 노드 사이의 데이터 전송

  • 네트워크 계층 : 회선이 다른 두 노드(WAN)의 데이터를 전송

  1. Version (4Bit) : IP의 버전 정보, 0x4 일경우 IPv4

  2. IHL(Internet Header Length, 4Bit) : IP 헤더의 길이, 이 필드 값에 4를 곱한 값이 실제 헤더의 바이트(Byte) 길이

  3. TOS(Time Of Service, 1Byte) : 라우터에서 IP 데이터그램 처리시 우선순위 정의
    최소지연(Delay), 최대 처리율(MTU), 최대 신뢰성(Reliability), 최소 비용(Cost) 등 설정, 기본 값 0

  4. TL(Total Length, 2Byte) : 헤더를 포함한 데이터 길이를 의미

  5. Identification(2Byte) : 데이터그램이 단편화(Fragmentation)될 때 모든 단편에 이 값이 복사, 단편화 된 데이터그램이 실행될 때마다 1씩 증가

  6. Frag(3Bit) : 단편화 여부와 단편화된 조각이 첫 번째 조각인지, 중간 혹은 마지막 조각인지 알려줌

    RF(Reserved, 1Bit) : 아직 사용하지 않으므로 항상 0
    DF(Don't Fragment) : 1이면 단편화되지 않음, 0이면 단편화 되었음을 의미
    MF(More Fragment) : 0이면 마지막 단편이거나 유일한 단편이고 1이면 마지막 단편이 아님

  7. Fragment Offset(13Bit) : 기존 데이터그램에서 단편의 상대적 위치를 의미

  8. TTL(Time To Live, 1Byte) : 라우팅 과정에서 몇 개 이상의 라우터를 통과하면 패킷을 버릴지 입력, 하나를 지날 때마다 값이 1줄고 0이 되면 패킷은 버려진다

  9. Protocol(1Byte) : IP 계층의 서비스를 사용하는 상위 계층 프로토콜

1 : ICMP
2 : IGMP
6 : TCP
17 : UDP

  1. Header Checksum(2Byte) : 패킷 전달 중 발생할 수 있는 오류 검사를 위해 사용, 송측에서 체크섬을 계산하여 전송

  2. Source Address(4Byte) : 송신측 IP 주소

  3. Eestination Address(4Byte) : 수신측 IP 주소

  4. Options(가변) : 해당 패킷에 대한 옵션 사항을 입력

  5. Padding(가변) : 옵션 내용이 입력되었을 경우 그 값이 32배수로 데이터가 마무리 되도록 0으로 채움

  6. Data(가변) : IP패킷을 통해 전송되는 데이터 부분

  • ICMP(Internet Control Message Protocol)
    : 호스트 서버와 인터넷 게이트웨이 사이에서 메시지를 제어하고 오류를 알려주는 프로토콜

  1. Type (1Byte) : ICMP 메시지의 타입

0 : Echo Reply - 패킷이 목적지 노드나 라우터에 도착했는지 확인에 사용, 송신측 'ICMP Echo Request' 메시지 전송, 목적지 노드로부터 'ICMP Echo Reply'메시지 회신시 패킷이 무사히 전송된 것
3 : Destination Unreachable - 라우터가 특정 노드의 패킷을 목적지에 보내지 못할 경우, 송신 노드에 보내는 메시지 목적지까지 전송되지 못한 정보 포함
4 : Source Quench - 통신량이 많아 송신 불능 상태가 될 경우 정보,메시지를 송신측 노드에 보내고, 해석하여 송신 패킷의 양을 제어
5 : Redirect - 라우터가 송신측 노드에 적합하지 않은 경로로 설정되었을 경우 해당 노드에 대한 최적화된 경로를 다시 지정해주는 메시지
8 : Echo Request
11 : Time Exceeded - TTL값의 감소로 패킷 폐기시 송신측 라우터에 메시지 전송

  1. Code (1Byte) : 각 타입별 세부적인 값을 적는다

  2. Checksum (2Byte) : 패킷의 무결성을 위한 오류 보정 값

  3. Data (가변) : ICMP를 통해 보내는 데이터,보통 쓰레기 문자열

  • IGMP(Internet Group Management Protocol) : 멀티캐스트 그룹을 관리하는 역할

  • 데이터 전달 방식 3가지

  1. 유니캐스트(Unicast) : 송/수신단이 1:1로 대비, 일반적인 IP 데이터 전송 방식
  2. 브로드캐스트(Broadcast) : 해당 네트워크 대역의 모든 호스트에게 데이터를 전송하는 방식, 호스트 대역 주소가 모두 1(2진수)인 경우
  3. 멀티캐스트(Multicast) : 유니케스트와 브로트케스트의 중간 형태, 송신하는 하나의 호스트에서 특정한 호스트를 묶어 전송, D클래스 한정

- 4계층 : 전송 계층(Transport Layer) 프로토콜

응용프로그램 주소를 포트 번호로 이용 통신하는 프로토콜 제공

  • TCP(Transmission Control Protocol) : 연결 지향형(Connecttion-oriented) 프로토콜

특징

  • 높은 신뢰성
  • 연결의 설정과 해제
  • 시간 초과와 재전송
  • 가상 회선 연결 방식
  • 데이터 체크섬
  • 데이터 흐름 제어

TCP 헤더 구조

  1. S.Port(Source Port, 2Byte) : 출발지 포트 번호

  2. D.Port(Destination Port, 2Byte) : 목적지 포트 번호

  3. Seq.Number(Sequence Number, 4Byte) : 패킷 순서의 값

  4. Ack.Number(Acknowledgment Number, 4Byte) : 통신 상태의 패킷 순서의 값

  5. Data Offset(4Bit) : TCP 패킷 헤더의 길이를 나타냄, 32bit(4byte)가 몇행인지 가리킴, 최솟값 5

  6. Reserved(6Bit) : 예비 공간

  7. Control Bits(6Bit) : 6개의 비트는 각각 TCP패킷의 종류와 특성을 가리킴

URG(Urgent) : 1이면 헤더의 마지막 필드인 긴급 포인터의 내용 실행
ACK(Acknowledgment) : 1이면 확인 번호 필드가 유효
PSH(Push) : 1이면 송신자에게 높은 처리율을 요구
RST(Reset) : 1이면 TCP 연결을 다시 설정
SYN(Synchronize) : 1이면 연결 요청과 설정, 확인 응답에서 순서번호 동기화
FIN(Finish) : 1이면 TCP 연결 종료

  1. Window(2Byte) : TCP에서는 흐름제어를 할 때 슬라이딩 윈도우(Sliding window)와
    혼잡 윈도우 (Congestion window)를 사용
  • 슬라이딩 윈도우(Sliding window) : 윈도우 개념 사용, 데이터를 한 번에 처리할 수 있는 버퍼의 용량을 의미, 전체 세그먼트에 대한 확인 메시지를 수신하기전에 다음 세그먼트를 전송할 수 있게 해줌
  • 혼잡 윈도우 (Congestion window) : 네트워크의 혼잡 문제를 해결 하기 위해서 송신 시스템이 사용하는 방법, 데이터 양조절
  1. Checksum(2Byte) : 데이터 오류 검출을 위한 값

  2. Urgent Pointer(2Byte) : URG =1 일경우, 급한 데이터의 마지막 바이트의 패킷 순서 값(Seq.Number)을 입력

  3. Options(가변) : 옵션의 종류와 길이, 데이터 저장

  4. Padding(가변) : 옵션이 32bit가 안 되면 나머지 비트를 0으로 채움

  5. Data(가변) : 전송하고자 하는 데이터

  • UDP(User Datagram Protocol) 프로토콜 : 비연결 지향형 프로토콜

특징

  • 비연결 지향형
  • 네트워크 부하 감소
  • 비신뢰성
  • 전송된 데이터의 일부가 손실됨

UDP 헤더 구조

  1. S.Port(Source Port, 2Byte) : 출발지 포트 번호

  2. D.Port(Destination Port, 2Byte) : 목적지 포트 번호

  3. Length(2Byte) : UDP헤더와 데이터 필드를 포함한 전체 패킷의 길이

  4. Checksum(2Byte) : 데이터 오류 검출을 위한 값

  5. Data(가변) : 전송 하고자 하는 데이터

- 7계층 : 응용계층(Application Layer) 프로토콜

- FTP(File Transfer Protocol)

파일전송을 위한 기본 프로토콜
포트 : 20,21

FTP 연결

  1. 컨트롤 연결
  • FTP 서버가 21번 포트를 열고 클라이언트의 요청을 기다림(수동적 포트 오픈) → 클라이언트에서 임의의 포트를 설정하여 FTP 요청을 보냄(능동적 포트 오픈)
  1. 데이터 연결
  • 클라이언트에서 임의의 포트를 열고 수동적 오픈 상태를 설정 → 클라이언트에서 PORT 명령어를 사용, 열고 있는 포트를 서버에 전달 → 서버에서는 클라이언트가 보낸 임의의 포트를 받고 20번 포트를 수동적 포트 오픈상태로 설정

- Telnet

포트 : 23

  • 사용자가 원격에 있는 서버에 로그인하도록 TCP 연결을 설정하며, 단말기가 원격 컴퓨터 바로 옆에 있는 것처럼 직접 조작할 수 있게 해준다.

  • Telnet은 데이터를 암호화 처리하지 않고 그냥 평문으로 데이터를 보내기 때문에 보안에 취약하다.

Telnet 3가지 서비스

  1. 원격 시스템에 표준 인터페이스를 제공하는 네트워크 가상 단말기(NVT, Network Virtual Terminal) 기능 제공

  2. 클라이언트와 서버가 통신 옵션을 교환할 수 있는 메커니즘 제공

  3. 양단 간의 통신이 대칭적으로 수행, 클라이언트 측에서 항상사용자 단말기가 사용되는 대신 임의의 프로그램이 클라이언트로 작동할 수 있다

- SSH(secure shell)

포트 : 22

  • Telnet 과 같은 기능을 하지만 암호화된 데이터를 주고 받음

- SMTP(Simple Mail Transfer Protocol)

포트 : 25

  • 전자 메일 전송 표준 프로토콜

  • 메일 사이에서 발생하는 것을 전송해 주는 프로토콜로 인터넷에서 이메일을 교환할 때 그 과정을 정렬해준다.

- DNS(Domain Name System)

포트 : 53

  • 도메인 이름 주소를 통해 IP주소를 확인할 수 있는 프로토콜

- TFTP(Trivial File Transfer Protocol)

포트 : 69

  • UDP 패킷을 사용하는 파일 전송을 위한 프로토콜, 인증 기능 제공하지 않음

- HTTP(HyperText Transfer Protocol)

포트 : 80

  • 웹서버와 클라이언트가 상호 통신하기 위해 사용하는 프로토콜

- HTTPS(Hypertext Transfer Protocol over Secure Socket Layer)

포트 : 443

  • HTTP 보안 강화 버전

- POP3(Post Office Protocol)

포트 : 110

  • 메일 서버로 전송된 메일을 확인할 때 사용하는 프로토콜

- IMAP(Internet Message Access Protocol)

포트 : 143

  • pop3는 메일 서버로 전송된 메일을 확인할 때 사용하는 프로토콜

  • imap은 pop3와 같은 기능이나 메일을 읽은 후에도 메일이 서버에 남는 점

- NetBIOS(Network Basic Input/Output System)

포트 : 138

  • 기본적인 사무기기와 윈도우 시스템 간의 파일 공유를 위한 것, 항상 Open

NBT(NetBIOS over TCP)프로토콜을 사용 원격의 인터넷으로 전달 가능

- SNMP(Simple Network Management Protocol)

포트 : 161

  • 네트워크 관리와 모니터링을 위한 프로토콜
profile
Back-end Developer

0개의 댓글