[1장] 컴퓨터 통신 기초

김현수·2024년 9월 4일

컴퓨터통신

목록 보기
1/1

연결 (Connectivity)

통신의 제 1대 업무: 연결

  • 통신의 주체 : 통신기기

    • 전화기 등 단말기
    • 원래는 응용이 원칙: ex) 카톡, 브라우져, ...
    • Terminal(전화에서 용어) / Host(컴퓨터에서 용어)
    • 현재는 두 용어가 합쳐짐 -> 2개의 용어를 다 알아야 함
  • 연결 방법

    • 선을 연결 (단, 무선 연결도 가능)
    • 네트워크에서는 선을 링크라고 부름
  • 통신망 구성 요소

    • 노드(nodes): 단말기, 범용 워크스테이션, 라우터 등
    • 링크(links): 동축케이블, 광케이블, 무선채널 등

중간에서 연결을 도와주는 일을 하는 것을 노드라고 함(공유기, 기지국, ...)

점대점 연결 (point-to-point)

  • 가장 간단한 네트워크 (ex. 블루투스)

    실제로 사용하기엔 한계가 있음 : 노드가 nn으로 늘어나면 링크는 n2n^2으로 늘어남

다중 접근(multiple access)

  • 링크를 하나 만듦
  • ex. wifi
  • 노드가 nn으로 늘어나도 링크는 1개

    A와 C가 통신 중이라면, B와 D는 통신을 못함
    -> 제어를 해줘야 함
  • 문제: 이 방식을 전세계 네트워크에 쓸수 없음
    - 거리, 스케일 때문에 실생활에는 쓰기 힘듦

간접 연결 (Switched Networking)

스위치와 라우터 이용

스위칭 네트워크 (switching networks)


중간 노드가 스위치 기능을 함

인터네트워킹 (internetworks)

=> Network of Networks

왜 세상에 네트워크가 하나가 있는가?
-> 필요에 따라 네트워크가 추가로 생길 수 있다.
-> 네트워크들이 네트워크 된다.

스위칭 정책 (간접 연결 방법)

회선 스위칭 (circuit switching)

  • 전화 네트워크
  • 비트스트림을 중단/간섭 없이 송/수신 (흘려 보냄)
  • 기본적으로 point-to-point 연결 (논리적으로 유사)
  • 중간 노드에는 set up 할 때만 일한다.
  • 중간에 데이터가 왔다 갔다 할 때는 일을 안한다.
  • 전화에는 좋은데 컴퓨터에선 좋지 않다.

    웹사이트를 클릭할 때 확 왔다, 한동안 안 왔다가
    -> 긴 시간동안 통신망이 노는 경우가 생김

패킷 스위칭 (packet switching)

  • 인터넷/우편
  • 전용이 아님
  • 안 쓸때 노는 것을 방지
  • 링크를 사전에 할당하지 않는다.
  • 데이터를 묶음으로 전송한다. (패킷)
  • 스위치 동작: 패킷마다 store-and-forward
회선패킷
set up 할 때만 일하고, 중간에는 일 안함set up 할 때 일을 안하고, 매 패킷마다 확인

컴퓨터 통신에 적합한 것은?

  • 사용자 입장 vs 네트워크 입장
사용자 입장네트워크 입장
회선 스위칭 (전용이어서 남이랑 안 섞인다.)패킷 스위칭 (처리량이 높다.)

회선 스위칭을 쓰면 QOS가 일정하다.
패킷 스위칭을 쓰면 QOS가 일정하지 않다.

*QOS : 응용 프로그램, 사용자, 데이터 흐름 등에 우선 순위를 정하여 데이터 전송에 특정 수준의 성능을 보장하기 위한 능력

어드레싱 (Addressing) 및 라우팅 (Routing)

