링크 계층 - 1

이윤설·2024년 8월 6일
post-thumbnail

1. 링크 계층

링크 계층은 TCP 계층 중 가장 낮은 계층이다. 어떤 노드(호스트/라우터)로 부터 인접한 노드까지 연결한 엣지(링크)로, 안전하게 패킷/데이터그램을 옮기는 책임을 가진다.

호스트와 라우터 사이에는 전용선이 존재하는 것이 아니라, 공용선을 통해서 패킷이 전송된다.
따라서 링크 레이어에서는 충돌을 피하면서 패킷을 잘 보내는 것이 매우 중요하다.

링크 계층이 제공하는 서비스

  1. 프레임화(framing)
    데이터를 프레임이라는 단위로 포장
    프레임은 데이터와 헤더로 구성

  2. 링크 접속(link access)
    MAC 프로토콜을 사용해 프레임 전송 규칙 정의
    점대점 링크: 간단한 전송 방식
    공유 링크: 여러 노드 간 전송 조정

  3. 신뢰적 전달
    확인 응답과 재전송으로 데이터 손실 방지
    주로 무선 링크 등 오류가 많은 환경에서 사용
    낮은 비트 오류율을 가진 링크에서는 불필요한 오버헤드가 될 수 있어 대다수 유선 링크 계층 프로토콜은 제공하지 않음

  1. 오류 검출과 정정
    전송 중 발생한 비트 오류 검출
    송신 노드: 오류 검출 비트 설정
    수신 노드: 오류 검사 수행
    하드웨어로 구현되어 복잡한 검출 가능
    오류 정정: 오류 위치까지 정확히 파악 가능

노드와 링크

노드: 링크 계층 프로토콜을 실행하는 장치(호스트, 라우터, 스위치 등)

링크: 통신 경로상의 인접한 노드들을 연결하는 통신 채널이다. 데이터그램을 출발지 호스트에서 목적지 호스트로 이동시키기 위해서는 데이터그램을 종단 간 경로의 개별 링크들로 이동시켜야만 한다.

한 링크에서 전송 노드는 데이터그램을 링크 계층 프레임(link-layer frame)으로 캡슐화해서 링크로 전송한다. 위 그림에서는 6개의 링크를 거쳐간다.

링크 계층이 구현되는 위치

호스트에서 대부분의 경우 링크 계층은 네트워크 인터페이스 컨트롤러(network interface controller, NIC)로 알려진 네트워크 어댑터(network adapter) 에 구현된다.

컨트롤러(controller)
네트워크 어댑터의 중심에 있다.
링크 계층 서비스의 대다수가 구현되어있는 단일의 특수 용도 칩으로 하드웨어로 구현된다.

송신 측의 컨트롤러는 호스트 메모리에 저장된 데이터그램을 링크 계층 프레임으로 캡슐화한 후 링크 접속 프로토콜에 따라 이 프레임을 통신 링크상으로 전송한다.
수신 측의 컨트롤러는 프레임을 수신한 후 네트워크 계층 데이터그램을 추출한다.

CPU
일부 링크 계층 기능이 호스트 CPU에서 실행되는 소프트웨어에 구현되어 있다.
상위 레벨의 링크 계층 기능은 링크 계층 소프트웨어 구성요소에 구현되어 있다.

e.g. 링크 계층 주소 정보 조립, 컨트롤러 하드웨어 활성화, 컨트롤러로부터의 인터럽트, 오류 처리, 데이터그램 전달 등

즉, 링크 계층은 하드웨어와 소프트웨어의 조합이다.

cf. 게이트웨이와 라우터
먼저, 게이트웨이는 더 포괄적인 개념이다. 게이트웨이는 서로 다른 네트워크나 통신 시스템 간의 데이터를 전송할 수 있도록 해주는 장치나 프로그램을 의미한다.

이는 서로 다른 프로토콜을 사용하는 네트워크 간의 통신을 가능하게 하며, 데이터 포맷 변환, 보안, 인증 등 복잡한 변환 과정을 수행할 수 있다.

