컴퓨터 네트워크#1

wononly.dev·2023년 11월 8일
0

CS

목록 보기
1/4
post-thumbnail

컴퓨터 네트워크란?

네트워크란 연결하는 선이나 장치 같은 물리적인 측면부터 데이터를 주고받는 데 필요한 메시지나 규약과 같은 물리적이지 않은 측면까지 모두 포함한, 통신 과정 전체를 아우르는 개념

  • 두 대 이상의 컴퓨터들을 연결하고 서로 통신할 수 있는 것을 의미
  • 최근에는 인터넷에 연결되는 다양한 기기들이 서로 연결되어 정보를 주고받는 것 또한 포함함
  • IEEE(Institute of Electrical and Electronics Engineers, 국제 전기 전자 공학회)는 몇개의 독립적인 장치가 적절한 영역 내에서 적당히 빠른 속도의 물리적 통신을 통하여 서로가 직접 통신할 수 있도록 지원해주는 데이터 통신 체계라고 정의함

LAN과 WAN

LAN

  • Local Area Network의 약자로 근거리 영역 네트워크를 뜻함
  • 집이나 학교, 회사에서 사용하는 공유기를 중심으로 컴퓨터나 노트북, 혹은 여러 인터넷이 가능한 기기들을 사용하는 것이 LAN의 한 형태임
  • 지리적으로 가까운 기기들이 서로 연결된 소규모의 네트워크
  • 기기가 서로 물적으로 가까이 연결되어 있기 때문에 비교적 간단하게 구현 가능
  • 통신에 필요한 선이 짧으므로 데이터를 주고받는데 오류가 적고 속도가 빠름

WAN

  • Wide Area Network의 약자로, 지역이나 국가와 같이 넓은 영역을 연결하는 광역 네트워크를 뜻함
  • 주로 여러 곳에 흩어진 소규모 네트워크, 즉 LAN을 연결한 것을 WAN이라 부르기도함
  • 물리적으로 범위가 넓어서 개인이 구현하는데 어려움이 있음
  • KT, SK브로드밴드, LGU+와 같은 인터넷 서비스 제공자들이 전국에 회선을 설치하고, 그것을 이용하는 것이 WAN의 한 형태임
  • LAN과 달리 구조도 복잡하기 때문에 여러 물리적 상황과 환경에 영향을 많이 받을 수 있음
  • LAN에 비해 속도도 느리고, 오류가 발생할 확률이 높음

적절한 통신 경로를 안내해 주는 라우터(Router)

인터넷이 발달하고 네트워크 규모가 커지면서 흩어진 LAN을 연결하고, 또 다른 LAN으로 데이터가 올바르게 전달될 수 있는 장치가 필요해져서 생겨난 개념

  • 데이터를 올바르게 전달할 수 있도록 도와주는 장치
  • 라우터는 길을 뜨샇는 루트(Route)에서 따온 용어로, 데이터가 목적지에 원활하게 도착할 수 있도록 적절한 통신 경로를 안내하는 장치
  • 적절한 통신 경로를 안내하는 것과 더불어 가장 빠르게 도착할 수 있는 최적의 경로를 찾아 안내
  • 라우팅 테이블(Routing Table) 이라는 공간에 미리 다양한 경로의 정보를 저장하고 있음
  • 궁극적으로, 라우터는 트래픽을 전달하고 정보의 가장 효율적인 경로를 선택하는 디스패처 역할을 함

라우팅 테이블(Routing Table)?

  • 라우팅 테이블이란 최종 목적지의 IP주소와 목적지에 도달하기 위해 경유해야할 인근 라우터의 정보가 담긴 테이블, 라우터가 하는 가장 중요한 일이 라우팅 테이블을 구성하는 것

  • 경로를 저장하는 방법은 크게 두가지 방법으로 나뉨

    1) 관리자가 직접 라우팅 테이블의 내용을 추가하는 방법
    2) 인근 라우터와 정보를 교환해 자동으로 경로 정보를 갱신하는 방법

  • 만약 라우터가 잘못된 정보를 가지고 있다면??

    데이터가 길을 잃거나 무한루프가 발생할 것을 대비하여 TTL(Time To Live)이라는 유효기간을 정해둠

TTL(Time to Live)?

  • TTL이란 데이터의 유효 기간을 나타내는 것으로 패킷이 무한으로 순환하는 것을 막아주는 역할(패킷은 네트워크 계층에서 통신할 때 쓰이는 하나의 통신 단위)
  • 데이터의 헤더에 포함되는 정보로 0부터 255까지의 숫자로 표기되어 있어, 하나의 라우터를 거칠 때마다 일정량이 줄어들게 됨
  • 데이터가 목적지에 도착하지 않았더라도 이 TTL이 0이 되면 데이터가 폐기됨(패킷 드랍)

