25년2학기/컴퓨터 네트워크

컴퓨터 네트워크) 강의 정리 (2025.10.01)

kimchangmin02 2025. 10. 1. 19:58

 

1. 데이터 링크 계층 (Data Link Layer)의 역할과 기능 (복습)

데이터 링크 계층의 핵심 미션은 신뢰할 수 없는 물리 계층을 신뢰성 있는 링크처럼 보이게 만드는 것입니다. 이를 위해 다음 4가지 주요 기능을 수행합니다.

  1. 프레이밍 (Framing / Encapsulation)
    • 상위 계층에서 받은 데이터 덩어리(패킷)를 전송에 적합한 형태로 포장하는 과정입니다.
    • 데이터의 시작과 끝을 명확히 구분하는 것이 핵심입니다.
  2. 오류 제어 (Error Control)
    • 오류 검출 (Detection): 전송 중 발생한 비트 오류나 프레임 손실을 찾아냅니다. (예: CRC)
    • 오류 복구 (Correction/Recovery): 발견된 오류를 해결합니다. (예: 재전송 - ARQ)
  3. 흐름 제어 (Flow Control)
    • 송신자가 수신자의 처리 속도보다 빠르게 데이터를 보내 수신자 버퍼가 넘치는 것을 방지하는 기능입니다.
    • 송신자가 수신자의 속도를 고려하여 전송 속도를 조절합니다.
  4. 다중 접속 제어 (Multiple Access Control)
    • 하나의 통신 회선(링크)을 여러 노드가 공유하는 공유 링크(Shared Link) 환경에서 필요합니다.
    • 두 개 이상의 노드가 동시에 데이터를 전송하여 발생하는 **충돌(Collision)**을 방지하고, 한 번에 한 노드만 전송하도록 조정하는 기능입니다.
    • 점대점 링크(Point-to-Point Link)에서는 필요 없습니다.

2. 케이스 스터디 1: PPP (Point-to-Point Protocol)

PPP는 주로 WAN 환경에서 라우터와 라우터를 연결하는 점대점(Point-to-Point), 풀 듀플렉스(Full-duplex, 양방향 동시 통신 가능) 링크를 위해 설계된 프로토콜입니다.

  • 계층: 물리 계층을 포함하지 않고, 오직 데이터 링크 계층만 정의합니다. 어떤 종류의 물리 계층 위에도 동작할 수 있습니다.
  • 주요 기능별 구현 방식:
    • 프레이밍:
      • **플래그(Flag)**라는 특별한 1바이트 패턴(01111110)을 프레임의 시작과 끝에 붙여 구분합니다.
      • 데이터 내부에 플래그와 동일한 패턴이 있을 경우의 혼동을 막기 위해 바이트 스터핑(Byte Stuffing) 기술을 사용합니다.
    • 오류 제어:
      • 검출: CRC를 사용합니다. (프레임 트레일러에 FCS 필드로 포함)
      • 복구: 수행하지 않음. 오류가 발견된 프레임은 그냥 버립니다. 유선 링크는 오류 발생 빈도가 낮고, 최종적으로 전송 계층(TCP)에서 복구해 줄 것이라고 가정하기 때문입니다.
    • 흐름 제어:
      • 수행하지 않음. 설계 당시 마이크로프로세서의 발전 속도가 빨라 수신자 버퍼 오버플로우는 문제 되지 않을 것이라 예측했으나, 링크 속도가 더 빠르게 발전하여 이 예측은 일부 빗나갔습니다.
    • 링크 생명주기 관리 (Lifecycle Management):
      • 데이터 전송 전에 논리적 링크를 설정(Setup)하는 단계가 필요합니다. (LCP 프로토콜 사용)
      • 인증(Authentication), IP 주소 할당 같은 부가 기능이 포함되어 있어 2000년대 초반에 널리 사용되었으나, 계층 구조 원칙에 맞지 않아 현재는 인기가 줄었습니다.

3. 케이스 스터디 2: 이더넷 (Ethernet)

이더넷은 인터넷에서 가장 널리 사용되는 링크 기술로, 주로 LAN(근거리 통신망)을 구성하는 데 사용됩니다.

  • 계층: 물리 계층과 데이터 링크 계층을 모두 정의합니다. (PPP와의 가장 큰 차이점)
  • 특징:
    • 공유 링크를 만드는 기술입니다.
    • 주로 라우터와 최종 사용자 장치를 연결하는 **접근 링크(Access Link)**로 사용됩니다.
    • 성공 요인: 비교적 단순한 구조, 시장 선점으로 인한 저렴한 가격, 동시대 기술 대비 빠른 속도.
  • 물리 계층:
    • UTP(랜선), 광섬유(Fiber) 등 다양한 전송 매체를 사용하며, 시대에 따라 10Mbps에서 100Gbps 이상으로 계속 발전해왔습니다.
    • UTP (Unshielded Twisted Pair): 외부 차폐 없이 두 가닥의 구리선을 꼬아 만든 케이블. 간섭을 줄이기 위해 선을 꼬아놓았으며, 가장 보편적인 랜선입니다.
  • 프레이밍 (이더넷 프레임 구조):
    • 프리앰블 (Preamble, 8바이트): 프레임의 시작을 알리는 약속된 패턴. 잡음 속에서도 프레임의 시작을 명확히 식별하기 위해 PPP의 플래그보다 훨씬 깁니다.
    • 목적지/송신지 주소 (각 6바이트): MAC 주소가 사용됩니다. 공유 링크이므로 프레임을 받을 특정 노드를 지정해야 합니다.
    • 타입/길이 (2바이트): 두 가지 종류의 프레임이 존재하여 이 필드의 의미가 다릅니다.
      1. 이더넷 II (DIX) 포맷 (주로 사용): 이 필드를 **타입(Type)**으로 사용. 상위 계층 프로토콜(예: IP, ARP)을 명시합니다. 필드 값이 1536 이상입니다.
      2. IEEE 802.3 포맷 (표준, 거의 사용 안 함): 이 필드를 **길이(Length)**로 사용. 페이로드의 바이트 크기를 명시하여 프레임의 끝을 간접적으로 알립니다. 필드 값이 1526 이하입니다.
    • 데이터 (Payload, 46~1500바이트): 상위 계층(주로 IP)에서 받은 패킷이 들어갑니다. 최소 크기(46바이트) 제한이 있습니다.
    • FCS (Frame Check Sequence, 4바이트): 오류 검출을 위한 CRC 코드입니다.
  • 오류/흐름 제어:
    • 오류 복구: PPP와 동일하게 수행하지 않고 오류 프레임을 버립니다.
    • 흐름 제어: 원래 없었으나, 링크 속도가 매우 빨라지면서 필요성이 대두되어 PAUSE 프레임이라는 간단한 기능이 추가되었습니다. 수신자가 너무 바쁠 때 송신자에게 잠시 전송을 멈춰달라고 요청하는 기능입니다.
  • MAC 주소 (48비트):
    • 전 세계의 모든 이더넷 카드(랜카드)가 고유한 주소를 갖도록 설계되었습니다.
    • 상위 24비트: 제조사 식별 코드 (OUI)
    • 하위 24비트: 제조사가 할당하는 일련번호 (시리얼 넘버)