반면, 라우터는 네트워크 내에서 데이터 패킷이 목적지까지 가장 효율적인 경로를 찾아서 전송하도록 돕는 장치다. 이는 IP 네트워크에서 주로 사용되며, 여러 개의 인터페이스를 통해 라우팅 테이블을 기반으로 패킷의 최적 경로를 결정한다. 라우터는 특정한 형태의 게이트웨이로서, 주로 같은 프로토콜을 사용하는 네트워크 간의 라우팅을 담당한다. 예를 들면, 집이나 사무실의 인터넷 연결에서 공유기를 통해 여러 장치들이 인터넷에 접속할 수 있게 하는 그 공유기는 라우터 기능을 하는 동시에 로컬 네트워크와 외부 인터넷 간의 게이트웨이 역할을 한다.

요약하자면, 라우터는 네트워크 경로를 결정하는 특정 기능을 수행하는 게이트웨이의 한 예로 볼 수 있다. 게이트웨이는 더 넓은 범위에서 서로 다른 네트워크 또는 프로토콜 간의 연결점 역할을 하며, 때로는 데이터의 변환 및 처리 기능까지 담당할 수 있는 보다 포괄적인 개념이다.

2. 오류 검출 및 정정 기술

  1. 패리티 검사 (Parity Check)
    가장 간단한 오류 검출 방법
    원리: 데이터에 1비트를 추가하여 1의 개수를 짝수 또는 홀수로 만듦
    짝수 패리티: 1의 총 개수가 짝수가 되도록 함
    홀수 패리티: 1의 총 개수가 홀수가 되도록 함
    장점: 구현이 간단함
    단점: 짝수 개의 비트 오류를 검출하지 못함
  1. 체크섬 (Checksum)
    데이터를 일정 크기로 나누어 더한 후, 그 합의 보수를 취함
    수신측에서 같은 방식으로 계산하여 결과가 0이면 오류 없음으로 판단
    주로 인터넷 프로토콜에서 사용됨 (예: IP, TCP, UDP)
    장점: 구현이 비교적 간단하고 계산 속도가 빠름
    단점: 패리티 검사보다는 나으나 여전히 일부 오류를 놓칠 수 있음
  1. 순환 중복 검사 (Cyclic Redundancy Check, CRC)
    가장 강력하고 널리 사용되는 오류 검출 방법
    원리: 데이터를 특정 다항식으로 나누어 나머지를 구함
    송신측: 데이터에 CRC 비트를 추가하여 전송
    수신측: 같은 방식으로 계산하여 나머지가 0이면 오류 없음으로 판단
    장점: 높은 오류 검출 능력, 버스트 오류 검출에 효과적
    단점: 구현이 복잡하지만, 대부분 하드웨어로 구현되어 빠른 처리 가능

데이터링크 계층의 오류 검사 방식들은 모두 원본 데이터의 비트와 수신된 데이터의 비트를 비교하는 개념에 기반한다. 만약 원본 데이터의 비트와 수신한 데이터의 비트가 다르면 데이터에 손실이 발생했다고 판단한다.

그럼 만약 에러가 발생하면 데이터 링크 계층에서는 어떻게 재전송을 요구할까?

ARQ, Automatic Repeat Request

데이터 링크 계층에서는 에러가 발생하면 ARQ라는 방법을 사용한다.

  • 용어 정리
    프레임(Frame) : 전송층에서 쓰이는 '패킷'과 같은 개념이며 데이터링크층에서 사용되는 전송단위인 프레임과는 다름
    ACK(Acknowledge) : 수신측에서 이상없이 프레임을 받았을 경우에 보내는 확인 응답
    NACK 또는 NAK(Negative Acknowledge) : 프레임을 제대로 전송받지 못한 경우 송신측에서 보내는 신호
    파이프라인 : ACK를 받기 전에 보낼 수 있는 프레임의 갯수
    redumdent bit : 프레임의 오류를 검출 또는 정정하기 위해 데이터 비트 외에 추가적으로 붙이는 bit

  • 수신자 피드백 방식
    수신측이 송신측에 재전송을 요구하는 방식
    데이터 내 첨부된 오류검츨 정보로 에러 발생 유무를 점검하고, 에러가 발생한 프레임에 대해 재전송을 요구함

  • 오류검출 만으로도 통신회선의 신뢰성 제고 가능
    ARQ 기법은 오류정정 체계를 갖추지 못하였더라도 오류검출 만으로 통신회선의 신뢰성 확보에 충분함

  • 결론
    ARQ는 재전송을 기반으로 링크의 신뢰성을 확보하는 기법
    다만 실시간 처리에는 곤란한 에러제어 방법임