⭐️ 어드레싱과 라우팅은 별도의 문제이다. (주소라는 단어와 라우트라는 단어는 같은 단어가 될 수 없다.)

  • 상대방을 지정 (address 사용) -> ID 지정
  • 주소(address) : 노드를 식별하는 바이트 열
    • 대개 유일
    • 전화번호도 address임 (전화망의 식별자)
  • (참고) 라우팅
    • 목적지 노드를 향해 메시지를 어떻게 포워딩 할지를 주소에 입각해서 결정하는 작업
  • 주소의 종류 (즉, 연결 형태)
    • 유니캐스트(unicast): 특정 노드를 지정 (1 : 1)
    • 방송/브로드캐스트(broadcast): 네트워크의 모든 노드 (1 : ALL)
    • 멀티캐스트(multicast): 네트워크의 일부 노드 집합을 지정 (1 : N)

비용 효율적인 자원 공유 (Resource Sharing)

  • 링크를 까는것은 돈이 많이 든다.
    -> 통신 자원은 최대한 공유를 해서 비용을 줄인다.
  • 여러 사용자들이 네트워크 자원(노드 및 링크)을 공유하도록 하여야 함.
    -> 다중화 지원 (multiplexing)(전화 용어)
    MUX와 DEMUX
  • 흔히 사용되는 다중화 정책
    • 시분할 다중화 (Time-Division Multiplexing: TDM)
      • 시간을 바꾸면 안 섞임
    • 주파수분할 다중화 (Frequency-Division Multiplexing: FDM)
      • 주파수를 달리하면 안 섞임 (라디오, 케이블 채널...)

Multiplexing


demux에는 'key/select'가 필요함

주파수 분할 다중화 (Frequency Division Multiplexing)

ex. 방송, 케이블 TV...

주파수에 공백이 있음
-> 커다란 물 파이프 가정하고 섞이지 않게 보낼려면 조그만 관을 심는다.

시분할 다중화 (Time Division Multiplexing)

시간을 쪼개서 보냄

FDM : 시간을 쪼개지 않고 항시 사용, 총량이 줄어듦
TDM : 시간을 쪼갬

통계적 다중화 (Statistical Multiplexing)

TDM은 고정식으로 할당이 된다.
근데 데이터가 항상 있는건 아니다.

  • 시분할 방법의 일종 : 고정 분할이 아닌 요구에 따른 동적 분할
    • 비동기식 다중화
  • Demux key/select ?
  • 항상 좋은가?

    Synchronous Division Multiplexing에서 address가 없어도 구분할 수 있는 이유 : 시간이 demux key로 쓰이기 때문에
    Statistical Division Multiplexing 그림에서 A1,B1,B2,C2A_1, B_1, B_2, C_2 앞에 빈칸이 clock으로 demux를 하지 못한다. 그래서 주소를 넣어야 함.
    역전이 일어날 수도 있다.



시간을 낭비되지 않게 할려면 동기식을 깨야 한다.
-> Async TDM, Statistical Multiplexing, On-demand TDM 사용

(Data+Control(addr+)Payload+Overhead)\begin{pmatrix} Data + Control\,(addr + \cdots) \\ Payload + Overhead \end{pmatrix}

Splitting

옛날엔 1개의 link를 여러명이 공유하면서 사용
이젠 사용자가 데이터를 조금 보내는 것이 아님
-> 요즘은 mux의 반대
multi channels (link) 사용

통계적 다중화와 패킷 스위칭

통계적 다중화와 패킷스위칭은 같은 것이 아니다.
밀접한 관련은 있음

  • 통계적 다중화는 링크를 공유하는 방법
  • 패킷 스위칭은 노드가 목적지를 향해 데이터를 전달하는 방법
  • 패킷 스위칭: 패킷 단위로 링크 사용을 재스케쥴링
    • 패킷스위칭의 결과, 링크는 (거의) 통계적 다중화 (100%는 아님)
    • 링크에서 통계적 다중화를 하려면, 노드에서는 패킷 스위칭 필요
  • 다른 출발지/소스(source)로부터의 패킷들이 링크에서 섞이게 됨.
  • 링크로 나가기 위해 경쟁하는 패킷들을 저장: 버퍼링(buffering)
  • 패킷은 FIFO로 처리되거나, 기타 다른 방식으로 처리
  • 버퍼 오버플로우(overflow)를 혼잡(congestion)이라 부름.


