[CS] 네트워크 - 1. 네트워크 기본

J.Noma·2022년 2월 12일
0

컴퓨터 공학

목록 보기
14/18
post-custom-banner

Reference

  • 내용전반: KOCW

인터넷이 어떤 요소들로 이루어져 있는가

네트워크 Overview

🌀 프로토콜이란?

네트워크 시간에 말하는건 결국 전부 프로토콜이다. 프로토콜이 대체 무엇인가? 모든 의사소통에는 사용되는 언어라던지 하는 모종의 규칙이 필요하다. 제임스와 찰리가 대화하는데 있어서도 영어를 사용하는 것과 본 내용을 말하기 전에 Hi~ 라고 인사하는 것들이 암묵적인 프로토콜인 것이다. 데이터를 주고받음에 있어서도 규칙(프로토콜)이 필요하다. 통신에서의 프로토콜은 TCP/UDP를 비롯하여 여러 종류가 있으며, 서로 사용하는 프로토콜이 다르면 통신이 안된다


🌀 데이터 통신 서비스의 종류

데이터를 주고받기 위한 기반 서비스의 종류

🔸 Connection-oriented Service (TCP)

이름에서 connection 개념이 사용됨이 느껴진다. 흔히 알려진 TCP가 Connection-oriented Service를 제공하는 통신 방법이다. TCP는 유저에게 아래 3가지를 제공한다

  • 데이터를 안정적이고 순서대로 전송
  • 데이터 수신자가 소화할 수 있는 속도에 맞추어 전송 (flow control)
  • 데이터를 실어나르는 네트워크가 소화할 수 있는 속도에 맞추어 전송 (congestion control)

🔸 Connectionless Service (UDP)

UDP는 connection 개념이 없고 flow control, congestion control 전부 없다. 서비스가 신뢰성을 보장하지 않기 때문에 음성전화라던지 데이터가 좀 유실돼도 괜찮은 경우에만 사용한다

TCP가 신뢰성을 보장하느라 상대적으로 비용이 크긴 하지만 대부분의 경우 데이터가 유실되지 않는게 더 중요하므로 TCP를 주로 쓴다


🌀 네트워크 구성요소

인터넷은 위와 같은 구조로 크게 3요소로 구성된다

  • Edge : 웹브라우저 같은 Application
  • Core : 라우터(원판모양)
  • Link : Edge/Core들을 서로 연결하는 매체

🔸 네트워크 Edge

🔘 Client
자기가 원할 때 링크에 연결해서 서버로부터 정보를 가져오는 구성요소
🔘 Server
항시 대기하여 client로부터의 요청을 기다리고 대응한다

🔸 네트워크 Core

네트워크 Core는 결국 라우터들이 얽히고 설킨 집합이다. 네트워크 코어에서 데이터를 전달하는 방식에는 크게 2가지(Circuit / Packet switching)가 있다


🌀 네트워크 Core의 데이터 전달방식

🔸 Circuit Switching

출발지에서 목적지까지 가는 길을 미리 예약해놓는 것. 즉, 특정 사용자만을 위해 길을 터놓는 것. 옛날 유선전화망이 이랬다

🔸 Packet Switching

자원을 미리 예약하는 것 없이, 유저가 보내는 패킷을 받아서 그때그때 들어온 순서대로 포워딩한다. 인터넷은 이 방식을 사용한다.

🔸 Circuit vs Packet

1Mbps의 케이블이 있고 각 유저는 100Kbps를 사용한다고 가정해보자. Circuit switching을 사용할 경우 한 번에 10명의 유저만을 지원한다. 여기서 할당된 유저가 데이터를 열심히 전송하면 괜찮은데 중간중간 쉬면 그만큼 케이블이 놀게 되므로 전송효율이 떨어진다

반면, Packet switching은 미리 예약하는게 아니므로 그 10명이 유동적으로 계속 바뀌며 동작한다. 어떤 유저가 쉬더라도 데이터를 전송하는 다른 유저가 바로바로 케이블 bandwidth를 채워 전송효율이 떨어지지 않는다는 장점이 있다. 하지만, 단점들이 존재한다

🔸 Packet Switching의 취약점 : 데이터 loss / delay

1. Processing

  • delay : 이 패킷이 제대로 된 패킷인가. 목적지는 어디인가를 처리하는데 delay가 발생한다
  • 개선 : 좋은 라우터를 쓰면 개선된다

2. Queueing

  • delay : 라우터 output보다 input이 더 큰 경우를 대비해 buffer가 필요하다. 늦게 들어온 패킷은 자기 순서를 기다려야 하고 이에 따라 delay가 발생한다
  • loss : buffer 크기에는 한계가 있으므로 데이터가 넘치도록 들어오면 버릴 수 밖에 없다. 그래서 사용자가 심하게 몰리면 데이터 유실이 발생할 수 있다. 네트워크에서 발생하는 loss의 90%는 이거다. TCP는 이걸 해결하기 위해 edge에 있는 client에게 재전송을 요청한다
  • 개선 : 유저집단의 데이터 사용량을 제어해야 하는 부분이라 기술적으로 개선하기 어렵다

3. Transmission

  • delay: 링크가 한 번에 최대로 전송가능한 데이터량은 bandwidth라는 이름으로 정해져있다. 따라서 어떤 패킷이 라우터 안으로 들어오거나 밖으로 나갈 때 한번에 나가는게 아니라 링크의 bandwidth 단위로 순차적으로 들어오고/나가게 된다. 즉, 라우터로 패킷이 들어오는 경우 패킷의 전체가 도착할 때까지 기다렸다가 전부 도착해야 다음 라우터로 보내게 된다. 이 때 첫 bit가 나가고부터 마지막 bit가 나갈 때까지의 시간을 transmission delay라 하며, 패킷의 크기 / 링크의 bandwidth로 계산된다
  • 개선 : bandwidth가 큰 케이블을 쓰면 개선된다

4. Propagation

  • delay : 마지막 bit까지 링크에 올라가서 다음 라우터까지 도달할 때까지의 시간을 말한다. 빛의 속도 x 전송길이로 계산된다
  • 개선 : 빛의 속도는 신의 영역이므로 어쩔 수 없다
profile
노션으로 이사갑니다 https://tungsten-run-778.notion.site/Study-Archive-98e51c3793684d428070695d5722d1fe
post-custom-banner

0개의 댓글