IP Header
> 4계층에서 내려운 데이터에 이 IP Header가 붙어서 2계층으로 내려가면 Ethernet ll Frame으로 캡슐화 되고 타입 필드에 0x0800이 들어감.
> 헤더의 길이는 20~60
옵션은 40byte까지 붙을 수 있다.
Version(4 bit)
> IPv4 인지 IPv6인지 나타냄
> IPv4의 값은 0100.
IP Header Length(4 bit)
> 4byte 단위로 나타냄. 헤더의 길이는 20~60byte
Type of Service(TOS)(8 bit)
> IP datagra이 라우터에서 어떻게 처리되어야 하는지를 정의.
> 요구되는 서비스 품질을 나타냄,
Total Length(16 bit)
> IP 헤더와 IP 데이터를 포함한 패킷의 전체 길이
> 최대 값은 65535(2^16 - 1)
Identifier(16 bit)
> Datagram의 분할과 재조립을 위해서 사용.
> 보내는 쪽에서는 단편화, 받는 쪽에서는 재조합이 발생하기 때문에 분할 전 원본 데이터그램을 식별하기 위해 사용되는 ID.
> 각 조각이 동일한 데이터 그램에 속하면 같은 일련번호를 공유
Flag(3 bit)
> 분열의 특성을 나타내는 플래그. 분할 여부를 식별할 때 사용.
첫번째 bit : 미사용(항상 0)
두번째 bit : D F bit (Don't Fragment)
>> 분열(조각) 0 : 0으로 셋팅 되면 라우터에서도 분열(조각, 단편)이 가능함을 뜻함
>> 미분열 1 : 목적지 컴퓨터가 조각들을 다시 모을 능력이 없기 때문에 중간에 라우터로 하여금 데이터그램을 단편화하지 마라는 뜻.
세번째 bit : M F bit ( More Fragment)
>> 현재의 조각이 마지막이면 0
>> 더 많은 조각이 뒤에 계속 있으면 1
Fregmentation Offset(3 bit)
> 조각나기 전 원래의 데이터그램의 8바이트 단위의 위치.
> 8byte 단위로 최초 분열 조각으로부터 어떤 곳에 붙여야 하는 위치를 나타냄.
> 분할 데이터그램 중 데이터그램의 시작 번호를 명시.
> IP의 특성상 원본 데이터그램의 분할 패킷들이 순서대로 전송되는 것이 아니므로 이를 순서대로 조합하기 위한 값.
Time To Live(TTL)(8 bit)
> 패킷이 경유 할 수 있는 최대 홉수를 나타냄
> 패킷이 라우터를 통과할대마다 TTL은 1씩 감소하게 되고 0이 되면 패킷은 폐기. 이때 송신측으로 ICMP메시지가 전달됨.
> 일반적인 TTL값은 운영체제에 따라 달라짐. (윈도우 : 128, 리눅스 : 64, 기타 OS : 255)
> 목적지가 아무리 멀어도 보통 값이 30이면 도달. (패킷의 무한루프 방지)
Protoctol(8 bit)
> IP 상위 계층의 프로토콜 식별자
00 : Reserved,
01 : ICMP
02 : IGMP
04 : IPv4(IP-in-IP Encapsulation)
06 : TCP
08 : EGP
17 : UDP
50 : ESP(Encapsulating Security Payload) Extension Header
88 : EIGRP
89 : OSPFIGP
179 : BGP
Checksum(16 bit)
> 헤더에 대한 오류 검출(데이터 제외)
> 에러 확인을 위한 16비트 필드
출발지 IP 주소(Source IP Address, 32 bit)
목적지 IP주소(Destination IP Address, 32bit)
IP 헤더 옵션(선택옵션)
> 가변길이 bit
패딩
> 가변길이 bit
> 필요할 경우에만 사용
[참고] MTU(Maximum Transfer Unit, 최대전송단위)
> 네트워크 인터페이스에서 세그먼트 없이 보낼 수 있는 최대 데이터그랩 크기 값.
> 데이터가 MTU값 이사잉라면 여러개의 패킷으로 분할 됨.
IEEE 802.3 Ethernet 1492
DIX Ethernet 1500
Loopback 16436(운영체제에 따라 조금씩 상이)
IP주소
> IPv4는 32bit 주소, 10진수 형태의 4개의 옥텟(Octet)을 사용하는 주소체계
> IPv6는 128bit 주소, 16진수 형태의 8개의 옥텟을 사용하는 주소체계
> 하나의 IP주소에는 Network ID와 HostID가 존재
Network ID
>> 인터넷 상에서 모든 Host들을 전부 관리하기 힘들기에 한 Network의 범위를 지정하여 관리하기 쉽게 만들어 낸것.
Host ID
>> 호스트들을 개별적으로 관리하기 위해 사용하게 된 것.
So, 인터넷을 사용 할 때 Rounting으로 목적지를 알아내고 찾아가는 역할 을 할 때 NetworkID와 HostID가 합쳐진 IP주소를 보게 됨.
> Subnet mask 를 활용하여 NetworkID를 올리거나 낮출 수 있음.
> 반대로 HostID는 줄어들거나 늘어남.
[참고]http://korean-daeddo.blogspot.kr/2015/12/ip.html
IPv4 주소 체계
> IPv4는 Network 번호화 호스트 번호로 구분.
> 통신하는 종류에 따라서 유니캐스트 주소, 브로드캐스트 주소, 멀티 캐스트 주소로 구분.
유니캐스트 주소(Unicast Addr) : A/B/C class
브로드캐스트 주소(Broadcast Addr)
멀티캐스트 주소(Multicast Addr) : D class
유니캐스트(Unicast)
> 1:1통신 방법. 데이터를 보내고자 하는 주소(MAC)를 프레임에 포함시켜 보내는 방식.
> A / B / C class로 구분.
A class
>> 네트워크 번호가 8bit, 호스트 번호가 24.
>> 네트워크 번호의 첫번째 비트가 0으로 시작.
>> A class 주소 한개에 물릴 수 있는 호스트 개수는 16,777,214개(2^24-2)
>> A class 대역의 사설 IP 대역은 10.X.X.X
A Class Private Address : 10.0.0.0 ~ 10.255.255.255
Loopback interface : 127.0.0.1(127.X.X.X)
0 X X X X X X X
B class
>> 네트워크 번호가 16bit, 호스트 번호가 16bit.
>> 네트워크 번호의 처음 2개의 비트가 10으로 시작.
>> B class 주소 한개에 물릴 수 있는 호수트의 개수는 65534개
>> B class 대역의 사설 IP 대역은 172.16.X.X ~ 172.31.255.255
B Class Private Addr : 172.16.0.0 ~ 172.31.255.255
1 0 X X X X X X
C class
>> 네트워크 번호가 24bit, 호스트 번호가 8bit.
>> 네트워크 번호의 처음 3개의 비트가 110으로 시작.
>> C class 주소 한개에 물릴 수 있는 호수트의 개수는 254개
>> C class 대역의 사설 IP 대역은 192.168.X.X
C Class Private Addr : 192.168.0.0 ~ 192.168.255.255 ex) 192.9.227.13
1 0 0 X X X X X
Broadcast Addresses
>> 네트워크 번호는 호스트 번호를 모두 '0'으로 처리.
>> 넷마스크는 네트워크 모두를 모두 '1'로 처리, 호스트 번호를 모두 '0'으로 처리
>> 브로드캐스트 주소는 호스트 번호를 모두 '1'로 처리.
A class : 8.254.3.103 8.255.255.255
B class : 129.3.201.79 129.3.255.255
C class : 203.247.50.192 203.247.50.255
[참고] Broadcast & Network Number & Netmask
> Broadcast Addr. NetworkID + HostID(all ones) ex) 203.249.50.255
> Network Number NetworkID + HostID(all zero) ex) 203.247.50.0
> Netmask NetworkID(all ones) + HostID(all zero) ex) 255.255.255.0
172.16.6.1/255.255.0.0
Network Number means?
> B class : 172.16.6.0 => Network Number
> B class : 255.255.255.0 => Netmask
> B class : 172.16.6.255 => Broadcast Addr
이하 내용 전부 암기.
클래스별 IP 대역
A class : 0 ~ 127 ex) 10.10.10.21
B class : 128 ~ 191 ex) 191.32.80.120
C class : 192 ~ 223 ex) 203.211.5.3
D class : 224 ~ 239 ex) 224.0.1.9
E class : 240 ~ 255
[참고] 8bits (0 ~ 255)
128 64 32 16 8 4 2 1
1 0 0 0 0 0 0 0 : 128(256 - 128 = 128)
1 1 0 0 0 0 0 0 : 192(256 - 192 = 92)
1 1 1 0 0 0 0 0 : 224(256 - 224 = 32)
1 1 1 1 0 0 0 0 : 240(256 - 240 = 16)
1 1 1 1 1 0 0 0 : 248(256 - 248 = 8)
1 1 1 1 1 1 0 0 : 252(256 - 252 = 4)
사설 IP(Private Address)
A class : 10.x.x.x
B class : 172.16.x.x ~ 172.31.x.x
C class : 192.168.x.x
Network Number / Broadcast Addr / Netmast
- Network Number = 지정된 네트워크의 첫번째 IP(ex: 172.16.0.0) 호스트 부분이 0처리
- Broadcast Address = 지정된 네트워크의 마지막 IP(ex: 172.16.255.255) 호스트 부분이 1처리
- Netmask = 네트워크를 구분하는 인자 값(ex: 255.255.0.0) 중요한 비트 1처리
Address |
Description |
Reference |
Date Registered |
Last Reviewed |
224.0.0.0 |
Base Address (reserved) |
[RFC1112][Jon_Postel] |
|
|
224.0.0.1 |
All system on this Subnet |
[RFC1112][Jon_Postel] |
암기 |
|
224.0.0.2 |
All routers on this Subnet |
[Jon_Postel] |
암기 |
|
224.0.1.1 |
NTP Network time Protocol |
[RFC1119][RFC5905][David_Mills] |
암기 |
|
서브넷팅과 VLSM(Introducing Subnetting and VLSM)
[참고] http://bignet.tistory.com/50
Netmask -> Subnetmast -> VLSM(개념이 중요)
VLSM
서브네팅 - 동일한 크기로 네트워크를 나누는 방식
VLSM - 동일하지 않은 크기로 나누는 방식
기본 넷마스크
> 네트워크 단에서는 중요한 의미, 서버 단에서는 설정만 잘하면 된다.
A class : 255.0.0.0
B class : 255.255.0.0
C class : 255.255.255.0
172. 16. 9. 200
255. 255. 0. 0 AND
==============================
172. 16. 0. 0
A B | S
=============
0 0 | 0
0 1 | 0
1 0 | 0
1 1 | 1
서브넷팅(Subnetting)
=============================================
Supernet <- Network -> Subnetwork
Supuernetting <- Subnetting
Netmask Subnetmask
=============================================
CIDR VLSM(★★★)
서브네팅을 하는 이유
- 관리(성능, 부서별, 지역적 위치, 프로토콜 별 등)
- 보안상(서버대역 - 사용자대역 분리, 접근 제어 등)
100Mbps 대역폭의 네트워크 -> Collision Rate : 10%이상
회사 중역 대역 <-> 사원 대역, 서버 대역 <-> 사용자 대역
TCP/IP 대역 <-> DNS 대역, Ethernet <-> FDDI 대역
서울 본사 <-> 대전 지사, 부산 지사
영업부서 대역 <-> 개발 부서 대역
VLAN
서브넷 마스크
if C class
- Subnet 2 : 255.255.255.128 ( 256 - 128 = 128 )
- Subnet 4 : 255.255.255.192 ( 256 - 192 = 64 )
- Subnet 8 : 255.255.255.224 ( 256 - 224 = 32 )
- Subnet 16 : 255.255.255.240 ( 256 - 240 = 16 )
- Subnet 32 : 255.255.255.248 ( 256 - 248 = 8 )
- Subnet 64 : 255.255.255.252 ( 256 - 252 = 4 )
C class 9203.247.50.0/255.255.255.0) => 2 Subnet
1. 203.274.50.XXXXXXXX
2. 203.247.50.0XXXXXXX
203.247.50.1XXXXXXX
Subnetmask : Network ID( 1 처리 ), Host ID( 0 처리 )
3. 255.255.255.128 =====> 203.247.50.0/255.255.255.128 203.247.50.128/255.255.255.128
C class (203.247.50.0.255.255.255.0) => 4 Subnet
1. 203.247.50.XXXXXXXX
2. 203.247.50.00XXXXXX
203.247.50.01XXXXXX
203.247.50.10XXXXXX
203.247.50.11XXXXXX
변하지 않는 것들은 1처리, 변하는 것들은 0처리
203.247.50(네트워크).01(서브네트워크)XXXXXX(호스트)
3. 255.255.255.192
172.16.10.200/255.255.255.0 -> B클래스구나/255.255.255.0(B클래스를 C클래스같이 서브네팅 헸구나)
172.16.0.0
172.16.1.0
172.16.2.0
......
172.16.254.0
번호만 보고도 어떤 식으로 설정 되었는가 유추할 수 있어야한다.
203.240. 50. 66
255.255.255.192 비트연산 XXXXXXXX
========================> 01000010
203.249.50.64 11000000
01000000
203.240. 50. 130
255.255.255.192 비트연산 XXXXXXXX
========================> 10000001
203.249.50.128 11000000
10000000
반드시
1. 클래스를 보고
2. 넷마스크를 보고
3. 몇 번인지 확인을 해야한다. ★★★★★★★★★★★★★★
라우팅 테이블이 읽혀지는 순서
1순위 > 목적지 IP
목적지 호스트(IP) 주소와 일치하는 경로를 찾는다.
2순위 > 목적지 Network
목적지 호스트(IP) 주소와 일치하는 경로가 없다면 목적지 네트워크 주소와 일치하는 경로를 찾는다.
3순위 > default gateway
일치하는 경로(IP, network)가 없으면 default gateway(0.0.0.0)로 보낸다.
- 목적지가 자신인 경우
- 목적지가 자신의 네트워크 대역인 경우
- 목적지가 자신의 네트워크 대역과 틀린경우 ( IP -> NET -> GW )
IP 우회에 대한실습
- tor network & proxychains
- IP Spoofing
>> telnet session hijacking(차후 조사가 필요)
IPv6 관련 참고 블로그
http://egloos.zum.com/nix102guri/v/739872
'보안과정 > 네트워크' 카테고리의 다른 글
Dos(Denial of Service) Attack Type (0) | 2017.10.22 |
---|---|
전송계층(Transport Layer) (0) | 2017.10.19 |
ARP, ARP Spoofing (0) | 2017.10.17 |
네트워크 인터페이스 계층(Network Interface Layer) (0) | 2017.10.17 |
TCP/IP 4계층 (0) | 2017.10.16 |