13,13,13\frac{1}{3}, \frac{1}{3}, \frac{1}{3} 씩 와도 나갈 땐 1이 아닐 수도 -> 동시에 올 수도 있기 때문
-> 패킷 스위치는 버퍼가 있어야 함

회선 스위치는 미리 일을 해서 전용선을 구축해 놓았기 때문에 흘러감.
반면, 패킷 스위치는 매 패킷마다 일을 해야 하기 때문에 버퍼가 필요
store-and-forward

store가 끝나야지 forward를 진행한다. -> 지연시간이 발생

나중에 준비해 놓은 버퍼보다 더 담으면 overflow가 생김.

통신 서비스 제공

kt와 1000원짜리 tk 통신사가 있다 가정하자, 단, tk 통신사는 연결만 해줌

  • 통신의 주체는 응용 프로그램
  • 따라서, 네트워크는 응용 프로그램이 원활히 통신할 수 있는 기능을 제공
    • 통신 기술을 기반으로 응용 프로그램이 요구하는 기능을 구현/제공
    • 즉, 호스트 간의 연결을 프로세스 간의 통신 형태로 변환
    • 한 host 안에서 응용 프로그램들이 통신을 하는 수준까지 해야... (통신망 안 거침)
      (Network Transparency 제공 : 네트워크를 쓰는지 않쓰는지 모를 정도 -> 최고의 서비스)

네트워크는 프로세스와 프로세스 간의 채널(channel)을 지원한다.
process-to-process

통신 장애 극복

  • 네트워크가 정상적으로 동작하지 않는 경우
    • 비트 수준 오류 (전자기 간섭/방해)
    • 패킷 수준 오류 (혼잡)
    • 링크/노드 고장
    • 메시지의 지연
    • 메시지의 순서가 바꾸어 전달 (out-of-order)
    • 제삼자의 도청

통신 기술의 핵심은 응용이 예상하는 것과 통신 기술이 제공하는 것 사이의 거리를 메우는 일이다.
어디서 작업 (기술 적용)? 통신망의 협조 + 호스트 소프트웨어로 완성!

프로토콜 (Protocol)

  • 통신에 사용되는 약속
    • ex) 수신호, 언어
    • 양쪽이 같아야 함. 즉, 반드시 대칭 관계
  • 다양한 컴퓨터 통신 시스템/응용
    • 프로토콜의 복잡화
    • 불명확한 해석
    • 변경 등 관리의 어려움
    • 새로운 프로토콜이 필요할 때마다 반복
  • 복잡성을 해결하는 구조적인 기법이 필요 (계층화)

계층화(Layering)

  • 복잡한 문제를 한번에 풀 수 없다.
    • 복잡한 내용/문제를 숨겨서 문제를 단순화 -> 추상화 (abstractions) -> 나중에 짜야 함
    • 추상화된 문제/내용의 해결 -> 추상화를 recursive하게 적용
  • 추상화는 자연히 계층화를 유도
  • 통신 프로토콜 <- 여러 계층으로 정의
  • 각 계층은 하나의 기능을 하는 부품/개체로서 다른 프로토콜에서 재사용 가능
    file & cloud 주고 받는 protocol
    -> application programs은 다르지만 하위 층은 상당 부분 비슷하다.

