Network/이론

네트워크 이론 - 5

Glory-L 2022. 9. 6. 11:14

※ 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씩 뺀다. 

 

TTL = 115, 128부터 중간에 13개의 router를 거쳐서 핑이 왔다.

 

 - 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를 공부하기 전에 무엇을 없애버렸는지 그 기준을 알고 있어야 하기 때문에 알아두어야한다.