4. 이더넷의 다중 접속 제어: CSMA/CD (시험 핵심)

이더넷은 공유 링크에서 충돌을 관리하기 위해 CSMA/CD (Carrier Sense Multiple Access with Collision Detection) 방식을 사용합니다.

1) 기본 원리: CSMA (Carrier Sense Multiple Access)

  • "말하기 전에 먼저 들어라 (Listen before talk)"
  • Carrier Sense: 데이터를 보내기 전, 채널(회선)이 사용 중인지(신호가 있는지) 감지합니다.
  • Multiple Access: 채널이 비어 있을 때 데이터를 전송합니다.
  • CSMA의 한계:
    1. 전파 지연 (Propagation Delay): A노드가 보낸 신호가 멀리 있는 B노드에 도달하기 전에, B가 채널이 비었다고 착각하고 전송을 시작하면 충돌이 발생합니다.
    2. 동시 대기 후 전송: 여러 노드가 한 노드의 전송이 끝나기를 동시에 기다리다가, 채널이 비워지자마자 동시에 전송을 시도하여 충돌이 발생합니다.

2) 개선책: CD (Collision Detection) 추가

  • "말하면서 동시에 들어라 (Listen while talk)"
  • Collision Detection: 데이터를 전송하는 동시에 채널을 계속 감시합니다.
  • 만약 정상보다 높은 전압(에너지)이 감지되면, 다른 노드와 신호가 겹친 충돌 상황으로 인지합니다.
  • 충돌 감지 시 행동:
    1. 즉시 데이터 전송을 중단합니다.
    2. 충돌 발생을 모든 노드에게 알리기 위해 **잼 신호(Jam Signal)**를 보냅니다.
    3. 이후 **충돌 해소(Collision Resolution)**를 위한 절차에 들어갑니다.

3) 충돌 해소: 지수적 백오프 알고리즘 (Exponential Backoff)

충돌 후 모든 노드가 즉시 재전송하면 또 충돌이 발생하므로, 대기 후 재전송하는 규칙이 필요합니다.

  • 플로우차트 요약:
    1. 충돌 발생: 충돌을 감지하고 전송을 중단합니다.
    2. 충돌 횟수(m) 증가: 내부 충돌 카운터 m을 1 증가시킵니다.
    3. 랜덤 대기 시간 선택: 0부터 (2^m - 1) 사이의 정수 k를 랜덤으로 선택합니다.
    4. 대기: k에 비례하는 시간만큼 대기합니다.
    5. 재전송 시도: 대기 시간이 끝나면, 다시 CSMA의 첫 단계(채널 감지)로 돌아가 재전송을 시도합니다.
  • 핵심 개념:
    • Random: 대기 시간을 랜덤으로 정해 충돌했던 노드들이 동시에 재전송할 확률을 낮춥니다.
    • Exponential: 충돌이 반복될수록(m이 커질수록) 랜덤 대기 시간의 선택 범위가 지수적으로 넓어집니다. 이를 통해 반복적인 충돌 가능성을 크게 줄여 효율적으로 충돌을 해소합니다.

 

 

 

 

 

 

 

개념 간의 관계 명확화

먼저 세 가지 개념을 구분하면 이해하기 쉽습니다.

  1. 계층 (Layer): 이것은 '개념적인 역할' 또는 **'임무(Mission)'**입니다. 데이터 링크 계층의 임무는 "신뢰할 수 없는 물리적 회선을 통해 데이터를 안정적으로 옆 노드까지 전달하는 것"입니다. 이것은 추상적인 목표입니다.
  2. 프로토콜 (Protocol): 이것은 위 임무를 완수하기 위한 '구체적인 방법, 규칙, 절차를 정의한 설명서' 또는 **'기술 표준'**입니다. 데이터의 형식(프레임 구조), 통신 순서, 오류 처리 방법 등이 상세히 명시된 문서나 약속입니다.
  3. 구현 (Implementation): 이것은 프로토콜이라는 설명서를 보고 실제로 만든 **'물리적인 장치(하드웨어)'**나 **'소프트웨어'**입니다. 예를 들어, 우리 컴퓨터의 '랜카드'는 이더넷 프로토콜의 규칙에 따라 만들어진 하드웨어 구현체입니다.

덜 애매한 표현으로 문장 다듬기

원문: "데이터 링크 계층은 물리적 링크를 통해 신뢰성 있는 데이터 전송을 보장하며, 대표적인 프로토콜로 PPP와 이더넷이 있습니다."

이 문장을 더 명확하게 표현하면 다음과 같습니다.

대안 1 (역할과 예시를 명확히 구분)

"데이터 링크 계층은 물리적 링크를 통해 신뢰성 있는 데이터 전송을 보장하는 역할을 담당합니다. PPP와 이더넷은 이 역할을 수행하기 위해 만들어진 구체적인 통신 규칙(프로토콜)의 대표적인 예시입니다."

대안 2 (목표와 방법을 강조)

"데이터 링크 계층의 목표는 신뢰성 있는 데이터 전송을 보장하는 것입니다. PPP와 이더넷은 이 목표를 달성하기 위한 대표적인 기술 표준(프로토콜)입니다."

대안 3 (비유를 사용한 설명)

"데이터 링크 계층이 '안전한 편지 배달'이라는 임무라면, PPP와 이더넷은 그 임무를 완수하기 위한 '편지 봉투 규격, 주소 표기법, 배달 절차' 등을 정의한 서로 다른 **두 가지 방식의 규정집(프로토콜)**과 같습니다."

결론적으로, 프로토콜은 '신뢰성 있는 데이터 전송을 보장'하는 임무를 수행하기 위한 구체적인 규칙의 집합이며, 그 규칙에 따라 만들어진 하드웨어나 소프트웨어가 실제 동작을 구현하는 것입니다.

 

 

 

 

 

 

 

 

링크 생명주기 관리란?

간단히 말해, 데이터 통신을 시작하기 전에 공식적인 '준비' 단계를 거치고, 통신이 끝나면 공식적인 '마무리' 단계를 거치는 것을 의미합니다.

마치 우리가 전화를 걸 때와 같습니다.

  1. 전화 걸기 (설정): 상대방에게 전화를 걸고, 상대방이 받으면 연결이 수립됩니다.
  2. 대화하기 (데이터 전송): 연결된 상태에서 본론인 대화를 나눕니다.
  3. 전화 끊기 (종료): 대화가 끝나면 "끊을게"라고 말하고 양쪽이 수화기를 내려놓아 연결을 완전히 종료합니다.

이처럼 '시작-유지-종료'의 명확한 단계를 갖추고 관리하는 것이 링크 생명주기 관리입니다.


이더넷과의 비교를 통한 이해

이 개념을 가장 쉽게 이해하는 방법은 이더넷(Ethernet)과 비교하는 것입니다.

  • 이더넷 (생명주기 관리 X):
    • 이더넷은 '플러그 앤 플레이(Plug and Play)' 방식입니다.
    • 랜선을 컴퓨터에 꽂으면 물리적으로 연결이 되고, 그러면 별도의 준비나 합의 과정 없이 바로 데이터 프레임을 보낼 수 있습니다.
    • 랜선을 뽑으면 그냥 연결이 끊어지는 것입니다. 공식적인 '시작'이나 '종료' 신호를 주고받는 절차가 없습니다.
  • PPP (생명주기 관리 O):
    • PPP는 물리적으로 선이 연결되었다고 해서 바로 데이터를 교환할 수 없습니다.
    • 본격적인 데이터 전송에 앞서, 다음과 같은 논리적인 링크 설정 단계를 반드시 거쳐야 합니다.