3. 다중 접속 링크와 프로토콜

두 종류의 네트워크 링크

  • 점대점 링크(point-to-point link)
    링크의 한쪽 끝에 한 송신자와 링크의 다른 쪽 끝에 한 수신자가 있다.
    예를 들어, 두 컴퓨터가 케이블로 직접 연결된 경우이다.
    PPP(point-to-point protocol)과 HDLC(high-level data link control)이 여기에 속한다.

  • 브로드캐스트 링크(broadcast link)
    이 링크는 여러 송신자와 수신자가 하나의 채널을 공유하는 형태이다.
    예를 들어, 와이파이 네트워크가 있다.
    한 컴퓨터가 데이터를 보내면, 네트워크에 연결된 모든 컴퓨터가 그 데이터를 받게 된다.

다양한 다중접속 채널

다중 접속 문제(multiple access problem)

브로드캐스트 링크에서는 여러 컴퓨터가 동시에 데이터를 보내려고 할 때 충돌이 발생할 수 있다. 마치 여러 사람이 동시에 이야기하면 서로의 말을 이해하기 어려운 것처럼, 네트워크에서도 데이터가 서로 충돌하게 된다. 이렇게 되면 데이터가 손실되고 네트워크 자원이 낭비된다.

다중 접속 프로토콜(MAC 프로토콜; multiple access protocol)

이러한 다중 접속 문제를 해결하기 위해 다양한 프로토콜들이 있다.

이상적인 MAC 프로토콜

link bandwidth가 R이라고 했을 때,
(1) 한 사람만 할 얘기가 있을 경우, 한 사람이 R을 다 쓸 수 있어야 한다.
(2) 여러 명이 동시에 사용하고 싶을 경우, 각각 1/R씩 사용할 수 있어야 한다.
(3) 분산적이어야 한다.
(4) 간단해야 한다.

채널 분할 프로토콜

시분할 다중화 (TDM):

채널을 시간 슬롯으로 나누어 각 컴퓨터에 할당한다.
각 컴퓨터는 자신의 시간에만 데이터를 전송한다.
예를 들어, 학생들이 차례대로 발표하는 것과 같다.

장점: 충돌을 방지하고 공정하게 대역폭을 나눌 수 있다.
단점: 하나의 컴퓨터만 데이터를 보내더라도 제한된 속도로만 전송할 수 있다.
예시: 닥터드레의 앨범 2001을 TDM을 통해 전송하려면, 각 노드가 정해진 시간에만 데이터를 보내야 한다. 앨범의 한 곡이 전송되면, 다른 노드가 그 시간 슬롯이 끝날 때까지 기다려야 한다.

주파수 분할 다중화 (FDM):

채널을 여러 주파수로 나누어 각 주파수를 컴퓨터에 할당한다.
장점: 역시 충돌을 방지하고 공정성을 유지할 수 있다.
단점: 주파수 대역을 나누면 각 컴퓨터의 전송 속도가 낮아진다.

코드 분할 다중 접속 (CDMA):
각 컴퓨터에 고유한 코드를 할당하여 데이터를 인코딩한다.
여러 컴퓨터가 동시에 데이터를 전송할 수 있다.

장점: 여러 컴퓨터가 동시에 데이터를 보내도 문제없다.
단점: 구현이 복잡하다.

랜덤 접속 프로토콜

TDMA, FDMA는 각자 정해진 시점에서만 보낼 수 있지만
랜덤 접속 프로토콜은 보내고 싶을 때 보낼 수 있다.

랜덤 접속 프로토콜에서 전송 노드는, 항상 채널의 최대 전송률인 R bps로 전송한다.
충돌이 생기면 충돌과 관련된 각 노드는 프레임이 충돌 없이 전송될 때까지 자신의 프레임을 계속해서 재전송한다.
프레임이 충돌했을 때 즉시 재전송하지 않고, 랜덤 지연 시간 동안 기다린 후 재전송 한다.
즉, 출동했던 노드 중 하나는 다른 노드가 선택한 지연 시간보다 충분히 작은 지연시간을 선택함으로써 충돌 없이 자신의 프레임을 채널로 전송할 수 있다.

