40
IT CookBook, 정정 정정 정정정 정정 : 정정정정 정정정 정정 ( 정정정 ) 정정정정정 정정 정정

프로토콜에 대한 이해

Embed Size (px)

DESCRIPTION

2. 프로토콜에 대한 이해. 학습목표 프로토콜의 필요성을 이해한다 . 프로토콜의 다양한 기능을 이해한다 . TCP/IP 를 구성하는 주요 프로토콜의 구조와 목적을 이해한다 . 내용 프로토콜의 개념 프로토콜의 기능 프로토콜의 종류. 프로토콜의 개념. 프로토콜 (protocol) 의 개념 본래 의미는 외교에서 의례 또는 의정서 1965 년 톰 마릴이 컴퓨터와 컴퓨터 사이에 메시지를 전달하는 과정을 프로토콜라 부름 - PowerPoint PPT Presentation

Citation preview

Page 1: 프로토콜에 대한 이해

IT CookBook, 정보 보안 개론과 실습 : 네트워크 해킹과 보안 (개정판 )

프로토콜에 대한 이해

Page 2: 프로토콜에 대한 이해

2/40

Contents

학습목표 프로토콜의 필요성을 이해한다 . 프로토콜의 다양한 기능을 이해한다 . TCP/IP 를 구성하는 주요 프로토콜의 구조와 목적을 이해한다 .

내용 프로토콜의 개념 프로토콜의 기능 프로토콜의 종류

Page 3: 프로토콜에 대한 이해

3/40

프로토콜 (protocol) 의 개념 본래 의미는 외교에서 의례 또는 의정서 1965 년 톰 마릴이 컴퓨터와 컴퓨터 사이에 메시지를 전달하는 과정을 프로토콜라 부름

• 컴퓨터가 메시지를 전달하고 , 메시지가 제대로 도착했는지 확인하며 , 메시지가 제대로 도착하지 않으면 메시지를 재전송하는 일련의 방법을 가리키는 ‘기술적 은어’라는 뜻

프로토콜의 세 가지 요소 구문 (syntax) : 데이터의 형식이나 신호로 , 부호화 방법 등을 정의 의미 (semantics) : 오류 제어 , 동기 제어 , 흐름 제어 같은 각종 제어 절차에 관한 제어

정보 정의 순서 (timing) : 송 /수신자 간 혹은 양단 (end-to-end) 의 통신 시스템과 망 사이의

통신 속도나 순서 등을 정의

프로토콜의 개념

Page 4: 프로토콜에 대한 이해

4/40

프로토콜의 기능

주소 설정 (Addressing) 각 전송 계층에 맞는 송신자와 수신자의 주소 지정

순서 제어 (Sequence Control) 데이터 단위가 전송될 때 보내지는 순서 명시

데이터 대열의 단편화 및 재조합 (Fragmentation & Reassembly) 전송 효율이 높은 작은 단위로 단편화 및 응용 프로그램에서 사용하기 위해 재조합

캡슐화 (Encapsulation) 데이터에 제어 정보를 덧붙임

Page 5: 프로토콜에 대한 이해

5/40

프로토콜의 기능

연결 제어 (Connection Control) 연결 설정 , 데이터 전송 , 연결 해제에 대한 통제 수행

흐름 제어 (Flow Control) 송신측 개체로부터 오는 데이터의 양이나 속도 조절

오류 제어 (Error Control) 데이터를 교환할 때 SDU(Service Data Unit) 나 PCI(Protocol Control Information)

에 대한 오류 검사

동기화 (Synchronization) 두 개체 간에 데이터가 전송될 때 각 개체는 특정 타이머 값이나 윈도우 크기 등을 통해

서로의 상태를 일치시킴

다중화 (Multiplexing) 여러 시스템이 동시에 통신할 수 있는 기법

전송 서비스 우선순위 결정 , 서비스 등급과 보안 요구 등을 제어

Page 6: 프로토콜에 대한 이해

6/40

프로토콜의 종류

OSI 7 계층

Page 7: 프로토콜에 대한 이해