PPP의 링크 생명주기 3단계

  1. 1단계: 링크 설정 (Link Establishment)
    • 양쪽 노드가 통신을 시작하기 전에 서로 '협상'을 통해 통신 규칙을 정하는 단계입니다.
    • **LCP(Link Control Protocol)**를 사용하여 다음과 같은 사항들을 합의합니다.
      • 헤더 압축을 사용할 것인가?
      • 오류 검출(Checksum) 필드를 2바이트로 할 것인가, 4바이트로 할 것인가?
    • 이 단계에서 인증(Authentication) 절차를 통해 아이디와 비밀번호를 확인하기도 합니다.
  2. 2단계: 데이터 전송 (Data Transfer)
    • 위 설정 단계가 성공적으로 완료되어야 비로소 이 단계로 넘어올 수 있습니다.
    • IP 패킷과 같은 실제 사용자 데이터를 PPP 프레임에 담아 서로 주고받는, 통신의 본질적인 단계입니다.
    • 이 단계에서는 **NCP(Network Control Protocol)**를 통해 IP 주소를 할당받는 등의 네트워크 계층 설정도 이루어집니다.
  3. 3단계: 링크 종료 (Link Termination)
    • 데이터 전송이 모두 끝나면, LCP를 이용해 서로에게 "이제 통신을 끝내자"는 종료 메시지를 보냅니다.
    • 양쪽이 합의 하에 링크를 깔끔하게 닫고, 할당되었던 IP 주소 등의 자원을 반납합니다.

결론적으로 '링크 생명주기 관리'는 물리적 연결과는 별개로, 통신 세션을 논리적으로 열고(설정), 사용하고(전송), 닫는(종료) 체계적인 절차를 갖추고 있음을 의미합니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

컴퓨터 네트워크 강의 상세 정리 (2025.10.01)

1. 데이터 링크 계층의 4대 핵심 임무 (복습)

데이터 링크 계층의 존재 이유는 신뢰할 수 없는 물리 계층을 포장하여, 마치 오류가 발생하지 않는 것처럼 신뢰성 있는 링크로 만들어주는 것입니다. 이를 위해 다음 4가지 기능을 수행합니다.

  1. 프레이밍 (Framing / Encapsulation)
    • 목표: 데이터를 전송에 적합한 덩어리(프레임)로 포장하는 것.
    • 핵심 과제: 데이터 덩어리의 시작과 끝을 명확하게 표시하는 것.
  2. 오류 제어 (Error Control)
    • 목표: 전송 중 일부 비트가 깨지거나(error), 프레임 전체가 사라지는(loss) 문제 해결.
    • 세부 기능: 오류를 찾아내고(Detection), 발견 시 **복구(Correction/Recovery)**하는 것.
  3. 흐름 제어 (Flow Control)
    • 목표: 수신자의 처리 속도가 송신자보다 느릴 때, 수신자 버퍼가 넘쳐서 프레임이 손실되는 것을 방지.
    • 해결 방식: 송신자가 수신자의 처리 속도를 고려하여 전송량을 조절.
  4. 다중 접속 제어 (Multiple Access Control)
    • 필요 환경: 하나의 전선(링크)에 여러 노드가 연결된 공유 링크(Shared Link).
    • 목표: 둘 이상의 노드가 동시에 전송하여 신호가 얽히는 **충돌(Collision)**을 방지하고, 한 번에 한 명만 전송하도록 조정.
    • 참고: 노드가 1:1로 연결된 점대점 링크에서는 불필요한 기능.

2. 케이스 스터디 ①: PPP (Point-to-Point Protocol) 심화 복습

PPP는 주로 WAN 환경의 점대점 링크를 위한 프로토콜입니다.

  • 핵심 특징: 물리 계층과 독립적
    • PPP는 오직 데이터 링크 계층만 정의합니다. 이는 아래에 어떤 종류의 물리 계층 기술이 오든 그 위에서 동작하여 신뢰성을 더해줄 수 있다는 의미입니다. (이는 물리/데이터 링크 계층을 함께 정의하는 이더넷과의 큰 차이점입니다.)
  • 4대 기능 구현 방식
    • 프레이밍:
      • 플래그(Flag): 01111110 이라는 1바이트 패턴을 프레임 시작과 끝에 붙여 구분.
      • 바이트 스터핑(Byte Stuffing): 데이터(페이로드) 내부에 우연히 플래그와 동일한 패턴이 등장할 경우, 수신자가 프레임의 끝으로 착각하지 않도록 특수 문자를 삽입하는 기술.
    • 오류 제어:
      • 검출: **CRC(Cyclic Redundancy Check)**를 사용. (헤더의 FCS 필드가 바로 CRC 코드).
      • 복구: 수행하지 않음. 오류가 발견된 프레임은 그냥 버립니다.
        • 이유: ① 유선 링크는 오류 발생률이 매우 낮고, ② 복잡한 ARQ 프로토콜을 구현하고 싶지 않았으며, ③ 만약 복구가 필요하다면 경로의 최종단에 있는 전송 계층(TCP)이 어차피 해결해 줄 것이라고 믿기 때문.
    • 흐름 제어:
      • 수행하지 않음.
        • 이유: 설계 당시, 수신 측 컴퓨터(마이크로프로세서)의 성능이 빠르게 발전하여 버퍼가 넘칠 일이 없을 것이라 예측했기 때문.
        • 결과 (반은 맞고 반은 틀림): 프로세서도 빨라졌지만 링크의 속도는 그보다 훨씬 더 빨라져 현대의 고속 링크에서는 여전히 흐름 제어가 필요합니다.
    • 링크 생명주기 관리 (Link Lifecycle Management):
      • 개념: 이더넷처럼 케이블만 연결하면 바로 통신하는 것이 아니라, 데이터 전송 **전(前)에 논리적 연결을 설정(Setup)**하고, 통신이 **끝나면 연결을 종료(Terminate)**하는 공식적인 절차를 가짐.
      • 부가 기능: 이 설정 단계에서 인증(Authentication)  IP 주소 동적 할당 같은 고급 기능을 수행할 수 있어, 과거 전화선을 이용한 가정용 인터넷 접속(Dial-up)에 널리 사용되었음. (현재는 계층 구조 원칙에 맞지 않아 인기가 식음)

3. 케이스 스터디 ②: 이더넷 (Ethernet) 상세 분석

인터넷에서 가장 압도적인 점유율을 가진 **LAN(근거리 통신망)**용 공유 링크 기술입니다.

3.1. 이더넷의 역사와 성공 비결

  • 역사: 1973년 제록스(Xerox) 연구소에서 발명 (당시의 애플, 테슬라 같은 혁신 기업). 1983년 IEEE에서 국제 표준으로 제정.
  • 성공 비결:
    1. 단순함: 경쟁 기술(ATM 등)에 비해 프로토콜이 비교적 단순.
    2. 저렴한 가격: 단순한 구조와 치열한 시장 경쟁 덕분에 가격이 매우 저렴 (예: 1Gbps 랜카드 5천원~1만원).
    3. 빠른 속도: 동시대 기술 대비 항상 빠른 속도를 제공 (예: 1983년에 10Mbps, 90년대 전화선 모뎀은 56kbps).

