CS - 네트워크(3) 허브 > 스위치 > 라우터로

김영현·2023년 7월 20일
0

CS

목록 보기
18/32

케이블, 리피터, 허브속을 신호가 흘러간다.

패킷 중계동작은 헤더에 기록된 제어정보와 중계장치 내부에 있는 중계 대상을 등록한 표목적지를 판단하여 움직인다.
따라서 패킷 내부의 데이터는 중계에 아무런 영향을 끼치지 않는다. MAC이나 IP헤더의 관점에서 보면 TCP헤더부분도 결국 데이터.

LAN 케이블은 신호를 약화시키지 않는게 핵심

PHY에서 전기신호로 변환된 데이터RJ-45커넥터를 통해 트위스트 페어 케이블로 흐른다.

  • 트위스트 페어 케이블 : 전기 신호를 파형을 그린다. 주파수가 높을수록 에너지가 떨어지는 비율이 높은데, 이때문에 각진 전기신호들이 둥글게 변하거나, 잡읍이 끼어 신호의 파형이 왜곡됨. 이를 방지하기 위한것이 트위스트 페어 케이블이다.
    잡음의 원인은 주변 전자파. 전자파오른쪽으로 흐르는 성질. 두 선을 꼬아 배치하면, 잡읍이 상쇄.

리피터 허브는 연결되어있는 전체 케이블에 신호송신.

신호가 리피터 허브에 도달하면 LAN전체에 신호 뿌림.
=> 이는 이더넷의 기본 원리. 전체에 패킷 뿌리고, 수신처 MAC주소에 해당하는 기기만 패킷 수신.

리피터 허브가 신호를 받아들일땐 RJ-45에서 PHY로 들어오는 송-수신 신호를 반대로 받아야함.
송-수신 단자를 교차시켜 접속시키는데 이를 MID-X라고 함. 허브끼리연결될땐, 한쪽이 MID(RJ-45커넥터오 송-수신 방향 정상)여야함.
=> 서로 MID-X면, 케이블 자체를 꼬아서 보냄.(크로스 케이블)
크로스 케이블은 같은 기기끼리 접속할때 사용. PC끼리도 가능
이렇게 RJ-45, PHY를 지나 들어온 전기신호리피터 회로로 들어감. 아무것도 안하고 모든 LAN에 신호를 전달함. 어차피 오류 검출은 데이터로 변환(라우터, 스위칭 허브, PC 등...)해서 함.


스위칭 허브의 패킷 중계.

스위칭 허브목적지까지 패킷을 중계하도록 만들어 짐.
리피터 허브RJ 45, PHY, 리피터 회로로 이루어져있었는데, 스위칭 허브RJ-45, PHY, MAC회로, 버퍼메모리, 스위칭 회로로 이루어짐. 스위칭 회로를 제외한 것들은 각 스위칭 허브 커넥터마다 있음(LAN어댑터의 구조와 일치).
MAC주소는 없음. 왜냐하면 모든 패킷을 수신해서 저장하기때문에 MAC주소가 필요없음(내게 아니더라도 저장함)
참고로 스위칭 허브가 가진 MAC 주소표일정 시간마다 지워진다~

송-수신 과정.

  1. 리피터 허브에서 흘러온 패킷RJ-45 커넥터 도착.
  2. MID-XPHY와 연결 되어있음. 수신받은 전기신호를 MAC회로에서 데이터로 변환.
    2-1. FCS체크해서 오류 없으면 버퍼 메모리 저장. 아니면 폐기.
  3. MAC헤더보고 MAC주소와 일치하는 것이 스위칭 허브가 보유한 MAC 주소표에 있는지 확인.
    3-1. 있으면 스위치 회로를 경유해 전송. 송신하려는 포트에 도달하면, PHY나 MAC회로가 송신동작 준비. LAN 어댑터처럼 송-수신확인 후 송-수신 중이면 재밍 발생 후 대기 후 재 송신
    3-2. 없으면, 모두에게 송신. 이는 이더넷의 기본 원리기 때문에 아무 문제가 없다. 또한, 수신처가 만약 브로드캐스트(호스트 이름이 255면)여도 모두에게 전송한다.

예외동작

가령 PC 두대가 있다고 해보자.

  1. PC(a)에서 PC(b)로 송신 동작 실행. 리피터 허브가 받아서 PC(b)와 스위칭허브로 넘김.
  2. 이때, 이미 PC(b)는 데이터를 수신함. 하지만 스위칭 허브도 다시 리피터허브를 거쳐 PC(b)로 보내려함.
    => 스위칭 허브는 이런 예외동작을 막는 기능이 있음. 송신 포트와 수신 포트가 같으면 패킷을 보내지 않음

