네트워크 이론 - 5
※ IP 프로토콜의 구조
- 크기 : 20 byte [ TCP 20 + 40 = 60 = MPTC] [UDP 8byte] [RTP 12byte] [L2 header 18byte]
1) version : v4 , v6
2) IHL : 기본 헤더의 길이
3) TOS : 품질 정보 알려주는 정보 : 8bit 크기
* QoS [ 품질 서비스 : 폭주가 일어났을 때만 작동한다. 그 외에는 FIFO 방식으로 처리된다. ]
- 차별화 서비스 : Diffservice (diffenrencial service)
-> TOS 8bit 중에서 3bit만 사용해서 ip precedence 값을 나타낸다. [ 역할 : L2 마킹값(CoS , class of service)과 호환 ]
-> TOS 8bit 중에서 6bit만 사용해서 DSCP 값을 나타낸다.
-> 3bit (ip precedence) or 6bit (DSCP) + 2bit ECN (explicit congestion notice)
-> 3bit (ip precedence) : QoS가 발생되었을 때 안정적으로 유지하기 위해 000 -> 111 순으로 drop
000 (0) 일반데이터 하위, 가장 먼저 drop
001 (1) 일반 데이터 중간
010 (2) 일반 데이터 중에서 우선 순위가 제일 높다.
011 (3) 음성 제어 protocol [ H323 , SIP, MGCP, SCCP ...]
100 (4) 영상
101 (5) - 음성 담당 , RTP(header부분) + [ (udp 16384-32767 port 사용) udp 12byte ] <- 구성
-> 음성은 지연에 민감하기 때문에 시스템 다음으로 처리순위가 높다 .
[ jitter delay 20 ms / 총 delay 150 - 200ms ]
--------------------system--------------------
* 시스템쪽을 담당하기 때문에 시스템 폭주가 일어나면 이쪽부터 처리되야 한다.
110 (6)
111 (7)
-> 6bit (DSCP) : QoS 발생
음성 처리 -> 46 (ef : expedited forwarding)
- 대역폭 서비스 : Intservice (intergrated service)
※ IPv4 -> IPv6
1. checksum 기능 삭제
2. 조각화 삭제 (end point PC에서 조각화를 해서 보내기 때문에 따로 해줄 필요 없음)
- ID : 패킷들이 같은 데이터에 속해 있는지 확인, 재조립을 위해 부여한다.
- IPv4 에서는 내용을 보낼 때 보낸 router에서 조각화를 해주고 ID를 부여한다. 하지만 IPv6부터는 PC 연산 속도 성능이 워낙 좋아졌기 때문에 조각화도 다 해놓은 상태로 보내서 더 빠른 속도로 통신이 가능해졌다.
※ 인터넷이 느려졌을 때 해결 하는 방법 2가지 - MTU size를 줄이거나 DNS cache를 삭제한다.
4) IP flags = 3bit (3자리 사용)
1번째 자리 -> x , 사용을 하지 않는다. 항상 0으로 처리된다.
2번째 자리
- D (DF 필드) : don't fragmentation ( 0 - 분할 가능 , 1 - 분할 불가 => 조각화를 하면 안되는 것 : IPsec)
- M (MF 필드) : more fragmentation
(0 - 내 뒤에 조각화된 패킷이 없으니 더 기다리지 말고 reassembly (재조립) 진행하라는 의미)
(1 - 내 뒤에 조각화된 패킷이 더 있으니 기다리라는 의미)
5) fragment offset : 분할된 데이터의 순서를 알 수 있다.
cf) IPv4 address = private address + public address
(RFC1918 대역)
-> 사설 IP로는 다른 컴퓨터의 사설 IP와 직접적인 연결을 할 수 없다. 공인 IP끼리 접근해야 통신이 가능한데 이때 사설 IP를 공인 IP로 바꾸는 NAT를 해준 후 외부의 인터넷에 접근이 가능하다.
또한 외부의 FTP를 내 개인 PC에서 접속 할 수 없는 이유 역시 사설 주소로는 다른 PC에 사설주소로 접근이 안되기 때문이다. -> portfowarding 이라는 기술을 통해서 접속을 가능하게 할 수도 있다.
5) TTL (time to live) : 1~ 255 , L2 패킷이 목적지를 못찾아서 헤메고 있을 때 이 생명 주기를 보고 생명이 다했으면 없애주는 기능, 이 기능이 없으면 패킷이 무한루프에 걸리게 된다.
※ L2 frame에서는 TTL이 없다. -> 무한루프 돌다가 죽어버린다.
- router : 255 , window : 128 , Linux : 64 => hop count , 네트워크를 하나 지날 때 마다 1씩 뺀다.
- window에서 넘어온거라고 알 수 있는 이유
-> 지구 한바퀴를 돌때 60 hopcount인데 router(255) - 115 = 140 hop -> 우주 밖에서 왔다는 것이므로 말이 되지 않기 때문에 탈락, Linux(64) - 115 = - 51 -> 음수로 count 되기 때문에 말이 안된다.
*trace 명령어도 TTL을 사용한다.
6) IP protocol number : 다음에 올 정보를 알려준다.
-> 통신에서는 항상 Service Access Point 라는 것이 존재하여 다음에 무엇이 오는지 알려줘야 한다.
L2 header (ether type이 뭐가 오는지 알려준다. ) | L3 header (ip type이 뭐가 오는지 알려준다.)
L4 header (port address가 뭐가 오는지 알려준다.)
7) checksum
IPv6에서는 사라진 기능 , 내가 보내려는 데이터의 1의 보수를 함께 보내어, 수신한 장비가 본 데이터와 1의 보수 데이터를 더하기 해서 모두 1이 나오면 정상 수신, 0이면 잘못된 오류 패킷으로 인지한다.
=================================================================================
※ L2 : 물리적 연결
- LAN -> arpa network 상용화 -> ethernet [ 특징 - transparent : 일반 사용자들이 네트워크 개념을 몰라도 인터넷을 사용할 수 있도록 만든 것]
- WAN -> ppp, hdlc 등이 있고 DCE 장비 -> DTE 장비에게 clock rate를 준다는 점이 LAN과의 차이점
* arpa network = ethernet protocol 구조
preamble[쓰레기 값, 버려지는 값] | dst mac | src mac | ether type | MTU 46byte - 1500byte | FCS
6byte 6byte 4byte 2byte
18byte + MTU = runts[1518보다 작은값] <= 1518byte [LAN의 최대사이즈] <= giants [drop 시킨다.]
===========================================================================================
※ MAC 주소
- media access control layer에서 사용하는 주소 mac 주소
[ (cf) 보안쪽의 MAC 의미 :message authentication code]
- MAC 주소는 16진수로 표기하며 IEEE 에서 관리,
- 선두 3byte : xx.xx.xx.xx.xx.xx 시스템은 xx-xx-xx-xx-xx-xx 표기
-> 선두 3byte = OUI = 조직 식별 번호로 회사마다 IEEE로부터 다르게 할당받는다.
-> 하위 3byte = 제품 ID
-> 어느 회사에 제품인지 확인해보기
* [선두 8bit를 이진수로 변경 한 후에 앞에서 7번째 자리가 0이면 글로벌/ 1이면 로컬에 해당한다.]
1. ipconfig -> gw 주소 확인
2. arp -a -> gw mac 확인
3. mac oui 조사
※ mac 주소는 EUI 48, EUI 64 로 나눈다.
1) EUI 48 : IPv4에서 사용 -> [선두 8bit를 이진수로 변경 한 후에 앞에서 7번째 자리가 0이면 글로벌/ 1이면 로컬에 해당한다.]
2) EUI 64 : IPv6에서 사용 -> [선두 8bit를 이진수로 변경 한 후에 앞에서 7번째 자리가 1이면 글로벌/ 0이면 로컬에 해당한다.]
※ EUI 48 -> EUI 64 변경하는 방식
1) 임의의 MAC 주소로 지정한 58-77-46-89-0f-12 + 16bit [FF-FE]
-> 선두에 붙이면 FF-FE-56-77-46-89-0f-12 선두 3byte에 OUI의 개념이 없어져버린다.
-> 하위 3byte 역시도 제품 ID이기 때문에 붙이면 제품이 변하기 때문에 붙일 수 없다.
-> 따라서 가운데쪽에만 붙일 수 있다.
-> 58-77-46-FF-FE-89-0f-12[EUI 48] --> 5A-77-46-FF-FE-89-0f-12 [EUI 64]
* 16진수 선두 8bit를 기준으로 7번째 수의 58 [2진수 : 0] -> 58 + 2 -> 5A [2진수 : 1] 로 변경해서 EUI 64의 형식으로 바꿔준다.
=================================================================================
IPv4 10진수 표기 -> classful -> classless
IPv6 16진수 표기 -> classless
classful : network-id가 고정되어 있다. 따로 표기해주지 않아도 어디까지가 network-id 인지 알 수 있다.
ex) 홍(성) 길동(이름) -> 말하지 않아도 알고 있는 사실
classless : network-id가 유동적이다. 따로 표기해주지 않으면 어디까지가 network-id 인지를 모른다.
ex) 연개소문 , 연 | 개소문 , 연개 | 소문, 연개소 | 문 , 어디서부터가 시작인지를 알려줘야한다.
--> 알려주는 방식은 netmask, wildcard, prefix 라는 방식으로 알려준다. 현재는 prefix라는 방식으로만 알려주고 있다.
※ classful -> classless로 바뀐 이유
1) 관리의 효율성
2) subnetting(네트워크 작게 만들기) 과 supernetting(네트워크 크게 만들기)을 하기 위해서
ex) 소지섭 , 손석구 - 서로 다른 network이기 때문에 routing 해주어야 하는데 classless하게 바뀌면서
소지섭 , 소 ㄴ 석구 - 서로 같은 network로 바꿔주고 switching을 할 수도 있다.
※ IPv4 classful -> classless -> subnetting -> supernetting
32 bit 주소 체계 -> 8bit 씩 쪼갠다.
32bit -> 8bit(1octet) * 4 => x.x.x.x -> 0.0.0.0 - 255.255.255.255 = 경우의 수 2^32 = 약 43억개
xxxx xxxx. xxxx xxxx. xxxx xxxx. xxxx xxxx
0000 0000. 0000 0000. 0000 0000. 0000 0000
~
1111 1111. 1111 1111. 1111 1111. 1111 1111
-> RFC 1918 예약되어 있는 사설 주소와 3330, 5735에 예약되어 있는 주소들을 제외하고 사용해야 한다.
-> 이런 예약된 주소를 martian route
-> 169.254.x.x (무명의 주소, ipconfig가 쳤는데 이 주소가 나오면 할당을 못받았다는 의미)
-> 127.0.0.1 -> ipv6 에서는 ::1이라고 표기한다.
xxxx xxxx. xxxx xxxx. xxxx xxxx. xxxx xxxx
0000 0000. 0000 0000. 0000 0000. 0000 0000
~
1111 1111. 1111 1111. 1111 1111. 1111 1111
첫 nibble을 기준으로
1) A-class
0xxx xxxx. xxxx xxxx. xxxx xxxx. xxxx xxxx --> network-id 2^8 - 1(앞의 고정값) = 2^7 / host-id 2^24
0000 0000. 0000 0000. 0000 0000. 0000 0000 ( 0.0.0.0)
~
0111 1111. 1111 1111. 1111 1111. 1111 1111 (127.255.255.255)
0.0.0.0 ~ 127.255.255.255 --> 122.17.54.3 --> network-id = 122 / host-id = 17.54.3
2) B-class
10xxx xxxx. xxxx xxxx. xxxx xxxx. xxxx xxxx --> network-id 2^16-2=2^14 / host-id 2^16
1000 0000.0000 0000.0000 0000.0000 0000 (128.0.0.0)
~
1011 1111.1111 1111.1111 1111.1111 1111 (191.255.255.255)
128.0.0.0 - 192.255.255.255 --> 155.70.4.5 --> 155.70 / 4.5
3) C-class
110xxx xxxx. xxxx xxxx. xxxx xxxx. xxxx xxxx --> network-id 2^24-3=2^21 / host-id 2^8
1100 0000.0000 0000.0000 0000.0000 0000 (192.0.0.0)
~
1101 1111.1111 1111.1111 1111.1111 1111 (223.255.255.255)
199.100.5.6 -> 199.100.5 / 6
------------------------unicast address, direct broadcast address------------------------------------
4) D-class : multicast address [network-id/host-id 개념없이, 그룹주소=대표주소]
1110xxx xxxx. xxxx xxxx. xxxx xxxx. xxxx xxxx
1110 xxxx.xxxx xxxx.xxxx xxxx.xxxx xxxx
1110 0000.0000 0000.0000 0000.0000 0000 [224.0.0.0]
~
1110 1111.1111 1111.1111 1111.1111 1111 [239.255.255.255]
224.0.0.0-239.255.255.255
5) E-class : 예약된 주소 (실험용) : rfc 3330 5735,,,
1111 xxxx. xxxx xxxx. xxxx xxxx. xxxx xxxx
1111 0000.0000 0000.0000 0000.0000 0000 (240.0.0.0)
~
1111 1111.1111 1111.1111 1111.1111 1111 (255.255.25.255)
240.0.0.0-255.255.255.255
unicast address : 통신하려는 장비가 가지는 중복되지 않는 주소, unicast routing
broadcast address : 1:all or 1:M [ffff.ffff.ffff] router, vlan에 의해서 차단된다.
global broadcast address [255.255.255.255] 이론적으로 모든 L3장비가 수신해야 한다.
direct broadcast address 동일 네트워크 안에 속하는 모든 host가 수신해야한다.
network-id그대로 host-id는 2진수1로 채운다
200.1.1.1 -> 200.1.1.1111 1111 -> 200.1.1.255
50.100.120.110 --> 50.1111 1111.1111 1111.1111 1111 -> 50.255.255.255
multicast address: 특정 그룹 통신, overlay protocol (unicast routing 위에서 동작), IPTV
--> multicast address를 routing해주는 기법 = multicast routing
D-class
anycast address : 근거리 통신용 , 보낸 라우터에서 요청을 받지 못하고 다운되면 그 근처에 있는 router에게 요청할 때 사용한다.
※ 현재 classful은 사용되지 않지만 classless를 공부하기 전에 무엇을 없애버렸는지 그 기준을 알고 있어야 하기 때문에 알아두어야한다.