허브 and 스위치

여러대의 컴퓨터들을 각각 연결해야한다면 너무 복잡해지기 때문에 관리와 비용에 부담이 될 수 있음.
그래서 복잡하게 연결하는 것이 아닌 중앙에 하나의 연결 장비를 두고, 그 장비에 컴퓨터를 연결해 서로 데이터를 주고받는 방식으로 바뀌게 됨. 각 컴퓨터는 하나의 케이블을 통해 네트워크 안에 있는 모든 다른 기기와 통신할 수 있게되었음

  • 허브와 스위치는 같은 네트워크상에서 서로 다른 기기로 데이터를 전송하기 위해 사용하는 장비
  • 여러 장비를 연결하고 케이블을 하나로 연결해주는 일 또한 함

허브(Hub)

  • 데이터를 자신에게 연결된 모든 기기에게 전달하는 연결장비
  • 한 포트에서 전기 신호가 들어오면 이를 허브에 연결된 전체 포트로 연결하는, 네트워크 전체를 목적지로 데이터를 전송하는 브로드캐스트 통신 방식
  • 허브의 통신 방식은 데이터를 전송할 때 어느 기기로 보내야 하는지 판단하지 않아도 되기 때문에 부담이 덜함
  • but, 한번에 하나의 장비만 데이터를 보낼 수 있으므로 전체 네트워크 성능이 저하되는 문제가 있음
  • 동시에 여러 기기에서 데이터를 전송하면 충돌이 발생할 수 있다는 문제도 있음

허브의 문제를 해결하기 위해 등장한 스위치(Switch)

  • 허브와 달리 데이터가 들어왔을 때 해당 데이터를 요청한 기기가 누구인지 파악하고 정확한 목적지로 전달하는 장비
  • 소규모 비즈니스 네트워크 안에서 컴퓨터, 프린터, 서버 등 모든 디바이스를 서로 연결함으로써 리소스를 쉽게 공유할 수 있도록 함
  • 디바이스를 서로 연결하는 스위치 없이 소규모 비즈니스 네트워크를 구축하는 것이 불가능
  • 출발지와 목적지가 각각 하나씩만 있는 유니캐스트 방식
  • 자신에게 연결된 기기의 정보를 따로 저장하고 있기 때문에 데이터의 목적지를 정확하게 찾을 수 있음
  • 따라서 여러 기기가 동시에 데이터를 주고받더라도 충돌하는 일이 없음

OSI 7 Layer와 TCP/IP

OSI 7 Layer

  • OSI 7 계층은 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것
  • 계층을 나눈 이유는 통신이 일어나는 과정을 단계별로 파악할 수 있기 때문

L1 - 물리계층(Physical Layer)

  • 데이터 패킷을 전기 신호나 광신호로 바꾸어 송수신(물리, 전기적 신호로 변환)
  • 이 계층에서 사용되는 통신 단위는 비트이며 이것은 1과 0으로 나타내어지는, 즉 전기적으로 On, Off 상태라고 생각하면 됨
  • 단지 데이터를 전달만 할뿐 전송하려는(또는 받으려는)데이터가 무엇인지, 어떤 에러가 있는지 등에는 전혀 신경 쓰지 않음
  • 이 계층에 속하는 대표적인 장비는 통신 케이블, 리피터, 허브
  • 네트워크 계층으로부터의 메시지를 비트로 변환(맥 레이어)
  • 물리계층을 통해 송수신되는 정보의 오류와 흐름을 관리하여 안전한 정보의 전달을 수행할 수 있도록 도와주는 역할
  • 맥 주소를 가지고 통신함
  • 전송되는 단위를 프레임이라고 하고, 대표적인 장비로는 브리지, 스위치 등이 있음 (여기서 MAC주소를 사용)
  • 데이터 링크 계층(Data link layer)은 포인트 투 포인트(Point to Point) 간 신뢰성있는 전송을 보장하기 위한 계층

