[Network] Network Introduce

Dev·2021년 9월 23일
0

1. 네트워크 구조

[1] 네트워크란

네트워크란 두 대 이상의 컴퓨터를 연결하여 서로 통신할 수 있게 만든 망입니다. 유저가 증가하며 복잡한 네트워크 망이 구성됐고, 이러한 네트워크의 집합가 나왔는데 이를 인터넷이라고 부릅니다.

네트워크 구조가 복잡하든, 트래픽이 많든, 해저 케이블이 끊기든 이들의 목적은 패킷을 어떤 상황에도 안전하고 빠르게 목적지까지 전달하는것이 목표입니다.

[2] 네트워크 장비

  • Host : Internet Edge에 분포하는 IT 디바이스를 말합니다. PC, Mobile, Server
  • Link : 디바이스를 연결하는 회선을 말합니다.
  • Switch : 데이터 링크 프로토콜 계층 장비로, 같은 네트워크 안에서 패킷을 전달합니다.
  • Router : 네트워크 프로토콜 계층 장비로, 인터넷 코어에 위치하여 출발지에서 목적지까지 패킷을 전달합니다.

[3] 네트워크 역사

현재 인터넷 구조는 최상위 루트에 인터넷이 있고, 하위에 계층별로 인터넷 회사 ISP와 ISP들을 연결하는 IXP 회사들이 있습니다. 패킷을 전달할 때 굳이 상위 계층으로 갈 필요가 없는 것들을 필터링하여 비용, 속도, 트래픽 면에서 효율을 얻습니다. 필터링이 없다면 상위 계층에서 무분별하게 패킷이 왔다갔다하고 이는 트래픽이 몰려, 속도도 느려지고 비용도 과부화가 걸릴것입니다. 유저가 인터넷을 사용하고 싶다면, 상위 reginoal 네트워크에 연결만하면 되므로 확장성 측면에도 효율적입니다. 핵심은 계층별로 인터넷을 구성하는것입니다.

[4] 메시지 전달 방식

  • Packet Switching : 특정 사용자의 독점을 방지하기 위해 메시지를 패킷 단위로 자릅니다. 패킷마다 목적지 주소를 싡고, 패킷을 다음 링크로 전송하기 전에 저장 한 뒤 전송하는 Store and Forward 방식을 따릅니다. Ex) Internet

  • Circuit Switching : 대역 독점을 막기 위해 자원을 분할합니다. 따라서 메시지 전달 전 Call Setup 과정이 필요합니다. 즉, 출발지부터 목적지까지 어떤 라우터를 거치는지를 설정하고 필요 자원을 예약합니다. Ex) 전화

[5] Access Network

호스트와 인터넷을 연결한 네트워크를 의미합니다.

  • Digital Subscribal Line [DSL] : KT, SKT 등의 회사들이 유저에게 Access Netowrk를 제공한 Dedicated 방식입니다.
  • Cable Network : 아파트에서 브로드캐스트로 TV 채널을 공유하는 상황에서 사용합니다. 이는 shared 방식을 이용합니다.

bottlenect link
출발지부터 목적지까지 여러 링크가 있고 그 중 capacity가 가장 낮은 링크에 따라 속도가 결정됩니다. 인터넷은 capacity가 매우 높아 보통 속도는 access network link에 의존합니다.

2. 네트워크의 성능

  • Latency : 호스트 사이의 통신하는데 걸리는 시간
  • Bandwidth : 단위시간 당 최대 몇 bit를 전송할 수 있는 양
  • Loss : 네트워크 장애 등 손실 되는 양으로, 이러한 문제를 해결하기 위해 우회 경로의 대책 필요

PC 방에서 인터넷 광랜 10M -> 50M -> 100M -> 1G -> 10G라고 적혀있습니다. 사실 이 의미는 bandwidth를 의미합니다. 엄밀히 말하자면 속도가 빠름 유무를 결정짓는건 Latency와 더 밀접한 관련이 있습니다. 즉, 한정된 대역폭을 나눌 때 bandwidth는 중요하지만 그 자체의 속도를 의미하는것은 아닙니다.

