이 강의는 부산대학교 탁성우 교수님의 컴퓨터 네트워크 강의 자료입니다.
컴퓨터 네트워크에 대해서 간략하게 알아보자.

What is Computer Networks?

Computer Networks란, 하나 이상의 Network가 모인 것을 말한다.

그럼 Network는 무엇일까?

  • Graph와 유사한 형태를 가졌으며, Vertex(Node)와 Edge(Link)의 집합이다.

이 Graph의 형태를 가진 Network들이 상호 연결(interconnect)되면 Networks가 된다.

그럼 또 하나, Network는 Network인데 Computer Network 라고 명시를 했다.
Computer Network는 다른 Network와는 어떻게 다른가?

먼저 Computer은 0과 1로 Data unit을 저장하고 공유하는 Digital 기계이다.
즉, Computer Network는 Digital Network와 같은 말로 생각할 수 있겠다.
또 그에 따라, Network간의 정보 교환이 모두 0과 1로 이루어진다는 말이 된다.

Store & Forward

Computer Network에서의 Main Keyword는 Store와 Forward라고 볼 수 있다.

  • Store : Computer의 Memory에 받은 Data를 저장하는 것.
  • Forward : Computer의 Memory의 Data를 다른 Node로 Link를 통해 보내는 것.
    • Network에서 보내는 Data는 Packet 이라고 칭한다.
    • 이를 교환하는 행위를 우리는 Packet Switching 이라고 부른다.
    • Packet Switching의 Main concept이 바로 Store & Forward가 되는 것!

What is Internet?

Internet은 A big computer network!

Internet은 IP Protocol을 사용하는 Interconnected Computer Networks라고 정의한다.

  • 우리가 아는 www. ~은 인터넷일까?
    • 아니다. www. ~는 단순히 Web 에 불과하다.
    • Web은 URL(Hyperlink)을 통해 상호연결된 문서들의 집합이라고 정의한다.

그럼 IP Protocol은 무엇을 의미하는 걸까?

  • Protocol : 프로토콜은 통신을 편하게 하기 위한 규칙이다.
    • Internet은 Internet Protocol(IP)를 사용하게 된다.

Internet은 어떤 구조로 이루어져 있을까?
앞서 설명 했듯이, Internet은 하나의 큰 Computer network이다.
따라서 Node와 Link로 이루어진 Interconnected Network로 구성된다.
Network의 Data의 단위가 Packet 이었으므로, 당연히 Internet도 Packet을 교환한다.

  • End-node(Host) : Data를 전송하고 받는 시작 및 도착점.
  • Relay-node(Router) : 중간중간에 올바른 길을 찾아주는 Node들.

TCP/IP?

TCP(Transmission Control Protocol) 이란?
기본적으로 네트워크 통신에서 Reliable함을 보장하기 위한 통신 규약이다.
따라서 Network Congestion Avodiance Algorithm을 내장하여 사용한다.

하지만 Reliable Network를 보장한다는 것은 4가지 문제가 존재한다.

  1. 손실 : Packet이 손실될 수 있다.
  2. 순서의 역전 : Packet의 전송 순서가 변경될 수 있다.
  3. 혼잡 : 네트워크가 혼잡해질 수 있다.
  4. Overload : Receiver가 Overload 될 수가 있다.

TCP/IP Communication Layers

TCP/IP Protocol은 통신을 위해 계층 구조를 사용하고 있으며,
계층마다 다 다른 역할을 갖고 작업을 수행한다.

왜 굳이 Layer 구조를 사용할까?

  • 각 층은 독립적으로 작동하며 존재한다.
  • 따라서 특정 층이 고장나게 되어도 다른 층에 영향을 끼치지 않는다.
  • 해당 층만 고치게 되면 전혀 문제가 없이 사용이 가능해 유지보수에 큰 장점!

실제 물리적으로 각 계층은 Vertical하게 Data를 전송한다.
하지만 우리가 보기엔(Virtually) Horizontal하게 각 계층끼리 Data를 전송하듯 보인다.
각 계층을 내려갈 때마다 거기에 맞는 Data가 Wrap되어 전송된다.

image
image

