프로토콜에 대한 이해

Download Report

Transcript 프로토콜에 대한 이해

프로토콜에 대한 이해
IT CookBook, 정보 보안 개론과 실습 : 네트워크 해킹과 보안(개정
판)
Contents
 학습목표
 프로토콜의 필요성을 이해한다.
 프로토콜의 다양한 기능을 이해한다.
 TCP/IP를 구성하는 주요 프로토콜의 구조와 목적을 이해한다.
 내용
 프로토콜의 개념
 프로토콜의 기능
 프로토콜의 종류
2/40
프로토콜의 개념
 프로토콜(protocol)의 개념
 본래 의미는 외교에서 의례 또는 의정서
 1965년 톰 마릴이 컴퓨터와 컴퓨터 사이에 메시지를 전달하는 과정을 프로토콜라 부름
• 컴퓨터가 메시지를 전달하고, 메시지가 제대로 도착했는지 확인하며, 메시지가 제대로 도착하지
않으면 메시지를 재전송하는 일련의 방법을 가리키는 ‘기술적 은어’라는 뜻
 프로토콜의 세 가지 요소
 구문(syntax) : 데이터의 형식이나 신호로, 부호화 방법 등을 정의
 의미(semantics) : 오류 제어, 동기 제어, 흐름 제어 같은 각종 제어 절차에 관한 제어 정
보 정의
 순서(timing) : 송/수신자 간 혹은 양단(end-to-end)의 통신 시스템과 망 사이의 통신
속도나 순서 등을 정의
3/40
프로토콜의 기능
 주소 설정(Addressing)
 각 전송 계층에 맞는 송신자와 수신자의 주소 지정
 순서 제어(Sequence Control)
 데이터 단위가 전송될 때 보내지는 순서 명시
 데이터 대열의 단편화 및 재조합(Fragmentation & Reassembly)
 전송 효율이 높은 작은 단위로 단편화 및 응용 프로그램에서 사용하기 위해 재조합
 캡슐화(Encapsulation)
 데이터에 제어 정보를 덧붙임
4/40
프로토콜의 기능
 연결 제어(Connection Control)
 연결 설정, 데이터 전송, 연결 해제에 대한 통제 수행
 흐름 제어(Flow Control)
 송신측 개체로부터 오는 데이터의 양이나 속도 조절
 오류 제어(Error Control)
 데이터를 교환할 때 SDU(Service Data Unit)나 PCI(Protocol Control Information)에
대한 오류 검사
 동기화(Synchronization)
 두 개체 간에 데이터가 전송될 때 각 개체는 특정 타이머 값이나 윈도우 크기 등을 통해
서로의 상태를 일치시킴
 다중화(Multiplexing)
 여러 시스템이 동시에 통신할 수 있는 기법
 전송 서비스
 우선순위 결정, 서비스 등급과 보안 요구 등을 제어
5/40
프로토콜의 종류
 OSI 7계층
6/40
프로토콜의 종류
 OSI 7계층 구조와 프로토콜
7/40
데이터 링크 계층 프로토콜
 하드웨어에 대한 주소인 MAC(Media Access Control) 주소를 기반으로 하
드웨어 간 통신을 위한 프로토콜 제공
 이더넷 프로토콜
 흔히 랜이라고 부르는 네트워크 구간 또는 네트워크 하드웨어 사이에서 MAC 주소를 기
반으로 통신을 위한 프로토콜
 이더넷 패킷의 최소 길이는 64KBytes, 최대 길이는 1,518KBytes
8/40
데이터 링크 계층 프로토콜
 이더넷 패킷의 내용(표 2-1)
9/40
네트워크 계층 프로토콜
 논리적인 주소인 IP 주소를 이용해 통신을 하기 위한 프로토콜 제공
 ARP(Address Resolution Protocol)
 통신 대상 시스템에 도달하기 위한 다음 네트워크 인터페이스의 MAC 주소를 알아낼 때
사용
 선택된 매체에 브로드캐스트(broadcast)를 통해 특정 IP 주소를 사용하는 호스트가 응답
을 하도록 요구하는 방식 사용
• 목적지 호스트가 응답하면 송신 호스트는 목적지 호스트와 연결을 맺고 데이터를 전송하기 시작
 ARP 패킷 구조(그림 2-6)
