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

Más contenido relacionado

La actualidad más candente

[HTTP 101] 웹 개발자라면 반드시 알아야하는 HTTP의 기초
[HTTP 101] 웹 개발자라면 반드시 알아야하는 HTTP의 기초[HTTP 101] 웹 개발자라면 반드시 알아야하는 HTTP의 기초
[HTTP 101] 웹 개발자라면 반드시 알아야하는 HTTP의 기초JinuNoh
 
Network Project
Network ProjectNetwork Project
Network ProjectMinho Yoo
 
하둡 타입과 포맷
하둡 타입과 포맷하둡 타입과 포맷
하둡 타입과 포맷진호 박
 
05_Reliable UDP 구현
05_Reliable UDP 구현05_Reliable UDP 구현
05_Reliable UDP 구현noerror
 
2017년 10월 파밍 악성코드 분석 보고서
2017년 10월 파밍 악성코드 분석 보고서2017년 10월 파밍 악성코드 분석 보고서
2017년 10월 파밍 악성코드 분석 보고서poisoneye
 
HTTP 완벽가이드 : 1-1 http 개관
 HTTP 완벽가이드 : 1-1 http 개관 HTTP 완벽가이드 : 1-1 http 개관
HTTP 완벽가이드 : 1-1 http 개관ssuser491981
 
HTTP 완벽가이드 7장 캐시
HTTP 완벽가이드 7장 캐시HTTP 완벽가이드 7장 캐시
HTTP 완벽가이드 7장 캐시박 민규
 
TCP/IP 발표자료 - 김연수
TCP/IP 발표자료 - 김연수TCP/IP 발표자료 - 김연수
TCP/IP 발표자료 - 김연수Yeon Soo Kim
 
20150525 open flow1.3_ryu_sdn_link aggregation 1_김지은
20150525 open flow1.3_ryu_sdn_link aggregation 1_김지은20150525 open flow1.3_ryu_sdn_link aggregation 1_김지은
20150525 open flow1.3_ryu_sdn_link aggregation 1_김지은jieun kim
 
네트워크 공격 실습 보고서
네트워크 공격 실습 보고서네트워크 공격 실습 보고서
네트워크 공격 실습 보고서Dong-Jin Park
 
스트리밍 프로토콜
스트리밍 프로토콜스트리밍 프로토콜
스트리밍 프로토콜greenday96
 
19.컴퓨터 네트워크 program homework
19.컴퓨터 네트워크 program homework19.컴퓨터 네트워크 program homework
19.컴퓨터 네트워크 program homework호상 장
 
리눅스 소켓 프로그래밍 기초
리눅스 소켓 프로그래밍 기초리눅스 소켓 프로그래밍 기초
리눅스 소켓 프로그래밍 기초Yu Yongwoo
 
Jnetpcap quickguide
Jnetpcap quickguideJnetpcap quickguide
Jnetpcap quickguideSukjin Yun
 
더 빠른 웹을 위해: HTTP/2
더 빠른 웹을 위해: HTTP/2더 빠른 웹을 위해: HTTP/2
더 빠른 웹을 위해: HTTP/2EungJun Yi
 
하둡 HDFS 훑어보기
하둡 HDFS 훑어보기하둡 HDFS 훑어보기
하둡 HDFS 훑어보기beom kyun choi
 
하둡 설치(의사분산모드)
하둡 설치(의사분산모드)하둡 설치(의사분산모드)
하둡 설치(의사분산모드)Kwangyoung Jeon
 

La actualidad más candente (20)

[HTTP 101] 웹 개발자라면 반드시 알아야하는 HTTP의 기초
[HTTP 101] 웹 개발자라면 반드시 알아야하는 HTTP의 기초[HTTP 101] 웹 개발자라면 반드시 알아야하는 HTTP의 기초
[HTTP 101] 웹 개발자라면 반드시 알아야하는 HTTP의 기초
 
Network Project
Network ProjectNetwork Project
Network Project
 
하둡 타입과 포맷
하둡 타입과 포맷하둡 타입과 포맷
하둡 타입과 포맷
 
네트워크 기본
네트워크 기본네트워크 기본
네트워크 기본
 
05_Reliable UDP 구현
05_Reliable UDP 구현05_Reliable UDP 구현
05_Reliable UDP 구현
 