Layer Architecture

  • Application(응용)
    • Data 전송의 시작과 끝을 담당하므로, 순수 Data만 존재하는 계층이다.
    • Reliable Delivery를 통해 Data를 전달한다.
  • Transport(전송)
    • 전송 단위는 Segment.
    • Process-to-Process Delivery를 담당한다.
    • Reliable Delivery를 통해 Data를 전달한다.
      • ACK를 통한 전달 성공 여부 확인
    • TCP(UDP)가 이 계층에 해당하며, Port를 통해 도착지와 출발지를 구분한다.
  • Network(네트워크)
    • 전송 단위는 Packet.
    • End-to-End Delivery를 담당한다.
    • Unreliable Delivery를 통해 Data를 전달한다.
      • Best Effort Delivery(IP)
    • IP가 이 계층에 해당하며, IP Address를 통해 도착지와 출발지를 구분한다.
  • Data link(데이터 링크)
    • 전송 단위는 Frame.
    • Hop-to-Hop Delivery를 담당한다.
    • MAC Address를 통해 도착지와 출발지를 구분한다.
    • Reliable Delivery를 통해 Data를 전달한다.
    • 이 층은 MAC와 LLC, 두 부계층으로 구성이 되어있다고 본다.
    • LLC : Logical Link Control
      • Error Control
      • Flow Control
      • Congestion Control
  • Physical(물리)
    • 전송 단위는 bit.
    • Node간의 하나의 Hop을 물리적으로 발생시키는 계층이다.

Data Link 계층을 자세하게 살펴보면, 아래와 같이 두 부계층으로 나눌 수 있다.

  • LLC(Logical Link Control)
    • Error Control : Error를 Detect하고 수정하는 Logic이며, 필수적으로 진행된다.
      • ACK라는 Packet을 받아야만 제대로 전달이 되었다는 의미로 받아들인다.
      • Stop & Wait
      • Go Back N
      • Selection Reject
    • Flow Control : 송신 측과 수신 측의 Data 처리 속도 차이를 해결하는 기법이다.
      • 이 기법의 핵심은, Receiver의 Buffer가 넘치지 않도록 조절하는 것이다.
      • Buffer가 넘치게 되면, Data loss가 생겨 송수신측의 불필요한 요청/응답이 발생한다.
        • 해결 방안 : Stop and Wait, Sliding Window
        • Data를 받을 때 마다 ACK로 Buffer의 상태를 Advertise 해야한다.
    • Congestion Control : Data 전달과 네트워크 Data 처리 속도 차이를 해결하는 기법이다.
      • 네트워크 내의 Packet 수가 과도하게 증가하거나 한 라우터에 Data가 과하게 몰리는 경우이다.
      • Congestion 한지 상태는 RTT(Round Trip Time)을 확인함으로써 알 수 있다.
      • 해결 방안 : AIMD, Slow Start, Fast Retransmit
  • MAC(Medium Access Control) : 여러 Device 간의 충돌을 제어하는 기법이다.
    • CSMA/CA(Collision Avoidance) : Wifi에 보통 사용되는 기법
    • CSMA/CD(Collision Detection) : Ethernet에 보통 사용되는 기법
    • ALOHA, CDMA, CSMA..

Bonus : AD HOC Network

응급 상황에 비상 상황 전파를 빠르게 할 수 있는 임시 네트워크이다.
보통 네트워크와는 다르게 기지국(Access Point)가 따로 필요가 없다.
각 독립 Node들이 Router의 역할을 하며, Src 장치로 부터 Dest 장치까지 Packet을 전달한다.

중앙 시스템이 없어, 비용이 저렴하고 언제 어디서나 기기 간 통신이 가능하다.
하지만, 각 장치의 배터리(전력)을 소모하여 통신을 하기 때문에, 구성하지 않으려는 사람들도 더러 있을 것이다.

Bonus : LAN(Local Area Network)

LAN의 정의는 논리적으로 One-Hop 만에 전달 가능한 범위의 네트워크를 말한다.

우리가 많이 쓰고 있는 Wifi는 무선으로 One Hop만에 우리한테 연결이 된다.
따라서 Wifi는 WLAN(Wireless LAN)이라고 칭한다.
Wireless 방식의 2가지 특징인 Mobility, Broadcast 를 이용하여 정보를 전달한다.

하지만 Broadcast 방식은 보안이 되지 않는다는 단점이 있다.
이는 곧 누구나 전달하는 Data를 엿들을 수 있다는 말이다. (Can Sniff, Capture)
따라서 이를 통제하기 위해서는 따로 보안 Protocol을 적용해야 할 것이다.