3.2. 이더넷의 프레이밍 (프레임 구조)

  • 시작 표시: 8바이트 길이의 프리앰블(Preamble) 사용.
    • PPP(1바이트)보다 훨씬 긴 이유? 이더넷은 스스로가 물리 계층이기도 하므로, 잡음 속에서 프레임의 시작을 확실히 구분하기 위한 충분한 길이의 동기화 신호가 필요하기 때문.
  • 끝 표시: 명시적인 끝 표시자가 없음. 구현(하드웨어) 단계에서 신호의 에너지 레벨 변화나 CRC 코드가 일치하는 지점을 찾아내는 등, 제조사가 '재주껏' 알아서 식별하도록 맡겨짐.
  • 주소 필드 (목적지/송신지 각 6바이트):
    • 공유 링크이므로, 링크에 연결된 여러 노드 중 특정 수신자를 지정하기 위한 MAC 주소가 포함됨. (점대점 링크인 PPP에는 없음)
  • 타입/길이 필드 (2바이트) - ※ 중요: 두 가지 포맷 존재
    • 배경: 이더넷을 만든 산업계(DIX)와 표준을 제정한 학계(IEEE)의 철학 차이로 프레임 포맷이 두 종류가 됨.
      • 이더넷 II (DIX 포맷): 압도적으로 많이 사용됨. 데이터 링크 계층의 역할은 MAC(다중 접속 제어)까지라고 봄. 오류/흐름 제어는 유선에서 불필요하다고 판단. 이 필드를 **타입(Type)**으로 사용해 상위 계층 프로토콜(IP 등)을 명시.
      • IEEE 802.3 (표준 포맷): 거의 사용 안 됨. 데이터 링크 계층은 반드시 오류/흐름 제어(LLC)까지 책임져야 한다고 봄. 상위 계층은 항상 802.2 LLC 프로토콜이라고 정해져 있으므로, 이 필드를 길이(Length) 정보로 사용하여 프레임의 끝을 명확히 함.
    • 공존 방법 (운 좋은 우연): 타입 필드에 사용되는 코드 값은 모두 1536 이상이고, 프레임의 최대 길이는 1526 이하이므로, 이 필드의 값만 보고도 두 포맷을 구별할 수 있음.

3.3. 이더넷의 다중 접속 제어: CSMA/CD (※ 시험 핵심)

**CSMA/CD (Carrier Sense Multiple Access with Collision Detection)**는 이더넷의 충돌 관리 메커니즘입니다.

  1. CSMA (Carrier Sense Multiple Access): "일단 들어보고, 비었으면 말해라"
    • 동작: 데이터를 보내기 전, 채널이 비어있는지 먼저 감지(Carrier Sense)하고, 비어있을 때만 전송.
    • 문제점: CSMA만으로는 충돌을 완벽히 막을 수 없음.
      • 이유 1 (전파 지연): A가 보낸 신호가 B에게 도달하기 전, B는 채널이 비었다고 착각하고 전송하여 충돌 발생.
      • 이유 2 (1-persistent 방식): 여러 노드가 채널이 비기를 동시에 기다리다가, 비는 순간 '떼로' 달려들어 충돌 발생.
  2. CD (Collision Detection) 추가: "말하면서 동시에 들어라"
    • 동작: 데이터를 전송하는 동시에 채널의 전압을 계속 감시. 만약 내가 보내는 신호보다 강한 전압이 감지되면 충돌로 판단.
    • 효과: 충돌 발생 시, 헛된 전송(깨진 프레임을 끝까지 보내는 것)을 즉시 중단하여 시간과 대역폭 낭비를 최소화.
  3. 충돌 후 처리 (Collision Resolution): "재충돌을 피하는 지혜"
    • 문제점: 충돌을 감지한 노드들이 동시에 전송을 멈추면, 채널은 다시 비게 됨. 이 상태에서 모두가 다시 CSMA 규칙에 따라 동시에 재전송을 시도하면 무한 충돌이 발생함.
    • 해결책: 지수적 백오프 (Truncated Exponential Random Backoff) 알고리즘
      • 개념: 충돌이 발생하면, 즉시 재전송하지 않고 각자 임의의(Random) 시간 동안 기다린 후 재시도하는 것.
      • 동작 원리:
        1. 충돌 발생 시, 충돌 횟수 카운터 m을 1 늘린다.
        2. 0 부터 2^m - 1 사이의 범위에서 무작위 숫자 k를 선택한다.
        3. k에 비례하는 시간만큼 대기한 후, 다시 채널 감지부터 재전송을 시도한다.
      • 핵심 (Exponential): 충돌이 반복될수록(m이 커질수록) 대기 시간의 선택 범위가 지수적으로 넓어져, 또다시 동시에 전송을 시도할 확률이 급격히 낮아진다. 이를 통해 효율적으로 충돌을 해소한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

교수님이 설명하신 "개떼같이 달려든다"는 표현이 바로 이 상황을 묘사한 것입니다.

이 현상은 CSMA의 여러 변형 중 이더넷이 채택한 '1-persistent CSMA' 방식의 특징 때문에 발생합니다.


'동시 대기 후 충돌' 상황에 대한 단계별 설명

이 상황을 말로 설명할 때는 다음의 논리적 흐름을 따라가면 명확해집니다.

1. 배경: 1-Persistent CSMA의 규칙

먼저 '1-persistent' 방식이 무엇인지 정의하며 시작합니다.

"이더넷이 사용하는 1-persistent CSMA 방식에는 다음과 같은 규칙이 있습니다. 만약 데이터를 보내려고 채널을 확인했을 때 이미 다른 노드가 사용 중이라면, 채널이 비워질 때까지 포기하지 않고 '끈질기게(persistently)' 계속 지켜봅니다. 그리고 채널이 비워지는 바로 그 순간, 100%(확률 1)의 확률로 즉시 전송을 시도합니다."

2. 문제 상황: '대기열'의 형성

다음으로, 왜 여러 노드가 동시에 대기하게 되는지를 설명합니다.

"문제는 한 노드(A)가 긴 프레임을 전송하는 동안, 서로 다른 시간에 전송할 데이터가 생긴 여러 노드(B, C, D...)가 생겨난다는 점입니다. 예를 들어, A가 10초 동안 전송한다고 가정해 보겠습니다."

  • "2초 시점에 전송할 데이터가 생긴 B는 채널이 사용 중임을 확인하고, 10초가 되기를 기다리기 시작합니다."
  • "5초 시점에 데이터가 생긴 C 역시 채널을 확인하고, 똑같이 10초가 되기를 기다립니다."
  • "9초 시점에 데이터가 생긴 D도 마찬가지로 대기열에 합류합니다."

"이렇게 되면 A의 전송이 끝나는 10초 시점에는, 마치 버스 정류장에 버스를 기다리는 사람들이 줄을 서듯, B, C, D가 모두 채널이 비워지기만을 오매불망 기다리는 상황이 됩니다."