프로토콜 계층/개체

  • 프로토콜 계층/개체
    • (전체) 프로토콜을 구성하는 계층, 즉, 프로토콜의 구성 요소
    • 자체(하나의 층)도 프로토콜이라고도 부름

      하나의 프로토콜을 또 나눌 수 도 있다.
  • 각 프로토콜 개체는 두 개의 다른 인터페이스를 갖는다.
    • 서비스 인터페이스 (service interface) : 해당 프로토콜의 작업을 정의 (나를 어떻게 쓰시오를 정의)
    • 동료 인터페이스 (peer-to-peer interface) : 동료 간에 교환되는 메시지를 정의

(전체) 프로토콜 정의: 프로토콜 그래프

  • 프로토콜 그래프 (또는 프로토콜 스택)
    - 프로토콜 계층들의 모음(collection)과 그들 사이의 의존관계(상하관계)(dependency)
    - 동료(peer) 간의 통신은 대개 간접적(논리적)으로 이루어진다.
    - 실제 통신은 하위 계층을 사용하여 (즉, 위임하여) 이루어진다.
    - 하드웨어 수준에서만 동료(같은 계층에 있는[비서-비서]) 간이 직접적임.

    반대편도 똑같이 구성되어 있어야 함
    검증된 하위 계층이 있으면 새로 만들지 말고 공유해서 씀

하위 프로토콜 공유 (File과 Digital library과 RRP를 공유함)
➡️ 다중화(Multiplexing) 및 역 다중화 (Demultiplexing) -- demux key (ex. port 번호)

계층적 프로토콜에서 통신이란? (논리적, 물리적) 통신 개념

ex. 사장과 비서의 관계
논리적으로 사장과 사장이 통신하는 것이지만 실질적으로 비서를 이용해서 통신 (send down)

Application program에서 RRP로 보내는 것은 Physical이지만, RRP에서 상대 RRP에 보내는 과정은 Logical 과정임

(계층적) 프로토콜: 동작 원칙

  • 포장/캡슐화(Encapsulation) -- 헤더(header)/바디(body)(data)

    구조 면에서 대칭

모든 프로토콜의 동작 원칙이 같다! 실제 동작도 같다?


RRP랑 AAA의 붙이는 header가 다르다.
뼈대는 같지만 header의 붙이는 정도의 크기는 다르다.

  • peer-to-peer interface는? message/header format!
  • service interface는? function signature (예, API)

추상화/계층화 개념 정리

추상화

... 기능은 있다고 가정하자

=> "...기능이 하위 계층에서 제공된다"고 가정
=> "...기능" 문제로부터 해방

계층화

여러 계층으로 나누어 각 계층이 해당 기능을 담당한다.

=> 하위 계층이 제공하는 기능을 (정해진 서비스 인터페이스에 따라) 이용해서,
=> 주어진 기능을 구현하고 이를 상위 계층에게 제공

통신에서 계층화는 필수!

  • 통신을, 필요에 따라서,
    • 추상화가 된 logical 관점으로, 또는,
    • 구체화가 된 physical 관점으로 해석
  • 전체 프로토콜은
    • 프로토콜 계층 구조로 정의
    • 예) 프로토콜 스택
  • 각 계층의 프로토콜은
    • peer-to-peer interface를 정의
    • service interface는 시스템 구현에 필요

표준 구조 (Standard Architectures)(1)

Open Systems Interconnect (OSI) Architecture

  • 계층 몇개를 쪼갤지 합의 (만약 A 회사는 6개로 쪼갰지만 B 회사는 8개로 쪼개면 통신이 안된다.)
  • International Standards Organization (ISO) (알 필요X)
  • International Telecommunications Union (ITU): formerly CCITT
  • "X dot" series: X.25, X.400, X.500
  • 참조 모델(Reference Model): 통신 문제를 나누어 생각하는 틀 (기준이 되는 모델)

    계층이 많은 것은 장점인가, 단점인가? 통신을 하려면 위,아래로 계속 이동해야 함 ➡️ 성능면으로 많으면 좋진 않다.

