Wireshark와 네트워크 개론
이진우
traeper@gmail.com
진행 순서
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.134
192.168.219.1
180.228.181.128
아주 간단한 소켓 프로그램
서버(192.168.219.168)
# Echo server program
import socket
HOST = '' # Symbolic name meaning all
available interfaces
PORT = 50007 # Arbitrary non-privileged
port
s = 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 ', data
if not data: break
conn.sendall("server is received the
data %s" % data)
conn.close()
클라이언트(192.168.219.134)
# Echo client program
import socket
import time
HOST = '192.168.219.168' # The remote host
PORT = 50007 # The same port as used by
the server
s = 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)
Web
Server
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-NetworkWeb
Server
L2 Device - Data-Link
• L2 Switch
MAC 주소를 읽고 처리하는 스위치
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%A
C-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 : 허브, 스위치 등 설명

Wire shark 사용법 및 네트워크 개론 살짝 설명

  • 2.
  • 3.
    진행 순서 1. Wireshark사용법 – 아주 간단한 소켓 프로그램 예제 ( Server <-> Client ) – Wireshark을 이용한 패킷 분석 2. 네트워크 살짝 설명 – OSI 7계층, TCP/IP 4계층 설명 – L2, L3, L4 스위치 설명
  • 4.
    아주 간단한 소켓프로그램 예제
  • 5.
    실험 환경의 NetworkTopology 내 컴퓨터 1. SSH Client 2. Socket Server 공유기 (L3, NAT) 넷북 1. SSH Server(22) 2. Socket Client Internet 192.168.219.168192.168.219.134 192.168.219.1 180.228.181.128
  • 6.
    아주 간단한 소켓프로그램 서버(192.168.219.168) # Echo server program import socket HOST = '' # Symbolic name meaning all available interfaces PORT = 50007 # Arbitrary non-privileged port s = 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 ', data if not data: break conn.sendall("server is received the data %s" % data) conn.close() 클라이언트(192.168.219.134) # Echo client program import socket import time HOST = '192.168.219.168' # The remote host PORT = 50007 # The same port as used by the server s = 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()
  • 7.
    아주 간단한 소켓프로그램 클라이언트(192.168.219.134) 서버(192.168.219.168) 실행 장면
  • 8.
    패킷 분석 1. 필터를이용하여 보고 싶은 패킷만 추출하자. 2. 각 패킷들을 분석하자. 3. TCP 패킷의 생애주기를 관찰해보자.
  • 9.
    Wireshark를 켰는데 쌓인패킷.. 분석하려면?
  • 10.
    Wireshark 패킷 분석 1.쌓인 패킷들에서 필요한 것만 취함. ( 패킷에 우클릭 후 Apply as Filter 적용 )
  • 11.
    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))))
  • 12.
    Wireshark 패킷 분석 2.쌓인 패킷들에서 필요한 것만 취한 결과. => SSH 패킷이 대부분 -_-; SSH도 제거!
  • 13.
    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)
  • 14.
    Wireshark 패킷 분석 3.소켓 통신에 사용된 패킷만 추출 성공. (잡 패킷은 귀찮아서 무시. )
  • 15.
    Wireshark 패킷 분석 4.Three Hand Shaking ( SYNchronize 패킷을 주고 받음. )
  • 16.
    Wireshark 패킷 분석 5.데이터 전달( 실제로 데이터를 보내기 위해 PuSH 패킷을 전달. )
  • 17.
    Wireshark 패킷 분석 6.TCP 연결 종료( 연결을 끊기 위해 FINalize 패킷을 전달. )
  • 18.
    Wireshark 패킷 분석 •ARP 패킷 구조 • TCP 패킷 구조(클라이언트, 서버 순)
  • 19.
    네트워크 개론 웹서비스 개발에필요한 네트워크 기초
  • 20.
    OSI 7계층, TCP/IP계층 • 계층표
  • 21.
    OSI 7계층, TCP/IP계층 • 계층표 - Data-Link Layer : Ethernet은 데이터를 Frame 단위, Broadcasting 방식으로 전송. 각 호스트들은 MAC 주소를 인식하여, 자신의 MAC 주소가 있으면 Frame을 취한 다. 반이중 통신만 가능. - Network Layer : 모든 호스트들에 IP 어드레스를 부여하며, Inter-network 구성이 가능해진다. 각기 다른 Subnet들끼리 통신이 가능하게 됨. - Transport Layer : IP Layer에서 전달 받은 데이터를 검증하고 응답할 수 있게 됨. 전이중 통신이 가능. 연결지향
  • 22.
    네트워크 토폴로지 스케치 공유기 (L3) Web Server Switch (L4) HostHost 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-NetworkWeb Server
  • 23.
    L2 Device -Data-Link • L2 Switch MAC 주소를 읽고 처리하는 스위치 Ethernet은 기본적으로 Broadcasting을 사용. 기존의 Hub는 모든 호스트들에 Broadcasting을 하기 때문에 전체 네트워크의 속도가 1/N으로 떨어졌음. L2 Switch는 MAC 주소를 읽어서 해당 호스트에만 전달할 수 있게 호스트간의 Dedicated 대역폭을 제공.  전체 네트워크 성능이 Hub에 비해 비약적 향상.
  • 24.
    L3 Device -Network • Router, L3 Switch 서로 다른 네트워크를 연결하는 장치. 패킷의 네트워크 주소(IP)를 보고 라우팅 시킴.
  • 25.
    L4 Device -Transport • L4 Switch 전송계층 정보 -> IP, Port 조합을 보고 트래픽을 스위칭해주는 장비. 주로 Load Balancing 기능을 수행.
  • 26.
    시간이 남으면? 패킷 일일이직접 까봅시다.ㅎㅎ
  • 27.
  • 28.
    Ubuntu에서 wireshark 설치 sudoapt-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
  • 29.
    유용한 리눅스 네트워크유틸리티 목록 • Wireshark : 패킷 분석 • iPerf : Network Bandwidth 측정 • ethtool ( linux ) : Network Driver 및 Hardware Control • traceroute : 종단에서 다른 종단으로 가는 길을 보여줌.(라우터, 스위치 등 포함) • tcpdump : 리눅스에서 특정 인터페이스로 오고 가는 모든 패킷을 캡처. 파일로 떨구 는 옵션 가능. • route : 현재 장비의 IP Routing table을 보여줌.
  • 30.
    출처 • 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%A C-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 : 허브, 스위치 등 설명