3. 충돌 발생: 규칙의 동시 적용

마지막으로, 왜 이 대기열이 충돌로 이어지는지를 설명합니다.

"마침내 10초가 되어 A의 전송이 끝나고 채널이 비워지는 순간, 1-persistent 규칙에 따라 대기하고 있던 B, C, D는 모두 '지금이 기회다!'라고 판단하고 약속이라도 한 듯이 동시에 전송을 시작합니다."

"결과적으로, 각자 다른 시간에 전송을 원했지만 **'채널이 비는 순간 즉시 보낸다'**는 동일한 규칙을 따랐기 때문에, 결국 한 지점에서 만나 필연적으로 충돌이 발생하게 되는 것입니다. 이것이 CSMA만으로는 충돌을 피할 수 없는 두 번째 핵심 이유입니다."


핵심 요약 문장

이 설명을 한두 문장으로 압축해서 말하고 싶다면 이렇게 표현할 수 있습니다.

"1-persistent CSMA 방식에서는 한 노드가 통신하는 동안 전송을 원하는 다른 노드들이 **'대기 그룹'**을 형성하게 됩니다. 이 그룹의 노드들은 통신이 끝나기를 기다렸다가, 채-널이 비워지는 바로 그 동일한 순간에 모두 전송을 시도하기 때문에 결국 충돌이 발생합니다."

 

 

 

 

 

 

 

 

네, 아주 날카로운 질문입니다. "링크 생명주기"라는 용어가 왜 하필 '생명(Life)'이라는 단어를 쓰는지, 그리고 그것이 '논리적인 준비 단계'와 어떻게 연결되는지 명확하게 설명해 드리겠습니다.

결론부터 말하자면, '생명주기(Lifecycle)'라는 용어는 물리적인 연결 상태와는 별개로, 하나의 통신 세션이 마치 생명체처럼 명확한 '시작(탄생)', '활동(삶)', 그리고 '끝(소멸)'을 갖는다는 것을 강조하기 위한 비유적인 표현입니다.


'생명주기'의 단계별 의미

이더넷처럼 단순히 케이블을 꽂는 물리적 연결이 아니라, PPP 링크는 다음과 같은 논리적인 '삶'의 단계를 거칩니다.

1. 탄생 (Birth) → 링크 설정 (Link Establishment)

  • 이것이 바로 교수님께서 말씀하신 **'논리적인 준비 단계'**입니다.
  • 물리적으로 선이 연결되어 있더라도, 논리적으로는 아직 링크가 '태어나지 않은' 상태입니다.
  • **LCP(Link Control Protocol)**라는 프로토콜을 통해 양쪽 노드가 서로 통신을 시작하기 전에 **'협상(Negotiation)'**을 합니다. 마치 비즈니스를 시작하기 전에 계약 조건을 조율하는 것과 같습니다.
    • "헤더 압축을 쓸까요?"
    • "오류 검출 필드는 2바이트로 할까요, 4바이트로 할까요?"
    • "당신이 이 통신을 할 자격이 있는지 **인증(Authentication)**하겠습니다. 아이디/패스워드를 알려주세요."
  • 이 협상과 인증이 성공적으로 끝나야 비로소 링크가 논리적으로 '탄생'하여 살아있는 상태가 됩니다.

2. 활동기 (Life) → 데이터 전송 (Data Transfer)

  • 링크가 성공적으로 '태어난' 후에야 비로소 본연의 임무를 수행합니다.
  • 이것이 링크가 '살아있는' 동안 하는 핵심 활동으로, 실제 IP 패킷과 같은 사용자 데이터를 주고받는 단계입니다.
  • 이 단계에서도 **NCP(Network Control Protocol)**를 통해 IP 주소를 할당받는 등, 네트워크 계층과의 통신을 위한 추가적인 설정이 이루어집니다.

3. 소멸 (Death) → 링크 종료 (Link Termination)

  • 모든 데이터 전송이 끝나면, 링크는 그냥 방치되는 것이 아니라 공식적인 '사망 선고'를 받습니다.
  • LCP를 통해 한쪽이 "이제 통신을 끝냅시다"라는 종료 요청을 보내고, 상대방이 이를 확인하면 링크는 논리적으로 '소멸'됩니다.
  • 이 과정을 통해 할당되었던 IP 주소와 같은 자원들을 깔끔하게 반납하고 연결을 마무리합니다.

이더넷과의 비교: 왜 이더넷에는 '생명주기'가 없는가?

  • 이더넷은 이런 논리적 생명주기 개념이 없습니다. 랜선을 꽂으면 물리적 연결이 곧 논리적 연결입니다. 별도의 협상이나 인증 절차 없이 즉시 데이터를 보낼 수 있습니다. 이는 마치 전등 스위치를 켜면 바로 불이 들어오는 것과 같습니다.
  • PPP는 다릅니다. 물리적으로 선이 연결되어 있어도(전원은 들어와도), 논리적인 시작 버튼(링크 설정)을 눌러야 비로소 링크가 '살아나' 활동을 시작할 수 있습니다.

따라서 '링크 생명주기 관리'라는 말은 **"물리적 연결과 분리된, 시작과 끝이 명확한 논리적 통신 세션을 체계적으로 관리하는 기능"**을 의미하는 것입니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

프리앰블(이더넷) vs 플래그(PPP): 길이 차이의 근본적인 이유

두 프로토콜의 역할 분담과 책임의 차이에서 비롯됩니다.

이더넷 (8바이트 프리앰블): "내가 직접 다 해야 돼!"

  • 역할: 이더넷은 데이터 링크 계층인 동시에 물리 계층입니다. 즉, 이더넷의 바로 밑에는 더 이상 아무것도 없습니다. 자신이 직접 잡음(noise)이 섞인 물리적인 회선과 마주해야 하는 최전선에 있습니다.
  • 책임: 따라서, 수신자에게 "지금부터 잡음이 아니라 진짜 데이터 프레임이 시작된다!"라고 알리는 임무를 스스로 온전히 책임져야 합니다.
  • 결과: 잡음 속에서 어쩌다 우연히 나타날 수 있는 짧은 패턴으로는 부족합니다. 수신자가 절대로 헷갈리지 않도록, "충분히 긴(8바이트)" 그리고 "특별한 패턴을 가진" 신호를 보내서 수신자의 시계를 동기화시키고(synchronization), 이제 프레임이 시작된다는 것을 확실하게 알려주는 것입니다. 마치 시끄러운 시장에서 누군가의 주의를 끌기 위해 "어이!" 하고 짧게 부르는 게 아니라, "자! 자! 지금부터 제가 하는 말 잘 들으세요!" 하고 길게 외치는 것과 같습니다.

