wire shark 사용법 및 네트워크 개론 살짝 설명
TRANSCRIPT
Wireshark 와 네트워크 개론이진우
진행 순서1. Wireshark 사용법
– 아주 간단한 소켓 프로그램 예제 ( Server <-> Client )– Wireshark 을 이용한 패킷 분석
2. 네트워크 살짝 설명– OSI 7 계층 , TCP/IP 4 계층 설명– L2, L3, L4 스위치 설명
아주 간단한 소켓 프로그램 예제
실험 환경의 Network Topology
내 컴퓨터1. SSH Client
2. Socket Server
공유기(L3, NAT)
넷북1. SSH Server(22)2. Socket Client
Internet
192.168.219.168192.168.219.134192.168.219.1
180.228.181.128
아주 간단한 소켓 프로그램서버 (192.168.219.168)
# Echo server programimport socket
HOST = '' # Symbolic name meaning all available interfacesPORT = 50007 # Arbitrary non-privileged ports = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.bind((HOST, PORT))s.listen(1)conn, addr = s.accept()
while 1:data = conn.recv(1024)print 'Recevied ', dataif not data: breakconn.sendall("server is received the data
%s" % data)
conn.close()
클라이언트 (192.168.219.134)
# Echo client programimport socketimport time
HOST = '192.168.219.168' # The remote hostPORT = 50007 # The same port as used by the servers = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.connect((HOST, PORT))
s.sendall('Hello, world')data = s.recv(1024)print 'Received from server', repr(data)time.sleep(1)
s.close()
아주 간단한 소켓 프로그램
클라이언트 (192.168.219.134)
서버 (192.168.219.168)
실행 장면
패킷 분석1. 필터를 이용하여 보고 싶은 패킷만 추출하자 .2. 각 패킷들을 분석하자 .
3. TCP 패킷의 생애주기를 관찰해보자 .
Wireshark 를 켰는데 쌓인 패킷 .. 분석하려면 ?
Wireshark 패킷 분석1. 쌓인 패킷들에서 필요한 것만 취함 . ( 패킷에 우클릭 후 Apply as Filter 적용 )
Wireshark 패킷 분석• 적용해본 필터링 Expression(((((((((!(ipv6.src == fe80::e441:aabb:82d1:6473)) && !(ipv6.src == fe80::428:b5f7:a283:4a08)) && !(ip.src == 45.121.186.10)) && !(ip.src == 52.91.152.165)) && !(eth.dst == 00:08:5b:7d:b1:e0)) && !(eth.src == 00:08:5b:7d:b1:e0)) && !(ip.dst == 239.255.255.250))))
Wireshark 패킷 분석2. 쌓인 패킷들에서 필요한 것만 취한 결과 . => SSH 패킷이 대부분 -_-; SSH 도 제거 !
Wireshark 패킷 분석• SSH 도 제거하려면 ?Port(22) 를 제외시키자 . => 추가해준 필터링 Expression : && !(tcp.port==22)
=> ((((((((((!(ipv6.src == fe80::e441:aabb:82d1:6473)) && !(ipv6.src == fe80::428:b5f7:a283:4a08)) && !(ip.src == 45.121.186.10)) && !(ip.src == 52.91.152.165)) && !(eth.dst == 00:08:5b:7d:b1:e0)) && !(eth.src == 00:08:5b:7d:b1:e0)) && !(ip.dst == 239.255.255.250))))) && !(tcp.port==22)
Wireshark 패킷 분석3. 소켓 통신에 사용된 패킷만 추출 성공 . ( 잡 패킷은 귀찮아서 무시 . )
Wireshark 패킷 분석4. Three Hand Shaking ( SYNchronize 패킷을 주고 받음 . )
Wireshark 패킷 분석5. 데이터 전달 ( 실제로 데이터를 보내기 위해 PuSH 패킷을 전달 . )
Wireshark 패킷 분석6. TCP 연결 종료 ( 연결을 끊기 위해 FINalize 패킷을 전달 . )
Wireshark 패킷 분석• ARP 패킷 구조
• TCP 패킷 구조 ( 클라이언트 , 서버 순 )
네트워크 개론웹서비스 개발에 필요한 네트워크 기초
OSI 7 계층 , TCP/IP 계층• 계층표
OSI 7 계층 , TCP/IP 계층• 계층표
- Data-Link Layer : Ethernet 은 데이터를 Frame 단위 , Broadcasting 방식으로 전송 . 각 호스트들은 MAC 주소를 인식하여 , 자신의 MAC 주소가 있으면 Frame 을 취한다 . 반이중 통신만 가능 .
- Network Layer : 모든 호스트들에 IP 어드레스를 부여하며 , Inter-network 구성이 가능해진다 . 각기 다른 Subnet 들끼리 통신이 가능하게 됨 .
- Transport Layer : IP Layer 에서 전달 받은 데이터를 검증하고 응답할 수 있게 됨 . 전이중 통신이 가능 . 연결지향
네트워크 토폴로지 스케치
공유기(L3)
WebServer
Switch(L4)
Host Host
Switch(L2)
Router(L3)
Router(L3)
Router(L3)
Router(L3)
Inter-Network
Router(L3)
∙∙ 공유기(L3)
Host Host
Switch(L2)
Switch(L2)
Host Host
Host Host
Switch(L2)
Sub-Network
Sub-Network
Sub-Network
Sub-NetworkWebServer
L2 Device - Data-Link
• L2 SwitchMAC 주소를 읽고 처리하는 스위치Ethernet 은 기본적으로 Broadcasting 을 사용 . 기존의 Hub 는 모든 호스트들에 Broadcasting 을 하기 때문에 전체 네트워크의 속도가 1/N 으로 떨어졌음 . L2 Switch 는 MAC 주소를 읽어서 해당 호스트에만 전달할 수 있게 호스트간의 Dedicated 대역폭을 제공 . 전체 네트워크 성능이 Hub 에 비해 비약적 향상 .
L3 Device - Network
• Router, L3 Switch서로 다른 네트워크를 연결하는 장치 . 패킷의 네트워크 주소 (IP) 를 보고 라우팅 시킴 .
L4 Device - Transport
• L4 Switch전송계층 정보 -> IP, Port 조합을 보고 트래픽을 스위칭해주는 장비 . 주로 Load Balancing 기능을 수행 .
시간이 남으면 ?
패킷 일일이 직접 까봅시다 . ㅎㅎ
기타
Ubuntu 에서 wireshark 설치sudo apt-get install wireshark sudo groupadd wireshark sudo usermod -a -G wireshark YOUR_USER_NAME sudo chgrp wireshark /usr/bin/dumpcap sudo chmod 750 /usr/bin/dumpcap sudo setcap cap_net_raw,cap_net_admin=eip /usr/bin/dumpcap sudo getcap /usr/bin/dumpcap
출처 : https://ask.wireshark.org/questions/16343/install-wireshark-on-ubuntu
유용한 리눅스 네트워크 유틸리티 목록• Wireshark : 패킷 분석• iPerf : Network Bandwidth 측정• ethtool ( linux ) : Network Driver 및 Hardware Control
• traceroute : 종단에서 다른 종단으로 가는 길을 보여줌 .( 라우터 , 스위치 등 포함 )
• tcpdump : 리눅스에서 특정 인터페이스로 오고 가는 모든 패킷을 캡처 . 파일로 떨구는 옵션 가능 .
• route : 현재 장비의 IP Routing table 을 보여줌 .
출처• http://www.inetdaemon.com/tutorials/internet/tcp/3-way_handshake.shtml : 3-Way Handshake
• https://ask.wireshark.org/questions/16343/install-wireshark-on-ubuntu : wireshark 설치• http://asec.ahnlab.com/156 : 와이어샤크 잘 알려주는 사이트 . 강추 !
• https://www.microsoft.com/korea/technet/deploy/tcpintro4.mspx : TCP/IP 설명• http://beansberries.tistory.com/entry/%
EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-TCPIP-4%EA%B3%84%EC%B8%B5 : TCP/IP 설명
• http://terms.naver.com/entry.nhn?docId=2274898&cid=42171&categoryId=51118
• http://yellowh.tistory.com/entry/OSI-7-Layer%EB%9E%80 : OSI 7 Layer 설명• http://suns.tistory.com/24 : OSI 계층 및 L2~L4 스위치 설명• http://junleenet.blogspot.kr/2013/12/lan-1_31.html : 허브 , 스위치 등 설명