반응형
Chapter 3. 케이블의 앞은 LAN 기기였다.
케이블이 송출한 패킷이 리피터 허브, 스위칭 허브, 라우터 등의 네트워크 기기를 경유하여 인터넷을 향해 진행하는 부분을 살펴본다.
01. 케이블과 리피터, 허브 속을 신호가 흘러간다.
1. 하나하나의 패킷이 독립된 것으로 동작한다.
- 컴퓨터에서 송신된 패킷은 패킷의 헤더에 기록된 제어 정보와 중계 장치(허브, 라우터)의 내부에 있는 중계 대상을 등록한 표로 목적지를 판단하고 목적지에 가까워지도록 하여 패킷을 중계한다.
- 애플리케이션의 데이터나 TCP 헤더는 패킷을 운반하는 동작에 영향을 주지 않는다.
- 클라이언트 PC가 LAN에 접속되어 있다고 가정. 즉 PC가 송신한 패킷이 리피터 허브, 스위칭 허브, 라우터를 경유하여 인터넷에 나가는 것으로 간주한다.
2. LAN 케이블은 신호를 약화시키지 않는 것이 핵심이다.
- LAN 어댑터에서 패킷이 송신되어 케이블로 나가는 부분부터 자세히 알아보자.
- LAN 어댑터의 PHY(MAU) 회로에서 전기 신호로 형태를 바꾼 패킷은 RJ-45 커넥터를 통해 트위스트 페어 케이블(꼰 선쌍)에 들어간다.
- 이더넷의 신호의 실체는 플러스와 마이너스의 전압이므로 LAN 어댑터의 PHY(MAU) 회로의 플러스와 마이너스 신호 단자에서 신호가 나온다고 생각하자.
- LAN 어댑터와 PHY(MAU) 회로는 RJ-45 커넥터에 직접 결선되어 있으므로 커넥터의 1번 핀과 2번 핀에서 케이블로 신호가 흘러나간다.
- 그 후 케이블 속을 흘러 리피터 허브의 커넥터 부분에 도착하고, 이 부분은 단순히 전기 신호가 케이블을 통해 전달된다.
- 송출한 신호는 그대로의 모습으로 허브에 도착하는 것이 아니라 허브에 도착할 때는 신호가 약해져 있다.
케이블의 길이가 길어질수록 신호가 약해진다. - 신호가 약해질 뿐만 아니라 신호의 각이 뭉개져서 둥글게 된다. 잡음으로 인해 신호가 변형되기도 한다.
- 이런 이유들로 신호가 더욱 변경되면 1과 0을 잘못 판독할 수도 있는데, 이것은 통신 오류의 원인이 된다.
3. '꼼'은 잡음을 방지하기 위한 방법이다.
- LAN 케이블로 사용하는 트위스트 페어 케이블(꼰 선쌍)에는 이러한 잡음의 영향을 억제하는 대책에 마련되어 있는데, 이것이 '꼼'이다. 말 그대로 두 가닥의 신호선을 한 조로 하여 마주 꼬았다는 것이다.
4. 리피터 허브는 연결되어 있는 전체 케이블에 신호를 송신한다.
- 리피터 허브에서 끝의 커넥터에는 MDI/MDI-X와 같이 쓰여있는 전환 스위치가 붙어있다.
- MDI-X인 경우는 크로스 케이블이라고 하는데, 한쪽의 송신을 다른쪽의 수신으로 연결시키기 위함이다.
- 리피터 허브에서 PHY(MAU)회로의 수신부에 도달한 신호는 여기부터 리피터 회로에 들어간다.
- 리피터 회로의 기본은 들어오는 신호를 리피터 허브의 커넥터 부분에 뿌리는 데 있다.
- 이후 신호는 모든 커넥터에서 나가면서 리피터 허브에 접속한 전체 기기에 도달한다.
- 패킷을 수신한 기기들은 MAC 헤더의 수신처 주소를 보고 자기와 일치하면 패킷을 받아들인다.
02. 스위치 허브와 패킷 중계 동작
1. 스위칭 허브는 주소 테이블로 중계한다.
- 스위칭 허브는 이더넷의 패킷을 그대로 목적지를 향해 중계하도록 만들어져 있다.
- 먼저 신호가 커넥터 부분에 도달하여 PHY(MAU) 회로에서 수신되는 부분까지는 리피터 허브와 동일하다.
- 이후는 LAN 어댑터와 동일하게 케이블을 흐르는 신호의 형식부터 공통의 신호 형식으로 변환한 후 신호는 MAC 회로로 들어간다.
그리고 디지털 데이터로 변환한 후 패킷의 끝에 있는 FCS를 대조하여 오류의 유무를 검사하고, 문제가 없으면 버퍼 메모리에 저장한다. - 커넥터의 안쪽에 는 PC의 LAN 어댑터와 같은 회로가 있으며 이를 포트라고 부른다.
- LAN 어댑터와 다른 부분은 LAN 어댑터는 수신한 패킷에서 MAC 수신처 주소를 보고 자신과 다르면 패킷을 폐기하지만, 스위칭 허브의 포트는 수신처 MAC 주소를 검사하지 않고 모든 패킷을 수신하여 버퍼 메모리에 저장한다. 그러므로 스위칭 허브의 포트에는 LAN 어댑터와 다르게 MAC 주소가 할당되어 있지 않다.
- 패킷을 버퍼 메모리에 저장하면 다음에 수신처 MAC 주소와 일치하는 것이 MAC 주소표에 등록되어 있는지 조사한다.
- MAC 주소표에 수신처 MAC주소와 일치하는 주소가 있다면 그 주소에 해당하는 포트로 보낸다.
- 포트를 향할 때는 스위치 회로를 경유하여 패킷을 송신측의 포트에 보낸다.
2. MAC 주소 테이블을 등록 및 갱신한다.
- 스위칭 허브는 패킷을 중계할 때 MAC 주소표의 내용을 갱신하는 동작도 실행한다.
- 갱신 동작은 두 종류가 있는데, 그 중 하나는 패킷을 수신했을 때 송신처 MAC 주소를 조사하고,
이것을 수신한 입력 포트 번호와 하나의 세트로 MAC 주소표에 등록하는 것이다. - 스위칭 허브는 패킷을 수신할 때마다 이런 등록 동작을 실행한 후 한 번이라도 패킷을 송신하면 해당 기기의 MAC 주소가 MAC 주소표에 등록된다.
- 다른 하나는 사용하지 않고 일정 시간 경과한 경우 오래된 정보를 MAC 주소표에서 삭제한다.
3. 예외적인 동작
- 예외적인 동작도 있는데, 예를 들어 주소표에서 일치하는 행을 찾아냈을 때 주소표에 등록되어 있는 송신 포트가 패킷을 수신한 포트와 같다고 생각해보자.
- 이러한 상황은 스위칭 허브에 리피터 허브가 접속되어 있는 경우에 발생하는데, 이런 경우 통신 동작이 제대로 이루어지지 않으므로 스위칭 허브는 수신한 포트와 송신하는 포트가 같을 경우 패킷을 중계하지 않고 폐기한다.
- MAC 주소표에 수신처 MAC 주소와 일치하지 않는 주소가 등록되어 있지 않은 경우도 예외 적이 동작이 수행된다.
이 경우에는 어느 포트에서 송신해야 할지 판단할 수 없으므로 패킷을 수신한 포트이외의 전체 포트에서 패킷을 송신한다. - 수신처 MAC 주소가 브로드캐스트 주소인 경우에도 수신 포트를 제외하고 모든 포트에서 패킷을 송신한다.
4. 전이중 모드에서 송신과 수신을 동시에 실행한다.
- 전이중 모드, 즉 송신과 수신을 동시에 실행할 수 있는 성질도 리피터 허브에는 없는 스위칭 허브의 특징이다.
- 리피터 허브도 트위스트 페어 케이블의 신호선을 송신용과 수신용으로 나누고, PHU(MAU) 회로와 MAC 회로의 내부 송신과 수신이 나누어져 있으므로 신호가 따로 흘러 충돌이 발생하지 않는다.
- 그러나 리피터 허브, 즉 반이중 모드는 다른 신호가 흐르면 기다렸다가 실행해야 한다. 전이중 모드는 기다릴 필요가 없다.
5. 최적의 전송 속도로 보내는 자동 조정
- 전이중 모드와 반이중 모드를 자동으로 전환하는 기능이 있다. 즉 접속한 상대가 전이중 모드를 지원하는지 검출하고 동작 모드를 자동으로 전환하는 기능이다.
- 동작 모드뿐만 아니라 상대의 전송 속도를 검출하여 전송 속도도 자동으로 전환되는데, 이 기능을 자동 조정이라고 한다.
- 이더넷은 데이터가 흐르고 있지 않을 때는 링크 펄스라는 펄스형의 신호를 흘린다.
- 이 신호를 통해 상대가 올바르게 작동하는지, 케이블이 단선이 되지 않았는지 등의 사항을 확인할 수 있다.
- 자동 조정도 이 방법을 이용해 지원 가능한 모드와 전송 속도를 서로 통지하고, 그 중에서 최적의 조합을 선택해 각각 자기 자신을 설정한다.
6. 스위칭 허브는 복수의 중계 동작을 동시에 실행한다.
- 스위칭 허브는 수신처 MAC 주소의 기기가 존재하는 포트 이외에는 송신 동작을 실행하지 않으므로 다른 포트는 빈 상태가 된다.
- 비어있으므로 여기에서 별도의 패킷을 흘릴 수 있으며, 이렇게 해서 동시에 여러 개의 패킷을 중계할 수 있다.
- 리피터 허브는 들어온 신호를 모든 포트에서 뿌리므로 동시에 두 개 이상의 신호가 들어오면 패킷이 충돌해 복수의 신호를 동시에 흘릴 수 없다.
- 따라서 기기 전체에서 중계할 수 있는 패킷의 수는 스위칭 허브쪽이 리피터 허브쪽보다 많다.
03. 라우터의 패킷 중계 동작
1. 라우터의 기본
- 리피터 허브나 스위칭 허브를 경유한 패킷은 결국 라우터에 도착하고, 라우터에서 다음 라우터로 중계된다.
- 라우터의 내부 구조는 크게 중계 부분과 포트 부분이라는 두 부분으로 구성된다.
- 중계 부분이 패킷의 중계 대상을 판단하는 동작을 담당하고, 포트 부분이 패킷을 송, 수신하는 동작을 담당한다.
- 패킷 중계 부분은 라우팅 테이블에 등록된 정보에 의해 중계 대상을 판단하여 패킷을 중계한다.
- 포트 부분은 ADSL을 지원하는 것, FTTH를 지원하는 것, 전용선 등의 통신 회선을 지원하는 등 기종에 따라 다양하다.
- 라우터의 각 포트에는 MAC 주소와 IP가 할당되어 있다.
2. 경료표에 등록된 정보
- 스위칭 허브는 MAC 헤더에 기록된 수신처 MAC 주소로 중계 대상을 판단하지만, 라우터는 IP 헤더에 기재되어 있는 수신처 IP 주소로 중계 대상을 판단한다.
- 라우터의 테이블은 라우팅 테이블 또는 경로표라고 부른다.
- 라우팅 테이블에는 수신처 항목에 수신처의 정보가 들어있다.
서브넷 자체를 나타내는 주소, 즉 네트워크 번호 부분의 비트에만 값이 있고, 호스트 번호 부분의 비트 값은 모두 0으로 되어 있는 IP 주소가 들어있다고 생각하면 된다. - 라우터는 이 항목에 등록되어 있는 IP 주소와 수신한 패킷의 수신처 IP 주소를 비교하여 그 행이 해당하는지 판단한다.
- 라우터는 호스트 번호를 무시하고 네트워크 번호만 조사한다.
- 주소 비교 동작을 진행할 때 네트워크 번호의 비트 수를 판단해야 하므로 경로표에는 넷마스크 항목도 있다.
- 주소 집약이라는 개념을 이용해 몇 개의 서브넷을 모아서 한 개의 서브넷으로 간주한 후 묶은 서브넷을 경로표에 등록할 수 있다.
- 경로표에서 넷마스크 항목은 경로표의 수신처와 패킷의 수신처 주소를 대조할 때 비트 수를 나타낸다.
- 경로표의 '게이트웨이' 항목과 '인터페이스' 항목은 패킷의 중계 대상을 나타낸다.
- 수신처 항목과 넷마스크 항목에서 해당 행을 찾아내면 항목에 등록되어 있는 인터페이스(포트)에서 게이트웨이 항목에 등록되어 있는 IP 주소를 가진 라우터에 대해 패킷을 중계한다.
- 경로표의 메트릭은 수신처 IP 주소에 기록되어 있는 목적지가 가까운지, 먼지를 나타낸다.
- 스위칭 허브와 다르게 중계하면서 경로표의 내용을 변경하지 않는다.
- 라우터의 경로표에 경로 정보를 등록하는 방법은 크게 2가지가 있다.
- 첫 번째는 사람이 수동으로 경로 정보를 등록하고 갱신하는 것이다.
- 두 번째는 라우팅 프로토콜(RIP, OSPF, BGP 등)이라는 구조를 사용해 라우터들끼리 경로 정보를 교환하고 라우터가 자체에서 경로표에 등록하도록 한다.
3. 라우터의 패킷 수신 동작
- 라우터의 포트에는 MAC 주소가 할당되어 있으며, 라우터는 자신의 주소에 해당하는 패킷만 수신하고 해당하지 않는 패킷을 폐기한다.
4. 경로표를 검색하여 출력 포트를 발견한다.
- 라우터에서 중계하는 패킷의 수신처 MAC 주소에는 라우터의 포트에 할당된 MAC 주소가 기록되어 있다.
- 수신한 패킷의 수신처 MAC 주소 항목에 해당 라우터의 포트에 할당된 MAC 주소가 기록되어 있으면 MAC 헤더를 폐기하고 다음 동작으로 넘어간다.
- 그럼 경로표에서 중계 대상을 조사한다. 중계 대상을 조사할 때 가장 먼저 수신한 패킷의 수신처 IP 주소와 경로표의 수신처 항목을 조사하여 해당하는 행을 찾는다.
- 앞에서 언급한 것처럼 네트워크 번호 부분만 비교한다.
간단한 예시를 들어보면 192.168.1.10이라는 서버에 패킷을 보낸다.
경로표에서 어떤 행을 조사하는데 넷마스크가 255.255.255.0이다. 그럼 수신처 항목을 24비트만 조사한다.
경로표의 수신처 항목이 192.168.1로서 둘이 일치하므로 이 행이 중계 대상의 후보가 된다.
만약 중계 대상의 후보가 여러 행이라면 네트워크 번호의 비트 수가 가장 긴 것을 찾는다.
이마저도 비슷하다면 메트릭 값이 작은 쪽을 중계 대상으로 판단한다.
해당하는 행이 한 개도 발견되지 않은 경우라면 라우터는 패킷을 폐기하고 ICMP 메시지로 송신처에 이 사실을 통지한다.
5. 해당하는 경로가 없는 경우에 선택하는 기본 경로
- 경로표에서 마지막 1행은 넷마스크 항목이 0.0.0.0인데 이는 비교 동작을 실행하지 않아도 된다는 것을 의미한다.
모든 주소에 일치하기 때문이다. - 이 행을 기본 경로라고 하며, 여기에 등록한 라우터를 기본 게이트웨이라고 한다.
- 경로표에서 해당하는 경로가 없으면, 기본 게이트웨이로 중계한다.
6. 패킷은 유효 기간이 있다.
- 경로표에서 중계 대상을 찾으면 패킷을 출력측의 포트로 옮기고 여기에서 송신해야 하는데, 라우터는 우선 TTL(Time to Live) 이라는 IP 헤더의 필드를 갱신해야 한다.
- TTL이란 필드는 패킷의 생존 기간을 나타낸다.
- 라우터를 경유할 때마다 이 값을 1씩 줄이다가 이 숫자가 0이 되면 패킷의 생존 기간이 만료되는 것으로 간주하여 패킷을 폐기한다.
- 이 원리는 패킷이 순환하는 사태를 막기 위한 것이다. 보통 TTL은 64, 128로 설정.
- 놀라운 사실은 현재 인터넷은 지구의 반대편까지 액세스해도 경유하는 라우터 수가 많아야 수십개 정도라고 한다.
7. 큰 패킷은 조각 나누기 기능으로 분할한다.
- 중계하든 패킷의 크기가 출력측의 패킷 최대 길이를 초과하면 그대로는 패킷을 송신할 수 없다.
- 이 경우에는 IP 프로토콜에 규정된 조각 나누기(fragmentation)라는 방법을 사용해 패킷을 분할하고, 패킷의 길이를 짧게 만든 후 중계한다.
- TCP 헤더는 사용자 데이터가 아니지만 IP 프로토콜의 관점에서 본 경우는 데이터로 취급된다.
- 따라서 출력측의 MTU에 맞춰 데이터 부분(TCP 헤더 + 데이터)을 맨 앞부분부터 차례대로 잘라낸다.
- 이렇게 해서 데이터를 분할하면 여기에 IP 헤더를 붙인다. 조각나누기로 분할한 핵심 정보를 IP 헤더에 붙인 것이다.
- 만약 플래그 필드가 분할 불가로 되어있으면 패킷을 폐기하고 ICMP 메시지를 송신처에 통지한다.
8. 라우터의 송신 동작은 컴퓨터와 같다.
- 패킷의 송신 동작은 이더넷인지 ADSL인지, 즉 기술에 따라 다르다.
- 라우터가 다음에 건네줄 상대를 판단하는 방법은 총 2가지다.
- 첫 번째는 경로표의 게이트웨이 항목에 IP 주소가 쓰여있으면 IP 주소가 건네줄 상대다.
- 두 번째는 경로표의 게이트웨이 항목에 IP 주소가 쓰여있지 않다면 수신처 IP 주소가 건네줄 상대다.
- 이를 통해 상대의 IP 주소가 결정되면 ARP로 IP 주소에서 MAC 주소를 조사하고, 결과를 수신처 MAC 주소로 설정한다.
ARP 캐시가 있으면 사용하고, 없다면 ARP로 조회를 보내 주소를 조회한다. - 그 다음 송신처 MAC 주소 필드는, 출력측의 포트에 할당된 MAC 주소로 설정하고 타입 필드에 0800을 설정한다.
- 이렇게 패킷이 만들어지면 전기 신호로 변환해 포트에서 송신하는데, 컴퓨터와 동일하다.
9. 라우터와 스위칭 허브의 관계
- 통신 상대까지 패킷을 전달하는 전체의 동작은 IP(라우터)가 담당하고,
이 동작을 할 때 다음 라우터까지 패킷을 운반하는 부분은 이더넷(스위칭 허브)가 담당한다.
04. 라우터의 부가 기능
1. 주소 변환으로 IP 주소를 효율적으로 이용한다.
- 주소 변환에서 중요한 개념은 프라이빗 주소와 글로벌 주소다.
- 글로벌 주소는 ISP가 할당하는 주소이며, 인터넷에 1개만 존재하는 고유 IP다.
- 프라이빗 주소는 별개로 독립된 네트워크 내부에서 사용하는 IP 주소다.
독립된 네트워크에서 사용하므로 다른 네트워크와 같은 주소가 있어도 문제가 없다. - 프라이빗 주소로 사용하는 범위는 아래 범위다.
- 10.0.0.0 ~ 10.255.255.255
- 172.16.0.0 ~ 172.31.255.255
- 192.168.0.0 ~ 192.168.255.255
- 물론 프라이빗 주소도 독립 네트워크에서 중복되면 안된다.
- 외부에 독립 네트워크를 공개하는 서버를 접속하는 부분(글로벌 IP 할당)과 독립 네트워크 두 가지가 필요하다.
- 독립된 네트워크에는 프라이빗 주소를 할당하고 인터넷과는 직접 패킷을 주고받지 않도록 특별한 구조를 사용하여 접속하는데,
이 구조가 바로 주소 변환(NAT, network address translation)이다.
2. 주소 변환의 기본 동작
- 주소변환의 구조는 패킷을 중계할 때 IP 헤더에 기재된 IP 주소와 포트 번호를 바꿔 쓰는 것이다.
- TCP의 접속 동작에서 최초로 흐르는 패킷을 인터넷에 중계할 때 송신처의 IP 주소를 프라이빗 주소에서 글로벌 주소로 바꿔 쓴다.
- 여기에서 사용하는 글로벌 주소는 주소 변환 장치(라우터, 방화벽 등)의 인터넷측에 있는 포트에 할당된 주소로,
이것과 동시에 포트 번호도 바꾸어 쓴다. 포트 번호쪽은 미사용 번호를 주소 변환 장치가 적당히 선택해 사용한다. - 그리고 바꿔쓰기 전의 프라이빗 주소와 포트 번호, 바꿔쓴 후의 글로벌 주소와 포트 번호를 한 세트로 하여 주소 변환 장치 내부에 있는 대응표에 기록한다.
- 송신처의 IP 주소와 포트 번호를 바꿔 쓴 후 패킷을 인터넷에 송출한다.
- 그러면 패킷은 서버에 도착해 서버에서 회신 패킷이 돌아온다.
- 서버는 송신처에 회신을 돌려보내므로 회신 패킷의 수신처는 바꿔쓴 글로벌 주소와 포트 번호가 되어 있을 것이다.
- 이 글로벌 주소는 주소 변환 장치에 할당 되어 있으므로 회신 패킷은 주소 변환 장치에 되돌아온다.
- 주소 변환 장치는 주소의 대응표에서 글로벌 주소와 포트 번호를 찾아서 수신처를 대응하는 프라이빗 주소와 포트 번호로 바꿔쓰고, 사내 네트워크에 패킷을 보낸다. 이렇게 해서 송신처에 응답 패킷이 도착한다.
- 이후 접속 동작이 끝나면 대응표에 등록한 것을 삭제한다.
3. 포트 번호를 바꿔쓰는 이유
- 포트 번호는 16비트 수치이므로 수만 개의 값을 취할 수 있다.
- 이것을 글로벌 주소와 한 세트로 하여 프라이비트 주소에 대응시키면 한 개의 글로벌 주소를 수만 개의 프라이비트 주소에 대응시킬 수 있는데, 이렇게 하는 쪽이 글로벌 주소의 이용 효율이 높아진다.
4. 인터넷에서 회사로 액세스한다.
- 사내 네트워크가 NAT 방식을 도입하고 있다.
- 인터넷에서 사내로 패킷을 중계 할 때는 대응표에 등록되어 있지 않으면 중계할 수 없다.
- 그러므로 인터넷에서 사내 네트워크로 패킷을 보낼 수 없다. 이것은 부정 침입을 방지하는 효과가 있다.
- 인터넷에서 사내에 액세스 하고 싶다면 수동으로 대응표에 등록을 해야 한다.
- 서버의 프라이빗 주소를 주소 변환 장치에 수동으로 등록해 두면 사내에 있는 프라이빗 주소를 할당한 서버를 공개할 수 있다.
5. 라우터의 패킷 필터링 기능
- 패킷 필터링 기능도 라우터의 중요한 부가 기능이다.
- 패킷을 중계할 때 MAC 헤더, IP 헤더, TCP 헤더에 기록되어 있는 내용을 조사하여 그것이 사전에 설정한 조건에 합치되면 패킷을 중계하거나 폐기하는 동작을 실행한다.
- 대부분의 방화벽이라는 기기나 소프트웨어는 이 원리를 이용해 부정 침입을 방지한다.
참고자료
컴퓨터 네트워킹 하향식 접근 제 7판
성공과 실패를 결정하는 1%의 네트워크 원리
반응형
댓글