Editor's Notes

  • #4 OSI7계층은 ISO 국제 표준으로 개발 할수 있도록 내놓은 표준화 골격이라고 보시면 됩니다.   TCP/IP는 정확히 4계층으로 이루어쳐 있고 OSI7계층에서 나눈 계층을 몇몇 가닥으로 요약해서 OSI7계층 비슷하게 만들어 졌습니다. http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=10801&docId=76996645&qb=T1NJIDcg6rOE7Li1IHZzIFRDUC9JUA==&enc=utf8&section=kin&rank=2&search_sort=0&spq=0&pid=SroP4woRR00sscJlftNsssssstV-189917&sid=4Pa9d9MKctBvtlmUKwCJnw%3D%3D
  • #6 Wireshark에서 넷북과 내 컴퓨터의 Source, Destination IP만으로 걸러내면 SSH 패킷과 Socket 통신한 내용만 출력될 것이다.
  • #11 Frame : Data Link 계층의 통신단위 Packet : Network 계층의 통신단위 Segment : Transport 계층의 통신단위
  • #23 공유기로 쪼개진 Sub-Network들 내부에서는 L2 Switch만 있어도 통신이 가능하다. 하지만 다른 Subnet과 통신하기 위해서는 Routing이 가능해야 하므로 L3 장비가 필요하다.
  • #24 DHCP 서버 동작 예) 전체 호스트들에게 패킷을 모두 전파하려는 DHCP Server의 경우는 DHCP 패킷을 Flooding 시켜서 전체 호스트들에게 패킷을 전파함.
  • #30 요구사항은 너무 간단해서 제외하고 Feature를 바로 분석.
  • #31 요구사항은 너무 간단해서 제외하고 Feature를 바로 분석.