실험 환경의 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 패킷의 생애주기를 관찰해보자.
OSI 7계층, TCP/IP계층
• 계층표
- Data-Link Layer : Ethernet은 데이터를 Frame 단위, Broadcasting 방식으로 전송.
각 호스트들은 MAC 주소를 인식하여, 자신의 MAC 주소가 있으면 Frame을 취한
다. 반이중 통신만 가능.
- Network Layer : 모든 호스트들에 IP 어드레스를 부여하며, Inter-network 구성이
가능해진다. 각기 다른 Subnet들끼리 통신이 가능하게 됨.
- Transport Layer : IP Layer에서 전달 받은 데이터를 검증하고 응답할 수 있게 됨.
전이중 통신이 가능. 연결지향
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 기능을 수행.
유용한 리눅스 네트워크유틸리티 목록
• 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§ion=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 시켜서 전체 호스트들에게 패킷을 전파함.