2017년 10월 파밍 악성코드 분석 보고서
2017년 10월 파밍 악성코드 분석 보고서2017년 10월 파밍 악성코드 분석 보고서
2017년 10월 파밍 악성코드 분석 보고서
 
HTTP 완벽가이드 : 1-1 http 개관
 HTTP 완벽가이드 : 1-1 http 개관 HTTP 완벽가이드 : 1-1 http 개관
HTTP 완벽가이드 : 1-1 http 개관
 
HTTP 완벽가이드 7장 캐시
HTTP 완벽가이드 7장 캐시HTTP 완벽가이드 7장 캐시
HTTP 완벽가이드 7장 캐시
 
TCP/IP 발표자료 - 김연수
TCP/IP 발표자료 - 김연수TCP/IP 발표자료 - 김연수
TCP/IP 발표자료 - 김연수
 
20150525 open flow1.3_ryu_sdn_link aggregation 1_김지은
20150525 open flow1.3_ryu_sdn_link aggregation 1_김지은20150525 open flow1.3_ryu_sdn_link aggregation 1_김지은
20150525 open flow1.3_ryu_sdn_link aggregation 1_김지은
 
네트워크 공격 실습 보고서
네트워크 공격 실습 보고서네트워크 공격 실습 보고서
네트워크 공격 실습 보고서
 
스트리밍 프로토콜
스트리밍 프로토콜스트리밍 프로토콜
스트리밍 프로토콜
 
하둡관리
하둡관리하둡관리
하둡관리
 
19.컴퓨터 네트워크 program homework
19.컴퓨터 네트워크 program homework19.컴퓨터 네트워크 program homework
19.컴퓨터 네트워크 program homework
 
리눅스 소켓 프로그래밍 기초
리눅스 소켓 프로그래밍 기초리눅스 소켓 프로그래밍 기초
리눅스 소켓 프로그래밍 기초
 
Jnetpcap quickguide
Jnetpcap quickguideJnetpcap quickguide
Jnetpcap quickguide
 
더 빠른 웹을 위해: HTTP/2
더 빠른 웹을 위해: HTTP/2더 빠른 웹을 위해: HTTP/2
더 빠른 웹을 위해: HTTP/2
 
하둡 HDFS 훑어보기
하둡 HDFS 훑어보기하둡 HDFS 훑어보기
하둡 HDFS 훑어보기
 
하둡 설치(의사분산모드)
하둡 설치(의사분산모드)하둡 설치(의사분산모드)
하둡 설치(의사분산모드)
 
TCP/IP
TCP/IPTCP/IP
TCP/IP
 

Destacado

7가지 동시성 모델 - 6장. 순차 프로세스 통신
7가지 동시성 모델 - 6장. 순차 프로세스 통신7가지 동시성 모델 - 6장. 순차 프로세스 통신
7가지 동시성 모델 - 6장. 순차 프로세스 통신Hyunsoo Jung
 
7가지 동시성 모델 - 3장. 함수형 프로그래밍
7가지 동시성 모델 - 3장. 함수형 프로그래밍7가지 동시성 모델 - 3장. 함수형 프로그래밍
7가지 동시성 모델 - 3장. 함수형 프로그래밍Hyunsoo Jung
 
Ddd start! 6장. 응용 서비스와 표현 영역
Ddd start!   6장. 응용 서비스와 표현 영역Ddd start!   6장. 응용 서비스와 표현 영역
Ddd start! 6장. 응용 서비스와 표현 영역Hyunsoo Jung
 
7가지 동시성 모델 - 데이터 병렬성
7가지 동시성 모델 - 데이터 병렬성7가지 동시성 모델 - 데이터 병렬성
7가지 동시성 모델 - 데이터 병렬성HyeonSeok Choi
 
DNS Express
DNS ExpressDNS Express
DNS Expressitian-f5
 
CODE Ch.21 버스에 올라 탑시다
CODE Ch.21 버스에 올라 탑시다CODE Ch.21 버스에 올라 탑시다
CODE Ch.21 버스에 올라 탑시다HyeonSeok Choi
 
Code 11 논리 게이트
Code 11 논리 게이트Code 11 논리 게이트
Code 11 논리 게이트HyeonSeok Choi
 
