오늘은 IP와 Ethernet Header를 둘 다 분석해보도록 하겠습니다
3계층 (IP)
- 전송 경로를 담당
- 목적지까지의 경로를 선정(라우터)
- PDU: Packet
- 주소체계: IPv4, IPv6
- IP, IPX, 라우팅 프로토콜(RIP, OSPF, ... ), IPSEC
IP 주소(IPv4)
- 4자리 숫자를 "."으로 구분해서 표현
- 네트워크상에서 호스트를 구별하는 주소 체계
- 1자리에 올 수 있는 숫자는 0 ~ 255 까지 최대 256개를 표현
- 호스트의 최대 갯수는 256^4 = 대략 42억 정도...
- 각 호스트마다 숫자가 정해지는데 아무렇게나 정하진 않았다
- 그래야 관리가 쉽다
- IANA 관리 기구
- 숫자만을 이용해서 체계를 구성
- 4개의 숫자만을 사용해서 네트워크와 호스트를 구별
IP Class
사용할 수 없는 번호: 0.0.0.0 <- 대표 IP
255.255.255.255 <- broadcasting ip
* 통신방식
1. 유니 캐스트(1:1)
2. 브로드 캐스트(1:n)
- 방송 시스템
3. 멀티 캐스트(1:n)
- 정해진 범위 내에서만 통신
A class
- 첫번째 1자리의 숫자를 네트워크의 아이디로 사용
- 나머지 3개의 숫자를 호스트의 번호를 표현
- 숫자를 전부 2진수로 변환했을 때 앞의 한 비트가 0인 비트
- 0000 0000 ~ 0111 1111 : 0 ~ 127, 1~ 126
* 127: 내부 ip로 정해진 ip( localhost: 127.0.0.1 )
- 범위: 1.0.0.0 ~ 126.255.255.255
ex). 1번 네트워크
1.0.0.0 ~ 1.255.255.255
* 호스트의 주소로 사용할 수 없는 번호: 0, 255
1.0.0.0: 1번 네트워크의 대표 ip
1.255.255.255: 1번 네트워크의 브로드 캐스트 주소
- 사설ip: 10번
- 서브넷팅: 네트워크를 여러개의 더 작은 네트워크로 분할
ex).
1.1.1.1/255.0.0.0 -> 1.1.1.1/8
00000001.00000001.00000001.00000001/11111111.00000000.00000000.00000000
00000001.00000001.00000001.00000001
11111111.00000000.00000000.00000000 and
---------------------------------------
00000001.00000000.00000000.00000000 -> 1.0.0.0/8
1.1.1.1/255.128.0.0
00000001.00000001.00000001.00000001/11111111.10000000.00000000.00000000
00000001.00000001.00000001.00000001
11111111.10000000.00000000.00000000 and
---------------------------------------
00000001.00000000.00000000.00000000 -> 1.0.0.0
1.200.1.1/255.128.0.0 1.200.1.1/9 1.200.0.0/9 1.200.125.8/9 1.200.0.0
00000001.11001000.00000001.00000001/11111111.10000000.00000000.00000000
00000001.11001000.00000001.00000001
11111111.10000000.00000000.00000000 and
---------------------------------------
00000001.10000000.00000000.00000000 -> 1.128.0.0
B class: 앞의 2자리 숫자를 네트워크 아이디로 사용
- 공통비트: 10, 10000000.00000000 ~ 10111111.11111111, 128.0 ~ 191.255
- 서브넷마스크: 255.255.0.0
- 사설아이피: 172.16.0.0
예). 130.15.0.0
- 130.15.0.0 ~ 130.15.255.255, 130.15.0.1 ~ 130.15.255.254
C class: 앞의 3자리 숫자를 네트워크 아이디로 사용
- 공통비트: 110, 11000000.00000000.00000000 ~ 11011111.11111111.11111111
-> 192.0.0 ~ 223.255.255
- 서브넷마스크: 255.255.255.0
- 사설아이피 : 192.168.0.0
---------------------------------------
D class: 멀티캐스트 용도로 예약
- 사용할 수 없다.(장비나 인터페이스에 설정할 수 없다)
- 서브넷이 없다.
- 공통비트: 1110, 11100000.0.0.0 ~ 1110111.255.255.255
-> 224.0.0.0 ~ 239.255.255.255
E class: 그냥 사용할 수 없다
- 사용할 수 없다
- 공통비트: 1111. 11110000.0.0.0 ~ 11111111.255.255.255.255
-> 240.0.0.0 ~ 255.255.255.255
공인 IP( public ip ): IANA기관에서 관리, 중복될 수 없다.
- 공인망 -> 인터넷
- ip 고갈 문제가 발생
사설 IP( private ip )
- 사설망 -> 인터넷과 분리된 망
IP 헤더 분석
E\x00\x00!\x00\x00@\x00?\x11\xb7\x14\xc0\xa8\x00\xb6\xc0\xa8\x02\xb1
20바이트 들고온것
1) version & header length : 1byte
-> 0x45 -> 0100 0101
----- -----
ver len
->길이는 왼쪽으로 2칸 쉬프트-> 1010 -> 10100 - 20바이트
*헤더의 길이를 가지고 있다는 건 가변적임을 뜻함 -> 사실은 고정
2) service field : 1byte
-지금은 사용하지 않는다.
3). ip 패킷의 전체 크기 :2byte
-\x00! -> 0x21 -> 33
4).identification :2byte
5). flag & fragment offset : 2byte
-\x00\x00@\x00 -> ip Fragementation
6). TTL( Time to Live ):최대 홉(라우터)의 갯수:1byte
- unix : 254
- linux : 64
- windows: 128
7.) 프로토콜 :1byte
-ip 패킷이 전달하는 프로토콜의 타입
-tcp(6),udp(17/0x11),icmp(1)....(구글링하면 나옴) /etc/protocol
https://en.wikipedia.org/wiki/List_of_IP_protocol_numbers
8)체크섬 아이피 : 2byte
9).출발지 아이피: 4byte
10)도착지 아이피: 4byte
2계층 :
-주소체계 : MAC(Media Access Control) address, H/W address
-16진수 6자리로 표현(앞 3자리: 제조사,뒤 3자리:주소)
-프로토콜 :터널링(PTTP,L2PT,...),ARP
- PDU :Frame
-이더넷 헤더 : 14바이트 고정 크기
1).도착지 맥 주소: 6바이트
2).출발지 맥 주소 :6바이트
3).이더넷 타입 :2바이트
https://en.wikipedia.org/wiki/EtherType
ipv4: 0x0800 ARP: 0x0806 ipv6 : 0x86dd
\x00\x05f#0\x19 \x08\x00'\n\xcb^ \x08\x0
6 6 2
0x08:0x00:0x27:0x0a:0xcb:0x5e
1계층:
-모든 물리적인 내용
통신방식
이더넷 방식 : 충돌을 즐긴다/충돌이 안나면 바로 보낸다(빠름)
토큰링 방식 : 토큰 돌리면서 자기 토큰이 올때 보낸다(느림)
이렇게 4계층 부터 1계층까지 이론적인걸 돌아봤습니다
내일부터는 UDP IP ETHERNET순으로 python Class로 헤더를 정의해보겠습니다
'Security > Network' 카테고리의 다른 글
[NETWORK SECURITY]6.UDP header 분석 (0) | 2017.08.03 |
---|---|
[NETWORK SECURITY]5. TCP통신 (0) | 2017.08.02 |
[NETWORK SECURITY]4. UDP통신 2 (0) | 2017.07.29 |
[NETWORK SECURITY]3. UDP통신 1 (0) | 2017.07.29 |
[NETWORK SECURITY]2.CentOs6에 파이썬3 설치하기 (0) | 2017.07.29 |