7계층 (기능) 정의

  • 응용 계층: 응용 자체와 관련된 사항만.
  • 프리젠테이션 계층: 데이터 표현 방법과 관련된 사항
  • 세션 계층: 대화 패턴과 관련된 사항 담당
    • 동시에 얘기 하면 엉킴
  • 트랜스포트 계층: 통신 응용 사이의 신뢰성 있는 메시지 교환
    • process-to-process
    • ex. TCP
    • 상대하는 대상이 기기가 아니라 응용
    • 응용이 연결되는 부분 이름: end point
    • end-to-end reliable data transfer (process간 channel 제공)
  • 네트워크 계층: 네트워크를 통해 연결된 호스트(단말) 사이의 데이터 (패킷) 교환
    • 스위칭 담당
    • host-to-host
    • unreliable
  • 링크 계층: 하나의 링크로 연결된 노드 사이의 비트묶음 (프레임)교환
    • 신호로부터 해방 (비트는 고민 안해도 됨)
    • 패킷을 보낼 때 묶어야 함
  • 물리 계층: 물리적인 신호 교환과 관련된 사항 담당
    • 0, 1를 신호로 보내야 함
    • 케이블에 핀이 몇 개냐?

표준 구조 (Standard Architectures) (2)

인터네트(Internet) 구조

  • Internet Engineering Task Force (IETF)
  • 응용 및 응용 프로토콜 (FTP, HTTP)
  • 특징
    • 계층화를 그대로 따르지는 않음. (필요한 얘들끼리 합침, 필요 없으면 skip)
    • 모래시계 형태의 모양
    • 설계와 구현을 병행해서 진행
  • FTP, HTTP, NV, TFTP : 7계층
  • TCP, UDP : 4계층
  • NET1_1, NET2_2, ..., NETn_n : 1, 2, 3 계층 합침
  • IP : 인터넷 프로토콜 ➡️ 네트워크가 확장된 뿐이지 여전히 네트워크 문제 (3.1계층 쯤 생각)

성능 (Performance): 대역폭

