네트워크 레이어의 프로토콜은 세 가지가 공존하는데요,
Routing Protocol(경로를 설정해 줌)
- 이 프로토콜을 통해 포워딩 테이블을 작성합니다.
IP Protocol(= routed protocol)
- 주소 입니다. Datagram 포맷을 가지고 있습니다.
ICMP Protocol(에러를 추적하고, 컨트롤해주는 프로토콜)
IP의 데이터그램의 형식입니다.
IPv4 방식이나, ver엔 4가 들어가구요,
TTL 이라는 개념이 있습니다.
패킷이 여러 라우터들을 거쳐 지나가는데, 어쩌다 무한루프를 돌다가 좀비가 될 수 있으니
TTL 이란 것을 설정해주는데, 일종의 수명 입니다. Hop - Hop 을 할 때마다 TTL을 하나씩 감소시킵니다.
TTL이 0이 되는 패킷은 폐기합니다.
Flgs, Fragment offset이란 값이 있는데요, 이것은 분해하고 조립하는 것을 위한 값들입니다.
그리고 Data 영역에는 TCP/UDP 같은 상위 계층의 내용들이 저장됩니다.
네트워크는 MTU라는, 전송의 최대 사이즈가 있는데요,
MAC 레이어에선 최대 사이즈를 1500으로 잡습니다. 1500이 넘어가면 강제로 Fragmentation(자르기)를 진행합니다.
Fragmentation이란 말은, IP(3계층)를 2계층화 시킨단 이야기에요.
하나의 커다란 데이터 그램을 fragmentation 하면 3개의 작은 데이터그램이 나오는 것입니다.
잘라서 보낸 걸, 최종 목적지에서 Reassemble 해요.
IP 헤더의 flgs / fragment offset은 이 과정을 위한 값입니다.
DHCP 프로토콜이란게 있는데요,
인터넷을 집, 밖, 카페 등에서 쓰는데 그때마다 IP주소가 달라질텐데 그때마다 유저가 뭘 해주지 않아도 잘 되는 이유가
IP주소가 동적으로 할당되기 때문이고, 그 근거는 DHCP 프로토콜을 사용하기 때문입니다.
NAT란?
네트워크 주소(IP)가 변환되는 것을 말해요.
로컬 네트워크에서는 10번대 사설IP 주소를 사용하다가(10.0.0.x)
라우터를 거쳐서 나가면서 Public IP로 변환되는 것이죠.(138.76.29.7)
비슷한 변환으로는
2계층 -> 3계층의 RARP
3계층 -> 2계층의 ARP
7계층 -> 3계층, 3계층 -> 7계층의 DNS
이를 위한 명령어로는 nslookup, dig 등이 있는 것을 복습해볼 수 있습니다.
NAT의 과정이 있어요.
S:
D:
라고 쓰여있는 테이블을 유심히 보면요,
1단계에서 2단계로 가면서, IP주소와 포트번호가 바뀌고, 이것을 NAT translation table에 기록해요. (Outbound 과정)
그리고 어디 웹서버에서 정보를 받으면, 데이터가 돌아오는데 (Inbound 과정)
이 때, 서로 대칭 관계에요. S와 D가 정확히 뒤집어 지고,
3단계에서 4단계, 즉 Public IP와 Port에서 Private IP와 Port로 넘어올 때
아까 나갈때 기록했던 translation table을 lookup 하여 알맞은 PC에 정보를 전달해줍니다.
Outbound(나가는 것)는 기록하고, Inbound(들어오는 것)은 Table를 lookup 하고 들어옵니다.
IPv6에 대해 알아봅시다.
지금의 네트워크의 병목현상으로 모자란 IP주소가 꼽히는데요,
지금은 32비트 IP 주소를 쓰는데, 이것을 128비트로 확장시킨 것이 IPv6 입니다. (2^32 -> 2^128)
IPv6의 Datagram의 정보를 확인해보면, IPv4와 차이가 있습니다.
1. source address, 주소 필드가 128비트로 늘어났구요,(4배 차이 아님)
2. ver이 6으로 바뀌었을 것이고,
3. flow label 이란게 생겼습니다.
4. label switching이 가능해졌고,
5. flow 별로 컨트롤 할 수 있게 되었습니다.
IPv4에서는 테이블을 기반으로 하여 스위칭(Input 포트 -> Output 포트, =포워딩)을 했는데,
IPv6의 경우 Label(flow label)을 기반으로 스위칭도 하고, loss, delay 같은 것을 처리할 수 있습니다.
예전에는 같은 Destination Addr/Port 인 애들끼리 컨트롤해줬는데,
이젠 label을 기반으로 컨트롤 할 수 있습니다. 이걸 label switching 이라고 해요.
그리고 Flow별로 QoS를 줄 수도 있구요.
IPv6이 빠르게 늘어가고 있지만
아직까지 IPv4도 많이 쓰이고 있고, 한번에 넘어갈 수 없으니 둘이 공존해야 하는데요,
(모든 라우터가 한번에 업데이트 될 수는 없으니까요.)
방법은, 라우팅 과정 중에 IPv4를 만날 경우,
IPv4 데이터그램에 Payload(데이터 들어가는 곳)에 IPv6 Datagram을 통째로 넣는 것입니다.
이것을 tunneling, 터널링이라고 말해요.
이것이 조금 더 추가적인 자료인데요,
물리적으로는 중간에 IPv4 라우터를 거쳐 가지만
논리적으로는 마치 터널을 통과한 것 처럼, 모두 IPv6 으로 받아들여 집니다.
L2TP 프로토콜 이란것도 있고 그렇습니다.
'CS > Network' 카테고리의 다른 글
[Network] Routing Algorithms, Link-State와 Distance Vector (0) | 2023.11.25 |
---|---|
[Network] Scheduling mechanisms (0) | 2023.11.24 |
[Network] Input port queueing (0) | 2023.11.24 |
[Network] Switching fabrics (0) | 2023.11.24 |
[Network] 라우터의 내부를 뜯어보자. (0) | 2023.11.24 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!