7/40

프로토콜의 종류

OSI 7 계층 구조와 프로토콜

Page 8: 프로토콜에 대한 이해

8/40

데이터 링크 계층 프로토콜

하드웨어에 대한 주소인 MAC(Media Access Control) 주소를 기반으로 하드웨어 간 통신을 위한 프로토콜 제공

이더넷 프로토콜 흔히 랜이라고 부르는 네트워크 구간 또는 네트워크 하드웨어 사이에서 MAC 주소를

기반으로 통신을 위한 프로토콜

이더넷 패킷의 최소 길이는 64KBytes, 최대 길이는 1,518KBytes

Page 9: 프로토콜에 대한 이해

9/40

데이터 링크 계층 프로토콜

이더넷 패킷의 내용 ( 표 2-1)

Page 10: 프로토콜에 대한 이해

10/40

네트워크 계층 프로토콜

논리적인 주소인 IP 주소를 이용해 통신을 하기 위한 프로토콜 제공

ARP(Address Resolution Protocol) 통신 대상 시스템에 도달하기 위한 다음 네트워크 인터페이스의 MAC 주소를 알아낼 때

사용

선택된 매체에 브로드캐스트 (broadcast) 를 통해 특정 IP 주소를 사용하는 호스트가 응답을 하도록 요구하는 방식 사용• 목적지 호스트가 응답하면 송신 호스트는 목적지 호스트와 연결을 맺고 데이터를 전송하기 시작

ARP 패킷 구조 ( 그림 2-6)

Page 11: 프로토콜에 대한 이해

11/40

네트워크 계층 프로토콜

ARP 패킷 내용 ( 표 2-2)

Page 12: 프로토콜에 대한 이해

12/40

네트워크 계층 프로토콜

RARP(Reverse Address Resolution Protocol) Opcode 에도 정의되어 있었으나 , 데이터 링크 계층의 주소인 MAC 주소를 가진

네트워크 계층의 주소 , 즉 IP 확인 디스크가 없는 호스트가 자신의 IP 주소를 서버로부터 얻어내려면 RARP 라는 TCP/IP

인터넷 프로토콜 사용

IP(Internet Protocol) 대표적인 네트워크 계층의 프로토콜로 , 하위 계층의 서비스를 이용하여 주로 두 노드

간의 데이터 전송 경로 확립 IP 패킷 구조 ( 그림 2-7)

Page 13: 프로토콜에 대한 이해

13/40

프로토콜의 종류

IP 패킷 내용 ( 표 2-3)

Page 14: 프로토콜에 대한 이해

14/40

네트워크 계층 프로토콜

IP 패킷 내용 ( 표 2-3)

Page 15: 프로토콜에 대한 이해

15/40

네트워크 계층 프로토콜

IP 주소 체계• IP 는 32 자리 2 진수로 8 자리마다 점을 찍어 구분하고 , 개수가 제한되어 있기 때문에

체계적으로 사용할 수 있도록 별도의 규칙을 둠

• IP 주소는 A, B, C, D, E 클래스로 구분 ( 그림 2-8)

• A, B, C 클래스는 맨 앞부분에 시작하는 2 진수 숫자에 따라 구분

• A 클래스의 네트워크가 가장 크고 , C 클래스의 네트워크가 가장 작음

• 각 클래스마다 다음과 같이 사설 네트워크 대역을 지정해놓음 ( 표 2-5)

Page 16: 프로토콜에 대한 이해

16/40

네트워크 계층 프로토콜

• 네트워크 클래스의 구분과 ( 표 2-4) 클래스별 네트워크 범위 ( 표 2-5)

Page 17: 프로토콜에 대한 이해

17/40

네트워크 계층 프로토콜

ICMP(Internet Control Message Protocol) 호스트 서버와 인터넷 게이트웨이 사이에서 메시지를 제어하고 오류를 알려줌 ICMP 를 사용하는 대표 툴은 ping

