5. 실험 환경의 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
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 패킷의 생애주기를 관찰해보자.
21. OSI 7계층, TCP/IP 계층
• 계층표
- Data-Link Layer : Ethernet은 데이터를 Frame 단위, Broadcasting 방식으로 전송.
각 호스트들은 MAC 주소를 인식하여, 자신의 MAC 주소가 있으면 Frame을 취한
다. 반이중 통신만 가능.
- Network Layer : 모든 호스트들에 IP 어드레스를 부여하며, Inter-network 구성이
가능해진다. 각기 다른 Subnet들끼리 통신이 가능하게 됨.
- Transport Layer : IP Layer에서 전달 받은 데이터를 검증하고 응답할 수 있게 됨.
전이중 통신이 가능. 연결지향
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 기능을 수행.
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 : 허브, 스위치 등 설명
Notes de l'éditeur
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
Wireshark에서 넷북과 내 컴퓨터의 Source, Destination IP만으로 걸러내면
SSH 패킷과 Socket 통신한 내용만 출력될 것이다.
Frame : Data Link 계층의 통신단위
Packet : Network 계층의 통신단위
Segment : Transport 계층의 통신단위
공유기로 쪼개진 Sub-Network들 내부에서는 L2 Switch만 있어도 통신이 가능하다.
하지만 다른 Subnet과 통신하기 위해서는 Routing이 가능해야 하므로 L3 장비가 필요하다.
DHCP 서버 동작 예) 전체 호스트들에게 패킷을 모두 전파하려는 DHCP Server의 경우는 DHCP 패킷을 Flooding 시켜서 전체 호스트들에게 패킷을 전파함.