L3 - 네트워크 계층(Network Layer)

  • 두 원격 시스템간 연결성과 경로 선택 제공(라우팅 프로토콜)
  • 가장 중요한 기능은 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능(라우팅)임
  • 여기에 사용되는 프로토콜의 종류도 다양하고, 라우팅하는 기술도 다양
  • 경로를 선택하고 주소를 정하고 경로에 따라 패킷을 전달해주는 것이 이 계층의 역할
  • 대표적인 장비는 라우터 이며, 요즘은 2계층의 장비 중 스위치라는 장비에 라우팅 기능을 장착한 Layer 3 스위치도 있음 (여기서 IP주소를 사용)
  • 여러개의 노드를 거칠때마다 경로를 찾아주는 역할을 하는 계층으로
    다양한 길이의 데이터를 네트워크들을 통해 전달, 그 과정에서 전송 계층이 요구하는 서비스 품질(QoS)을 제공하기 위한 기능적, 절차적 수단을 제공
  • 데이터를 연결하는 다른 네트워크를 통해 전달함으로써 인터넷이 가능하게 만드는 계층
  • 논리적인 주소 구조(IP), 곧 네트워크 관리자가 직접 주소를 할당하는 구조를 가지며, 계층적(hierarchical)

L4 - 전송 계층(Transport Layer)

  • 데이터 전송 서비스 제공 (신뢰적 전송) 애플리케이션 계층에서 전달한 데이터를 목적지 프로세스까지 전달하는 역할을 하는 프로토콜
  • 통신을 활성화하기 위한 계층
  • 보통 TCP프로토콜을 이용하며, 포트를 열어서 응용프로그램들이 전송을 할 수 있게함
  • 양 끝단(End to end)의 사용자들이 신뢰성있는 데이터를 주고 받을 수 있도록 해주어, 상위 계층들이 데이터 전달의 유효성이나 효율성을 생각하지 않도록 해줌
  • 특정 연결의 유효성을 제어하고, 일부 프로토콜은 상태 개념이 있고(stateful), 연결 기반(connection oriented)
  • 이는 전송 계층이 패킷들의 전송이 유효한지 확인하고 전송 실패한 패킷들을 다시 전송한다는 것을 뜻함 (가장 잘 알려진 전송 계층의 예는 TCP)

L5 - 세션 계층(Session Layer)

  • 애플리케이션간 세션 구축, 관리, 종료시키는 역할 (TCP/IP 세션)
  • 데이터가 통신하기 위한 논리적인 연결 의미
  • 하지만 4계층에서도 연결을 맺고 종료할 수 있기 때문에 우리가 어느 계층에서 통신이 끊어 졌나 판단하기는 한계가 있음, 그러므로 세션 계층은 4계층과 무관하게 응용 프로그램 관점에서 봐야함
  • 세션 설정, 유지, 종료, 전송 중단시 복구 등의 기능이 있음
  • 양끝단의 응용 프로세스가 통신을 관리하기 위한 방법을 제공
  • TCP/IP 세션을 만들고 없애는 책임짐

L6 - 표현 계층(Presentation Layer)

  • 한 시스템의 애플리케이션에서 보낸 정보를 다른 시스템의 애플리케이션 계층에서 읽을 수 있게 하는 곳 (MIME, 암호화)
  • 데이터 표현이 상이한 응용 프로세스의 독립성을 제공하고, 암호화 함
  • 코드 간의 번역을 담당하여 사용자 시스템에서 데이터의 형식상 차이를 다루는 부담을 응용 계층으로부터 덜어줌

L7 - 응용 계층(Application Layer)

  • 엔드유저 사용자와 컴퓨터가 통신하는 곳(일반 응용 서비스)
  • 최종 목적지로서 HTTP, FTP, SMTP, POP3, IMAP, Telnet 등과 같은 프로토콜이 있음
  • 해당 통신 패킷들은 방금 나열한 프로토콜에 의해 모두 처리됨
  • 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행

프로토콜 계층화의 장점

  • 복잡한 작업을 여러 개의 작고 단순한 작업으로 나눌 수 있게 되며, 이를 모듈화(modeularity) 라고 함
  • 전체 시스템 구축 및 유지 보수 비용이 감소

프로토콜 계층화의 단점

  • 계층은 전체가 효과적으로 캡슐화 되지 않음. 따라서 무언가를 변경했을 때 다른 계층에 영향을 미치는 경우가 있음
  • 계층을 추가하면 성능이 저하됨

TCP/IP

  • 데이터가 의도된 목적지에 닿을 수 있도록 보장해주는 통신 규약
  • TCP와 IP 두가지의 프로토콜로 이루어져있음
  • IP기반에 TCP가 사용되서 이렇게 불림
  • TCP가 데이터의 추적을, IP가 배달을 처리한다고 보면 됨

L1 - 네트워크 계층(Network Layer)

  • 패킷들은 네트워크 레이어로 전송
  • 알맞은 하드웨어로 데이터가 전달되도록 MAC주소를 핸들링 하는것 뿐 아니라, 데이터 패킷을 전기신호로 변환하여 선로를 통하여 전달할 수 있게 준비 해줌
    • 데이터 단위 : 프레임(Frame)
    • 전송 주소 : MAC
    • 예시) MAC, LAN, 패킷망 등에 사용되는 것(대표적으로 Ethernet)