PPP (1바이트 플래그): "밑에 있는 애가 알아서 해주겠지."

  • 역할: PPP는 오직 데이터 링크 계층 전용 프로토콜입니다. PPP는 설계될 때부터 "내 아래에는 반드시 나를 도와주는 물리 계층 프로토콜이 존재한다"라고 가정하고 기대합니다.
  • 책임: PPP는 자신이 직접 물리적인 잡음을 상대할 필요가 없다고 생각합니다. 그 일은 하위의 물리 계층이 이미 했을 것이라고 믿는 것입니다. 즉, "물리 계층이 이미 긴 신호를 보내서 수신자를 깨우고 동기화까지 마쳤을 거야"라고 생각합니다.
  • 결과: 이미 잠에서 깨어나 귀를 기울이고 있는 수신자를 상대로는 길고 요란한 신호가 필요 없습니다. PPP는 단지 논리적인 데이터 덩어리의 시작과 끝을 구분하기 위한 간단한 **표시(marker)**만 하면 됩니다. 그래서 1바이트짜리 플래그만으로도 충분한 것입니다. PPP는 "물리 계층이 멍석을 깔아줬으니, 나는 내 데이터가 어디부터 어디까지인지만 표시하면 돼"라는 입장입니다.

핵심 요약

구분 이더넷 (Ethernet) PPP (Point-to-Point Protocol)
계층적 위치 물리 계층 + 데이터 링크 계층 데이터 링크 계층 전용
책임 물리적 신호의 시작을 직접 알려야 함 하위 물리 계층이 신호 시작을 알려줄 것으로 기대함
신호의 목적 물리적 동기화 + 프레임 시작 알림 논리적 데이터의 시작/끝 구분
결과 길고 강력한 신호가 필요 (프리앰블 8B) 간단한 논리적 마커로 충분 (플래그 1B)

 

 

 

 

 

 

 

 

 

 

 

 

 

CSMA/CD 시험 출제 핵심 포인트 상세 분석

1. CSMA의 한계: "왜 CSMA만으로는 부족한가?" (서술형 문제 단골)

이 부분은 "CSMA를 사용하더라도 충돌이 발생하는 이유 두 가지를 서술하시오." 와 같은 문제로 출제하기에 완벽합니다.

  • 포인트 1: 전파 지연 (Propagation Delay)
    • 핵심 개념: 신호가 물리적 거리를 이동하는 데 시간이 걸리기 때문.
    • 답안 준비: "A 노드가 전송을 시작해도 그 신호가 빛의 속도로 전파되는 데 시간이 걸립니다. 만약 멀리 떨어진 B 노드가 A의 신호가 도착하기 전에 자신의 앞이 깨끗하다고 판단하고 전송을 시작하면, 두 신호는 중간에서 충돌하게 됩니다." 와 같이 구체적인 시나리오로 설명할 수 있어야 합니다.
  • 포인트 2: 1-persistent 방식의 문제점
    • 핵심 개념: 채널이 비기를 기다리던 여러 노드가, 비는 순간 동시에 전송을 시도하기 때문.
    • 답안 준비: "이더넷의 1-persistent 방식은 채널이 비면 100% 확률로 즉시 전송하는 규칙입니다. 이 때문에 한 노드의 전송이 끝나는 시점에는, 그동안 기다리고 있던 여러 노드가 마치 약속이라도 한 듯 동시에 전송을 개시하여 충돌이 발생합니다." 라고 설명할 수 있어야 합니다.

2. CD의 역할: "CD가 추가됨으로써 얻는 이점은 무엇인가?" (개념 비교 문제)

이 부분은 "CSMA와 CSMA/CD의 차이점을 효율성 측면에서 설명하시오." 와 같은 문제로 나올 수 있습니다.

  • 핵심 개념: 낭비 최소화.
  • 답안 준비: "CD(충돌 감지)가 없는 순수 CSMA 환경에서는 충돌이 발생해도 프레임 전체를 끝까지 전송합니다. 이는 이미 깨져서 버려질 데이터를 보내느라 시간과 네트워크 자원(대역폭)을 낭비하는 결과를 낳습니다. 반면, CSMA/CD는 충돌을 감지하는 즉시 전송을 중단하므로, 이러한 낭비를 최소화하고 채널을 더 빨리 비워 다른 노드가 사용할 수 있게 만들어 전체적인 효율을 높입니다."

3. 지수적 백오프 알고리즘: "왜 이 알고리즘이 필요한가?" (심층 서술 및 계산 문제)

이 알고리즘은 CSMA/CD의 완성이자, 가장 중요한 파트입니다. 여기서 가장 다양한 유형의 문제가 나올 수 있습니다.

  • 포인트 1: "왜 그냥 재전송하면 안 되는가?" (Random의 필요성)
    • 핵심 개념: 무한 충돌 방지.
    • 답안 준비: "충돌을 감지한 노드들이 동시에 전송을 멈추면 채널은 다시 깨끗해집니다. 이때 아무 규칙 없이 다시 전송을 시도하면, 방금 충돌했던 노드들이 또다시 동시에 전송하여 무한 충돌 루프에 빠지게 됩니다. 이를 해결하기 위해 각자 임의의(Random) 시간을 기다려 재전송 시점을 분산시키는 백오프 알고리즘이 필요합니다."
  • 포인트 2: "왜 그냥 '랜덤'이 아니라 '지수적(Exponential)'인가?" (Exponential의 필요성)
    • 핵심 개념: 네트워크 혼잡도에 대한 동적 적응.
    • 답안 준비: "단순히 랜덤한 시간을 기다릴 경우, 네트워크가 혼잡하여 여러 노드가 계속 충돌하면 대기 시간 범위가 그대로라 재충돌 확률이 여전히 높습니다. 지수적 백오프는 충돌이 반복될수록 대기 시간의 선택 범위를 지수적으로 넓혀줍니다. 이를 통해 네트워크가 혼잡할수록 노드들이 더 오래, 더 넓은 범위의 시간 동안 기다리게 만들어 재충돌 확률을 크게 낮추고 안정적으로 충돌을 해소하는, 매우 효율적인 방식입니다."
  • 포인트 3: 실제 계산 (계산 문제)
    • 핵심 공식: 충돌 횟수가 m번일 때, 대기 시간을 정하기 위한 랜덤 숫자 k의 범위는 0부터 (2^m - 1)까지이다.
    • 예상 문제:
      • "한 노드가 프레임 전송 중 첫 번째 충돌을 겪었을 때, 대기 시간을 결정하기 위한 k의 범위는 무엇인가?"
        • 답: m=1이므로, 2¹-1 = 1. 따라서 범위는 0 또는 1.
      • "한 노드가 세 번째 충돌을 겪었을 때, k의 범위는 무엇인가?"
        • 답: m=3이므로, 2³-1 = 7. 따라서 범위는 0, 1, 2, 3, 4, 5, 6, 7 중 하나.

시험 대비 요약

단계 핵심 질문 정답 키워드 예상 문제 유형
CSMA 왜 충돌이 나는가? ① 전파 지연, ② 1-persistent 동시 전송 서술형
CD 왜 필요한가? 자원 낭비 최소화, 효율성 증대 개념 비교 서술형
Backoff 왜 '랜덤'인가? 무한 충돌 방지, 재전송 시점 분산 원리 서술형
Backoff 왜 '지수적'인가? 네트워크 혼잡 적응, 재충돌 확률 감소 심층 원리 서술형
Backoff m번째 충돌 시 범위는? 0 ~ (2^m - 1) 단답형, 계산형

 

 

 

 

 

 

 

 

 

 

 

접근 링크(Access Link) vs. 코어 링크(Core Link)