ALOHA:
컴퓨터가 데이터를 보내고 충돌이 발생하면 랜덤하게 다시 보낸다.
최근에는 거의 사용되지 않는다.

  • 순수 ALOHA: 데이터 전송 후 충돌이 발생하면 랜덤하게 재전송한다. 충돌을 감지하고 재전송 시도는 간단하지만 충돌 발생 확률이 높다.
  • 슬롯 ALOHA: 시간을 정해진 슬롯으로 나누어 데이터 전송을 시도한다. 이 방식은 충돌 확률을 줄여주는 개선된 방법이다.

장점: 구현이 간단하다.
단점: 충돌이 자주 발생할 수 있다.

CSMA (Carrier Sense Multiple Access)
위 두 프로토콜에서는 다른 노드가 전송하고 있건 말건 일단 보낸다.
즉, 충돌이 생기고 결과적으로 효율이 떨어진다.

CSMA는 A가 전송할 프레임이 있을 때, 전송 전에 한 번 질의를 하는 방법이다.
이때 누가 얘기하고 있으면 전송을 하지 않고, 아무도 얘기하지 않으면 전송하는 방법이다.
그런데 이렇게 해도 충돌이 발생한다. 프레임이 전송 (전파)되는 시간차 (전파지연: Propagation Delay) 때문에,
매체가 idle한 것을 감지하고나서 프레임을 전송하더라도,
다른 곳에서 보낸 프레임이 뒤늦게 도착하여 두 프레임이 충돌할 수 있다.
전파지연을 아예 없애면 충돌을 해결할 수 있지만, 전파 지연은 빛의 속도와 관련된 광섬유의 문제이기 때문에 없앨 수 없다.

CSMA/CD (Collision Detection)

CSMA는 충돌 검출을 수행하지 않는 반면, CSMA/CD는 충돌 검출을 수행한 후 즉시 전송을 취소한다.

동작 과정
1. NIC (네트워크 인터페이스 카드)는 네트워크 계층으로부터 데이터그램을 받고 프레임을 생성한다.
2. 만약 NIC가 채널이 idle함을 감지하면, 프레임 전송을 시작한다.
반면 채널이 혼잡함을 감지하면 idle상태가 될 때까지 기다렸다가 전송한다.
3. 만약 NIC가 다른 전송을 감지하지 않은 채 모든 프레임을 전송했다면, 전송 완료다.
4. 만약 NIC가 전송 도중 다른 전송을 감지했다면, 전송을 중단하고 jam 신호를 보낸다.
5. 전송을 중단한 후, NIC는 Binary back off 상태에 들어간다.

Binary back off 상태는 다음과 같다.

  • M번째 충돌 이후, NIC는 {0, 1, 2, ... 2^M-1} 중에서 랜덤으로 숫자 K를 선택한다.
  • NIC는 K * 512bit 만큼의 시간 동안 기다리고 2번 단계로 되돌아간다.
  • 충돌이 많으면 그만큼 더 오래 기다리게된다.

충돌이 많다는 것은 그만큼 호스트가 많다는 것을 의미한다.

그래서 더 오래 기다려야 그 호스트들의 데이터가 충돌 없이 전송될 것이기 때문에, 충돌이 많을 수록 더 오래 기다리게 된다. 따라서 CSMA/CD는 원하는 떄에 바로 데이터를 보낼 수 있는 장점이 있지만, 사람이 많아서 충돌이 많아질 경우 back off로 인해 대기 시간이 길어진다는 단점이 있다.

CSMA/CA (Collision Avoidance)

동작과정
1. 채널 감지
데이터를 보내려는 노드가 채널이 사용 중인지 확인한다.

  1. 백오프 타임 (Backoff Time)
    채널이 비어 있더라도 바로 전송하지 않고 무작위로 정해진 시간만큼 대기한다.
    이는 여러 노드가 동시에 전송을 시도하는 것을 방지한다.

  2. RTS 전송 (Request to Send)
    백오프 타임이 끝나면 송신 노드는 수신 노드에게 RTS 신호를 보낸다.
    RTS는 "데이터를 보내도 될까요?"라고 묻는 것과 같다.

  3. CTS 응답 (Clear to Send)
    수신 노드는 RTS를 받고 준비가 되면 CTS 신호로 응답한다.
    CTS는 "네, 보내셔도 좋습니다"라고 답하는 것과 같다.

  4. 데이터 전송
    CTS를 받은 송신 노드는 실제 데이터를 전송한다.

  5. ACK 전송 (Acknowledgment)
    데이터를 성공적으로 받은 수신 노드는 ACK 신호를 보내 확인한다.

  6. 다른 노드들의 대기
    RTS나 CTS를 들은 다른 노드들은 전송을 미루고 기다린다.