L2 - 인터넷 계층(Internet Layer)

  • 패킷들이 인터넷 레이어에 push됨
  • IP를 사용하여 데이터의 원천지(origin)과 목적지(destination)에 관한 정보를 첨부
    • 데이터 단위 : 패킷(Packet)
    • 전송 주소 : IP
    • 예시) IP, ARP, ICMP, RARP

L3 - 전송 계층(Transport Layer)

  • TCP가 있는 레이어
  • 포트를 통하여 Application 레이어가 TCP에게 데이터를 전송
  • 각각의 포트에 프로토콜을 지정할 수 있음. 예를 들어, HTTP는 80이라는 포트를 사용. 이로써, TCP는 어디에서 데이터가 오는지를 정확히 알 수 있음
  • 포트를 통해 받은 데이터들은 패킷이라는 작은 단위로 쪼개짐
  • 이 패킷들은 제각각 가장 빨리 전송될 수 있는 인터넷 루트를 찾음
  • 각각의 패킷들은 TCP header에 어떤 순서로 재조합 할지에 관한 정보를 가짐
    • 데이터 단위 : 세그먼트(Segment)
    • 전송 주소 : Port
    • 예시) TCP, UDP 등

L4 - 응용 계층(Application Layer)

  • 프로그램(브라우저)가 직접 인터액트하는 레이어
  • 데이터를 처음으로 받는곳. HTTP, SMTP등의 프로토콜을 가짐
    • 데이터 단위 : 데이터(Data) / 메세지(Message)
    • 예시) 파일 전송, SMTP, FTP, HTTP , DNS 등

데이터를 주고 받기 위한 약속, 프로토콜

주고받는 데이터의 형식이 다를 경우 같은 내용이라해도 통신에 어려움이 있음, 이를 방지하려면 보내는 데이터의 형식과 받는 데이터의 형식을 같은 형식으로 지정해야함. 그렇게 생긴 개념이 프로토콜, 약속된 데이터의 형식

  • 네트워크 안에서 원활하게 통신을 하려면 각 상황에 맞는 프로토콜을 사용해야만함
  • 웹 통신에 사용하는 대표적인 프로토콜, HTTP가 있음
  • 프로토콜은 네트워크의 흐름을 파악하는 데에 있어 핵심적인 역할을 하므로 각 프로토콜의 역할과 기능을 인지하는 일이 매우 중요

프토토콜 기본 3요소

  • 구문(Syntax) : 데이터 형식, 코딩, 신호 레벨 등의 규정
  • 의미(Semantic) : 정보 전송을 위한 제어 정보로 조정과 에러 처리를 위한 규정
  • 타이밍(Timing) : 시스템 간 정보 전송을 위한 속도 조절과 순서 관리 규정

프로토콜의 기능

  • 주소 설정(Addressing): 각 전송 계층에 맞는 송신자와 수신자의 주소 지정
  • 순서 제어(Sequence Control): 데이터 단위가 전송될 때 보내지는 순서 명시
  • 데이터 대열의 단편화 및 재조합: 전송 효율이 높은 작은 단위로 단편화 및 응용프로그램에서 사용하기 위해 재조합
  • 캡슐화(Encapsulation): 데이터에 제어 정보를 덧붙임
  • 연결 제어(Connection Controle): 연결 설정, 데이터 전송, 연결 해제에 대한 통제 수행
  • 흐름 제어(Flow Control): 송신측 개체로부터 오는 데이터의 양이나 속도 조절
  • 오류 제어(Error Control): 데이터를 교환할 때 SDU(Service Data Unit)나 PCI(Protocol Control Information)에 대한 오류 검사
  • 동기화(Synchronization): 두 통신 객체의 상태(시작, 종류, 검사 등)를 일치시키는 기능
  • 다중화(Multiplexing): 여러 시스템이 동시에 통신할 수 있도록 하는 기능
  • 전송 서비스(Treansmission Service): 우선순위 결정, 서비스 등급과 보안 요구 등을 제어

데이터 링크 계층에서 동작하는 프로토콜

  • 이더넷 프로토콜: 흔히 LAN이라고 부르는 네트워크 구간 또는 네트워크 하드웨어 사이에서 MAC(Media Access Protocol) 주소를 기반으로 통신을 위한 프로토콜

