반응형

오늘은 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로 헤더를 정의해보겠습니다






  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기