1. TFTFD를 설치하고 TFTP 서버를 가동하여 TFTP 사용 실습

 

① yum install tftp tftp-server 로 tftp-server를 설치함.

 

②/etc/xinetd.d/tftp 파일을 열어서 수정

- vi/etc/xinetd.d/tftp로 연 뒤  disable=no, server_args= -s -c/var/lib/tftpboot로 변경 vi명령어를 통하여 파일을 수정하고 wq명령어로 빠져나옴.

③ service xineted restart 명령어를 실행

 

④ 실제 파일을 전송 및 수신하면서 발생되는 UDP 패킷을 수집하는 실습을 수행

명령어: tftp 파일전송할 IP

-> get 파일이름 (파일받아오기) put 파일이름(파일 올리기)

 

2. FTP와 TFTP의 차이점

 

- FTP : FTP는 File Transfer Protocol의 약자이다. FTP의 하위 Transport Layer는 TCP(Transfer Control Protocol)로 구성되어 있다.

 

- TFTP : TFTP는 Trivial File Transfer Protocol의 약자이다. TFTP의 하위 Transport Layer는 UDP(User Datagram Protocol)로 구성되어 있다.

→ FTP와 TFTP는 각각이 가지는 하위 Transport Layer가 다르다. FTP가 가지는 하위 Transport Layer의 TCP(Transfer Control Protocol)는 연결지향형 방식으로 네트워크의 다른 서버와 통신할 때 데이터의 단 1bit라도 깨지거나 손실이 되면 안 된다. 예를 들면 Download와 같은 경우를 들 수 있다. 그리고 TFTP가 가지는 하위 Transport Layer의 UDP(User Datagram Protocol)은 비 연결지향형 방식으로 네트워크의 다른 서버와 통신할 때 데이터의 일부분이 손실되거나 바뀌어도 통신하는데 아무 지장이 없다. 예를 들면 음성통신, 영상통신을 들 수 있다.

※ FTP와 TFTP는 통신 할 때 사용하는 Transport Layer가 다르다.

 

 

3. TFTP 동작과정 설명

 

- TFTP는 패킷을 손·수신 할 때 TFTP Message를 보낸다. TFTP Message의 구조는 IP Header, UDP Header, OPcode로 기본 구성되어 있으며 OPcode에 따라 패킷에 더 많은 정보가 들어가게 된다. OPcode는 01 ~ 06까지 있다.

 

01 : Read Request를 의미하며 파일 Read시에 클라이언트가 서버로 보내는 TFTP Request Message를 의미한다.

 

02 : Write Request를 의미하며 파일 Write시에 클라이언트가 서버로 보내는 TFTP Request Message를 의미한다.

 

- 01, 02 Request Message에는 mode의 영역이 들어가게 된다. mode의 영역은 Netascii과 Octet이 있다. Netascii은 Read, Write할 때 데이터가 텍스트 파일 형식인 것 이고, Octet은 Read, Write할 때 데이터가 exe 파일 형식인 것이다.

 

03 : data를 의미하며 TFTP Message가 data를 포함하고 있다는 것을 의미한다.

 

- 03 의 TFTP Message는 Block Number와 Data영역이 들어가게 된다. Block Number는 데이터의 몇 번째 데이터인지 알려주는 번호이며, Data영역은 데이터를 의미한다.

 

04 : ACK를 의미한다. 파일 Read시에 Read Request를 받은 서버가 클라이언트로 데이터 패킷을 보낸 후 데이터 패킷을 수신한 클라이언트가 서버로 “데이터 패킷을 수신하였다.”라는 것을 알려주며 파일 Write시에 Write Request 받은 서버가 클라이언트로 “Request Message를 받았다.” 라는 것을 알려주거나 클라이언트가 서버로 데이터 패킷을 보낸 후 수신한 서버가 클라이언트로 “데이터 패킷을 수신하였다.”라는 것을 알려주는 기능을 한다.

 

- 04 의 TFTP Message는 Block Number가 있다. Read시에는 데이터를 수신한 클라이언트가 몇 번째 데이터를 받았는가를 알려주는 숫자이다. Write시에는 서버가 클라이언트에게 몇 번째 데이터가 업로드 되었는지 알려주는 번호이다.

 

05 : Error를 의미한다. 데이터를 전송할 때 전송한 데이터에서 오류가 발생했음을 의미하는 패킷이다.

 

- 05 의 TFTP Message는 Error Number와 Error Message가 들어가게 된다.

 

06 : Option ACK를 의미한다. 01, 02 TFTP Message의 Mode영역뒤에 데이터의 Size를 기입하여 보내게 되면 수신한 서버가 Size에 대하여 클라이언트에게 자신의 최대 데이터 송·수신 Size를 알려주는 Message를 뜻한다.

 

- 06 의 TFTP Message는 Option Data영역이 들어가게 되는데 이 Option Data영역은 자신의 최대 데이터 송·수신 Size를 기입하는 영역이다.

 

 

⦁ TFTP 파일 Read시 TFTP의 동작 과정

 

 

