2. UDP
❖특징
➢ 비연결 : 연결 설정 / 종료 과정이 없다.
➢ 비전송 보장 : 데이터 전달을 보장하지 않는다. (비신뢰성)
➢ 연결 상태가 존재하지 않는다.
➢ 오버헤드가 적다.
➢ TCP에 비해 속도가 빠르다.
➢ DNS, IPTV, VoIP, TFTP, IP Tunneling 등에서 활용된다.
3. UDP
❖헤더 구조
➢ Source Port (16) : 송신 호스트 포트 번호
➢ Destination Port (16) : 수신 호스트 포트 번호
➢ Length (16) : UDP Header를 포함한 UDP Segment 전체 크기
➢ Checksum (16) : 헤더와 데이터 부분의 무결성을 검증하기 위한 필드
4. UDP
❖UDP 송수신 버퍼 설정
➢ OS에 설정된 <UDP 송수신 버퍼 크기>를 초과하는 데이터를 전송하면 제대로 수신되지 않는
다.
➢ Linux(Ubuntu 16.04)의 UDP 송수신 버퍼 확인
5. DNS
❖DNS (Domain Name System)
➢ “IP 주소”와 “사람이 이해하기 쉽게 기억할 수 있는 이름”을 상호 변환해주는 분산 데이터베이스
시스템
➢ 일반적으로 UDP 포트 53번 사용
➢ DNS 헤더를 포함한 DNS 메시지 영역의 길이가 512 Byte를 초과하거나, Zone Transfer 과정에
는 TCP 포트 53번 사용
❖DNS 프로토콜
➢ 조회 / 질의 (Query)
➢ 응답 (Response)
6. FTP
❖FTP (File Transfer Protocol)
➢ 서버 - 클라이언트 간 파일을 전송하기 위한 프로토콜
➢ 두 개의 네트워크 연결을 사용하여 동작
■ TCP 21번 포트를 사용하는 명령 연결(FTP)로서 인증 및 제어에 사용
■ 실제 파일을 전송할 때 만들어지는 파일 전송 연결 (FTP-DATA)
❖파일 전송용 연결 방식
➢ 능동 모드 (Active Mode)
➢ 수동 모드 (Passive Mode)
8. 네트워크 데이터 수집시 고려사항
❖ <최대 패킷 크기>는 명시적으로 지정한다.
➢ 패킷의 일부 정보만 수집해서는 내용을 정확히 분석하기 어려움
➢ MTU (Maximum Transmission Unit) : IP 패킷의 최대 크기
➢ MSS (Maximum segment Size) : TCP에서 전송할 수 있는 최대 애플리케이션 데이터 크기
❖ 서버에서 데이터를 수집하는 경우 <호스트>와 <포트>는 꼭 지정한다.
➢ 분석할 대상을 선정하여 범위를 줄여 데이터를 수집하기 위함
9. 네트워크 데이터 수집 (유닉스 / 리눅스)
❖tcpdump
➢ 주어진 조건식(expression)을 만족하는 패킷들의 헤더를 출력해 주는 프로그램
➢ 사용법
# tcpdump [각종 옵션들] [조건식(expression)]
➢ 조건식 : 여러 조건을 사용할 경우 <and, and not, or>로 조합 가능
10. 네트워크 데이터 수집 (유닉스 / 리눅스) : 계속
❖tcpdump 옵션
구분 옵션 설명
NIC -i [device] 수집할 네트워크 디바이스를 지정
저장 방법
-w [filename] 저장할 파일명 지정
-C [filesize]
수집된 데이터를 저장하는 파일 크기를 Byte 단위로 지정
-w 옵션에 지정된 파일명에 1, 2, 3 순으로 순차 번호가 붇는다.
-G [seconds] 지정한 초 단위만큼 데이터를 나눠 여러 파일에 저장
-c [count] 제시된 count 만큼 패킷 수집 후 종료
-s [packetsize]
수집할 패킷 크기 지정 (default : 68byte)
전체 패킷으로 정확한 분석을 위해 충분히 크게 조절 필요
11. 네트워크 데이터 수집 (유닉스 / 리눅스) : 계속
❖tcpdump 옵션
구분 옵션 설명
출력방법
-n, -nn
n : 호스트 IP를 서버명으로 변경하지 않음
nn : 호스트 IP와 포트를 모두 서버명과 포트명으로 변경하지 않음
-S TCP 시퀀스 번호를 절대 번호로 출력
-t 시간을 출력하지 않음
-tt, -ttt, -tttt, -ttttt
tt : 1970년부터 경과 시간을 소수점 포함 초단위 시간으로 출력
ttt : 이전 패킷과 시간 차를 마이크로초 단위로 출력
tttt : 시, 분, 초 시간으로 출력
ttttt : 첫 패킷 이후 경과 시간을 마이크로초 단위로 출력
-v, -vv, -vvv v가 추가될 때마다 출력되는 패킷 정보가 증가
12. 네트워크 데이터 수집 (유닉스 / 리눅스) : 계속
❖tcpdump 필터
항목 설명
[ dst | src ] host HOST <IP 주소 or 도메인명>을 지정하여 수집
[ dst | src ] port PORT <포트 번호 or 포트 서비스명>을 지정하여 수집
[ dst | src | host ] ether EHOST <MAC 주소>를 지정하여 수집
[ dst | src ] net NET <IP 네트워크>를 지정하여 수집
[ less | greater ] LENGTH 지정된 LENGTH보다 작거나 큰 패킷만 수집
protocol ip, tcp, udp 같이 지정된 프로토콜 데이터 수집
protocol[ index | index:size ]
프로토콜의 상세 조건을 지정하여 데이터 수집
- index : 헤더 시작 부분을 0으로 하는 바이트 단위 인덱스 값
- size : 인덱스를 기준으로 읽을 바이트 수
13. 네트워크 데이터 수집 (윈도우)
❖Wireshark (https://www.wireshark.org/)
➢ 오픈소스 패킷 분석 도구
➢ 앞서 소개한 tcpdump와 기능적으로 유사하지만 그래픽 환경이다.
➢ GUI 환경이 아닌 터미널 기반의 TShark도 제공된다.
14. 네트워크 데이터 수집 (윈도우)
❖Wireshark를 이용한 데이터 수집 방법
1. Capture -> Options 선택
2. NIC 목록에서 데이터 수집 할 네트워크 인터페이스 선택
3. 네트워크 필터 설정 (tcpdump의 expression과 비슷)
4. 저장할 파일명, 경로 지정
5. Start 버튼을 클릭하여 네트워크 데이터 수집 시작
15. 네트워크 데이터 수집 (윈도우) : 계속
❖Wireshark 화면구성
패킷 필터
수집된 패킷 목록
선택된 패킷의
프로토콜 정보
선택된 패킷의
Raw 데이터
16. 네트워크 데이터 수집 (윈도우) : 계속
❖수집한 데이터에서 원하는 데이터만 필터링하는 방법
and(&&), or(||), 괄호(()) 를 이용해 복합적인 필터 사용 가능
17. 네트워크 데이터 수집 (윈도우) : 계속
❖Follow TCP Stream
➢ 선택한 TCP 세션의 패킷만 필터링하여 출력
18. 네트워크 데이터 수집 (윈도우) : 계속
❖ 분석 메뉴 (Statistic 탭)
➢ Summary
■ 패킷 파일에 대한 수집시간, 용량, 개수 등 용약 정보 출력
➢ Protocol Hierarchy
■ 무슨 프로토콜을 사용한 패킷들이 수집되었는지 트리 구조로 출력
➢ Conversation, Endpoints
■ 수집된 패킷이 어떤 호스트와 얼마나 통신하고 있는지 확인
■ Conversations는 두 호스트 간 통신, Endpoints는 연결된 논리 호스트
■ 시스템 구성정보를 모를 경우 시스템 간 어떤 통신이 이뤄지는지 확인할 때 유용
19. 네트워크 데이터 수집 (윈도우) : 계속
❖응답시간 분석
➢ 네트워크 시간 : Statistics -> TCP StreamGraph -> Round Trip Time (Delayed ACK 미설정시)
■ 연결 시간
■ 요청 업로드 시간
■ 응답 다운로드 시간
➢ 서버 시간
➢ 클라이언트 시간
20. 네트워크 데이터 수집 (윈도우) : 계속
❖전문 분석
➢ 원인 파악을 위한 로그가 없을 경우 수행
➢ 해당 프로토콜 정의를 참고해 전문을 구성하는 각 필드 값이 정확한지 확인 필요
이때 Endian을 확인해 바이트 데이터를 숫자로 변환하여 확인 가능
➢ HTTP : 프로토콜 헤더, 일반 본문이 텍스트여서 확인이 쉬움
➢ 일반 바이너리 전문
■ 일반적으로 전문이 시작하는 위치에 2~4 바이트 정도의 전문 크기를 기록
■ 기록된 전문 크기와 실제 전문 크기가 일치하는지 비교하여 분석을 시작
21. 네트워크 데이터 수집 (윈도우) : 계속
❖재전송 분석
➢ 재전송 여부 확인 : “tcp.analysis.retransmission” 필터 적용
➢ 재전송 패킷 구별
■ 원래의 패킷 전체 재전송 : 재전송 패킷은 항상 원래의 SEQ 번호와 일치
22. 네트워크 데이터 수집 (윈도우) : 계속
❖재전송 분석
➢ 재전송 패킷 구별
■ Dup ACK 가 발생한 경우
23. 네트워크 데이터 수집 (윈도우) : 계속
❖성능분석
➢ 재전송 발생 여부 및 비율
■ 로컬 네트워크 <= 0.01%
■ 원거리 네트워크 <= 0.5%
➢ 네트워크 RTT
■ SYN 패킷 주고받는 시간, 데이터 패킷에 대한 ACK 패킷 도착 시간 간격으로 유추
■ 네트워크 및 애플리케이션 턴 수를 줄여 성능 개선
➢ 네트워크 전송량
■ 전송량이 많을 경우 압축, 캐시 등 사용
➢ 클라이언트 / 서버 / 네트워크 구간 응답시간
■ 응답시간이 큰 구간 구별
➢ 각 프로토콜에 특화된 분석
24. ➢ 실무로 배우는 시스템 성능 최적화 (권문수 지음, 위키북스, 2016)
➢ tcpdump 사용설명서 (DASAN Networks, 2005)
➢ Wireshark User’s Guide : https://www.wireshark.org/docs/wsug_html_chunked/
➢ FTP Mode 이미지 : http://hoyatic.tistory.com/165
Reference