IP 는 비연결형 프로토콜로 , 패킷이 확실히 전송된다는 보장이 없기 때문에 라우터나 노드 ( 호스트 ) 등에서 오류가 생겨 목적지까지 도달하지 못할 수 있으므로 송신측의 상태를 알려줘야 하는데 , 이때 필요한 것이 ICMP

송신측의 상황과 목적지 노드의 상황을 진단하는 프로토콜 IP 계층 위에서 동작하지만 TCP, UDP 의 전송 계층 프로토콜과는 별개 ICMP 패킷 구조 ( 그림 2-9)

Page 18: 프로토콜에 대한 이해

18/40

네트워크 계층 프로토콜

ICMP 패킷 내용 ( 표 2-6)

Page 19: 프로토콜에 대한 이해

19/40

네트워크 계층 프로토콜

ICMP 는 크게 오류 통지를 위한 오류 메시지와 진단용 문답 메시지 두 종류로 구분 ICMP Echo Request 메시지

• 송신측의 전송 패킷이 목적지 노드나 라우터에 도착했는지를 확인하는 데 사용

• 송신측 노드는 목적지 노드에 대해 ‘ ICMP Echo Request 메시지’를 송신하고 , 목적지 노드로부터 ‘ ICMP Echo Reply 메시지’가 회신되면 패킷이 무사히 전송된 것으로 인식

ICMP Destination Unreachable 메시지• 라우터가 특정 노드의 패킷을 목적지에 보내지 못할 경우 , 송신 노드에 대해 ‘ ICMP Destination

Unreachable 메시지’를 보내고 ( 목적지까지 전송되지 못한 이유를 나타내는 정보 포함 ) 목적지 노드의 IP 주소의 경로를 찾아내지 못한 라우터는 이를 다시 송신측 라우터로 이 메시지를 되돌려 보냄

• 송신측 노드는 이 메시지를 해석하여 패킷이 목적지에 도착하지 못했음을 알 수 있음

Page 20: 프로토콜에 대한 이해

20/40

네트워크 계층 프로토콜

ICMP Redirect 메시지• 라우터가 송신측 노드에 적합하지 않은 경로로 설정되어 있을 경우 그 노드에 대한 최적화된

경로를 다시 지정해주는 ICMP Redirect 메시지를 보냄

ICMP Time Exceeded 메시지• 패킷이 네트워크 사이에서 무한정 돌아가지 않게 하기 위해 각 라우터가 패킷을 처리할 때마다

TTL(Time To Live) 을 감소시키다가 그 값이 ‘ 0’ 이 되면 패킷을 폐기하기 위해 송신측 라우터에 ‘ ICMP Time Exceeded 메시지’를 되돌려 보냄으로써 패킷이 폐기된 사실을 알림

• [ 그림 2-11] 의 경우에 노드 A 에서 TTL 값을 3으로 전송한다면 , 라우터 A 에서 2 가 되고 , B 에서 1, C 에서 0이 되어 패킷이 폐기되고 노드 B 에는 전달되지 못할 것이다 .

Page 21: 프로토콜에 대한 이해

21/40

네트워크 계층 프로토콜

ICMP Source Quench 메시지• 저속 광역 회선 등을 사용할 경우에는 IP 라우터의 WAN 쪽에서 집중이 발생할 수 있는데 , 이 집중을 완화하기 위해 , 송신측 큐 값이 ‘ 0’ 으로 남아 송신 불능 상태가 되면 ‘ ICMP Source Quench 메시지’를 송신측 노드에 보내고 , 송신측은 이 메시지의 정보를 해석하여 회선의 어딘가가 혼잡하다는 것을 인식하고 송신 패킷 양 제어

Page 22: 프로토콜에 대한 이해

22/40

네트워크 계층 프로토콜

IGMP(Internet Group Management Prococol) 멀티캐스트에 관여하는 프로토콜로 , 멀티캐스트 그룹 관리

유니캐스트• 한 호스트에서 다른 호스트로 전송 ( 송 /수신단이 1:1 로 대비 )

• 일반적인 IP 데이터의 전송은 모두 유니캐스트 사용

