2020-02-11 TIL

할 일 목록

  • 리액티브 코틀린 읽고 코드 쳐보기
  • 코딩 도장 참여
  • 객체지향 사실과 오해 스터디
  • 하루 3분 네트워크 교실 스터디

완료하지 못한 목록

완료 목록

  • 리액티브 코틀린 읽고 코드 쳐보기
  • 코딩 도장 참여
  • 객체지향 사실과 오해 스터디
  • 하루 3분 네트워크 교실 스터디

5Fs

1. Fact

1. 네트워크

  • 1계층의 역할과 개요

    1. 케이블이 연결되어 있는 기기에 신호를 전달하는 것이 1계층의 역할이다.
    2. 데이터를 전달하는 일은 1계층의 역할이고, 전달하기 전 과 전달하기 후의 일을 하는것이 2계층 이상의 역할이다.
    3. 케이블에는 전기신호를 사용하는 동선(UTP(Unshielded Twist Pair cable))과 광신호를 사용하는 광섬유가 있다.
    4. Lan용 케이블에 접속하기 위한 NIC(Network Interface Card)는 컴퓨터에서 사용되는 일반적인 인터페이스다.
    5. 가정용 PC에는 거의 NIC가 붙어 있고, WAN 를 부착하지 않고 DCE(Data Circuit terminating Equipment)라는 별도의 신호 변환기를 이용한다.
  • 신호와 충돌

    1. 컴퓨터와 통신 매체를 중개하는 인터페이스는 비트를 신호로 신호를 비트로 변환하는 기기다.
    2. 신호에 발생하는 문제

      • 신호의 감쇠

        • 긴 케이블을 지나는 동안 신호가 약해지는 현상
      • 노이즈, 간섭

        • 어떤 원인에 의해 형태가 무너져 버리는 건데, 그렇게 되면 신호의 진폭을 정확하게 읽을 수 없게 될 가능성이 있다.
      • 충돌(Collision)

        • 멀티 액세스 네트워크 등에서 일어날 수 있는 문제로, 신호가 보내지고 있는 도중에 다른 신호를 보내는 경우 발생하게 됨. A라는 컴퓨터가 신호를 보내고 있을 때 B라는 컴퓨터가 또 다른 신호를 보내는 상황이다.
  • 허브

    1. 허브에 케이블로 연결되어 있는 기기는 동일 케이블에 연결되어 있는 것과 같은 취급을 받게됨.
    2. 허브의 기능

      • 신호의 증폭과 재생. 감쇠에 의해 붕괴된 신호를 본래의 형태로 증폭 또는 재생한다.
      • 복수의 기기를 연결해서 네트워크를 구축하는 기능. 허브에 연결되어 있는 기기끼리 신호를 주고 받을 수 있게 된다. 포트의 수보다 연결될 컴퓨터가 많다면, cascade connection(연속 접속)을 한다. 같은 케이블에 있는 취급을 받는다.
      • 허브끼리 접속함으로써 신호가 도달하는 범위를 넓힐 수 있다.
    3. 충돌 도메인

      • 허브는 수신한 신호에 대해 어떤 제어도 하지 않는다.
      • 허브는 수신한 포트 이외의 모든 포트에 수신한 신호를 송신 하는데, 이를 flooding이라고 한다.
      • 그러므로 여럿이 케이블을 사용하는 상황에서 동시에 신호를 보내거나 받으려고 할 경우, 충돌이 일어날 가능성이 있다.
      • 신호를 송신하면 충돌이 발생할지도 모르는 범위를 충돌도메인이라고 한다.(collision domain)
      • 그래서 충돌 도메인은 작아야 한다.
  • 2계층의 역할과 개요

    1. 2계층은 신호가 닿는 범위에서의 데이터 전송에 관한 규정이다.
    2. 신호가 닿는 범위로는 멀티액세스 네트워크라면 허브로 연결되어 있는 기기 전체, point to point 네트워크라면 서로 연결된 두대 다시말해 세그먼트 범위에서의 데이터 전송 범위를 이야기한다.
    3. 프레이밍과 신호의 동기

      • 1계층이 신호를 전달하는 것이라면 2계층은 신호가 닿는 범위 즉 세그먼트 범위에서 데이터를 어떻게 송수신 할지에 대한 것이다.
      • 1계층에서 다루는 신호랑 케이블 등에 따라 2개층의 규격이 달라진다.

        • LAN용고 WAN용이 있고, 3계층 이상에선 둘다 동일한 규칙을 사용하지만 2계층 까지는 사용하는 규칙이 다르다.
      • LAN의 사실 표준은 이더넷(Ethernet)이다.
      • 1계층에서 주고받는 신호를 비트화해 거기에 의미를 갖게 하는것을 프레이밍이라고 한다.
      • 프레이밍에서 가장 앞에 preamble을 넣어 시금부터 프레임이 시작된다는 신호를 준다.
      • 송신이나 수신측에서 서로 보내고 읽는 타이밍이 안맞아 정보를 잘 받지 못할 수가 있는데 그때 데이터 통신 직전에 프리엠블을 보내 타이밍을 비동기적으로 맞추는 기법을 사용한다.
  • 2계층 주소와 이더넷

    1. Address : 데이터를 보내는 상대와 자신을 특정하는 데이터, 이더넷에서 어떻게 신호가 도달하는 범위에서 데이터를 송수신하는지 핵심이 된다.
    2. 데이터 전송방법

      • 유니캐스트(Unicast)

        • 1:1 통신
      • 브로드캐스트(Broadcast)

        • 전원, 즉 모두에게 메시지를 보내는 데이터 통신
      • 멀티캐스트(multicast)

        • 1대 다수로 지정된 복수의 기기로 메시지를 보내는 데이터 통신.
    3. MAC (Media Access Control Address)주소 : 인터페이스에 지정된 고정 주소. 48비트 값으로 4비트마타 16진수로 고쳐쓴다.
  • 이더넷

    1. 헤더에는 수신처의 주소, 송신처의 주소, 페이로드의 내용을 식별하는 타입이 붙고, 그다음 페이로드 그 다음 트레일러에 에러를 체크하는 FCS(Frame Check Sequence)가 있다.
    2. FCS에서 에러를 발생하면 그 프레임은 파기하고 파기했다는 것을 송신측에 알리지 않는다.
    3. 허브를 사용한 멀티 액세스 네트워크의 경우 신호, 즉 데이터는 모든 기기에 도달하게 되고, 이더넷에서는 수신한 프레임의 수신처 MAC 주소를 보고 자기에게 온 것외의 다른 프레임을 파기한다.
    4. CSMA/CD(Carrier Sense Multiple Access/Collision Detection) 라는 액세스 제어

      • 이더넷에서는 신호를 보내는 타이밍을 겹치지 않도록 비켜나게 함으로 써 되도록 충돌이 일어나지 않도록 한다.
      • CS(신호감지)는 누군가가 송신 중이라면 송신하지 않는다.
      • MA(다중 액세스) 는 아무도 송신하고 있지 않다면 송신할 수 있다.
      • CD(충돌 검사)는 송신 후에 충돌이 일어나면 다시 재수행한다.
  • 스위치

    1. 충돌을 피하기 위해 신호를 보내는 타이밍이 겹치지 않도록 엇갈리게 하는 방법을 위해서 배웠고 이번 장에서는 신호가 지나는 길을 나누는 방법을 배운다.
    2. 신호가 지나는 길을 나누기 위한 기기가 스위치(switch)이다. 허브 대신 사용한다.
    3. 스위치를 사용하면 케이블상에서는 자신이 송신한 신호랑 상대에게서 보내 온 신호가 동시에 지나가도 충돌은 발생하지 않는다.
    4. 수신한 프레임을 따로따로 보낼 수 있도록 충돌을 막는 방법으로 MAC주소 필터링과 버퍼링 두가지 방식이 있다.

      • MAC 주소 필터링

        1. 학습과 스위칭이라는 동작으로 이루어진다.
        2. 수신한 프레임의 송신처를 MAC주소를 수신한 포트와 연관지어 테이블에 저장한다. 이를 Adress Table이라고 한다.
        3. 프레임의 수신처 MAC주소를 보고 그 MAC주소가 있는 포트만 프레임을 송신한다.
        4. 그결과 수신처가 다른 프레임이 동시에 스위치에 도달해도 충돌이 발생하지 않는다.
        5. 하지만 학습전의 MAC주소 수신의 프레임을 수신한 경우와 수신처가 1개가 아닌 멀티캐스트와 브로드캐스트 수신처인 프레임을 수신한 경우 허브와 마찬가지로 플러딩을 하고, 맥 주소를 가진 기기는 스위치에게 신호를 보내 라우팅 테이블에 저장한다.
  • 전이중 이더넷

    1. 그렇다면 수신처가 같은 프레임이 동시에 도달하면 어떻게 해야될까? 그것은 버퍼링으로 해결할 수 있다.
    2. 충돌할 것 같은 프레임을 버퍼에 일시적으로 저장해 두는 방법이다.
    3. 버퍼의 용량이 부족하다면 백프레셔 또는 IEEE802.3x를 사용하여 처리
    4. 스위치를 사용하면 충돌 도메인을 스위치에 의해 분할 할 수 있다.
    5. 반이중통신(Half-Duplex) : 누군가가 송신중일 때는(본인은 수신중) 송신 불가능
    6. 전이중통신(Full-Duplex) : 동시에 송신과 수신을 할 수 있는 방식.
    7. 스위치를 사용할 경우 충돌을 염려할 필요가 없고 SCMA/CD를 사용할 필요가 없다. 그래서 전이중 통신이 가능하다.
    8. 하지만 여러 컴퓨터와 연결된 스위치와 여러컴퓨터가 연결된 허브가 연결되어져 있다면 반이중 방식밖에 사용할 수없다.
    9. 전이중 방식을 사용하기 위해선 둘다 스위치로써 연결되어져야 한다.

2.Feelings

  • 코딩 도장에서 문제를 풀때 어떻게 풀지 다 생각해서 푸는게 아니라 TDD를 이용해서 주어진 자료를 갖고 푸는 방법을 연습해서 좋았다. 이걸 훈련해야겠다.

3.Findings

  • 리액티브 프로그래밍이란 새로운 패러다임을 알게되었다.
  • 코틀린은 어렵다.

4.Future Action Plan

  • 내일은 학교 갔다 와야되서 공부를 시작 하는 시간이 좀 늦을것 같다.
  • 코틀린 스터디 내용 다 끝내야 한다.

5.FeedBack


Written by@Zero1
This blog is for that I organize what I study and my thinking, feeling and experience.

GitHub