Domain driven design ch9
Domain driven design ch9Domain driven design ch9
Domain driven design ch9HyeonSeok Choi
 
SICP_2.5 일반화된 연산시스템
SICP_2.5 일반화된 연산시스템SICP_2.5 일반화된 연산시스템
SICP_2.5 일반화된 연산시스템HyeonSeok Choi
 
Domain driven design ch1
Domain driven design ch1Domain driven design ch1
Domain driven design ch1HyeonSeok Choi
 
Refactoring 메소드 호출의 단순화
Refactoring 메소드 호출의 단순화Refactoring 메소드 호출의 단순화
Refactoring 메소드 호출의 단순화HyeonSeok Choi
 
자바 병렬 프로그래밍 ch9
자바 병렬 프로그래밍 ch9자바 병렬 프로그래밍 ch9
자바 병렬 프로그래밍 ch9HyeonSeok Choi
 
서버인프라를지탱하는기술3_2_3
서버인프라를지탱하는기술3_2_3서버인프라를지탱하는기술3_2_3
서버인프라를지탱하는기술3_2_3HyeonSeok Choi
 
MiningTheSocialWeb.Ch2.Microformat
MiningTheSocialWeb.Ch2.MicroformatMiningTheSocialWeb.Ch2.Microformat
MiningTheSocialWeb.Ch2.MicroformatHyeonSeok Choi
 
프로그래머로 사는 법 Ch14
프로그래머로 사는 법 Ch14프로그래머로 사는 법 Ch14
프로그래머로 사는 법 Ch14HyeonSeok Choi
 
Mining the social web 6
Mining the social web 6Mining the social web 6
Mining the social web 6HyeonSeok Choi
 
자바 병렬 프로그래밍 1&2
자바 병렬 프로그래밍 1&2자바 병렬 프로그래밍 1&2
자바 병렬 프로그래밍 1&2HyeonSeok Choi
 

Destacado (20)

7가지 동시성 모델 - 6장. 순차 프로세스 통신
7가지 동시성 모델 - 6장. 순차 프로세스 통신7가지 동시성 모델 - 6장. 순차 프로세스 통신
7가지 동시성 모델 - 6장. 순차 프로세스 통신
 
7가지 동시성 모델 - 3장. 함수형 프로그래밍
7가지 동시성 모델 - 3장. 함수형 프로그래밍7가지 동시성 모델 - 3장. 함수형 프로그래밍
7가지 동시성 모델 - 3장. 함수형 프로그래밍
 
Ddd start! 6장. 응용 서비스와 표현 영역
Ddd start!   6장. 응용 서비스와 표현 영역Ddd start!   6장. 응용 서비스와 표현 영역
Ddd start! 6장. 응용 서비스와 표현 영역
 
7가지 동시성 모델 - 데이터 병렬성
7가지 동시성 모델 - 데이터 병렬성7가지 동시성 모델 - 데이터 병렬성
7가지 동시성 모델 - 데이터 병렬성
 
Tcpdump
TcpdumpTcpdump
Tcpdump
 
DNS Express
DNS ExpressDNS Express
DNS Express
 
CODE Ch.21 버스에 올라 탑시다
CODE Ch.21 버스에 올라 탑시다CODE Ch.21 버스에 올라 탑시다
CODE Ch.21 버스에 올라 탑시다
 
Code 11 논리 게이트
Code 11 논리 게이트Code 11 논리 게이트
Code 11 논리 게이트
 
Domain driven design ch9
Domain driven design ch9Domain driven design ch9
Domain driven design ch9
 
SICP_2.5 일반화된 연산시스템
SICP_2.5 일반화된 연산시스템SICP_2.5 일반화된 연산시스템
SICP_2.5 일반화된 연산시스템
 
Domain driven design ch1
Domain driven design ch1Domain driven design ch1
Domain driven design ch1
 
Refactoring 메소드 호출의 단순화
Refactoring 메소드 호출의 단순화Refactoring 메소드 호출의 단순화
Refactoring 메소드 호출의 단순화
 
자바 병렬 프로그래밍 ch9
자바 병렬 프로그래밍 ch9자바 병렬 프로그래밍 ch9
자바 병렬 프로그래밍 ch9
 
Code1_2
Code1_2Code1_2
Code1_2
 