브로드캐스트• 호스트에서 IP 네트워크에 있는 전체 호스트로 데이터 전송

• TCP/IP 에서 브로드캐스트용 주소는 IP 호스트 대역 주소가 모두‘ 1(2 진수로 표현할 시에 )’ 인 경우

• 일반적인 브로드캐스트는 255.255.255.255

• 특정 네트워크에 브로드캐스팅하는 것을 다이렉트 브로드캐스팅 ( 예 > C 클래스의 211.32.34.0 네트워크 대해 브로드캐스팅하고자 하는 경우 목적지 주소는 211.32.34.255 로 지정 )

멀티캐스트• 유니캐스트와 브로드캐스트의 중간 형태

• 송신하는 하나의 호스트에 특정한 호스트를 묶어서 전송

• 지정한 주소로 패킷을 한 번만 전달하면 멀티캐스트 그룹에 속한 모든 호스트에 전달되기 때문에 효율이 높음

• IP 멀티캐스트 주소는 Class D 주소 대역 (244.0.0.1~239.255.255.255) 으로 규정

Page 23: 프로토콜에 대한 이해

23/40

전송 계층 프로토콜

TCP(Transmission Control Protocol) 전송 계층에서 동작하는 연결 지향형 (connectionoriented) 프로토콜 데이터의 흐름을 관리하고 , 데이터가 정확한지 검증하며 통신

쓰리웨이 핸드셰이킹 (three-way handshaking) 을 통해 연결 설정 특징

• 높은 신뢰성

• 가상 회선 연결 방식

• 연결의 설정과 해제

• 데이터 체크섬

• 시간 초과와 재전송

• 데이터 흐름 제어

Page 24: 프로토콜에 대한 이해

24/40

전송 계층 프로토콜

TCP 헤더 ( 그림 2-13)

Page 25: 프로토콜에 대한 이해

25/40

전송 계층 프로토콜

TCP 패킷 내용 ( 표 2-7)

Page 26: 프로토콜에 대한 이해

26/40

전송 계층 프로토콜

TCP 패킷 내용 ( 표 2-7)

Page 27: 프로토콜에 대한 이해

27/40

전송 계층 프로토콜

TCP 에서 연결 생성 과정 ( 그림 2-14)• ➊ 단계 : 두 시스템이 통신을 하기 전에 클라이언트는 포트가 Closed 상태며 , 서버는 해당 포트로 항상 서비스를 제공할 수 있도록 Listen 상태다 .

• ➋ 단계 : 처음 클라이언트가 통신을 하고자 하면 , 임의의 포트 번호가 클라이언트 프로그램에 할당되고 , 클라이언트는 SYN Sent 상태가 된다 . 서버에 연결을 하고 싶다는 일종의 의사 표시다 .

• ➌ 단계 : 서버는 클라이언트의 연결 요청을 받고 , SYN Received 상태가 된다 . 그리고 클라이언트에 연결을 해도 좋다는 의미로 SYN+ACK 패킷을 보낸다 .

• ➍ 단계 : 마지막으로 클라이언트는 연결 요청에 대한 서버의 응답을 확인했다는 표시로 ACK 패킷을 서버에 보낸다 .

Page 28: 프로토콜에 대한 이해

28/40

전송 계층 프로토콜

TCP 에서 연결 해제 과정 ( 그림 2-15)• ➊ 단계 : 두 시스템이 통신을 하는 중에는 클라이언트와 서버 모두 Established 상태다 .

• ➋ 단계 : 통신을 끊고자 하는 클라이언트가 서버에 FIN 패킷을 보낸다 . 이때 , 클라이언트는 Close Wait 상태가 된다 .

• ➌ 단계 : 서버는 클라이언트의 연결 종료 요청을 확인하고 , 클라이언트에 응답으로 ACK 패킷을 보낸 뒤 , 서버도 클라이언트의 연결을 종료하겠다는 의미로 FIN 패킷을 보낸다 . 그리고 Close Wait 상태가 된다 .