10/40
네트워크 계층 프로토콜
 ARP 패킷 내용(표 2-2)
11/40
네트워크 계층 프로토콜
 RARP(Reverse Address Resolution Protocol)
 Opcode에도 정의되어 있었으나, 데이터 링크 계층의 주소인 MAC 주소를 가진 네트워
크 계층의 주소, 즉 IP 확인
 디스크가 없는 호스트가 자신의 IP 주소를 서버로부터 얻어내려면 RARP라는 TCP/IP
인터넷 프로토콜 사용
 IP(Internet Protocol)
 대표적인 네트워크 계층의 프로토콜로, 하위 계층의 서비스를 이용하여 주로 두 노드 간
의 데이터 전송 경로 확립
 IP 패킷 구조(그림 2-7)
12/40
프로토콜의 종류
 IP 패킷 내용(표 2-3)
13/40
네트워크 계층 프로토콜
 IP 패킷 내용(표 2-3)
14/40
네트워크 계층 프로토콜
 IP 주소 체계
• IP는 32자리 2진수로 8자리마다 점을 찍어 구분하고, 개수가 제한되어 있기 때문에 체계적으로
사용할 수 있도록 별도의 규칙을 둠
• IP 주소는 A, B, C, D, E 클래스로 구분(그림 2-8)
• A, B, C 클래스는 맨 앞부분에 시작하는 2진수 숫자에 따라 구분
• A 클래스의 네트워크가 가장 크고, C 클래스의 네트워크가 가장 작음
• 각 클래스마다 다음과 같이 사설 네트워크 대역을 지정해놓음(표 2-5)
•
15/40
네트워크 계층 프로토콜
• 네트워크 클래스의 구분과(표 2-4) 클래스별 네트워크 범위(표 2-5)
16/40
네트워크 계층 프로토콜
 ICMP(Internet Control Message Protocol)
 호스트 서버와 인터넷 게이트웨이 사이에서 메시지를 제어하고 오류를 알려줌
 ICMP를 사용하는 대표 툴은 ping
 IP는 비연결형 프로토콜로, 패킷이 확실히 전송된다는 보장이 없기 때문에 라우터나 노
드(호스트) 등에서 오류가 생겨 목적지까지 도달하지 못할 수 있으므로 송신측의 상태를
알려줘야 하는데, 이때 필요한 것이 ICMP
 송신측의 상황과 목적지 노드의 상황을 진단하는 프로토콜
 IP 계층 위에서 동작하지만 TCP, UDP의 전송 계층 프로토콜과는 별개
 ICMP 패킷 구조(그림 2-9)
17/40
네트워크 계층 프로토콜
 ICMP 패킷 내용(표 2-6)
18/40
네트워크 계층 프로토콜
 ICMP는 크게 오류 통지를 위한 오류 메시지와 진단용 문답 메시지 두 종류로 구분
 ICMP Echo Request 메시지
• 송신측의 전송 패킷이 목적지 노드나 라우터에 도착했는지를 확인하는 데 사용
• 송신측 노드는 목적지 노드에 대해 ‘ICMP Echo Request 메시지’를 송신하고, 목적지 노드로부
터 ‘ICMP Echo Reply 메시지’가 회신되면 패킷이 무사히 전송된 것으로 인식
 ICMP Destination Unreachable 메시지
• 라우터가 특정 노드의 패킷을 목적지에 보내지 못할 경우, 송신 노드에 대해 ‘ICMP Destination
Unreachable 메시지’를 보내고(목적지까지 전송되지 못한 이유를 나타내는 정보 포함) 목적지
노드의 IP 주소의 경로를 찾아내지 못한 라우터는 이를 다시 송신측 라우터로 이 메시지를 되돌
려 보냄
• 송신측 노드는 이 메시지를 해석하여 패킷이 목적지에 도착하지 못했음을 알 수 있음
19/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에는 전달되지 못할 것이다.
20/40
네트워크 계층 프로토콜
 ICMP Source Quench 메시지
