목차
1. ICMP (Internet Control Message Protocol)
2. Tunneling
1. ICMP (Internet Control Message Protocol)
Network에서는 Collision이 발생하거나 했을 때, Broadcast를 해버림으로써 주위 기기에게 전파하는 과정이 있었다.
그런데 Internet에서 그런 짓을 해버리면 어떻게 되겠는가. 엄청난 혼란을 불러일으킬 것임은 분명하다.
또한 라우팅 테이블에 IP 주소 일치 정보가 없을 때, hub처럼 flooding으로 탐색하는 것이 아니라 그냥 송신처에 ICMP를 Unicast해버리고 치워버린다. (규모가 너무 커서 Ethernet에서의 논리는 들어맞지 않는다.)
📌 인터넷 제어 메시지 프로토콜(ICMP)
- Network Layer(L3)의 프로토콜로써 네트워크 통신 문제를 진단하는데 사용
- 데이터가 의도한 대상에게 적시에 도달했는지?
- 그러지 못했다면 어디에서? host, network, port, protocol, ..
- Router같은 네트워크 장치에서 주로 사용한다.
- ICMP message
- 8byte 크기의 IP datagram의 type, code로 오류 종류를 알 수 있다.
📌 Traceroute & ICMP
probes는 말 그대로 "흘려보는 것"이다.
ICMP라고 하면 낯설고 이해가 잘 안 가지만, 개발자라면 ping 명령어를 한 번쯤은 써봤을 것이다.
ping 명령어는 통신 상태 확인 시 사용하는데, 이게 바로 ICMP 프로토콜을 이용한 방법이다.
Destination으로 패킷을 흘려보냈을 때 발생하는 에러들을 유형에 맞게끔 회신하게 되며,
이런 정보들을 바탕으로 송신 노드와 수신 노드의 네트워크 상태를 확인할 수 있다.
ping의 -i 옵션을 이용하면 TTL 숫자를 조작할 수도 있는데, 이걸 1부터 조금씩 늘려가면서 보낼 수도 있다.
값이 너무 작으면 type 11, code 0인 "TTL expired"를 회신하게 될 것이다.
ICMP 메시지가 Source(패킷을 전송한 노드)로 돌아오면, 해당 노드는 RTT(Round Trip Time)을 기록한다.
한 패킷이 Source에서 Sink까지 전송되고 다시 돌아오는 데 걸리는 시간을 나타내며, 네트워크 지연 시간을 측정하기 위해 사용한다.
2. Tunneling
난 이 내용을 교수님께서 왜 언급하셨는지 아직도 이해가 안 간다. (어차피 말씀하셔도 아무도 이해 못 할 텐데)
수업에선 단순히 'IPv4와 IPv6 모두 커버할 수 있는 방법' 정도로 설명하시고 넘어가셨지만, 이건 하나의 예시에 불과하다.
일단 수업에서 다룬 내용들 위주로 언급할 것이다.
Network 분야에서는 "flag days"라는 것이 존재할 수 없다.
어느 날부터 IPv4에서 IPv6 주소 체계를 사용하기로 결정되었다면, 모든 전자기기에 전문가들을 투입하여 동시에 모든 기기를 갈아치우지 않는 이상 상당히 오랜 시간 인터넷이 제 기능을 하기 어려울 것이다.
예를 들어, 어떤 우체국은 받는이를 좌상단에 작성하고 보내는 이를 우하단에 작성하고, 어떤 우체국은 그 반대를 기준으로 삼는다고 가정해보자.
왼쪽의 규칙을 따르는 A 우체국(Router)이 곧장 받는이에게 보내준다면 문제가 생기지 않겠지만, 오른쪽의 규칙을 따르는 B 우체국을 경유해야 하는 경우엔 편지가 반송될 수도 있다.
이 문제를 해결하려면 두 체계를 모두 알고 있는 관리자가 편지 봉투를 적절히 바꾸면서 보내주어야만 한다.
터널링을 사용하면 IPv6 패킷을 IPv4 패킷 안에 넣어버림으로써 'IPv4 패킷인 것처럼' 처리하게 만들어버린다.
따라서 모든 버전을 지원해줄 수 있게 된다.
여기까지가 수업 내용이었는데, Tunneling은 단순히 IP 주소 체계를 위한 개념은 아니다.
내가 배운 터널링의 정의는 BAS와 Provider Router 사이의 네트워크 안에 소켓을 연결하여 패킷을 그대로 전송하는 것이었다.
터널링을 사용하여 패킷을 보낼 때는 터널의 규칙에 따라 송수신 해야하며, tcp 커넥션 방식에서 헤더를 덧붙인다.
따라서, 터널링은 해당 네트워크에서 지원하지 않는 프로토콜을 사용하여 일반적으로 가로지를 수 없는 길을 뚫어버리는 것이다. (패킷을 다른 패킷 내부에 래핑한다.)
이 외에도 정말 다양한 터널링들이 있지만, 내가 네트워크 전문가가 될 건 아니니 패스~