순번 프로토콜

다중 접속 프로토콜에서 요구되는 두가지 특성은 다음과 같다.

  1. 단 하나의 노드만이 활성이면 Rbps의 처리율을 갖는다.
  2. M개의 노드가 활성이면 각 노드가 거의 R/M bps의 처리율을 갖는다.
    알로하와 CSMA 프로토콜은 첫번째 특성은 지니고 있으나 두 번째 특성은 없다.

이것이 순번 프로토콜(taking-turns protocol) 을 개발하게된 동기다.

폴링 프로토콜:
폴링 프로토콜에서는 중앙 노드(혹은 마스터)가 각 컴퓨터(혹은 클라이언트)에게 순서대로 데이터를 전송할 기회를 제공한다. 중앙 노드는 각 클라이언트를 차례로 확인하며, 데이터를 보내도록 허락한다. 중앙 노드가 각 클라이언트에게 순서대로 폴링(검사)하기 때문에 충돌이 발생하지 않는다.

예시)
영화 ‘양들의 침묵’을 다운받는 상황에서 폴링 프로토콜을 사용한다고 가정해보자.

중앙 노드: 중앙 서버가 클라이언트들에게 데이터를 전송할 기회를 관리한다.
클라이언트들: 여러 대의 컴퓨터가 영화 ‘양들의 침묵’을 다운로드하고 싶어한다.

중앙 서버는 클라이언트 1을 먼저 폴링하여 영화 파일의 일부를 다운로드할 수 있도록 허락한다.
클라이언트 1이 다운로드를 완료하면, 중앙 서버는 클라이언트 2를 폴링하여 다운로드를 허락한다.
이 과정이 반복되어 클라이언트 3, 4, 5 순서로 이어진다.

결과적으로 모든 클라이언트가 차례로 다운로드 기회를 받기 때문에 충돌이 없다.
하지만 중앙 서버가 고장 나면 전체 다운로드 작업이 중단될 수 있다.

장점: 충돌이 없고, 공정하게 대역폭을 나눌 수 있다.
단점: 중앙 노드가 고장 나면 전체 네트워크가 작동하지 않는다.

토큰 전달 프로토콜:
토큰 전달 프로토콜에서는 네트워크 내에 토큰이라는 작은 데이터 패킷이 순환한다.
토큰을 가진 클라이언트만 데이터를 전송할 수 있다.
즉, 토큰이 특정 클라이언트에게 주어지면, 그 클라이언트만이 데이터를 다운로드하거나 전송할 수 있는 권한을 갖는다.

예시)
영화 ‘양들의 침묵’을 다운로드하는 상황을 예시로 들어보자.

토큰: 네트워크 내에서 순환하는 데이터 패킷이다.
클라이언트들: 여러 대의 컴퓨터가 영화 ‘양들의 침묵’을 다운로드하고 싶어한다.

네트워크 내에서 토큰이 처음 클라이언트 1에게 전달된다.
클라이언트 1은 토큰을 가지고 있으므로 영화 파일의 일부를 다운로드할 수 있다.
다운로드가 완료되면, 클라이언트 1은 토큰을 클라이언트 2에게 전달한다.
클라이언트 2가 토큰을 받아 다운로드를 시작한다.

결과:
토큰이 클라이언트들 사이에서 순환하며 각 클라이언트가 데이터를 다운로드할 기회를 갖는다.
만약 하나의 클라이언트가 고장 나면, 토큰이 제대로 전달되지 않아서 다운로드가 지연될 수 있다.
그러나 각 클라이언트가 토큰을 가지고 있는 동안만 데이터를 전송할 수 있기 때문에 충돌은 방지된다.

장점: 분산 방식으로 효율이 높다.
단점: 하나의 컴퓨터가 고장 나면 전체 네트워크가 영향을 받을 수 있다.