• 저속 광역 회선 등을 사용할 경우에는 IP 라우터의 WAN 쪽에서 집중이 발생할 수 있는데, 이 집
중을 완화하기 위해, 송신측 큐 값이 ‘0’으로 남아 송신 불능 상태가 되면 ‘ICMP Source Quench 메
시지’를 송신측 노드에 보내고, 송신측은 이 메시지의 정보를 해석하여 회선의 어딘가가 혼잡하다
는 것을 인식하고 송신 패킷 양 제어
21/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)으로 규정
22/40
전송 계층 프로토콜
 TCP(Transmission Control Protocol)
 전송 계층에서 동작하는 연결 지향형(connectionoriented) 프로토콜
 데이터의 흐름을 관리하고, 데이터가 정확한지 검증하며 통신
 쓰리웨이 핸드셰이킹(three-way handshaking)을 통해 연결 설정
 특징
• 높은 신뢰성
• 가상 회선 연결 방식
• 연결의 설정과 해제
• 데이터 체크섬
• 시간 초과와 재전송
• 데이터 흐름 제어
23/40
전송 계층 프로토콜
 TCP 헤더(그림 2-13)
24/40
전송 계층 프로토콜
 TCP 패킷 내용(표 2-7)
25/40
전송 계층 프로토콜
 TCP 패킷 내용(표 2-7)
26/40
전송 계층 프로토콜
 TCP에서 연결 생성 과정(그림 2-14)
• ➊ 단계 : 두 시스템이 통신을 하기 전에 클라이언트는 포트가 Closed 상태며, 서버는 해당 포트
로 항상 서비스를 제공할 수 있도록 Listen 상태다.
• ➋ 단계 : 처음 클라이언트가 통신을 하고자 하면, 임의의 포트 번호가 클라이언트 프로그램에 할
당되고, 클라이언트는 SYN Sent 상태가 된다. 서버에 연결을 하고 싶다는 일종의 의사 표시다.
• ➌ 단계 : 서버는 클라이언트의 연결 요청을 받고, SYN Received 상태가 된다. 그리고 클라이언
트에 연결을 해도 좋다는 의미로SYN+ACK 패킷을 보낸다.
• ➍ 단계 : 마지막으로 클라이언트는 연결 요청에 대한 서버의 응답을 확인했다는 표시로 ACK 패
킷을 서버에 보낸다.
27/40
전송 계층 프로토콜
 TCP에서 연결 해제 과정(그림 2-15)
• ➊ 단계 : 두 시스템이 통신을 하는 중에는 클라이언트와 서버 모두 Established 상태다.
• ➋ 단계 : 통신을 끊고자 하는 클라이언트가 서버에 FIN 패킷을 보낸다. 이때, 클라이언트는
Close Wait 상태가 된다.
• ➌ 단계 : 서버는 클라이언트의 연결 종료 요청을 확인하고, 클라이언트에 응답으로 ACK 패킷을
보낸 뒤, 서버도 클라이언트의 연결을 종료하겠다는 의미로 FIN 패킷을 보낸다. 그리고 Close
Wait 상태가 된다.
• ➍ 단계 : 마지막으로 클라이언트는 연결 종료 요청에 대한 서버의 응답을 확인했다는 의미로
ACK 패킷을 서버에 보낸다.
28/40
전송 계층 프로토콜
 UDP(User Datagram Protocol)
 TCP와 달리 비연결 지향형 프로토콜
 송신 시스템과 목적지 시스템 사이에 상호 통신이 이루어지지 않기 때문에 전송되는 데
이터 중 일부가 손실되는 경우 손실 데이터에 대한 재전송을 요구하지 않음
 비연결 지향형 프로토콜이므로 송신 시스템은 손실된 데이터의 정보를 알 수 없으며, 따
라서 손실 데이터를 재전송하지 않음
 특징
• 비연결 지향형
• 네트워크 부하 감소
• 비신뢰성
• 전송된 데이터의 일부가 소실됨
 UDP 헤더(그림 2-16)
29/40
전송 계층 프로토콜
 UDP 패킷 내용(표 2-8)
30/40
응용 계층 프로토콜
 사용자가 사용하는 응용 프로그램이 네트워크와 통신하기 위해 사용하
는 프로토콜
 FTP(File Transfer Protocol, 20, 21)
 파일 전송을 위한 가장 기본 프로토콜로, RFC 114로 1971년에 만들어짐
 FTP 연결은 컨트롤 연결과 데이터 연결로 나뉨
 컨트롤 연결