네트워크 계층에서 동작하는 프로토콜

  • ARP(Address Resolution Protocol): ARP는 IP 주소를 MAC 주소와 매칭시키기 위한 프로토콜 임. 즉, 물리적인 주소인 MAC 주소와 논리적인 주소인 IP 주소를 대응 시키는 역할을 하는 것

  • RARP(Reverse Address Resolution Protocol): 데이터 링크 계층의 주소인 MAC 주소를 가진 네트워크 계층의 주소, 즉 IP를 확인하는 프로토콜

  • IP(Internet Protocol): 인터넷상에서 사용하는 주소체계를 의미함.

    • IP는 전송 계층 (제 4계층)으로부터 받은 데이터(세그먼트)에 IP 헤더를 붙여 패킷으로 만드는 역할을 함

    • IP 헤더에는 여러 필드 값(버전, 헤더길이, 프로토콜 등), 출발지 IP주소, 도착지 IP주소가 들어감

    • 인터넷에 연결된 모든 PC는 IP 주소체계를 따라 네개의 숫자로 구분

    • 이러한 네 덩이의 숫자로 구분된 IP 주소체계를 IPv4라고 함

      IPv4(Internet Protocol version 4)는 IP 주소체계의 네 번째 버전을 뜻함

      • IPv4는 각 덩어리 마다 0부터 255까지 나타낼 수 있음
      • 이 시스템을 따르면, 32비트의 약 43억 개의 IP 주소를 표현할 수 있음

      IPv6주소는 기존의 IPv4주소체계를 128비트 크기로 확장한 차세대 인터넷 프로토콜 주소

      • 개인 PC의 보급으로 전 세계의 누구나 PC를 이용해 인터넷에 접속하고, 각종 서비스를 위해 서버를 생산하면서 IPv4로 할당할 수 있는 PC가 한계를 넘어서게 됨
      • 이를 해결하기 위해서 세상에 나오게 된 것이 IPv6(IP version 6) 이다.
  • ICMP(Internet Control Management Protocol): 멀티캐스트에 관여하는 프로토콜로, 멀티캐스트 그룹을 관리하는 역할 수행

전송 계층에서 동작하는 프로토콜

  • TCP(Transmission Control Protocol): TCP는 전송 제어 프로토콜로 IP와 함께 TCP/IP로 불리며 제 4계층(전송 계층)에서 사용되는 프로토콜. TCP는 데이터를 송신할 때 마다 확인 응답을 주고 받는 절차가 있어서 통신의 신뢰성을 높임. 웹이나 메일, 파일 공유 등과 같이 데이터를 누락시키고 싶지 않은 서비스에 주로 사용됨

  • UDP(User Datagram Protocol): UDP는 TCP와 함께 데이터 그램으로 알려진 단문 메시지를 교환하기 위해 사용하는 프로토콜. 데이터만 보내고 확인 응답과 같은 절차를 생략할 수 있으므로 통신의 신속성을 높임. 주로 DNS, VoIP 등에 사용됨

    TCP 와 UDP

    • TCP와 UDP 모두 포트 번호로 서비스를 식별함
    • 두 프로토콜을 구분하는 주요한 차이는 통신의 신뢰성이냐 신속성이냐임
    • 애플리케이션 데이터에 TCP 또는 UDP 헤더를 추가하여 TCP 세그먼트나 UDP 세그먼트가 만들어짐

응용 계층에서 동작하는 프로토콜

  • FTP(File Transfer Protocol, 20/21): 파일 전송을 위한 가장 기본 프로토콜
  • Telnet(23): 사용자가 원격에 있는 서버에 로그인하도록 TCP 연결을 설정하며, 단말기가 원격 컴퓨터 바로 옆에 있는 것처럼 조작할 수 있게 해줌
  • SMTP(Simple Mail Transfer Protocol, 25): 메일 전송을 위한 프로토콜
  • DNS(Domain Name Service, 53): 도메인 이름 주소를 통해 IP주소를 확인할 수 있는 프로토콜
  • TFTP(Trivial File Transfer Protocol, 69): FTP처럼 파일을 전송하는 프로토콜
  • HTTP(HyperText Transfer Protocol, 80): 인터넷 서비스를 위한 프로토콜
  • POP3(Post Office Protocol 3, 110) & IMAP(Internet Message Access Protocol, 143): 메일 서버로 전송된 메일을 확인할 때 사용하는 프로토콜. IMAP도 POP3와 기본적으로 같으나, 메일을 읽은 후에도 메일이 서버에 남는다는 점이 다름

참조
네트워크 정의
네트워크 프로토콜
TCP/IP 4계층
OSI 7계층

profile
항상 이유와 과정을 궁금해하는🤔 백엔드 개발자의 기술 블로그 입니다!

0개의 댓글