• ➍ 단계 : 마지막으로 클라이언트는 연결 종료 요청에 대한 서버의 응답을 확인했다는 의미로 ACK 패킷을 서버에 보낸다 .

Page 29: 프로토콜에 대한 이해

29/40

전송 계층 프로토콜

UDP(User Datagram Protocol) TCP 와 달리 비연결 지향형 프로토콜 송신 시스템과 목적지 시스템 사이에 상호 통신이 이루어지지 않기 때문에 전송되는

데이터 중 일부가 손실되는 경우 손실 데이터에 대한 재전송을 요구하지 않음 비연결 지향형 프로토콜이므로 송신 시스템은 손실된 데이터의 정보를 알 수 없으며 ,

따라서 손실 데이터를 재전송하지 않음

특징• 비연결 지향형

• 네트워크 부하 감소

• 비신뢰성

• 전송된 데이터의 일부가 소실됨

UDP 헤더 ( 그림 2-16)

Page 30: 프로토콜에 대한 이해

30/40

전송 계층 프로토콜

UDP 패킷 내용 ( 표 2-8)

Page 31: 프로토콜에 대한 이해

31/40

응용 계층 프로토콜

사용자가 사용하는 응용 프로그램이 네트워크와 통신하기 위해 사용하는 프로토콜

FTP(File Transfer Protocol, 20, 21) 파일 전송을 위한 가장 기본 프로토콜로 , RFC 114 로 1971 년에 만들어짐 FTP 연결은 컨트롤 연결과 데이터 연결로 나뉨

컨트롤 연결• FTP 서버가 21번 포트를 열고 클라이언트의 요청을 기다림 ( 수동적 포트 오픈 ) →

클라이언트에서 임의의 포트를 설정하여 FTP 요청을 보냄 ( 능동적 포트 오픈 )

Page 32: 프로토콜에 대한 이해

32/40

응용 계층 프로토콜

FTP 연결 설정 ( 데이터 연결 )

➊ 클라이언트에서 임의의 포트를 열고 수동적 오픈 상태 설정

➋ 클라이언트에서 PORT 명령어를 사용하여 열고 있는 포트 번호를 서버에 전달

➌ 서버에서는 클라이언트가 보낸 임의의 포트를 받고 20번 포트를 수동적 포트 오픈 상태로 설정

Page 33: 프로토콜에 대한 이해

33/40

응용 계층 프로토콜

FTP 명령어 처리 과정• FTP 는 컨트롤 연결을 설정하여 서버 컨트롤 프로세스와 클라이언트 컨트롤 프로세스가 통신

• 대화형으로 처리되며 , 사용자가 서버에 내리는 명령 (Command) 과 그 응답 (Response) 으로 구분

• 명령 메시지에 포함된 명령어 종류– 접근 명령어 : USER, PASS, ACCT, REIN, QUIT, ABOR– 파일 관리 명령어 : CWD, CDUP, DELE, LIST, NLIST, MKD, PWD, RMD, RNFR, RNTO, SMNT– 데이터 형식화 명령어 : TYPE, STRU, MODE– 포트 정의 명령어 :PORT, PASV– 파일 전송 명령어 : GET, PUT, MGET, MPUT, RETR, STOR, APPE, STOU, ALLO, REST, STAT– 기타 명령어 : HELP, NOOP, SITE, SYST– 예 : get a.txt 명령어 : get

SP : get 과 a.txt 사이의 띄어쓰기매개변수 : a.txtCR, LF : get a.txt 입력하고 [Enter] 키를 누름

명령어 : getSP : get 과 a.txt 사이의 띄어쓰기매개변수 : a.txtCR, LF : get a.txt 입력하고 [Enter] 키를 누름

Page 34: 프로토콜에 대한 이해

34/40

응용 계층 프로토콜

Telnet(23) 사용자가 원격에 있는 서버에 로그인하도록 TCP 연결을 설정하며 , 단말기가 원격

컴퓨터 바로 옆에 있는 것처럼 직접 조작할 수 있게 해줌 텔넷이 제공하는 서비스

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

