2주차에서 데이터를 쪼개 패킷 -> 프레임까지 만들었다. 이렇게 만든 프레임을 실제 전기 신호로 목적지까지 보내야한다. 무엇을 거쳐서 보낼 수 있을까?
정답: 허브, 스위치, 라우터 (하지만 환경에 따라 나뉜다!)
이를 알기 위해서는 먼저 허브, 스위치, 라우터에 대해 알아야 한다.
여기서 허브는 리피터 허브,
스위치는 스위치 허브,
라우터는 그냥 라우터다.
허브와 스위치는 같이 공부하면 좋을 것 같다.
이게 허브고
이게 스위치다.
둘 다 LAN(Local Area Network) 즉, 가까운 거리의 한정된 공간에서 구성되는 네트워크에 관련된 기기이다.
스위치나 허브로 LAN을 구성할 수 있다.
만약에 우리 집으로 생각한다면,
아빠 서재에 있는 컴퓨터와 (유선 LAN 선으로 스위치와 연결), 내 방에 있는 내 맥북(무선 NIC으로 스위치와 연결)은 하나의 LAN으로 구성되어 있다는 것이다.
스위치와 허브의 가장 큰 차이점이라면,
허브는 좀 멍청하고 스위치는 좀 더 똑똑하다는 점이다.
허브는 별도의 MAC 주소 테이블이 없어서, 이더넷의 기본 원리인
즉, LAN 전체에 패킷을 뿌리고 수신처 MAC 주소에 해당하는 기기만 패킷을 수신한다는 원리
를 그대로 실현한다. 주소를 기록하지 않아 매번 LAN에 패킷을 뿌리게 된다.
하지만, 스위치는 더 똑똑해서 MAC 주소 테이블을 가지고 있다.
실제 판매하는 스위치 사진을 보면, 랜선으로 기기와 연결하는 포트가 존재한다. 그 각각의 포트마다 mac 주소를 기재한다.
스위치는 MAC 주소 테이블을 갖고 있다는 설명은 정확하지만,
→ "각 포트마다 MAC 주소를 기재한다" → 한 포트에 여러 MAC 주소가 기록될 수 있어요 (허브를 물려썼거나 스위치에 스위치 연결됐을 때 등). 즉, 포트 <-> MAC 주소 1:1은 아님
여기서 궁금증이..
❓ 그럼 mac 주소를 기재하는 테이블은 어떻게 채워지는 걸까?
만약 연결된 A 컴퓨터가 네트워크를 통해 요청을 보내면 그때의 프레임을 조사. "아 1번 포트에 A mac 주소가 연결되어 있구나" 를 알 수 있다. 그때마다 mac table에 기재한다.
But, MAC 주소 테이블은 항상 유지되는 것이 아니다.
시간이 경과하여 MAC 주소 테이블에서 목적지에 해당하는 주소가 없거나, 실제로 연결된 컴퓨터가 한 번도 프레임을 보낸적이 없는 경우 -> MAC table에 기재되지 않는다.
이 경우에는 이더넷의 기본 원리인 브로드캐스트를 수행한다. 어차피 LAN에서 보내는 거라 얼마 연결 안 되어있어서 큰 부담이 아니다.
여태 정리한 리피터 허브, 스위칭 허브는 L2 계층, 즉 이더넷 프레임에 관한 내용이었다. 그래서 MAC주소를 찾는 행위를 했던 것! 여태까지 한 번도 ip 이야기를 한 적이 없다. 왜냐하면 ip와 관련된 것은 라우터에서 하는 것이지, 현재 리피터 허브나 스위칭 허브에서는 MAC 주소를 기반으로 대상 네트워크를 찾는다.
만일 LAN에서 수신 목적지를 찾지 못했을 때에는 해당 LAN의(subnet) 라우터로 들어오게 된다.
생긴 것만 봐도 뭔가 엄청나다;; 내 패킷을 인터넷으로 다 보내줄 것처럼 생김 (실제로 그렇기도 함)
라우터로 패킷이 들어왔을 때, 목적지 ip로 가야한다.
목적지 ip가 현재 서브넷이라면 굳이 라우터를 거치지 않아도 되지만, 만약 다른 네트워크라면 현재 서브넷 라우터의 라우팅 테이블을 이용하여 목적지 ip에 해당하는 수신처로 가게 된다.
라우팅 테이블을 확인하여 먼저 네트워크 네트워크 번호 부분만 비교하고, 복수의 후보가 발견된 경우 네트워크 번호의 비트 수가 가장 긴 것을 찾는다. (호스트 번호의 비트 수가 짧을 수록 서브넷이 작다. -> 범위가 작다.)
만일 해당되는 네트워크 목적지가 없다면 과감하게 패킷을 폐기하고, 송신 ip로 ICMP 메시지를 보낸다.
[내 컴퓨터]
↓
(스위치) → 목적지 MAC을 보고 전송
↓
[라우터] ← 목적지 IP가 다른 네트워크일 경우
↓
(라우팅 테이블 기반으로 Next Hop 결정)
↓
[인터넷 상 다른 라우터들…]
↓
[목적지 서버]
위와 같은 구조로 패킷이 인터넷을 통해 목적지 서버에 도달하게 된다!
성공과 실패를 결정하는 1%의 네트워크 원리