전이중모드

지금까지 소개한건 반이중 모드. 즉, 한 번의 시도에 하나의 동작(송신,수신)밖에 하지못했음.
현대의 스위칭 허브전이중 모드. 즉, 송-수신이 동시에 동작 함.

  • 트위스트 페어 케이블은 송-수신이 나뉘어져있음. 충돌 걱정 x
  • PHYMAC회로도 송-수신이 나뉘어져있음.
  • 원래 반이중 모드에서 하던 재밍 후 대기 후 재송신을 하지 않아도 됨. 따라서 전이중 모드에서는 이 동작과 다른 회로들의 충돌 검사를 무효로 하기로 약속.

자동 조정

전이중 모드가 처음 등장했을때, 반이중모드와 통신에 문제가 있었다. 이를 보완하기위한것이, 자동 조정(auto negotiation)
펄스(아주 짧은시간동안 미약한 전류)를 흘려, 상대의 모드가 무엇인지 파악한다. 또한, 전송속도 한계도 파악함. 가능한 최선의 통신방식을 채택.

멀티태스킹 중계

스위칭 허브는 수신처 MAC 주소의 기기가 존재하는 포트 이외는 동작x
따라서 동시에 여러 포트에서 중계가 가능하다.


라우터의 패킷 중계

허브를 경유한 패킷은 결국 라우터에 도달함.
허브MAC 주소를 기반으로 중계했다면, 라우터는 IP주소를 기반으로 중계한다.

라우터의 기본

라우터는 크게 중계 부분포트 부분으로 나뉘어졌다.
포트 부분패킷송-수신담당. 중계 부분패킷 중계대상 담당.
즉, 프로토콜 스택IP부분과 LAN어댑터와 거의 유사하다고 생각하면 됨.
포트는 다양한 종류가 있음. 무선, 이더넷, ADSL(광역회선) 등. 각기 다른방식으로 패킷을 송수신하는게 가능함.
예를들어 이더넷부분으로 패킷이 들어오면, 이더넷규칙에 따라 동작함. 중계 부분에서 IP경로표를 보고 목적지 정해주고, 그에 맞는 포트로 보냄.
=> 즉, 포트송-수신처가 되는 것이다.(MAC, IP주소도 부여받음). 이게 바로 허브와 차이점.

경로표 정보(routing table)

중계 부분에 적힌 IP경로표라우팅 테이블이라고 부른다.
이건 내가쓰는 우분투 환경의 라우팅 테이블임. 스마트폰을 usb테더링으로 연결해서 사용중이다

  • Destination : 수신처의 정보. 패킷을 어디로 보낼지! 즉, 상세한 주소임
  • Gateway : 목적지로 가려면 이곳을 거쳐가야함. 지금 라우터에서 보낼곳(다음 라우터)
  • Netmask(genmask) : 수신처의 네트워크값을 얻어내기위한 특수한 32bit. IP와 AND연산 하면 넷웤값나옴
  • Interface(Iface) : 포트구녕
  • Metric : 다음 중계지와의 거리

하지만 실제 서브넷에 할당된 넷마스크라우팅 테이블에 등록된 넷마스크가 다를 수 있음.
예를 들어 10.10.0.2, 10.10.1.3, 10.10.3.5 이 세군데로 보낼거임. 여기서 10.10까진 같아서, 결국 10.10.x.x를 가진 라우터로 보내야함.
=> 이 셋을 통합해 10.10.0.0/16이라는 서브넷이 있는것으로 간주. 여기서 16넷마스크의 값이 16bit까지만 1이라는 소리(255.255.0.0)
이를 주소집약이라 함.

위와는 반대로 한개의 서브넷을 세분화하여 등록할때도 있음.

라우팅 테이블중계할때 수정되는것이 아님.

  1. 사람이 수동으로
  2. 라우팅 프로토콜을 사용하여 라우터끼리 정보교환할 때.

라우터의 패킷수신 동작

이더넷 포트로 예를 들어봄. 위에서 설명했다 싶이 LAN 어댑터의 구조와 거의 유사함.

  1. RJ-45커넥터로 전기신호 들어옴
    1-1. 프리앰블로 타이밍 맞추고, Start frame delimeter로 패킷 수신시작
  2. PHY(물리계층)에서 전기신호디지털 신호로 변환
  3. MAC회로(데이터 링크계층)에서 디지털 신호데이터화
    3-1. FCS로 오류 검출. 정상이면 MAC 헤더까봐서 내꺼면 버퍼메모리 저장. 아님 폐기
  4. 여기서부터 조금달라짐. MAC 헤더를 폐기한다!(이미 도착했고, 다음 MAC 주소를 써야하기에~)

