1. 헤더 패킷의 ASCII를 10진수로변환해주기 위해 파이썬 모듈 struct를 이용.
- struct (https://ko.wikipedia.org/wiki/Struct)
- 각 타입별 포멧 정보
2. 파이썬에서 확인
- byte = b'V\xce\x97W\x00\r5\xebhello'
- struct.unpack('!HHHH', byte[:8])
(22222, 38743, 13, 13803)
- struct.pack('!HHHH', 22222, 38743, 13, 13803 )
b'V\xce\x97W\x00\r5\xeb'
struct를 통해서 2바이트씩 숫자를 확인할 수 있다.
! 바이트 오더
- 0x12 34 56 78
1) little endian -> 0x78 56 34 12 (순서가 바뀜)
2) big endian -> 0x12 34 56 78 (그대로)
3. Layer 3: 네트워크 계층 (Network Layer)
- https://en.wikipedia.org/wiki/Network_layer
- 대표적인 프로토콜: IP, ICMP, 라우팅 프로토콜(RIP, OSPF, ...), IPSEC
- 주소 체계: IP Address
- PDU( Protocol Data Unit/프로토콜 데이터 단위): Packet
- 서로 다른 네트워크간의 통신 (경로 설정)
4. IPv4
- 네트워크상에서 호스트를 식별할 수 있는 번호 부여
- 4바이트의 숫자로 표현: 0 ~ 42억개 정도
- ip 관리 국제 기관 IANA: 주소 쳬계, 배포, 관리
- 4자리 숫자를 '.'으로 구분하여 표기
! 사용할 수 없는 번호
- 0.0.0.0 -> 네트워크의 대표 아이피
- 255.255.255.255 -> 브로드캐스팅 아이피
- 둘 다 장비에 설정할 수 없음.
A class
- 첫 번째 1자리 숫자를 네트워크 아이디로 사용
- 나머지 3자리 숫자를 호스트의 아이디로 사용
- 첫 번째 비트가 0으로 공통 비트를 갖도록 설정
- 0 000 0000 ~ 0 111 1111: 0 ~ 127
- 126개의 네트워크를 표현
- 호스트는 나머지 3자리를 가지고 표현
- 네트워크별 호스트의 아이디 표현 범위.
0000 0000.0000 0000.0000 0000 ~ 1111 1111.1111 1111.1111 1111
-> 0.0.0 ~ 255.255.255 : 16,581,373개의 호스트를 표현
! 사용할 수 없는 번호
- 네트워크 번호로 0번을 사용할 수 없다.
- 127번은 특별한 용도로 지정: 루프백 주소(가상 인터페이스 주소)
- 호스트의 번호도 0번을 사용할 수 없다. 1.0.0.0
- 호스트의 번호도 255번으로 사용할 수 없다. 1.255.255.255
! 사설 네트워크: private network
- ip고갈문제를 해결하기 위해 등장.
- 공인망 (public network)과는 별도로 분리된 네트워크
- a class의 사설 네트워크 아이디는 10번
! NAT (Network Address Translation)
- 네트워크 주소 변환
- 라우터에서 지원하는 기능
! 넷마스크: 네트워크 아이디를 분리
- 10.10.10.2/255.0.0.0
-> 0000 1010. 0000 1010. 0000 1010. 0000 0010
1111 1111. 0000 0000. 0000 0000. 0000 0000 and
-> 0000 1010. 0000 0000. 0000 0000. 0000 0000 -> 10.0.0.0
- 10.10.10.2/255.128.0.0
B class
C class
--------------------------------------------
D class
- 공통비트: 1110
- 장비나 인터페이스에서 설정할 수 없다.
- 멀티캐스팅 용도로 사용
- 1110 0000.0000 0000.0000 0000.0000 0000~
1110 1111.1111 1111.1111 1111.1111 1111
- 224.0.0.0 ~ 239.255.255.255 (멀티캐스팅 구간)
E class
- 공통비트: 1111
- 그냥 안쓴다, 예약된 번호
'Hacking > Network penetration' 카테고리의 다른 글
Network hacking - IP header, Ethernet header(Layer2) (0) | 2017.11.05 |
---|---|
Network hacking - Socket Programming (0) | 2017.10.29 |
Network hacking - OSI 7 계층과 socket server, client (0) | 2017.10.23 |
Network hacking - 실습환경 세팅하기(3) (0) | 2017.10.19 |
Network hacking - 실습환경 세팅하기(2) (0) | 2017.10.18 |