- 클라이언트가 서버로 TFTP Reqeust Message를 보낼 때 UDP Header의 Source port영역에는 임의의 값을 지정하고 Destination port영역에는 TFTP port번호인 69번을 넣고, OPcode에는 Read Request인 01을 넣어 전송한다. 이때 서버는 자신의 TFTP port를 사용하지 않고 임의의 port를 사용하여 source port영역에 넣어 데이터를 송신한다. 그 이유는 다른 클라이언트가 TFTP Request Message를 발생 시키면 TFTP 서버는 그것에 대하여 응답해줘야 하기 때문에 임의의 port번호를 사용한다. 그 후 서버는 클라이언트에게 데이터 번호와 데이터를 전송하고 클라이언트는 데이터를 수신하면 ACK Message를 보내며 Block Number는 데이터를 받는 순서대로 1, 2, 3 ... 증가가 될 것이다. 만약 서버가 데이터를 전송하였는데 클라이언트에게서 ACK Message를 받지 못한다면 서버는 ACK Message의 Block Number에 해당하는 데이터를 한번 더 송신하게 될 것이다. 그리고 마지막으로 데이터의 크기가 512Byte가 아닌 데이터를 서버가 클라이언트에게 보내면 ACK Message가 마지막으로 발생하게 되고 서버는 데이터를 더 이상 보내지 않게 될 것이다. 만약 마지막 Data의 크기가 512Byte이면 서버는 다시 한번 크기가 0Byte인 데이터를 클라이언트에게 전송하게 된다. 그럼 클라이언트는 마지막 데이터인 것을 알아차리게 된다.

 

⦁ TFTP 파일 Write시 TFTP의 동작 과정

- 클라이언트가 서버로 TFTP Reqeust Message를 보낼 때 UDP Header의 Source port영역에는 임의의 값을 지정하고 Destination port영역에는 TFTP port번호인 69번을 넣고, OPcode에는 Read Request인 02을 넣어 전송한다. 그 후 서버는 클라이언트로 ACK Message를 전송하게 되는데 이 때 서버는 자신의 TFTP port번호를 사용하지 않고 임의의 port번호를 사용하게 된다. 그 이유는 데이터를 Upload할 때 자신의 port번호가 아닌 임의의 port번호로 전송하라는 것을 알려주기 위해서 임의의 포트를 사용하기도 하며 다른 클라이언트가 TFTP Request Message를 발생 시키면 서버는 이 Meesage에 대해서 응답 해줘야 하기 때문에 임의의 port번호를 사용하기도 한다. ACK Message의 Block Number는 0의 값이 들어가게 된다. Data를 받은 것이 아닌 Request에 대한 응답 Message이기 때문이다. ACK Message를 받은 클라이언트는 서버로 데이터를 전송하게 되는데 Read와 마찬가지로 몇 번 데이터인지 데이터의 크기는 얼마인지를 알려준다. 그럼 서버는 몇 번 데이터를 받았는지 ACK Message를 알려주게 되고 클라이언트가 전송하는 데이터가 512Byte보다 작으면 마지막 데이터인 것을 서버가 알게된다. 만약 마지막 데이터가 512Byte이면 서버는 크기가 0Byte인 데이터를 한번 더 전송 하게 된다.

 

 4. UDP를 이용하는 다양한 응용 계층 프로토콜

- UDP : User Datagram Protocol의 약자로서 데이터를 송·수신 할 때 송신측과 수신측이 송·수신한다는 신호를 보내지 않고 송신측이 일방적으로 수신측으로 데이터를 전송하는 프로토콜이다. 이때 전송되는 데이터의 소수 일부가 깨지거나 손실되어도 수신측은 아무 제약이 없다.

 

- TFTP : Trivial File Transfer protocol의 약자이다. 이 프로토콜은 가벼운 형태의 파일을 전송할 때 사용하는 프로토콜이다.

 

- DHCP : Dynamic Host Configuration Protocol의 약자로서 동적으로 Host IP를 할당 하기 위하여 사용하는 프로토콜이다. DHCP는 물어 보지 않고 ip를 할당하기 때문에 하위 Transport Layer가 UDP라고 할 수 있다.

 

- DHCPv6 : DHCPV6는 DHCP와 같은 기능을 하지만 IPv6에서 사용되는 DHCP이다.

 

- DNS : Domain Name Service으 약자로서 www.naver.com과 같이 문자로 된 주소를 가지고 ip주소를 찾아내는 기능을 한다.

 

- NBNS : NetBIOS Name Server의 약자로서 네트워크에 연결된 다른 컴퓨터들 간의 이름이 중복되지 않도록 도와주는 기능을 한다.

 

- LLMNR : Link Local multicast Name Resolution의 약자로서 DNS와 비슷한 기능인데 DNS는 문자로 된 주소를 가지고 ip주소를 찾아내는 기능을 하는 반면 이 LLMNR은 host 이름을 가지고 ip주소를 찾아내는 기능을 한다. 이 기능은 같은 네트워크 내에서 내 컴퓨터 외의 다른 컴퓨터의 정보를 알아낼 때 사용한다.

 

- SSDP : Simple Service Discovery Protocol의 약자로서 자신의 방송망의 채널과 포트를 다른 단말들에게 알려주는 기능을 하며 알림을 받은 단말들은 유니 캐스트 망으로 응답을 한다.

 

5. 실시간으로 빠르게 전송하는 것이 중요한 대부분의 트래픽들은 UDP를 통하여 전송된다. 실시간 패킷 전송에 사용되는 프로토콜인 RTP와 RTCP란

 

- RTP : RTP는 Real Time Transport Protocol의 약자이다. 이 RTP는 실시간으로 데이터를 전송할 때 쓰이는 프로토콜로 음성이나 영상을 통신할 때 쓰인다.

 

- RTCP : Real Time Transport Control Protocol의 약자이다. 이 RTCP는 음성이나 영상등 실시간 데이터 전송이 중요하여 RTP를 사용하는 경우에 사용되는 프로토콜이다. RTCP는 데이터를 전송하는데 에는 관여를 안한다. RTP노드가 자신의 상태와 자신과 연결된 네트워크의 상태를 분석하여 다른 노드들에게 보고하기 위하여 쓰는 프로토콜이 RTCP이다.

+ Recent posts