• 클라이언트와 서버가 통신 옵션을 교환할 수 있는 메커니즘을 제공한다 . 예를 들어 , 7 비트 ASCII 코드로 데이터를 주고받을 수도 있고 , 8 비트 코드로 데이터를 주고받을 수도 있다 .

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

Page 35: 프로토콜에 대한 이해

35/40

프로토콜의 종류

응용 계층에서 동작하는 프로토콜 Telnet(23)

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

• 텔넷이 제공하는 서비스– 원격 시스템에 표준 인터페이스를 제공하는 네트워크 가상 단말기 (NVT, Network Virtual Terminal) 기능을

제공한다 .– 클라이언트와 서버가 통신 옵션을 교환할 수 있는 메커니즘을 제공한다 . 예를 들어 , 7 비트 ASCII 코드로

데이터를 주고받을 수도 있고 , 8 비트 코드로 데이터를 주고받을 수도 있다 .– 양단 간의 통신이 대칭적으로 수행되며 , 클라이언트측에서 항상 사용자 단말기가 사용되는 대신 임의의

프로그램이 클라이언트로 작동할 수 있다 .

Page 36: 프로토콜에 대한 이해

36/40

응용 계층 프로토콜

SMTP(Simple Mail Transfer Protocol, 25) 메일 전송을 위한 프로토콜

Page 37: 프로토콜에 대한 이해

37/40

응용 계층 프로토콜

SMTP 프로세스 모델

Page 38: 프로토콜에 대한 이해

38/40

응용 계층 프로토콜

메일 전달• 로컬 컴퓨터에서 새로운 메일 주소들로 식별자 맵핑 ( 보통 메시지와 수신자 이름 테이블 구성 )

• 메일 인터페이스 프로그램은 전송 프로세스에 메시지를 넘겨주기 전 수신자 별명 데이터베이스를 조사하여 수신자 주소로 변환 . 메일 별명 확장 (mail alias expansion) 메커니즘이 입력되는 수신자 주소를 별명으로 바꾸고 맵핑하기 위해 사용됨

• 별명을 사용하면 메일 시스템은 기능적으로 좀 더 편리하게 사용할 수 있으며 , 맵핑은 일대다(1:n) 또는 다대일 (n:1) 로 가능

• 입력과 출력 메일 메시지는 메일 전달 프로세스로 넘겨줌

• 메일 전달 프로세스에서는 별명 데이터베이스를 조사해 메일의 주소를 교체 . 메일 전달 프로세스는 맵핑된 메일의 주소가 로컬인지 또는 원격인지를 판별하여 원격 주소면 송신 메일 큐에 메시지를 저장하고 , 로컬 주소면 수신 메일 큐에 메시지를 저장

Page 39: 프로토콜에 대한 이해

39/40

응용 계층 프로토콜

DNS(Domain Name Service, 53) 도메인 이름 주소를 통해 IP 주소를 확인할 수 있는 프로토콜

TFTP(Trivial File Transfer Protocol, 69) 1985 년에 만들어졌으며 FTP처럼 파일을 전송하기 위한 프로토콜

HTTP(HyperText Transfer Protocol, 80) 인터넷 서비스를 위한 프로토콜

POP3(Post Office Protocol 3, 110) & IMAP(Internet Message Access Protocol, 143) 메일 서버로 전송된 메일을 확인할 때 사용하는 프로토콜 . IMAP 도 POP3 와

기본적으로 같으나 , 메일을 읽은 후에도 메일이 서버에 남는다는 점이 다름

RPC(Remote Procedure Call, 111) 썬 (Sun) 의 Remote Procedure Call 을 가리킴

NetBIOS(Network Basic Input/Output System, 138) 사무기기와 윈도우 시스템 간의 파일공유를 위한 프로토콜

SNMP(Simple Network Management Protocol, 161) 네트워크 관리와 모니터링을 위한 프로토콜

Page 40: 프로토콜에 대한 이해

IT CookBook, 정보 보안 개론과 실습 : 네트워크 해킹과 보안 (개정판 )