대역폭 (Bandwidth) - 처리량/처리속도 (throughput)

  • 대역폭: 전송할 수 있는 최대 용량
  • 처리량/처리속도: 실제 얼마 나오느냐
  • 단위 시간당 정송될 수 있는 데이터의 양
  • 초당 몇 bit를 통신하느냐
  • 예: 10Mbps (bits-per-second), 1Gbps, ...
  • 링크간 대 종단간
  • 표기 방법
    KB = 2102^{10} bytes
    Mbps = 10610^6 bits per second
  • 대역폭은 비트 폭(bit width과 관련이 있다.
    • 속도가 높아지면 비트폭은 작아진다. 즉, 비트 사이가 좁아진다.

비트를 2배로 높이면 한 비트가 차지하는 크기가 2배로 좁아진다.
비트들이 붙어 있기 때문에 한 비트가 고장나면 10배, 1000배씩 날아간다.
또한, 비트들 사이에 사소한 문제가 생긴다.

성능: 소요시간/지연시간

  • 소요시간(Latency)/지연시간(delay)
  • A 지점에서 B 지점으로 메시지를 송신하는데 걸리는 시간
    • 예: 24 milliseconds (ms)
  • 때로 왕복지연시간(round-trip time: RTT)(갔다 오는 시간)이 중요할 수 있다.
  • 신호를 보내면 도달하는데 걸리는 거리에 따라 지연되는 시간 : 전파시간
  • 시간 소요 항목
    • 소요시간 = Propagation(전파시간) + Transmit(파이프 통과하는데 걸리는 사간) + Queue [+스위칭 시간]
    • Propagation(전파지연시간) = Distance/SpeedOfLight
    • Transmit(전송시간) = Size(데이터를 보내는 size)/Bandwidth(bps)

Propagation과 Transmit은 비교적 예측이 가능한 반면 Queue는 비교적 예측이 힘듦

  • 광속 (Speed of light) - 전파의 속도
    • 3.0×1083.0 \times 10^8m/s in a vacuum, 2.3×1082.3 \times 10^8 in a cable, 2.0×1082.0 \times 10^8 in a fiber
  • 직접 링크에서는 큐잉 지연(queuing delay)은 없음.

Timing in Circuit Switching

Timing of Packet Switching


packet에서는 buffer가 필요함 : store-and-forward
packet이 모두 도착한 다음 출발 가능하다.
숙명:

  • circuit: set-up 시간
  • packet: store; forward

packet의 사이즈, 노드 개수 영향
➡️ 시간적으로 나쁠 수도 있음 ➡️ Pipeline 사용

packet 2의 수신과 packet 1의 송신을 동시에 할 수 있다. (서로 다른 packet이어야 함)

그럼 packet를 작게 만드는 것이 유리할까?
processing도 병렬화가 됨 -> 별 차이 없음
packet은 서로 분리가 되어 쏴야 함 -> 데이터만 보낼 수가 없다.(header가 꼭 들어가야 함) -> packet마다 overhead가 있음

성능 (Performance) (3)

  • 10Gb가 넘는 영화 다운(대역폭? 소요시간?)
    • 위성이 나쁘지 않음
  • 수강신청
    • 소요시간이 중요
  • 대역폭과 소요시간의 상대적 중요성
    • 작은 메시지 (예, 1 byte): 소요시간 중요
      1ms vs 100ms dominates 1Mbps vs 100Mbps
    • 큰 메시지 (예, 25MB): 대역폭 중요
      1Mbps vs 100Mbps dominates 1ms vs 100ms
  • 무한대 대역폭
    • 총 소요시간이 중요
      • Throughput = TransferSize / TransferTime(전송완료시간)
        • 회선 스위칭: TransferTime = RTT + (1 / Bandwidth) x TransferSize
        • 패킷 스위칭: 여러 요소에 영향. (과제)
    • 1-MB file to 1-Gbps link as 1-KB packet to 1-Mbps link
    • 데이터도 같이 증가! -> 대역폭을 무시할 순 없음

대역폭 x 지연시간 (Bandwidth x Delay Product: BDP)

  • 사용자만을 생각할 순 없음 (사용자는 대역폭이 크고 시간이 짧게 오면 최고)
  • 망을 얼마나 잘 사용하고 있는지 측정
  • "in flight" of "in the pipe" (최대/적정) 데이터 양
  • 비트로 나타내는 링크의 길이 (bit length)
    • 링크의 부피
    • 대역폭이 반영된 지연시간

bitssec×sec=bits\frac{bits}{sec} \times sec = bits

  • 예: 100ms x 45Mbps = 560KB
  • 통신 효율 계산에 사용: why?
  • 링크로 현재 전송중인 총 bit (사진을 찍었을 때 링크에 01011...이 얼마나 있는지)

frames

  • 패킷이 한 링크로 갈 적

성능: 기타 사항

  • 응용의 요구사항
    • 대역폭 요구: 버스트(burst) 대 최고속도(peak rate)
    • 지터(jitter): 소요시간의 변이 (패킷 사이의 차이)
  • 기타 주의 사항
    • 만일 (메시지) 길이가 1이라면 대역폭은 의미가 없음.
    • 응용/프로세스 간의 소요시간에는 소프트웨어 처리 부하도 포함됨
    • 거리가 짧고 고속 통신이면 소프트웨어 부하가 중요 요소가 된다.

통신망 (links + nodes)에서 병복지점은 어디?
망 안에는 노드와 링크로 구성
옛날에는 노드가 비교적 널널함 -> 링크가 병목
컴퓨터는 지속적으로 2배씩빨라지고 있음. 반해 링크는 지속적으로 10배 늘어남. -> 스위치(라우터)가 병목지점(스위치가 용량처리에 한계가 있기 때문)

0개의 댓글