arp 캐쉬테이블
- 삭제 : arp -d
- 조회 : arp -a
5분동안 통신하지 않으면 해당 ip주소에 대한 mac 주소를 삭제한다.
패킷 트레이서 CLI
enable 또는 en : 스위치 관리자모드 ( Switch# )
configure terminal = conf t : 설정모드로 변경 ( Switch(config)# )
show mac-address-table = sh mac- : 스위치 mac 주소 조회
clear mac-address-table : 스위치 mac 주소 테이블 삭제
스위치
- 주소학습 : mac 주소 테이블에 저장
- Flooding : 들어온 포트를 빼고 모든 포트로 전송
- Forwarding : mac 주소가 있는 포트로 프레임 전송
- Filtering : mac 주소가 있는 포트로 프레임 전송, 나머지 포트는 막음
- Aging : 5분동안 통신없는 mac주소 삭제
no ip domain-lookup : 도메인 주소 찾는 과정을 비활성화
Switch#sdfs
Translating "sdfs"...domain server (255.255.255.255) %
Name lookup aborted
=> 아무거나 입력하면, 그것이 도메인이나 ip주소인 줄 알고 스위치가 찾는다.
이 때 Ctrl + ^ (= ctrl + shift + 6)단축키를 이용하면 찾고 있던 것을 중단할 수 있다.
interface fa0/1 = int fa0/1 : fa0/1 인터페이스 선택하기
sh = shutdown : 포트 비활성화
사용예)
int fa0/1
sh
명령어가 아니라 UI상으로 제어도 가능
no sh = no shutdown : 포트 활성화
포트를 다시 활성화한다
spanning-tree portfast: spanning-tree 비활성화
=> 포트 부팅을 바로바로 on/off 할수있다 (해당 설정이 없으면 off 하고 기다려야 on 할 수 있음)
이더넷2
Preamble : 8바이트, 송수신 동기화를 위해 사용. 동일 패턴의 신호를 7바이트 연속으로 보내서 데이터 전송 알림. 2계층 헤더의 시작을 알리는 역할.
SFC
Dest Addr : 목적지 주소 (MAC) mac 주소를 모를땐 FFFF로 채워놓는다
Src Addr : 출발지 주소 (MAC)
Type : 상위 계층의 Protocol 코드 값 (IP : 0x0800, ARP : 0x0806)
Data : 상위 계층에서 내려온 데이터 (이더넷은 최대 1500)
FCS : Preamble과 FCS부분 제외, 유효한 비트열 오류검증
참고
CRC : 데이터 전송 중 오류를 감지하기 위한 에러 체크 방법. 프레임 무결성 검사. 많은 통신 프로토콜에서 사용된다.
( 파이썬으로 작성한 CRC32 체크 프로그램 https://cafe.naver.com/linuxmasternet/32108 )
STP 체크하고 시뮬레이션 모드 동작.
장비끼리 통신할 때는 이더넷 802.3 헤더를 사용한다
장비 스스로 정보를 교환해야 하는 경우에 사용.
와이어샤크 > 이더넷 > 필터에 icmp 걸어두고 ping 테스트
Frame
Ethernet 2
Internet Protocol
Internet Control Message Protocol (ICMP)
자세한 패킷 정보는 왼쪽 하단
먼저 저장할 패킷을 선택이나 드래그 해놓고
저장된 와이어샤크 파일을 더블클릭하면 와이어샤크로 열린다
논리합OR : 두 조건 중 하나라도 참이면 참
논리곱AND : 두 조건이 모두 참이어야 참
A가 192.168.100.8
B가 192.168.100.25
A가 B에게 Ping 통신을 하면,
제일 먼저 내부 네트워크인지 확인한다.
컴퓨터에 설정된 서브넷마스크가 255.255.255.0 일 때, prefix가 24이고,
논리곱and 연산을 하면 192.168.100.0 이라는 결과가 나온다
네트워크 범위는 192.168.100.0 ~ 192.168.100.255 이므로
B와 A는 같은 내부 네트워크에 속해있다
서브넷마스크가 255.255.255.0 일 때 왜 prefix가 24인가?
=> 11111111. 11111111. 11111111. 00000000
네트워크 주소 24자리 호스트주소 8자리
각 자리수는 8자리씩 4구역이고 2진수로 표기한다. 2의 제곱이므로 최소값 0, 최대값 255
ARP 프로토콜
- IP 주소를 물리적인 네트워크 MAC 주소로 변환한다
- 3계층 네트워크 계층에서 동작하며 주로 이더넷 네트워크에서 사용됨
- 동작 : 송신자가 수신자의 IP 주소를 알고 있지만, MAC 주소는 모를 때 ARP 요청을 하게 된다. (L2 헤더에 MAC 주소가 들어가야 하기 때문) ARP 요청 패킷을 브로드캐스트(FFFF.FFFF.FFFF) 하면, 응답을 받은 IP가 동일한 호스트가 자신의 MAC 주소를 송신자에게 전송한다.
- LAN 네트워크의 노드간 통신을 위해 필수적이며, 라우팅, 스위칭, 로드 밸런싱 등에서도 사용됨
- 스푸핑Spoofing 공격을 당할 수 있는 취약점이 있기 때문에 ARP 캐시 테이블을 정적Static으로 설정하는 것이 안전하다
ARP 프로토콜 헤더
Hardware Type : 물리적 네트워크 유형(ex 이더넷 1)
Protocol Type : 전송 프로토콜 유형(ex IPv4 0x0800)
Hardware Address Length ( HLEN ) : 물리적 주소 길이
Protocol Address Length ( PLEN ) : 프로토콜 주소 길이
Opcode : ARP 요청패킷1, 응답패킷2
Sender Hardware Address (SOURCE MAC ) : 송신자 물리적주소
Sender Protocol Address ( SOURCE IP ) : 송신자 프로토콜주소
Target Hardware Address ( Target MAC ) : 0000.0000.0000
Target Protocol Address ( Target IP ) : 목적지 프로토콜 주소
BUM 트래픽 - Unknown Unicast 분석
Unknown Unicast : ARP가 동작한 후, 목적지 MAC 주소가 명시되어 있지만
스위치는 MAC 주소를 모르는 상태
IP 프로토콜
- 데이터를 전송하기 위한 프로토콜.
패킷을 보낼 때 라우터가 이 패킷 헤더 정보를 이용하여 수신측에게 데이터를 전송한다
IP 헤더
- 인터넷 프로토콜 IP 패킷의 첫 부분에 위치하는 정보를 담고 있는 부분
Version : IPv4는 4로 고정
Header Length (IHL) : 헤더길이. 4bit이고 4byte 단위. (0 ~ 15) * 4
Type of Service : 패킷의 우선순위 및 서비스 품질
Total Length : 헤더+데이터를 합친 전체길이. (*이더넷 MTU는 1500)
Identification : 패킷의 고유 식별자
Flags : 단편화유무 체크로 3비트. 첫 번째 비트는 사용하지 않음. 두 번째 비트가 1이면 단편화 가능, 할 수 없는 경우 1. 세 번째 비트가 0이면 단편화된 마지막 조각일 때. 1이면 추가로 조각이 있다는 뜻
Fragment Offset : 큰 데이터를 여러 개의 작은 패킷으로 나누어서 전송하는 기능. 원래 패킷에서의 위치를 나타낸다.
( + 단편화시 MTU가 1500일때
IP헤더 20바이트 + 페이로드 1480바이트로, 한 패킷에는 1480의 데이터까지 담을 수 있다
즉, 내용이 1500이라면 헤더자리가 있으므로 20+1480 / 20+20 으로 두 개의 패킷으로 쪼개진다 )
Time to Live (TTL) : 패킷이 네트워크에서 유지되는 최대 횟수. 0이되면 폐기된다
Protocol : 상위계층 프로토콜 종류 (ex) ICMP는 1, TCP는 6, UDP는 17)
Header Checksum : 헤더 무결성 체크
Source IP Address : 출발지 IP 주소
Destination IP Address : 목적지 IP 주소
Options : 0~40 바이트. 출발지 경로를 지정(Source Routing)하거나, 보안등급(Security)을 지정하는 등...
Padding : 쓰레기값으로, IP Header의 전체 크기가 32비트 단위가 되도록 단위를 맞춰줌
ICMP
- 인터넷 프로토콜 위에서 동작하는 프로토콜.
- 오류 메시지 및 제어 메시지를 전송하기 위해 사용된다
- 장비에서 발생한 문제를 식별하고 네트워크 상태를 감시, 라우팅 정보 제공시에 사용된다
헤더
Type : 메시지 종류 (에코요청 8, 에코응답 0, 목적지 도달 불가능 3)
Code : 메시지 세부 유형
Checksum : 오류검사 필드
Messge Body : 메시지 관련 데이터
TCP
- 전송 4계층에 해당하는 프로토콜
- 신뢰성있는 데이터 전송을 보장하기 위한 프로토콜
헤더
Source Port : 출발지 포트 번호 (2바이트, ~65535)
Destination Port : 목적지 포트 번호 (2바이트 , ~65535)
Sequence Number : 데이터 순서
Acknowledgment Number : 받은 데이터를 확인하기 위한 응답 번호
Offset : 헤더길이를 4bit로 표현하고 4바이트 단위
Res. : 예약
Flags : Urg Ack Psh Rst Syn Fin 제어비트
Window : 수신측이 한 번에 받을 수 있는 데이터 양
Checksum : 헤더와 데이터 무결성 검사 값
Urgent Pointer : 긴급 데이터 전송시 데이터 시작 위치
Options : 추가 정보를 나타내는 옵션 필드
Padding
3-Way Hand Shake
- TCP 연결 설정 과정 (클라이언트-서버)
1) Client -> SYN -> Server ( Sequence Number : 21 )
2) Client <- SYN + ACK <- Server ( Sequence Number : 55, ACK Number : 22 )
3) Client -> ACK -> Server ( Sequence Number : 23, ACK Number : 56 )
4-Way Hand Shake
- TCP 연결 종료 과정
1) Client -> FIN + ACK -> Server
2) Client <- ACK <- Server ( 서버는 내부적으로 종료 처리중 ... )
3) Client <- FIN + ACK <- Server ( 종료 처리 완료 후 FIN + ACK )
4) Client -> ACK -> Server ( 클라이언트는 잠시 기다렸다가 내부 타이머에 의해 ACK 종료 처리 )
실습) 라우터를 통한 네트워크 구축
두 개의 네트워크 구축.
A 네트워크 Default Gateway : 192.168.2.3
B 네트워크 Default Gateway : 192.168.1.3
네트워크가 다를 경우, 무조건 중간에 L3 장비가 있어야 통신할 수 있다
스위치끼리 연결된 상태에서 ping 테스트. 그러나 통신하지 못하고 timed out
=> 라우터는 연결한 후에 설정을 따로 해주어야 한다
en
conf t
int g0/0
ip address 192.168.1.3 255.255.255.0 (캡쳐에선 까먹어서 다시했음)
no sh
R1#sh ip int b
Interface IP-Address OK? Method Status Protocol
GigabitEthernet0/0 192.168.1.3 YES manual up up
GigabitEthernet0/1 192.168.2.3 YES manual up up
Vlan1 unassigned YES unset administratively down down
확인
ping으로 게이트웨이인 192.168.1.3에 보내보면 정상적으로 전송됨
라우터를 통해 192.168.2.1에 전송되었다