분야 별 대표 프로토콜

  1. 유선 근거리 통신망 (LAN): CSMA/CD
    예시: 이더넷 (Ethernet)
    과거에는 이더넷이 CSMA/CD를 사용하여 네트워크 충돌을 감지하고 관리하고는 했다.
    현대의 고속 이더넷에서는 전이중 통신(Full-duplex)으로 인해 CSMA/CD가 더 이상 필요하지 않게 되었다.
    대부분의 사무실과 가정 네트워크에서 사용된다.

  2. 무선 근거리 통신망 (WLAN): CSMA/CA
    예시: Wi-Fi (IEEE 802.11)
    Wi-Fi는 CSMA/CA를 사용하여 무선 환경에서의 충돌을 회피한다.

  3. 이동통신: CDMA
    예시: 3G 모바일 네트워크
    CDMA는 여러 사용자가 동시에 같은 주파수 대역을 사용할 수 있게 해준다.
    많은 3G 모바일 네트워크에서 사용되었다.

  4. 산업용 네트워크: 폴링 프로토콜
    예시: Modbus
    폴링 프로토콜은 마스터-슬레이브 구조에서 효과적이며, 산업 자동화 시스템에서 자주 사용된다.

  5. 광역 통신망 (WAN): TDM
    예시: T1/E1 회선
    TDM은 여러 디지털 신호를 하나의 채널로 다중화하는 데 사용된다.
    많은 WAN 연결에서 사용된다.

정리

  1. 링크 계층은 OSI 모델의 2계층이며, TCP/IP 모델에서는 네트워크 인터페이스 계층에 해당한다. 이 계층은 인접한 네트워크 요소들 사이의 데이터 전송을 담당하며, 신뢰할 수 있는 링크를 통해 패킷이나 프레임을 안전하게 전달하는 역할을 한다.

  2. 링크 계층은 다음과 같은 주요 기능을 제공한다.

  • 프레임화 (데이터를 프레임 단위로 구성)
  • 링크 접속
  • 신뢰적 전달
  • 오류 검출과 정정
  • 흐름 제어
  1. 링크 계층의 오류 검출 및 정정 기술에는 패리티 검사, 체크섬, 순환 중복 검사(CRC) 방법이 있다. 이 중 CRC가 높은 오류 검출 능력과 효율적인 구현이 가능하여 가장 널리 사용된다.

  2. 오류가 발생하면 데이터 링크 계층에서는 ARQ(Automatic Repeat reQuest)를 통해 재전송을 요구한다.

  3. 링크 계층에는 두 종류의 네트워크 링크가 있다:
    점대점 링크: 두 노드 간 직접 연결
    브로드캐스트 링크: 여러 노드가 공유하는 링크

브로드캐스트 링크의 경우 데이터 충돌과 손실의 위험이 크기 때문에 이를 방지하기 위한 다양한 프로토콜이 존재한다:

  • 채널 분할: TDM(시분할 다중화), FDM(주파수 분할 다중화)
  • 코드 분할: CDMA(코드 분할 다중 접속)
  • 랜덤 접근: ALOHA, CSMA, CSMA/CD, CSMA/CA
  • 제어 기반: 폴링 프로토콜, 토큰 전달 프로토콜
  1. 네트워크 환경별로 주로 사용되는 프로토콜은 다음과 같다.
  • 유선 LAN: 현대의 고속 이더넷에서는 전이중 통신으로 인해 CSMA/CD가 더 이상 필요하지 않다.
  • 무선 LAN (WLAN): IEEE 802.11 표준을 사용하는 Wi-Fi에서 CSMA/CA를 채택하고 있다.
  • 이동통신: CDMA, TDMA, FDMA, OFDMA 등 다양한 접속 방식이 사용된다. 5G에서는 OFDMA가 주로 사용된다.
  • 산업용 네트워크: 폴링 프로토콜이 여전히 사용되고 있다.
  • 광역 통신망 (WAN): TDM 외에도 패킷 교환 방식, MPLS, Frame Relay 등의 기술이 사용된다.

출처

https://esyeonge.tistory.com/68
https://velog.io/@arthur/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%A7%81%ED%81%AC-%EA%B3%84%EC%B8%B5-1
https://github.com/IT-Book-Organization/Computer-Networking_A-Top-Down-Approach/tree/main/Chapter_6/6.2%20%EC%98%A4%EB%A5%98%20%EA%B2%80%EC%B6%9C%20%EB%B0%8F%20%EC%A0%95%EC%A0%95%20%EA%B8%B0%EC%88%A0
KOCW 한양대학교 컴퓨터네트워크 강의자료

profile
화려한 외면이 아닌 단단한 내면

0개의 댓글