• FTP 서버가 21번 포트를 열고 클라이언트의 요청을 기다림(수동적 포트 오픈) → 클라이언트에
서 임의의 포트를 설정하여 FTP 요청을 보냄(능동적 포트 오픈)
31/40
응용 계층 프로토콜
 FTP 연결 설정(데이터 연결)
➊ 클라이언트에서 임의의 포트를 열고 수동적 오픈 상태 설정
➋ 클라이언트에서PORT 명령어를 사용하여 열고 있는 포트 번호를 서버에 전달
➌ 서버에서는 클라이언트가 보낸 임의의 포트를 받고 20번 포트를 수동적 포트 오픈 상태로 설정
32/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.txt
CR, LF : get a.txt 입력하고 [Enter] 키를 누름
33/40
응용 계층 프로토콜
 Telnet(23)
 사용자가 원격에 있는 서버에 로그인하도록 TCP 연결을 설정하며, 단말기가 원격 컴퓨
터 바로 옆에 있는 것처럼 직접 조작할 수 있게 해줌
 텔넷이 제공하는 서비스
• 원격 시스템에 표준 인터페이스를 제공하는 네트워크 가상 단말기(NVT, Network Virtual Terminal)
기능을 제공한다.
• 클라이언트와 서버가 통신 옵션을 교환할 수 있는 메커니즘을 제공한다. 예를 들어, 7비트 ASCII
코드로 데이터를 주고받을 수도 있고, 8비트 코드로 데이터를 주고받을 수도 있다.
• 양단 간의 통신이 대칭적으로 수행되며, 클라이언트측에서 항상 사용자 단말기가 사용되는 대신
임의의 프로그램이 클라이언트로 작동할 수 있다.
34/40
프로토콜의 종류
 응용 계층에서 동작하는 프로토콜
 Telnet(23)
• 사용자가 원격에 있는 서버에 로그인하도록 TCP 연결을 설정하며, 단말기가 원격 컴퓨터 바로
옆에 있는 것처럼 직접 조작할 수 있게 해줌
• 텔넷이 제공하는 서비스
– 원격 시스템에 표준 인터페이스를 제공하는 네트워크 가상 단말기(NVT, Network Virtual Terminal) 기능을
제공한다.
– 클라이언트와 서버가 통신 옵션을 교환할 수 있는 메커니즘을 제공한다. 예를 들어, 7비트 ASCII 코드로 데이
터를 주고받을 수도 있고, 8비트 코드로 데이터를 주고받을 수도 있다.
– 양단 간의 통신이 대칭적으로 수행되며, 클라이언트측에서 항상 사용자 단말기가 사용되는 대신 임의의 프로그
램이 클라이언트로 작동할 수 있다.
35/40
응용 계층 프로토콜
 SMTP(Simple Mail Transfer Protocol, 25)
 메일 전송을 위한 프로토콜
36/40
응용 계층 프로토콜
 SMTP 프로세스 모델
37/40
응용 계층 프로토콜
 메일 전달
• 로컬 컴퓨터에서 새로운 메일 주소들로 식별자 맵핑(보통 메시지와 수신자 이름 테이블 구성)
• 메일 인터페이스 프로그램은 전송 프로세스에 메시지를 넘겨주기 전 수신자 별명 데이터베이스
를 조사하여 수신자 주소로 변환. 메일 별명 확장(mail alias expansion) 메커니즘이 입력되는 수신자
주소를 별명으로 바꾸고 맵핑하기 위해 사용됨
• 별명을 사용하면 메일 시스템은 기능적으로 좀 더 편리하게 사용할 수 있으며, 맵핑은 일대다
(1:n) 또는 다대일(n:1)로 가능
• 입력과 출력 메일 메시지는 메일 전달 프로세스로 넘겨줌
• 메일 전달 프로세스에서는 별명 데이터베이스를 조사해 메일의 주소를 교체. 메일 전달 프로세스
는 맵핑된 메일의 주소가 로컬인지 또는 원격인지를 판별하여 원격 주소면 송신 메일 큐에 메시
지를 저장하고, 로컬 주소면 수신 메일 큐에 메시지를 저장
38/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)
 네트워크 관리와 모니터링을 위한 프로토콜
39/40
IT CookBook, 정보 보안 개론과 실습 : 네트워크 해킹과 보안(개정
판)