✏️ 학부 과정을 공부하면서 정리하는 과정에서 잘못된 정보가 표기될 수 있습니다. 해당 부분은 댓글을 통해 지적해주시면 감사하겠습니다.
Computer Networking: A TOP-DOWN APPROACH
책을 통해 컴퓨터 네트워크 공부를 하면서 이해한 내용을 정리하려고 한다. 이번 글에서는 Chapter 6: The Link Layer and LANs
링크 계층과 근거리 네트워크에 관해서 정리한다.
노드 : 호스트(hosts) 또는 라우터(routers)
링크 : 통신 경로를 따라 인접한 노드를 연결하는 통신 채널 (유선, 무선, LANs 등등)
2 계층 패킷 : 프레임(frame) : 데이터 링크 계층에서 데이터 전송 단위, 캡슐화된 데이터그램
데이터 링크 계층(data-link layer) : 한 노드에서 물리적으로 인접한 노드로 데이터그램을 전송하는 책임을 가진다.
물리적으로 인접한 노드 : 직접 연결된 두 장치, 라우터와 라우터 혹은 라우터와 컴퓨터 등등
💡 OSI7계층의 각 계층별 데이터 전송 단위 : 응용, 표현, 세션 계층(메시지) -> 전송 계층(세그먼트) -> 네트워크 계층(패킷, 데이터그램) -> 데이터 링크 계층(프레임) -> 물리 계층(비트)
프레임화(framing) : 2계층 프로토콜은 데이터를 링크를 통해 전송하기 전에 3계층 데이터그램을 프레임으로 캡슐화 과정을 진행한다. 이 때 데이터그램에 2계층 헤더(출발지, 목적지 MAC 주소 등등)가 추가된다.
링크 접속(link access) : MAC 프로토콜은 프레임이 링크로 전송되는 규칙을 지정한다. 송신자는 링크가 유휴 상태일 때 프레임을 전송할 수 있다.
인접 노드간 신뢰할 수 있는 전달(reliable delivery between adjacent nodes) : 링크 계층 프로토콜이 안정적인 전달 서비스를 제공하려면 각 네트워크 계층 데이터그램이 오류 없이 링크를 통해 이동하는 것을 보장해야한다.
💡 링크 레벨(2계층)과 종단간(4계층)은 신뢰성을 갖춘 이유는? -> 각각의 신뢰성의 중점의 이유가 있다.
링크 레벨(2계층) : 두 개의 인접한 노드의 직접적인 통신(개별 링크)에 신뢰성의 중점을 둔다. 인접 노드간 안전한 전달을 보장한다.
종단간(4계층) : 전체 통신 경로의 신뢰성을 중점으로 출발지에서 목적지로 안전한 전달을 보장한다.
흐름 제어(flow control) : 송신자와 수신자나 간의 데이터 전송 속도를 조절
오류 검출(error detection) : 물리 계층에서 데이터가 전송되는데 이 때 신호 감쇠(signal attenuation), 잡음(noise)와 같은 에러를 데이터 무결성을 위해 2계층에서 검출한다.
오류 수정(error correction) : 수신기는 재전송에 의존하지 않고 비트 오류를 식별하고 수정한다. 결과적으로 해당 오류를 처리하기 위해 데이터 패킷을 다시 보내달라는 요청 없이 오류를 수정하고 처리할 수 있다.
반이중, 전이중(half-duplex and full-duplex) : 반이중은 한 번에 하나의 방향으로만 데이터를 전송할 수 있다. 예를들면 무전기와 같고, 전이중은 동시에 양방향으로 데이터를 전송할 수 있는 통신방식이다. 2계층은 이러한 방식으로 데이터를 전송한다.
네트워크 인터페이스 카드(Network Interface Card, NIC)
와 같은 어댑터 또는 칩에 존재한다.
링크 계층은 링크 계층 주소 지정 정보 수집 및 컨트롤러 하드웨어 활성화와 같은 상위 수준 링크 계층 기능을 구현한다. (중략) 따라서 링크 계층은 하드웨어와 소프트웨어의 결합이다.(책에 그대로 쓰여있음)
EDC(Error Detection and Correction bits) : 특정 데이터의 오류를 감지하고 수정하기 위해 추가적으로 포함된 비트이다. 데이터에서 오류를 갖미하는 기술에는 패리티 검사, 체크섬, 순환 중복검사가 있다.
EDC의 중복성(redundancy) : 중복성은 데이터에 추가적인 정보나 코드를 부여하여 데이터의 무결성을 보장하는 데 도움을 주는 것. EDC 비트는 이러한 중복성으로 데이터 패킷의 끝에 추가되며 수신기는 EDC 비트를 사용하여 전송된 데이터의 오류를 확인하고 수정한다. 즉, EDC 비트는 오류를 감지하고 수정하기 위해 추가적으로 포함된 중복 비트를 의미한다.
단일 패리티 비트(single bit parity) : 1차원의 비트 배열에 단일 패리티 비트를 추가하여 오류를 감지한다. 에러가 한 비트에서 생기면 정확하게 감지할 수 있지만, 에러가 2곳 이상에서 생기면 그렇지 못한 경우가 생긴다. 그래서 잘 쓰이지 않는다.
2차원 패리티 비트(two-dimensional bit parity) : 열과 행 모두 패리티 비트를 추가한다. 이렇게 하면 어디 비트에서 에러가 생겼는지 감지하고 수정할 수 있다.
데이터 블록의 각 바이트나 워드의 합을 계산하여 생성하고 그 값으로 오류 검출 비트로 사용한다. 체크섬 데이터는 간단하고 패킷 오버헤드가 거의 필요하지 않기 때문에 빠르게 계산할 수 있어서 인터넷에서 사용된다.
오늘날 네트워크에서 널리 사용되는 오류 탐지 기술로서 다항식 연산 코드로 알려져있다. 데이터를 전송하기 전에 송신측에서 미리 약속된 비트 배열을 사용하여 CRC 값을 계산하고 이 값을 데이터와 함께 전송한다. 수신 측에서는 동일한 CRC 계산을 하고 받아온 CRC 계산 값과 비교하여 데이터의 무결성을 확인한다. 체크섬보다 더 복잡한 알고리즘을 사용하기 때문에 더 많은 종류의 오류를 감지할 수 있다.
점대점(point-to-point) : 전화 회선을 통한 인터넷 접속(다이얼업, dial-up)을 위해 설계된 PPP(Point-to-Point Protocol) 보통 WAN에서 사용한다.
방송(broadcast) : 여러 장치들이 동일한 통신채널을 공유하여 데이터를 전송하는 구조. 한 장치가 공유된 매체를 통해 데이터를 전송할 때, 해당 데이터가 해당 매체에 연결된 모든 장치들에게 도달하게 된다. 이러한 특성은 공유된 통신 채널의 특성이다. 일반적으로 LAN 방식에서 사용된다.
단일 공유 브로드캐스트 채널에서 여러 장치(노드)가 프레임(데이터)을 전송할 수 있기 때문에 두 개 이상의 노드가 동시에 프레임을 전송하게되면, 채널은 공유되어있기 때문에 모든 노드가 동시에 여러 프레임을 수신하게되고 충돌이 발생한다. 이러한 충돌은 어떠한 수신 노드도 전송된 프레임을 읽을 수 없으며 관련된 모든 프레임이 손실되고 대역폭(브로드캐스트 채널)이 낭비된다.
그래서 다중 접속 프로토콜은 분산 알고리즘이며, 노드가 채널을 공유하는 방법을 결정하고, 공유 채널에 대한 접근을 관리함에 따라 앞에서 나온 충돌을 최소화한다.
이러한 다중 접속 프로토콜의 종류에는 채널 분할, 랜덤 접근, 순차 접근 방식이 있다.
공유 채널을 여러개의 작은 채널 또는 시간 슬롯으로 분할하여 각 노드에 할당한다.
TDMA, FDMA 방식이 있다.
여러 사용자가 동일한 주파수 대역을 공유하고 순차적으로 시간 슬롯을 할당받아 통신하는 접속 방식이다.
각 사용자는 할당된 시간 슬롯 동안에만 패킷(데이터)를 전송할 수 있으며, 그 외에 시간에는 다른 사용자가 해당 주파수 대역을 사용한다.
여러 사용자가 동시에 통신할 수 있도록 각 사용자에게 고유한 주파수 대역을 할당하는 접속 방식이다.
각 사용자는 할당받은 주파수 대역 내에서만 통신하며, 다른 사용자의 주파수 대역과 겹치지 않는다.
각 노드는 데이터를 전송할 때마다 채널에 무작위로 접근한다. 충돌이 발생하면 노드는 임의의 시간 동안 대기하고 재전송한다.
데이터를 재전송하기 위해 임의의 시간을 대기하는데 충돌 처리방식에 대해 많은 프로토콜이 존재한다.
데이터를 전송하기 전에 채널이 사용 중인지 감지한다. 채널이 사용 중이라면, 전송을 지연시키고 나중에 다시 시도한다. 충돌을 감지하지는 않는다.
CSMA 기능에 추가로 충돌을 감지한다.
데이터를 전송하는 동안 충돌이 감지되면 전송을 중단하고 잠시 후 다시 시도한다. 유선 네트워크(이더넷)에서 사용된다.
이더넷에서 사용되는 CSMA/CD 알고리즘
네트워크 계층에서 데이터그램을 받은 NIC는 프레임을 생성한다.
NIC가 idle(유휴) 상태의 채널을 감지하면 프레임 전송을 시작한다. 만약 채널이 사용중이면 채널이 idle상태 까지 대기한다.
NIC가 다른 전송을 감지하지 않고 전체 프레임을 전송한 경우 프레임 전송을 완료한다.
데이터가 전송되고 있는 도중 NIC가 다른 전송을 감지하게 되면, 전송을 취소하고 jam signal을 전송한다.
전송 취소 후 NIC는 binary (exponetial) back off
알고리즘에 들어간다. 이 알고리즘은 충돌이 일어났을 때 일어난 장소에서 다시 전송하기 전에 잠시 임의의 시간동안 기다리는 과정이다.
CSMA/CA는 CSMA 기능에 충돌을 회피하는 기능이 추가된다. 충돌 감지 기능은 포함되지 않는다.
초기 ALOHA는 특정 시간에 데이터를 전송하고 일정 시간 동안 응답을 기다린다. 만약 응답을 받지 못하면 패킷이 다른 패킷과 충돌했다고 가정하고 재전송을 시도한다.
Slotted ALOHA는 이러한 ALOHA에서 발전된 프로토콜이다. 시간을 동일한 크기의 슬롯으로 나누고 이 슬롯 시작 시간에만 데이터를 전송할 수 있다. 슬롯으로 나눈 특정 시간 구간 내로 전송을 제한하기 때문에 충돌의 가능성을 줄이는데 도움이 되며 높은 통신 효율성과 구현의 간단함을 보여준다.
그러나 모든 장치가 동일한 슬롯시간에 맞춰 동작하도록 시간 동기화 작업이 필요하다.
노드들은 차례대로 또는 특정 규칙에 따라 채널을 사용하는 권한을 얻는다.
폴링 프로토콜에서는 노드 중 하나가 마스터 노드로 지정되어야한다. 중앙 제어 장치가 다른 장치들에게 전송 권한을 부여하는 방식으로 동작한다. 만약 중앙 제어 장치가 다른 장치들에게 순차적으로 전송할 데이터가 있는지 물어보고 있으면 데이터를 전송하고 없으면 다음 장치로 넘어간다. 주요 장점은 충돌이 발생하지 않는 다는 것이다. 왜냐면 중앙 제어 장치가 각 장치간 정확한 전송 제어를 하기 때문이다.
네트워크 상의 장치들이 데이터를 전송할 권한을 얻기 위해 토큰이라는 패킷을 사용한다. 각 장치는 이 토큰이라는 패킷을 소유하고 있을 때만 데이터를 전송할 수 있다. 네트워크 시작 시, 토큰이 하나의 장치에게 할당된다. 장치는 데이터를 전송하고 다른 장치에게 토큰을 전달한다. 이런 방식으로 순차적으로 전달된다.
그러나 토큰 오버헤드가 발생하고 토큰이 손상되면 지연이 발생할 수 있다.
💡MAC 주소 : 48 비트
링크 계층의 주소 체계는 각 노드에 할당된 고유한 주소를 의미한다. 일반적으로 NIC에 할당되는 주소로 MAC이라고 알려져있다. MAC은 제조사와 고유 번호로 할당된다. 이 주소는 네트워크 내의 각 장치를 고유하게 식별하는데 사용된다.
MAC 주소는 플랫(flat)한 주소라고 한다. 이는 MAC 주소는 계층적이지 않고 고유한 값으로 구성되어 있다는 것을 의미한다. 만약 NIC를 다른 컴퓨터나 장치에 설치하더라도 그 고유 주소는 변하지 않는다. 이는 MAC 주소의 이동성을 의미한다.
반면에 IP 주소는 계층적이다. IP 주소 체계가 특정 구조와 순서를 가지지기 때문이다. 그래서 포터블(portable)하지 않다라고 한다. IP 주소가 장치가 연결된 특정 IP 서브넷에 달라진다.
ARP는 IP 주소를 해당하는 MAC 주소로 변환하는 프로토콜이다. 컴퓨터가 같은 로컬 네트워크 내의 다른 컴퓨터에 패킷을 전송하려 할 때, 목적지 IP주소는 알고 있어야 하지만 해당 IP 주소의 MAC 주소를 모를 때 ARP를 사용하여 MAC 주소를 알아낼 수 있다.
💡 MAC은 아는데 IP를 모를 때 -> RARP
💡 패킷이 라우터를 지날 때 데이터그램에 추가되는 출발지 MAC 주소와 목적지 MAC 주소는 해당 노드와 다음 노드의 MAC 주소로 변경된다.
이더넷은 가장 성공한 LAN 기술이다. LAN이 시장을 장악할 수 있었던 이유는 몇가지 이유가 있는데, 먼저 이더넷은 최초로 널리 배포된 고속 LAN이었다. 이더넷이 초기에 배포되었기 때문에 네트워크 관리자들은 다른 LAN 기술로 전환하기가 꺼려졌다. 둘째, 토큰 링, ATM과 같은 기술들은 이더넷보다 더 복잡하고 비용이 많이 들기 때문이다. 셋째, 만약 다른 LAN기술로 전환해야하는 이유가 있다면 더 빠른 속도기 때문인데 이더넷은 거의 동일하거나 더 높은 속도로 작동하는 버전이 개발되어왔다.
버스형, 스타형 등등의 토플로지가 있다.
데이터 필드 : IP 데이터그램을 전달한다.
목적지 주소 : 대상 주소의 MAC 주소가 포함된다.
출발지 주소 : 프레임을 LAN으로 전송하는 출발지 MAC 주소가 포함된다.
유형 필드 : 이더넷이 네트워크 계층 프로토콜을 다중화할 수 있도록 허용한다. 모두 한계층의 프로토콜을 위 계층의 프로토콜에 연결하는 역할을 한다.
CRC(순환 중복 검사) : 프레임의 비트 오류를 감지할 수 있도록 한다.
프리앰블(preamble) : 이더넷 프레임은 8바이트 프리앰블 필드로 시작한다. 처음 7바이트 각각의 값은 10101010
이고 마지막 바이트는 10101011
이다. 프리앰블은 수신 어댑터를 깨우고 동기화 하는 역할을 한다. 이러한 동기화 과정의 이유는 송수신간 사용자들의 전송 속도가 다르기 때문이다.
Ethernet -> Unreliable, Connectionless
비신뢰성(unreliable)
어댑터 B는 어댑터 A로부터 프레임을 수신할 때 CRC 검사를 통해 프레임을 실행하지만, 프레임 CRC 검사를 통과할 때 승인을 보내지 않으며 프레임이 CRC 검사에 실패할 때 부정적인 승인을 보내지도 않는다. 만약 CRC 검사에 실패하면 어댑터 B는 해당 프레임을 삭제(폐기)한다. 따라서 어댑터 A는 전송된 프레임이 어댑터 B에 도달하고 CRC를 통과했는지 알 수 없다.
이로인해 이더넷은 단순하고 저렴하게 만든다. 그러나 이는 데이터그램 스트림에 간격(데이터 손실)이 있을 수 있다는 뜻이된다.
즉, 이더넷은 기본적으로 송신측에서는 데이터 프레임을 전송하고, 해당 프레임이 성공적으로 도착했는지 확인하지 않으며, 수신측은 만약 데이터에 오류가 발생했을 경우 해당 데이터를 재전송을 요청하지 않으며, 단순히 폐기처리한다.
비연결성(connectionless)
이더넷은 데이터를 전송하기 전에 목적지와 연결을 설정하지 않는다. 장치는 피룡할 때 마다 데이터를 전송한다. 이는 단순하고 효율적으로 대량의 데이터를 빠르게 전송할 수 있다.
💡 이더넷의 MAC 프로토콜은 Unslotted CSMA/CD with Binary backoff를 사용한다.
💡 이더넷 표준 IEEE 802.3
스위치의 역할은 들어오는 링크 계층 프레임을 수신하고 저장하며, 나가는 링크로 저장한 프레임을 전달하는 것이다. 스위치와 라우터의 차이점은 라우터는 전체 네트워크의 상태를 감지하고 이를 바탕으로 네트워크 트래픽 제어를 할 수 있지만, 스위치는 근시적인 트래픽 처리만 가능하다.
스위치는 투명하다(transparent)라고 할 수 있다고 한다. 왜냐하면, 스위치는 네트워크에서 다른 장치나 사용자는 스위치의 존재를 인식하지 못하고 데이터 흐름에 직접적인 영향을 주지도 않고 그저 데이터가 부드럽게 통과하게 되기 때문이라고 한다.
스위치는 동시에 여러 통신 세션을 지원할 수 있다. 여러 장치들이 동시에 데이터를 전송하고 수신할 수 있다는 뜻이다. 어떻게 동시에 여러 통신 세션을 지원할 수 있는지는 각 호스트는 스위치에 곡립적인 통신 경로를 가지고 있기 때문이다.
스위치는 패킷을 임시저장(버퍼링)할 수 있다. 이는 스위치가 패킷을 받았을 때 즉시 전송하지 않고 필요한 경우 일정시간 저장한 후 전송할 수 있다.
스위치는 충돌없이 양방향 통신이 가능하다.
필터링이란, 프레임을 일부 인터페이스로 전달해야하는지 아니면 그냥 삭제해야하는지 결정하는 기능이다. 이는 스위치 테이블을 이용한다.
전달(전송)이란 프레임이 전달되어야하는 인터페이스를 결정한 다음 프레임을 해당 인터페이스로 이동시키는 스위치의 기능이다.
💡 링크 계층 스위치의 장점은 링크 계층의 스위치는 총돌로 낭비되는 자원(대역폭)이 없다. 스위치는 보다 좋은 보안으로 네트워크를 관리할 수 있다.
저장 후 전달
라우터 : 네트워크 계층 장치
스위치 : 데이터 링크 계층 장치
포워딩 테이블
라우터 : IP 주소 기반
스위치 : MAC 주소 기반
라우터와 스위치는 트래픽 처리가 가능하지만, 플러그 앤 플레이는 스위치만 해당하고 최적의 라우팅은 라우터만 가능하다.
Virtual Local Area Network는 가상 근거리 통신망이라고 한다.
Port-based VLAN : 트래픽 격리(Traffic isolation)를 통해 네트워크 내의 특정 그룹의 장치를 논리적을 분리하여 그룹 내의 장치 끼리 통신할 수 있도록 한다. 이러한 VLAN 트래픽은 다른 VLAN으로 누출되지 않는다. 또한, 동적 멤버쉽(Dynamic Membership)을 통해 장치나 사용자를 한 VLAN에서 다른 VLAN으로 유연하게 이동할 수 있다. 물리적 위치나 연결에 한정되지 않고 설정 가능하다. 마지막으로 VLAN 간의 전달(Forwarding between VLANs)를 통해 서로 다른 VLAN간 통신할 수 있다. (라우터와 같은 장치를 이용)
MPLS란 가상 회선 패킷 교환이라고 불리는데, 대량의 트래픽을 고속으로 처리하기 위한 가상 레이블 기반 데이터 전송 기법이다.
MPLS의 목표는 고정 길이 레이블과 가상 회선을 기반으로 한 인프라를 포기하는 것이 아니라 IP 데이터그램 전달 인프라를 보강하여 선택적으로 라우터가 고정 길이 레이블을 기반으로 데이터그램을 전달하는 것이다.
MPLS는 IP와 다른 방식으로 패킷을 전달할 수 있는 유연성을 제공한다. 그래서 트래픽 엔지니어링 및 다양한 경로 선택을 통해 IP 라우팅과 다른 전달 결정을 할 수 있다.
IP Routing : IP 라우팅은 패킷의 목적지 주소만을 기반으로 목적지 경로가 결정된다. 이는 패킷의 출발지 주소는 경로 결정에 영향을 주지 않는다. IP 라우팅은 라우팅 테이블에서 목적지 IP 주소와 일치하는 경로를 찾아 패킷을 전달한다.
MPLS Routing : MPLS 라우팅은 패킷의 출발지와 목적지 주소 모두 경로 결정에 기반이 될 수 있다. 특정 출발지에서 오는 트래픽을 특정 경로로 전달하게 할 수 있다. 그리고 MPLS는 빠른 재라우팅(fast reroute)를 제공한다. 이는 연결 실패와 같은문제가 발생했을 때 미리 계산된 백업 경로를 사용하여 트래픽을 빠르게 재라우팅하는 것을 의미한다.
signaling이란, 네트워크 장비 간의 통신을 통해 라우팅 정보를 교환하는 과정이다. MPLS의 신호 전달 프로토콜에는 OSPF, BGP, RSVP가 있다.
OSPF(Open Shortest Path First)는 원래 IP 라우팅 프로토콜을 일종으로 네트워크의 경로 정보를 교환하여 최단 경로를 찾는 것이다. MPLS에서는 이러한 OSPF를 수정하여 사용한다.
RSVP는 경로(자원)를 예약하고 QoS를 제공하는 프로토콜이다.
데이터 센터는 호스트와 데이터 센터를 인터넷으로 연결하는 역할을 한다.
TOP Switches : Top of Rack, 랙의 최상단
Server racks : 호스트들은 렉에 쌓인다.