C++ api design 품질
C++ api design 품질C++ api design 품질
C++ api design 품질
 
서버인프라를지탱하는기술3_2_3
서버인프라를지탱하는기술3_2_3서버인프라를지탱하는기술3_2_3
서버인프라를지탱하는기술3_2_3
 
MiningTheSocialWeb.Ch2.Microformat
MiningTheSocialWeb.Ch2.MicroformatMiningTheSocialWeb.Ch2.Microformat
MiningTheSocialWeb.Ch2.Microformat
 
프로그래머로 사는 법 Ch14
프로그래머로 사는 법 Ch14프로그래머로 사는 법 Ch14
프로그래머로 사는 법 Ch14
 
Mining the social web 6
Mining the social web 6Mining the social web 6
Mining the social web 6
 
자바 병렬 프로그래밍 1&2
자바 병렬 프로그래밍 1&2자바 병렬 프로그래밍 1&2
자바 병렬 프로그래밍 1&2
 

Similar a 실무로 배우는 시스템 성능 최적화 10부. 네트워크 모니터링

Private cloud network architecture (2018)
Private cloud network architecture (2018)Private cloud network architecture (2018)
Private cloud network architecture (2018)Gasida Seo
 
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직Hyunjik Bae
 
TCP 연결 과정_Wh apm
TCP 연결 과정_Wh apmTCP 연결 과정_Wh apm
TCP 연결 과정_Wh apm엑셈
 
웹기반원격감시제어 2010 CPD
웹기반원격감시제어 2010 CPD웹기반원격감시제어 2010 CPD
웹기반원격감시제어 2010 CPD활 김
 
