개요
성공과 실패를 결정하는 1% 네트워크 원리를 공부하고 정리한 글이다.
Chapter 3 - 허브와 스위치, 라우터의 탐험
STORY 1 | 케이블과 리피터, 허브 속에 신호가 흘러간다.
1-1) 하나하나의 패킷이 독립적으로 동작한다.
컴퓨터에서 송신된 패킷은 중계 장치(허브, 라우터 등)에 의해 운반된다. 이때, 중계장치는 어떤 데이터인지 전혀 신경쓰지 않고 전송에만 집중한다.
1-2) LAN 케이블은 신호를 약화시키지 않는 것이 핵심이다.
■ 높은 주파수와 낮은 주파수
1-3) ‘꼼’은 잡음을 방지하기 위한 방법이다.
트위스티 페어 케이블은 마주 꼬여있는 상태를 통해서 잡음을 막는다.
■ 잡음의 원인은 케이블에서 발생하는 전자파다.
전자파가 금속 등의 도전체에 닿으면 그 내부에 전류가 발생한다. → 케이블 주위에 전자파가 있으면 보내는 신호와 다른 전류가 케이블 내에 흐르게 되고, 이러한 잡음이 신호와 뒤섞여서 파형이 변형된다.
■ 케이블에 영향을 주는 전자파
- 기기에서 누설되는 전자파
- 신호선에 전자파가 닿으면, 전자파 진행 방향의 오른쪽으로 전류가 생긴다. 케이블의 선을 마주 꼬면 형태가 나선형이 되어 꼰 옆의 선에서 전류가 흐르는 방향이 반대가 된다. 전자파로부터 오른쪽으로 전류가 생기면, 이 나선형 모양으로부터 전류가 다시 왼쪽으로 흘러 서로 상쇄되어 잡음에 의한 전류가 약해진다.
- 이는 케이블 밖에서 오는 것으로, ‘선을 꼼’으로써 막을 수 있다.
- 같은 케이블 안의 인접한 신호선에서 누설되는 전자파 - 크로스토크(crosstalk)
- 신호선 안에는 신호라는 전류가 흐른다. 이 전류에 의해 주위에 전자파가 생기고, 다른 신호선에 대한 잡음이 된다. 이 잡음은 거리가 가까운 것이 문제다. 전자파는 발생 근원에서 떨어지면 확산되어 약해진다. 하지만 한 개의 케이블 안에서의 신호선들은 거리가 매우 가깝다.
- 신호선을 마주 꼴 때 어떤 부분에서는 + 신호가, 어떤 부분에서는 - 신호가 가까워지면 이 +, -에서는 잡음의 영향이 반대가 되어 각각의 균형이 잡히면서 잡음의 영향이 줄어ㅈ든다.
- 이것을 막는 대책도 신호선을 마주 꼬는 것이다.
1-4) 리피터 허브는 연결되어 있는 전체 케이블에 신호를 송신한다.
■ 리피터 허브의 송신 원리
신호가 리피터 허브에 도착하면 일단 LAN 전체에 신호를 모두 뿌린다. → 이더넷의 기본 원리와 상통한다. 일단 모두 뿌리고, 수신처 MAC 주소에 해당하는 기기만 이 신호를 받는 것.
■ 리피터 허브 내부
PHY & RJ-45(회로와 커넥터)
- 각 커넥터의 안 쪽에 LAN의 PHY와 똑같은 역할을 하는 회로가 있다.
- 이 PHY와 RJ-45를 거쳐서 제대로 송수신 하려면 단자를 교차시켜서, ‘송신 단자’에서 보낸 신호를 ‘수신 단자’에서 받을 수 있도록 해야 한다.
MDI/MDI-X
- 리피터 허브 끝의 커넥터에는 MDI/MDI-X와 같은 전환 스위치가 붙어있다.
- MDI: RJ-45 커넥터와 송수신 회로를 직접 결선한 것
- MID-X: 교차하여 결선한 것
- 허브의 커넥터 부분은 보통 MDI-X이므로 허브끼리 접속할 때는 한쪽을 MDI로 설정해야 한다.
- 만약 MDI가 없고 모두 MDI-X인 경우, 크로스케이블로 허브들을 접속한다.
리피터 허브의 기본은 신호를 그대로 뿌리는 것이다.
- 리피터 허브의 회로에 신호가 들어오면 이 모든 신호를 연결된 커넥터 부분에 뿌려준다.
- 이후, 커넥터에 온 신호는 모두 나가면서 리피터 허브에 접속한 전체 기기에 도달한다.
- 신호를 수신한 기기는 맨 앞에 있는 MAC 헤더에 쓰여 있는 수신처 MAC 주소를 조사하여 자신이 수신처에 해당하면 이 신호를 받는다.
STORY 2 | 스위칭 허브의 패킷 중계 동작
2-1) 스위칭 허브는 주소 테이블로 중계한다.
스위칭 허브도 PHY에서 커넥터까지 수신되는 부분은 앞의 리피터 허브와 같다. 즉, 커넥터와 PHY 회로는 MDI-X로 연결되어 있고, 트위스트 페어 케이블에서 신호가 들어오면 PHY 회로의 수신 부분에 신호가 들어간다.
이후, 신호는 공통의 신호 형식으로 변환되어 MAC 회로로 들어간다. 그리고 여기에서 디지털 데이터로 변환한 후, 패킷의 가장 끝에 있는 FCS와 비교하여 오류 유무를 검출한다. 문제가 없으면 이를 버퍼 메모리에 저장한다.
■ 스위칭 허브가 수신처 MAC 주소를 조사하는 방법
스위칭 허브의 포트(커넥터와 안쪽에 있는 회로 부분)는 수신처 MAC 주소를 검사하지 않고, 모든 패킷을 수신하여 버퍼 메모리에 저장하고 나서, MAC 주소표를 확인한다. 이 MAC 주소표에는 MAC 주소와 포트가 짝을 이루고 있다. 이를 통해 수신한 패킷을 어느 포트에서 송신하면 좋을지를 판단한다.
허브는 중계 장치니까 송신 패킷을 다시 어디로 보낼지 수신처 MAC 주소와 송신 포트를 저장해 두는 것.
■ 스위치 회로의 구조
신호선이 격자 모양으로 배치되고, 교점에 스위치가 있다. 이 스위치는 전자적으로 개폐 조절이 가능하다. 이를 통해 신호가 흐르는 대상을 제어한다. 그리고 입력측은 수신측 포트에, 출력층은 송신쪽 포트에 접속되어 있다.
포트 사이에 패킷을 운반할 때, 이 회로에 패킷의 신호를 흘린다. 신호의 교점에 있는 스위치는 각각 독립하여 움직이므로 신호가 중복되지 않으면 복수의 신호를 동시에 흘릴 수도 있다.
■ 스위치 회로에서의 송신 동작 → LAN 어댑터의 송신 동작과 같다.
- 이더넷의 규칙에 따라 먼저 신호가 흐르고 있는지 확인
- 소켓을 디지털 데이터에서 신호로 변환하여 송신
- 송신 동작 중에 다른 기기가 보낸 신호가 수신측에 들어오면 패킷이 충돌하므로, 재밍 신호를 보낸 후 송신 동작을 중지하고 잠시 기다렸다가 다시 송신
2-2) MAC 주소 테이블을 등록 및 갱신한다.
■ 스위칭 허브는 패킷을 중계할 때 MAC 주소표의 내용을 갱신한다.
- 패킷 수신 시, 송신처 MAC 주소와 입력 포트 번호
- 사용하지 않고 일정 시간이 지나면 삭제(노트북 들고 다른 방으로 이동하는 경우)
⇒ MAC 주소는 스위칭 허브가 자체가 스스로 등록하거나 사라지므로, 수동으로 관리할 필요가 없다.
2-3) 스위칭 허브의 예외적인 동작
■ 스위칭 허브에 리피터 허브가 접속되어 있는 경우
이 경우는 송신할 패킷의 포트와 수신한 패킷의 포트가 같기 때문에, 패킷을 중계하지 않고 폐기한다.
■ MAC 주소표에 수신처 MAC 주소와 일치하는 주소가 없는 경우
- 패킷이 한 번도 스위칭 허브에 도착하지 않음
- 시간이 지나서 삭제된 경우
→ 어느 포트에서 송신해야 할지 판단할 수 없으므로, 수신 포트 이외의 전체 포트에서 송신한다.
이렇게 해도 결국 올바른 수신처만 패킷을 받음 + 두 번째부터는 기록이 되므로, 네트워크 혼잡도에 큰 영향 X
2-4) 전이중 모드에서 송수신을 동시에 실행
전이중 모드: 송신과 수신을 동시에 할 수 있는 모드 → 신호의 충돌을 검출하는 회로를 무효화
■ 스위칭 허브는 전이중 모드에서 송수신을 동시에 실행 가능(리피터 허브는 안됨)
이론상으로, 여러 대의 컴퓨터가 동시에 송신 동작을 개시하면 허브 내부에서 신호가 뒤섞여서 신호가 파괴된다. 하지만 리피터 허브는 전이중 모드가 필요 없는 게, 어차피 ‘트위스트 페어 케이블’로 구성되어 있어서 신호가 따로 흐른다.
2-5) 최적의 전송 속도로 보내는 자동 조정
자동 조정(auto negotiation): 접속한 상대가 전이중 모드를 지원하는지 검출하고 동작 모드를 자동으로 전환하는 기능이다. 동작 모드뿐만 아니라 상대의 전송 속도를 검출하여 이도 자동으로 전환한다.
링크 펄스: 데이터가 흐르지 않을 때 펄스형의 신호를 흘려서 상대가 올바르게 작동하는지, 케이블 이상 없는 지 등을 확인할 수 있다. (이더넷에 초록색 LED 확인 가능)
■ 두 기기가 전원 켜고, HW 초기화가 끝난 다음 펄스 신호를 보내기 시작한다.
먼저 펄스 신호를 보내서 상대에게 신호가 도착한다. 이 도착한 펄스의 패턴을 읽고 상대가 어느 모드를 지원하는지 조사한다. 모드의 우선순위대로 조사하면서 자신과 상대 모두가 지원하는 동작 모드를 찾는다.
2-6) 스위칭 허브는 복수의 중계 동작을 동시에 실행한다.
- 스위칭 허브는 수신처 MAC 주소와 매핑된 포트 외에는 송신 동작을 실행하지 않으므로, 이 포트에서 데이터를 흘릴 수 있다.
- 리피터 허브는 들어온 신호를 모든 포트에서 뿌리므로 동시에 두 개 이상의 신호가 들어왔을 때 패킷이 충돌하기 때문에 복수의 신호를 동시에 흘릴 수 없다.
STORY 3 | 라우터의 패킷 중계 동작
3-1) 라우터의 기본
허브를 경유한 패킷은 결국 라우터에 도착하고, 라우터에서 다음 라우터로 중계된다. 중계할 때 table을 확인하고 해당 기기에 데이터를 보낸다는 점은 허브와 비슷하지만, 라우터에는 IP 개념이 추가된다.
■ 라우터의 내부 구조는 중계 부분, 포트 부분 두 가지로 나뉜다.
- 중계 부분: 패킷의 중계 대상을 판단한다. → IP 담당 부분과 같다.
- 포트 부분: 패킷을 송수신한다. → LAN 어댑터와 같다.
- 라우터의 포트 부분에 다양한 통신 기술의 HW를 장착하면, 이를 지원할 수 있다. 예를 들어서 무선 LAN용 HW를 장착하면 무선 LAN을 지원할 수 있다.
→ [기본 동작] 포트 부분에서 패킷을 수신하고, 중계 부분에서 중계할 대상을 판단한다. 그리고 중계 대상측의 포트로 패킷을 옮기고, 포트 부분의 hw 규칙에 따라 패킷 송신 동작을 실행한다.
■ 스위칭 허브는 table의 MAC 주소, 라우터는 table의 IP 주소를 통해 중계한다.
- 스위칭 허브는 table에 MAC 주소와 그에 매핑되는 포트를 저장했지만, 라우팅 테이블은 조금 더 복잡한 내용을 담고 있다.
- 허브는 패킷을 중계함과 동시에 정보를 갱신하지만, 라우터는 중계하면서 정보를 갱신하거나 하는 등의 작업은 하지 않는다.
- 사람이 수동으로 정보 갱신
- 라우팅 프로토콜(RIP, OSPF, BGP 등)을 통해 라우터들끼리 정보를 교환하고, 라우터 자체에서 라우팅 테이블에 등록
■ 라우팅 테이블 살펴보기
- ‘주소 집약’을 통해 서브넷을 묶어서 한 개의 서브넷으로 간주하기
- 경로가 겹치면 그 부분만 일괄적으로 통합해서 해당 주소에만 패킷을 중계하느 것
- 한 개의 서브넷을 세분화하여 복수 개로 보이도록 하기
- 호스트 번호 부분에 값이 들어있는 개별 컴퓨터를 나타내는 주소를 ‘수신처’ 항목에 등록할 수 있다.
- 게이트웨이, 인터페이스 - 패킷의 중계 대상
- 매트릭 - 목적지가 가까운지, 먼지 나타냄
3-4) 경로표를 검색하여 출력포트를 발견한다.
- 라우터는 패킷 수신 동작이 끝나면 맨 앞의 MAC 헤더를 폐기한다. 패킷을 수신하면 MAC 헤더의 역할이 끝나기 때문.. 폐기하고, MAC 헤더 뒤에 있는 IP 헤더의 내용을 보고 패킷 중계 동작에 들어간다.
- 우선 수신한 패킷의 IP 주소와 라우팅 테이블의 수신처 부분을 비교한다. 이때, 32 비트 전부를 비교하는 것이 아니라 ‘넷마스크’ 항목에 등록된 값에서 네트워크 번호 부분만 비교한다.
- 255.255.255.0 이라는 넷마스크는 네트워크 부분이 24비트, 호스트 부분이 8비트니까 왼쪽부터 24비트 먼저 조사한다.
- 만약 이 넷마스크를 조사해서 복수의 후보가 생기면 네트워크 번호의 비트 수가 가장 긴 것을 찾는다.
- 네트워크 번호의 비트 수까지 동일하면, 메트릭 값으로 판단한다. 메트릭 값이 작을 수록 가까운 것이기에 작은 쪽으로 중계한다.
- 만약 일치하는 행이 하나도 발견되지 않으면, 패킷을 폐기하고 ICMP 메시지를 송신처에게 보낸다.
→ 스위칭 허브는 그냥 모든 포트에 흘렸지만..스위칭 허브는 많아봐야 수천대 정도의 네트워크지만, 라우터는 인터넷이기에 규모가 크다.
3-5) 해당하는 경로가 없는 경우에 선택하는 기본 경로
넷마스크 항목이 0.0.0.0이라는 것은 비교 동작을 실행하지 않는다는 것이다. → 패킷의 수신처 IP 주소와 라우팅 테이블 수신처 항목을 비교할 때 비트수가 0이라는 것이기 때문이다. 즉, 모든 주소에 일치한다. 따라서 이 0.0.0.0 이라는 넷마스크는 기본 경로/기본 게이트웨이를 나타낸다.
3-6) 패킷은 유효 기간이 있다.
■ 라우터는 중계 대상을 찾고, 포트 부분으로 패킷을 옮기고 송신하기 전에 해야할 몇 가지 일이 있다.
- TTL(Time To Live, 생존기간)설정
- 라우터를 경유할 때마다 이 값을 1씩 줄이다가 0이되면 패킷을 폐기한다.
- 패킷이 같은 장소를 무한대로 돌아다니는 경우를 방지한다.
3-7) 큰 패킷은 분할한다.
■ 중계하는 패킷의 크기가 출력측의 패킷 최대 길이를 초과하면 패킷을 그대로 송신할 수 없다.
이 경우에는 IP 프로토콜에 규정된 Fragmentation을 통해 패킷을 분할하고, flag를 붙여서 중계한다.
- 패킷 최대 길이는 포트의 종류에 따라 결정된다.
- 출력측의 MTU를 조사하여 중계하려는 패킷을 송신할 수 있는지 체크한다.
- IP 헤더의 플래그 필드를 조사하여 분할해도 좋을지 확인한다.
- 분할이 불가능하면 패킷을 폐기하고, ICMP 메시지로 송신처에 통지한다.
- 분할이 가능하면 출력측의 MTU에 맞춰서 앞에서부터 차례대로 분할한다.
- 분할할 때는 TCP 헤더 뒤 데이터부터 분할한다.
- 분할한 데이터에 IP 헤더를 덧붙인다.
3-8) 라우터의 송신 동작은 컴퓨터와 같다.
■ 송신 동작은 출력 포트가 무엇이냐에 따라 다르다.
이더넷이라면 이더넷 규칙에 따라, ADSL라면 ADSL 규칙에 따라 신호를 변환하여 송신한다.
■ 회사 등의 LAN에 사용하는 라우터라고 가정하자…
패킷 송신 동작의 기본은 프로토콜 스택의 IP 담당이 패킷을 보낼 때와 같다. 맨 앞부분에 MAC 헤더를 부여하고, 값을 설정하여 패킷을 완성시킨 후 전기 신호로 변환해서 보낸다.
- [수신처 MAC 주소] MAC 헤더에 정보를 쓰기 위해서 라우팅 테이블의 ‘게이트웨이’ 항목에서 패킷을 건네줄 상대를 판단한다.
- 게이트웨이 부분이 공란이면 IP 헤더의 수신처가 건네줄 상대의 주소
- [수신처 MAC 주소] 라우팅 테이블에서 상대의 IP를 결정했으면, ARP로 해당 IP 주소에서 MAC 주소를 조사하고, 결과를 수신처 MAC 주소로 설정한다.
- [송신처 MAC 주소] 출력측의 초트에 할당된 MAC 주소를 설정하고 16진수(0800)를 추가한다.
3-9) 라우터와 스위칭 허브의 관계
■ 라우터(IP)는 패킷을 실제로 보내기 위해 허브(이더넷)에 의뢰해야 한다.
라우터는 IP 기반, 허브는 이더넷을 기반으로 만들어졌다. 따라서 이 IP와 이더넷의 관계가 라우터와 허브의 관계다. → 즉, 라우터는 패킷을 운반하는 것을 허브에 의뢰해야 한다.
- 실제 라우터에서는 이더넷 기능을 내장한 기종이 있기에 순수 라우터와 순수 허브에 대해 이야기 한다.
■ 이더넷 이외에 LAN/통신 회선에는 어떻게 의뢰할까?
똑같이 그들에게 의뢰한다.
STORY 4 | 라우터의 부가 기능
4-1) 주소 변환으로 IP 주소를 효율적으로 이용한다.
■ 라우터의 주소 변환 기능
인터넷이 발달하고 주소 부족 현상에 대비하기 위해 IP를 두 가지로 구분하여 사용
- private
- 글로벌 주소에 포함된 범위 내에서 IP 주소를 만들어서 사용한다. 이건 사내에서만 사용하는 것이므로 바깥에 있는 IP와 중복돼도 상관없다. 단, 사내에서 중복은 피해야 한다.
- 이러한 사내 IP는 외부 인터넷과 직접 패킷을 주고받지 않는다.
- global
- 인터넷과 직접 통신하는 부분이다.
4-2) 주소 변환의 기본 동작
- 패킷을 인터넷에 중계할 때 송신처의 IP 주소를 private → global으로 변경한다. 포트도 마찬가지로 변경한다.
- 그리고 이 네 가지를 한 묶음으로하여 주소 변환 장치 내부 table에 기록한다.
- 바뀐 IP, port로 외부 인터넷과 통신한다.
- 응답을 받으면 주소 변환 장치가 글로벌 주소와 포트를 찾아서 private으로 다시 바꿔서 사내 네트워크에 패킷을 보낸다.
- 접속 동작이 끝나고 연결이 끊기면 대응표에 적힌 ip, port를 삭제한다.
4-3) 포트 번호를 바꿔 쓰는 이유
IP를 수만 개의 포트에 대응하기 위해서. 즉, IP를 더 많이 쓰기 위해서다.
4-4) 인터넷에서 회사로 액세스 한다.
사내에서 외부 인터넷으로 패킷을 중계할 때는 송신처의 private, port가 등록되어 있지 않아도 중계할 수 있다. 어차피 글로벌 주소는 주소 변환 장치(라우터)에 할당되어 있고 포트는 적당히 비어 있는 것을 사용하면 되기 때문이다.
그러나 인터넷에서 사내로 패킷을 중계할 때는 주소 전환 장치가 주소를 전환해주어야 하므로, table에 기록이 되어 있어야 한다. → 외부로부터의 부정 침입을 방지하는 효과가 있다.
4-5) 라우터의 패킷 필터링 기능
패킷을 중계할 때 MAC 헤더, IP 헤더, TCP 헤더에 기록되어 있는 내용을 조사하여 사전에 설정한 조건에 맞으면 패킷을 중계/폐기하는 것을 말한다.
'CS > Network' 카테고리의 다른 글
[Network] 네트워크 원리(5) 서버측의 LAN에는 무엇이 있는가? (2) | 2024.10.24 |
---|---|
[Network] 네트워크 원리(4) 액세스 회선을 통해 인터넷의 내부로 (1) | 2024.09.30 |
[Network] 네트워크 원리(2) - TCP/IP의 데이터를 전기 신호로 만들어 보낸다 (0) | 2024.08.27 |
[Network] 네트워크 원리(1) 웹 브라우저가 메시지를 만든다. (0) | 2024.08.08 |
[Network] 내가 만든 웹 서비스 WireShark로 패킷 분석하기 - 7계층 분석 (0) | 2024.06.23 |