라우팅 테이블을 보고 출력포트를 찾자

예를들어 10.10.1.101 PC에서 192.168.1.10이라는 서버에 패킷을 보냈다고 하자. 그 패킷이 라우터로 들어왔다.

  1. 수신처의 IP주소와 라우팅 테이블Destination에 해당하는 행을 찾는다.
    이때, 32bit를 다 비교하는것이 아닌, 넷마스크까지만 비교한다.
  2. 개중 네트워크 번호가 제일 긴 destination을 선택한다. 이를 최장 일치라고 한다.
    예를 들어 192.168.1.0192.168.1.10이 있으면, 뒤의 IP를 선택한다는 뜻(255.255.255.0 vs 255.255.255.255)
    왜냐하면, 네트워크 번호가 길수록 호스트 번호는 짧아짐. 즉, 할당 가능한 호스트의 수가 줄어들기에 서브넷의 크기가 작다. 그만큼 범위가 축소됨!
    2-1. 만약 일치하는것이 여러개라면 거리가 짧은(metric 값이 낮은)곳을 선택.
  3. 만약 일치하는 destination이 없다면, ICMP를 이용해 송신처에 오류를 통지한다. 스위칭 허브는 모든 연결된 PC에 패킷을 뿌려도 큰 문제가 없지만, 라우터는 수많은 PC와 연결되어 패킷을 전부 뿌리면 문제가 생김.
    3-1. 만약 라우팅 테이블기본 게이트웨이(0.0.0.0 또다른 라우터)이 설정되어있다면, 패킷을 폐기하지않고 그쪽으로 보낸다.

사실, 출력 포트로 보내기전 아래와 같은 수정작업을 거친다.

  1. IP헤더의 TTL(Time To Live)의 값(64 or 128)을 업데이트한다. 이는 라우터를 돌때마다 1씩 감소하는 값. 패킷이 라우터들의 무한루프에 빠지는걸 방지.
  2. 출력포트MTU(패킷 규격)에 맞춰 데이터를 잘라낸다. 이때 IP헤더Flag필드를 보고 분할가능여부를 결정. 가능하다면 TCP헤더 이후를 분할대상으로 간주, 잘라낸 패킷들에 IP헤더를 덧붙임. 이때 TCP 헤더가 없는 패킷이 생긴다.(전편에서 설명했듯, 나중에 Fragmentation offset으로 잘라낸 데이터 붙임)

라우팅에서 송신

패킷이 이제 출력포트에 다다랐다. 송신만이 남았다. 송신을 준비하는 동작은 프로토콜 스택의 IP부분이 하는일과 똑같다.

  1. 경로표 보고, 게이트웨이IP주소가 쓰여있으면, 게이트웨이MAC주소 기입.
    아니라면, IP헤더에 있는 IP주소MAC주소기입. 역시나 ARPMAC주소를 찾는다.
  2. 송신처MAC주소에 라우터 출력포트의 MAC주소 기입 후, 반이중, 전이중 모드 탐색.
  3. 스위칭허브 거치고, 다음 라우터도착. ~~~ 나중에 목적지 도달!

라우터와 스위칭 허브

결국, 라우터는 IP를 이용해 목적지 까지 옮기려는 장치. 스위칭 허브는 이를 도와줌(다음 라우터까지 운반).
IP구조는 패킷 운반능력이 없음. 따라서 이더넷에의뢰. 어찌보면 이더넷 패킷 구조IP 패킷을 넣는 작업.


라우터의 부가기능

  • 주소변환 : 원래는 모든 PC가 고유한 주소(IP)를 부여받음. 하지만 장래에 남아있는 고유주소의 수가 부족할거란 전망.
    => 서브넷은 private address로 두고, 인터넷 접속 용도의 Global address가 부여된 기기 설치.
    많은 PC가 결국 하나의 global address를 부여받지만, 포트별로 구분해서 송-수신 가능.
    이때 미리 라우터 주소변환표에 등록하지 않은 경우, 인터넷 접속 불가(보안 굿!)
  • 패킷 필터링 : 미리 정해놓은 규격과 합치한 패킷이 아니면 폐기. (MAC, IP, TCP 헤더등 조사. 방화벽도 이 원리 이용)
profile
모르는 것을 모른다고 하기

1개의 댓글

comment-user-thumbnail
2023년 7월 20일

정말 유익한 글이었습니다.

답글 달기