(C#,네트워크강좌)간단한 TCP 클라이언트/서버 구현, 멀티쓰레드 기반 에코우 클라이언트/서버_C추천#/WPF/자마린실무교육학원
(C#,네트워크강좌)간단한 TCP 클라이언트/서버 구현, 멀티쓰레드 기반 에코우 클라이언트/서버_C추천#/WPF/자마린실무교육학원(C#,네트워크강좌)간단한 TCP 클라이언트/서버 구현, 멀티쓰레드 기반 에코우 클라이언트/서버_C추천#/WPF/자마린실무교육학원
(C#,네트워크강좌)간단한 TCP 클라이언트/서버 구현, 멀티쓰레드 기반 에코우 클라이언트/서버_C추천#/WPF/자마린실무교육학원탑크리에듀(구로디지털단지역3번출구 2분거리)
 
11_웹서비스활용
11_웹서비스활용11_웹서비스활용
11_웹서비스활용noerror
 
하이퍼레저 패브릭 데이터 구조
하이퍼레저 패브릭 데이터 구조하이퍼레저 패브릭 데이터 구조
하이퍼레저 패브릭 데이터 구조Logpresso
 
중급 소켓프로그래밍
중급 소켓프로그래밍중급 소켓프로그래밍
중급 소켓프로그래밍quxn6
 
한대희 Web proxy_개발_2006년11월_pas_ktf
한대희 Web proxy_개발_2006년11월_pas_ktf한대희 Web proxy_개발_2006년11월_pas_ktf
한대희 Web proxy_개발_2006년11월_pas_ktfDaehee Han
 
IT 일반기술 강의자료_ed10
IT 일반기술 강의자료_ed10IT 일반기술 강의자료_ed10
IT 일반기술 강의자료_ed10hungrok
 
Map reduce 기본 설명
Map reduce 기본 설명Map reduce 기본 설명
Map reduce 기본 설명Jinho Yoo
 
로거넷 LoggNet 프로그램 설정 정보 (사용자 교육 자료 CR1000)
로거넷 LoggNet 프로그램 설정 정보 (사용자 교육 자료 CR1000)로거넷 LoggNet 프로그램 설정 정보 (사용자 교육 자료 CR1000)
로거넷 LoggNet 프로그램 설정 정보 (사용자 교육 자료 CR1000)Lee Sang-Ho
 
[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO
[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO
[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTOiFunFactory Inc.
 
[오픈소스컨설팅]파일럿진행예제 on AWS
[오픈소스컨설팅]파일럿진행예제 on AWS[오픈소스컨설팅]파일럿진행예제 on AWS
[오픈소스컨설팅]파일럿진행예제 on AWSJi-Woong Choi
 
Interface and Protocol
Interface and ProtocolInterface and Protocol
Interface and ProtocolWonjun Hwang
 
Hadoop distributed file system rev3
Hadoop distributed file system rev3Hadoop distributed file system rev3
Hadoop distributed file system rev3Sung-jae Park
 
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요dgmit2009
 

Similar a 실무로 배우는 시스템 성능 최적화 10부. 네트워크 모니터링 (20)

Private cloud network architecture (2018)
Private cloud network architecture (2018)Private cloud network architecture (2018)
Private cloud network architecture (2018)
 
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
 
Tcp summary
Tcp summaryTcp summary
Tcp summary
 
TCP 연결 과정_Wh apm
TCP 연결 과정_Wh apmTCP 연결 과정_Wh apm
TCP 연결 과정_Wh apm
 
웹기반원격감시제어 2010 CPD
웹기반원격감시제어 2010 CPD웹기반원격감시제어 2010 CPD
웹기반원격감시제어 2010 CPD
 
Network researching
Network researchingNetwork researching
Network researching
 
(C#,네트워크강좌)간단한 TCP 클라이언트/서버 구현, 멀티쓰레드 기반 에코우 클라이언트/서버_C추천#/WPF/자마린실무교육학원
(C#,네트워크강좌)간단한 TCP 클라이언트/서버 구현, 멀티쓰레드 기반 에코우 클라이언트/서버_C추천#/WPF/자마린실무교육학원(C#,네트워크강좌)간단한 TCP 클라이언트/서버 구현, 멀티쓰레드 기반 에코우 클라이언트/서버_C추천#/WPF/자마린실무교육학원
(C#,네트워크강좌)간단한 TCP 클라이언트/서버 구현, 멀티쓰레드 기반 에코우 클라이언트/서버_C추천#/WPF/자마린실무교육학원
 
11_웹서비스활용
11_웹서비스활용11_웹서비스활용
11_웹서비스활용
 
하이퍼레저 패브릭 데이터 구조
하이퍼레저 패브릭 데이터 구조하이퍼레저 패브릭 데이터 구조
하이퍼레저 패브릭 데이터 구조
 
CDN overview
CDN overviewCDN overview
CDN overview
 
중급 소켓프로그래밍
중급 소켓프로그래밍중급 소켓프로그래밍
중급 소켓프로그래밍
 
한대희 Web proxy_개발_2006년11월_pas_ktf
한대희 Web proxy_개발_2006년11월_pas_ktf한대희 Web proxy_개발_2006년11월_pas_ktf
한대희 Web proxy_개발_2006년11월_pas_ktf
 
IT 일반기술 강의자료_ed10
IT 일반기술 강의자료_ed10IT 일반기술 강의자료_ed10
IT 일반기술 강의자료_ed10
 
Map reduce 기본 설명
Map reduce 기본 설명Map reduce 기본 설명
Map reduce 기본 설명
 
로거넷 LoggNet 프로그램 설정 정보 (사용자 교육 자료 CR1000)
로거넷 LoggNet 프로그램 설정 정보 (사용자 교육 자료 CR1000)로거넷 LoggNet 프로그램 설정 정보 (사용자 교육 자료 CR1000)
로거넷 LoggNet 프로그램 설정 정보 (사용자 교육 자료 CR1000)
 
[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO
[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO
[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO
 
[오픈소스컨설팅]파일럿진행예제 on AWS
[오픈소스컨설팅]파일럿진행예제 on AWS[오픈소스컨설팅]파일럿진행예제 on AWS
[오픈소스컨설팅]파일럿진행예제 on AWS
 
Interface and Protocol
Interface and ProtocolInterface and Protocol
Interface and Protocol
 
Hadoop distributed file system rev3
Hadoop distributed file system rev3Hadoop distributed file system rev3
Hadoop distributed file system rev3
 
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요
 

실무로 배우는 시스템 성능 최적화 10부. 네트워크 모니터링

  • 1. 실무로 배우는 시스템 성능 최적화 10부. 네트워크 모니터링 Part. 2 아꿈사 스터디 - 정현수
  • 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)
  • 7. FTP ❖Active 모드 vs. Passive 모드
  • 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