3. 프로토콜

프로토콜이란 IT 기기가 서로 통신 하기 위한 규칙입니다. 프로토콜 갯수가 많아지며 관리가 힘들어졌기 때문에 네트워크에서 통신이 일어나는 과정을 7단계로 나누었습니다. (OSI 7 계층) 이에 따라 통신이 일어나는 과정을 쉽게 파악할 수 있고 관리가 편해졌습니다. 만약 통신 중 특정 장비의 문제가 발생한다면 다른 단계의 장비 및 SW를 건드리지 않고 문제가 생긴 단계만 고칠 수 있기 때문입니다.

OSI 7 Layer 상위 계층은 하위 계층의 프로토콜을 이용해 새로운 프로토콜을 수립합니다. 하위 레이어가 복잡할수록 비용이 더 커서, 단순하게 구성하고 상위 계층에서 좀 더 복잡하고 엄격히 구성합니다.

  • Application : 응용 프로그램 목적에 맞는 프로토콜을 결정합니다. 웹 서버와 통신을 위한 HTTP, 파일 다운로드를 위한 FTP, 메일 전송을 위한 SMTP 등이 있습니다.
  • Presentation : 네트워크 장비들이 표현하는 방식이 다르며 또한 암호화, 압축 을 사용할 수도 있어, 모든 네트워크 장비들이 알아들을 수 있게 표준화합니다.
  • Session : 사회자 역할로, 통신의 연결과 진행 방법을 결정합니다.
  • Transport : 양 끝 호스트의 프로세스간 전송을 담당합니다. TCP, UDP
  • Network : 출발지로부터 목적지까지 길을 찾아줍니다. Routing과 Forwarding 기능을 수행합니다.
  • Link : 같은 LAN의 한 Hoop을 전달합니다. Ethernet의 CSMA/CD
  • Physical : 디지털 신호와 전기신호를 변환시켜줍니다. 각 링크 및 장비마다 수용 가능한 주파수가 다르기 때문에 디지털 신호 그대로 전달 시 데이터 손실 문제가 있습니다 .따라서 해당 신호를 아날로그 신호인 전기신호로 변환하여 전달합니다.

4. I/O Model

[1] Socket 통신

소켓이란 네트워크 통신을 위해 반드시 필요하며 IP, Port, protocol을 추상화했습니다. 소켓은 application 계층으로부터 패킷을 받아와 transport계층으로 전달하는 창구로 양방향 통신을 가능케 합니다.

  • socket : socket file descriptor 획득
  • bind : socke의 IP 및 Port를 연결지어
  • listen : 추상화된 socket을 획득하여, 이제 이 여기로 들어오는 얘들은 이 소켓으로 받아들입니다. 수 많은 요청이 들어올 때 요청 못받는 얘들은 큐에 대기 하고, 큐의 범위를 넘어설 경우 connection에 실패합니다.
  • accept 및 connect로 통신 연결을 완성합니다.

[2] I/O Model

일반적으로 소켓 통신은 별도의 설정이 없으면 동기 방식입니다. 일상 생활, 사고 하는 방식이 동기 방식이 편리하기 때문입니다. 하지만 일의 효율성을 고려할 때 비동기 방식이 편리한 경우가 다수 있습니다.

  • sync : 작업을 요청한 후 반환 시점에 작업이 완료되있습니다. 즉, 작업을 요청하고 대기하다가 끝나면 반환 요청을 받습니다. 순서에 의존
  • async : 작업을 요청한 후 반환 시점에 작업이 완료되기를 기다리지 않고, 추후에 인터럽트와 같은 방식으로 별도의 방법으로 통지 받습니다. 순서에 의존하지 않음
  • blocking : 작업을 요청하고 완료될때까지 대기합니다. 대기
  • non-blocking : 작업을 요청하고 다른 일을 하다 특정 신호에 의하여 결과를 리턴 받습니다. 대기하지 않음
profile
성장하는 개발자가 되고싶어요

0개의 댓글