먼저 두 가지 종류의 링크를 구분하면 이해가 쉽습니다.

  1. 접근 링크 (Access Link)
    • 역할: 최종 사용자(End User)의 장치(PC, 노트북, 서버, 프린터 등)를 인터넷으로 들어가는 '첫 번째 관문'인 라우터까지 연결하는 링크입니다.
    • 비유: 우리 집에서 큰 도로로 나가는 '진입로' 또는 동네 골목길.
    • 범위: 보통 **LAN(근거리 통신망)**을 구성합니다. (예: 가정 내 네트워크, 사무실 네트워크, 대학 캠퍼스 네트워크)
  2. 코어 링크 (Core Link) / 백본 링크 (Backbone Link)
    • 역할: 네트워크의 중심부에서 라우터와 라우터를 서로 연결하는 링크입니다.
    • 비유: 도시와 도시를 연결하는 '고속도로'.
    • 범위: 보통 **WAN(광역 통신망)**을 구성합니다.

왜 이더넷은 '접근 링크'에 사용되는가?

교수님께서 설명하신 대로, 이더넷의 태생적인 특징들이 이 역할을 완벽하게 수행하도록 만듭니다.

1. 본질적으로 LAN(근거리 통신망) 기술이기 때문입니다. (가장 근본적인 이유)

  • 교수님께서 "이더넷은 렌을 만들어준대요."라고 명확히 언급하셨습니다.
  • LAN의 정의 자체가 '가까운 거리에 있는 장치들을 연결하는 네트워크'입니다.
  • '접근 링크'의 역할은 바로 이 LAN을 구성하여 최종 사용자를 네트워크에 연결하는 것입니다. 따라서 LAN 기술인 이더넷이 접근 링크로 사용되는 것은 너무나도 당연한 귀결입니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3. CSMA/CD의 '전파 지연'에 적용

따라서 CSMA의 충돌 원인인 '전파 지연'을 설명할 때, 다음과 같이 표현하는 것이 가장 정확합니다.

  • (수정 전) "A 노드가 보낸 신호가 빛의 속도로 전파되는 데 시간이 걸립니다."
  • (더 정확한 표현) "A 노드가 보낸 신호(전기 또는 광 신호)가 케이블이라는 매질을 통해 유한한 속도로 전파되는 데에는 시간이 걸립니다. 이 속도는 진공에서의 빛의 속도보다 느리며, 이로 인해 '전파 지연'이 발생합니다."

시험 대비 핵심 요약

질문: "CSMA에서 충돌이 발생하는 이유 중 하나인 '전파 지연'에 대해 설명하시오."

A+ 답안 예시:

CSMA는 데이터를 전송하기 전에 채널이 비어 있는지 확인하지만, 이 방식만으로는 충돌을 완벽히 막을 수 없습니다. 그 이유 중 하나는 전파 지연(Propagation Delay) 때문입니다.

통신 신호는 UTP 케이블(구리선)이나 광케이블과 같은 물리적인 매질을 통해 전달되는데, 이 매질을 통과하는 속도는 유한하며 진공에서의 빛의 속도보다 느립니다. 따라서 송신자 A가 프레임 전송을 시작했더라도, 그 신호가 물리적으로 떨어져 있는 수신자 B에게 도달하기까지는 약간의 시간이 소요됩니다.

만약 B가 A의 신호가 자신에게 도달하기 전인 그 짧은 시간 동안 채널을 확인하면, B의 입장에서는 채널이 여전히 비어 있는 것처럼 보이게 됩니다. 이때 B가 전송을 시작하면, A의 신호와 B의 신호는 케이블 중간에서 만나 충돌하게 됩니다. 이처럼 신호의 전파 속도가 유한하기 때문에 발생하는 지연이 CSMA의 한계를 만드는 핵심 원인입니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Q. 이더넷에서 충돌 발생 후, 관련된 노드들이 즉시 재전송하면 안 되는 이유는 무엇이며, 이를 해결하기 위해 '랜덤(Random)' 대기가 필요한 이유는 무엇인지 서술하시오.

A:

충돌 감지 후 즉시 재전송을 시도하면, 충돌에 관여했던 모든 노드들이 **필연적으로 또다시 충돌하는 '무한 충돌 루프(Infinite Collision Loop)'**에 빠지기 때문입니다.

그 과정은 다음과 같습니다.

  1. 동시 중단 및 동시 유휴 상태: 여러 노드(A, B)가 동시에 전송하여 충돌이 발생하면, 이 노드들은 충돌 감지(CD) 기능에 의해 거의 동시에 전송을 중단합니다. 그 결과, 통신 채널은 A와 B 모두에게 동시에 '비어 있는(Idle)' 상태가 됩니다.
  2. 동시 재전송 시도: A와 B는 여전히 전송해야 할 프레임을 가지고 있으며, CSMA 규칙("채널이 비어 있으면 전송한다")을 따릅니다. 따라서 두 노드는 방금 비워진 채널을 보고, 약속이라도 한 듯 또다시 동시에 재전송을 시도하게 됩니다.
  3. 무한 충돌 발생: 이 동시 재전송은 즉시 두 번째 충돌을 야기하고, 노드들은 다시 동시에 전송을 멈출 것입니다. 이 과정이 무한히 반복되면서 네트워크는 사실상 마비 상태에 이릅니다.

이러한 **'동기화된 실패(Synchronized Failure)'**를 해결하는 핵심적인 방법이 바로 '랜덤(Random)' 대기 시간을 도입하는 것입니다. 충돌을 겪은 각 노드는 정해진 규칙 없이 즉시 재전송하는 대신, 각자 독립적으로 임의의 시간 동안 대기합니다.

이 방식을 통해, 각 노드가 똑같은 시간만큼 대기할 확률은 매우 낮아집니다. 운 좋게 가장 짧은 대기 시간을 선택한 노드가 먼저 재전송을 시작하면, 나머지 노드들은 채널 감지(CS)를 통해 채널이 다시 사용 중임을 인지하고 자신의 전송을 양보하게 됩니다.

결론적으로, '랜덤' 대기는 충돌 후 모든 노드가 똑같이 행동하려는 동기화 상태를 의도적으로 깨뜨려 재전송 시점을 분산시키고, 안정적으로 통신을 재개하기 위한 필수적인 충돌 해소 메커니즘입니다.

 

 

 

 

 

 

 

 

 

이때, PPP 계층으로 데이터를 내려보내는 주체, 즉 자신의 '윗사람'이 누구인지는 오직 송신 측 자신만이 알고 있습니다. 수신 측은 어떤 종류의 데이터가 올지 미리 알 방법이 없습니다.

따라서 송신 측 PPP는 데이터를 프레임으로 캡슐화할 때, **"이 데이터는 OOO 프로토콜로부터 받은 것입니다"**라는 일종의 '꼬리표'를 붙여야 합니다. 이 꼬리표 역할을 하는 것이 바로 '프로토콜' 필드이며, 여기에는 IP를 의미하는 0x0021과 같은 고유한 코드 값이 기록됩니다.

2. 수신 측 (역캡슐화 관점)

수신 측 노드가 PPP 프레임을 받으면, 먼저 헤더와 트레일러를 제거하여 원본 데이터인 페이로드를 추출합니다. 이것이 역캡슐화 과정입니다.

하지만 이 과정만으로는 일이 끝나지 않습니다. 수신 측 데이터 링크 계층은 이 페이로드를 누구에게 전달해야 할지 결정해야 합니다. 이 페이로드가 IP 패킷인지, 아니면 링크 관리를 위한 LCP 패킷인지 알 수 없기 때문입니다.

이때 '프로토콜' 필드가 결정적인 역할을 합니다.

  • 수신 측은 이 필드 값을 확인합니다.

결론적으로, '프로토콜' 필드는 송신자가 캡슐화 시점에 남긴 **'배송지 주소'**와 같습니다. 이 주소가 없다면, 수신자는 역캡슐화한 데이터를 어느 상위 계층으로 보내야 할지 몰라 미아가 되어버릴 것입니다.

따라서 이 필드는 신뢰성 있는 계층 간 데이터 전달을 위한 필수적인 요소입니다.

 

 

 

 

 

 

 

 

 

이더넷에는 흐름 제어 기능이 없었음
 
1997년 발표된 IEEE 802.3x에 흐름 제어 추가
PAUSE 프레임 정의: 수신자가 송신자들에게 당분간 자신에게 프레임을 보내지 말라고 요청
멈춤 시간: 0~65535 단위 시간 (단위 시간 = 64Bytes 전송 시간으로 정의)

 

 

 

 

 

 

 

이더넷 CSMA/CD 알고리즘 플로우차트 상세 설명

이 플로우차트는 이더넷 네트워크에 연결된 하나의 컴퓨터(노드)가 데이터를 전송하려고 할 때, 어떤 규칙과 순서에 따라 행동하는지를 보여주는 의사결정 과정입니다.

1단계: 전송할 프레임 확인 및 초기화

  • Backlogged frame? (전송할 프레임이 있는가?)
    • 프로세스는 노드가 전송할 데이터 프레임을 가지고 있는지 확인하는 것에서 시작합니다.
    • 만약 보낼 프레임이 없다면(NO), 아무것도 하지 않고 계속 이 상태를 확인하며 대기합니다.
    • 보낼 프레임이 있다면(YES), 다음 단계로 진행하며 충돌 횟수를 기록하는 변수 M을 0으로 초기화합니다. 새로운 프레임을 보내는 첫 시도이므로 충돌 횟수는 0이기 때문입니다.

2단계: 채널 감지 (Carrier Sense)

  • Is channel idle? (채널이 비어 있는가?)
    • 본격적인 전송에 앞서, 노드는 채널(네트워크 회선)에 다른 신호가 흐르고 있는지, 즉 다른 노드가 통신 중인지를 감지합니다. 이것이 **CSMA의 'CS'(Carrier Sense)**에 해당하는 부분입니다.
    • 만약 채널이 사용 중이라면(NO), 노드는 채널이 비워질 때까지 계속해서 채널 상태를 확인하며 기다립니다.
    • (※핵심) 슬라이드의 1-persistent 방식이라는 주석이 바로 이 부분을 설명합니다. 채널이 빌 때까지 포기하지 않고 끈질기게(persistently) 지켜보다가, 비는 즉시 100%의 확률로 전송을 시도하는 규칙입니다.
    • 채널이 비어 있다면(YES), 드디어 전송할 기회를 얻고 다음 단계로 넘어갑니다.

3단계: 프레임 전송 및 충돌 감지 (Collision Detection)

  • Send a frame (프레임 전송)
    • 노드는 준비된 프레임을 채널을 통해 전송하기 시작합니다.
  • Collision? (충돌이 발생했는가?)
    • 이더넷의 가장 중요한 특징인 **'CD'(Collision Detection)**가 여기서 작동합니다. 노드는 프레임을 전송하는 동시에 채널을 계속 감시하여 충돌이 발생하는지 확인합니다.
    • 만약 프레임 전송이 끝날 때까지 아무런 충돌이 감지되지 않았다면(NO), 전송은 성공한 것입니다.

4.1단계 (경로 A): 전송 성공

  • Tx success. M=0 (전송 성공)
    • 프레임이 성공적으로 전송 완료되었습니다. 다음 프레임 전송을 위해 충돌 횟수 변수 M을 다시 0으로 초기화하고, 1단계로 돌아가 또 다른 전송할 프레임이 있는지 확인합니다.

4.2단계 (경로 B): 충돌 발생 및 해결

  • 만약 전송 중에 충돌이 감지되었다면(YES), 노드는 충돌 해결(Collision Resolution) 절차에 들어갑니다.
  • (주석 내용) 슬라이드의 빨간색 주석 전송을 멈추고 재밍(jamming) 신호 송신이 바로 이 시점에 일어나는 행동입니다. 노드는 즉시 데이터 프레임 전송을 중단하고, 네트워크상의 모든 노드에게 충돌이 발생했음을 알리기 위해 짧은 재밍(Jam) 신호를 보냅니다.
  • M = M + 1
    • 충돌 횟수 변수 M의 값을 1 증가시킵니다. (첫 충돌 시 M은 1이 됩니다.)
  • Wait for Rand(0, 2^M - 1) x SlotTime (지수적 백오프 대기)
    • 이것이 지수적 백오프 알고리즘의 핵심입니다. 노드는 즉시 재전송하지 않고, 정해진 규칙에 따라 임의의 시간 동안 대기합니다.
      • Rand(0, 2^M - 1): 0 부터 2의 M제곱 - 1 사이의 범위에서 무작위 정수 k를 선택합니다.
      • SlotTime: 슬라이드 좌측의 'Slot 길이'에 해당하는 시간 단위입니다. (예: 10Mbps에서는 512bit를 전송하는 데 걸리는 시간)
      • k x SlotTime: 노드는 최종적으로 자신이 선택한 랜덤 숫자 k SlotTime을 곱한 시간만큼 대기합니다. 예를 들어 M=1이면 0 또는 1 중 하나를 골라 0 * SlotTime 또는 1 * SlotTime 만큼 대기합니다. M=2이면 0, 1, 2, 3 중 하나를 골라 대기 시간을 정합니다.
  • 대기 시간이 끝나면, 프로세스는 다시 2단계(Is channel idle?)로 돌아가 채널 감지부터 재전송 절차를 다시 시작합니다.

슬라이드 좌측 '세부 사항들'의 의미

  • Slot 길이: 백오프 시간 계산의 기준이 되는 시간 단위입니다.
  • 최대 backoff 시간: 충돌이 계속되어 M값이 커져도, 랜덤 숫자를 선택하는 범위는 무한정 늘어나지 않고 0 ~ 1023 (즉, M=10일 때의 범위)으로 제한됩니다. 이것이 'Truncated(절단된)' 지수적 백오프라고 불리는 이유입니다.
  • 최대 재시도 횟수: 보통 M이 16이 될 때까지, 즉 16번의 충돌이 발생하면 노드는 해당 프레임의 전송을 완전히 포기하고 상위 계층에 오류를 보고합니다.

 

 

 

 

 

 

 

INADDR_ANY
서버 소켓의 이름을 IP 주소로 명시하면, 실행 컴퓨터가 달라질 때마다 소스코드를 수정하는 불편함이 발생
서버 소켓의 IP 주소를 INADDR_ANY로 설정하면, 실행 컴퓨터의 IP 주소로 자동 설정됨