TIL

[TIL] 네트워크 기본 정리

s00ng 2024. 8. 26. 06:36

네트워크란?

컴퓨터 네트워크는 컴퓨터나 기타 기기들이 리소스를 공유하거나 데이터를 주고 받을 수 있도록 유선 혹은 무선으로 연결된 통신망을 의미한다.

 

네트워크는 접속할 수 있는 범위에 따라 크게 2가지로 분류할 수 있다.

 

1) LAN (Local Area Network)

 집, 학교 등의 건물과 같이 제한된 범위의 가까운 지역을 네트워크 매체를 이용하여 하나로 묶는 근거리 통신망이다. 이더넷(Ethernet)을 주로 사용하며, 무선 랜(Wireless LAN)도 보편적으로 사용하고 있다. 범위가 좁고 연결하는 거리가 짧은 만큼 신호가 약해지거나 오류가 발생할 확률이 매우 낮다.

 

2) WAN (Wide Area Network)

여러 도시나 국가 단위의 대규모 네트워크를 말한다. 인터넷 서비스 제공자(ISP = Internet Service Provider) 가 제공하는 서비스를 사용하여 구축한 네트워크로, 여러 LAN이나 다른 종류의 네트워크들을 하나로 묶어서 멀리 떨어진 기기들도 통신이 가능하도록 한다.  멀리 떨어져있는 랜과 연결해야 하기 떄문에 신호가 약해지거나 오류가 발생할 확률이 상대적으로 높다.

 

 e.g ) wireless WAN, Internet


컴퓨터 네트워크에서 데이터를  전송하는 방식

현대 컴퓨터 네트워크에서는 주로 패킷 교환 방식으로 데이터를 송수신 한다.

 

패킷이란?

네트워크를 통해 전송되는 데이터의 작은 조각을 말한다. 큰 데이터를 한번에 보내게 될 경우 Bandwidth (네트워크에서 이용 가능한 최대 전송 속도로 정보를 전송할 수 있는 단위 시간당 전송량)을 너무 많이 차지하여 다른 패킷의 흐름을 막을 수 있기 때문에  큰 데이터가 있더라고 해도 패킷으로 나누어서 보내는 것이 규칙이다. 

 

데이터 전송의 간략한 순서는 다음과 같다. 

 

1. 패킷화

데이터가 네트워크를 통해 전송될 때 패킷이라는 단위로 만들어 진다.

패킷은 실제 데이터와 함께 출발지 IP, 목적지 IP, 포트 등 전송에 필요한 메타데이터를 포함하고 있다.

 

2. 라우팅

각 패킷은 네트워크를 통해 개별적으로 전송된다.

라우터는 패킷의 대상 정보를 검사하고 최상의 경로를 따라 패킷을 전달한다.

패킷이 대상에 도달하지 못한 경우 전체 데이터아 가이날 해당 패킷만 재전송한다.

 

3. 재조립

패킷이 목적지에 도달하면 원래 데이터로 재조립한다.

각 패킷의 메타데이터를 사용하면 패킷이 순서 없이 도착하더라도 수신 시스템에서 원본 데이터를 재구성 할 수 있다.


프로토콜

네트워크가 존재하는 이유는 결국, 통신할 수 있도록 하기 위함인데,  통신 기능이 제대로 동작하기 위해서는 통신에 참여하는 주체들 사이에 약속된 통신 방법이 필요하다. 네트워크 통신을 하기 위해 통신에 참여하는 주체들이 따라야하는 형식, 절차, 규약을 '프로토콜' 이라 한다.

 

네트워크 통신 규약이 표준화되지 않았던 시절에는 각 벤더사마다 고유한 방법으로 개발을 하였기 때문에 서로 호환되지 않아 통신이 불가능한 경우가 많았다.  이에, ISO(국제표준기구)에서는 네트워크 통신을 하기 위해서 통신 장비 사이에 정보를 주고 받는 규칙인 프로토콜이란 개념을 계층별로 통합한 모델인 OSI 7계층을 발표하여 네트워크 통신 표준화를 이루어냈다.

 

(❉ OSI 7계층은 표준화된 이론이며, 현재는 TCP/ IP 모델을 주로 사용한다.)

💡 네트워크 프로토콜을 계층화 하는 이유?

 네트워크 구조를 OSI 7계층이나 TCP/IP 모델처럼 여러 계층으로 나누어 정의한 이유는 통신이 일어나는 과정에서 데이터의 흐름을 한눈에 파악하기 쉽고 통신 과정 중 문제 발생시 다른 단계의 장비 및 소프트웨어를 건드리지 않고 통신 장애를 일으킨 단계에서 해결할 수 있기 때문이다. 또한, 변경에 유연하도록 하기 위함이다. 각 계층들은 다른 계층에 영향을 받지 않도록 설게되어 있어 독립적으로 발전해 나아갈 수 있다. 즉, 다양한 유형의 프로토콜에 적응할 수 있는 유연성을 제공한다.

OSI 7 계층

OSI 7 계층은 국제표준화기구 ISO 에서 개발한 모델로, 네트워크 프로토콜이 통신하는 구조를 7개의 계층으로 분리하여 각 계층간 상호 작동하는 방식을 정해 놓은 것이다. 계층화된 프로토콜의 집합인 프로토콜 스택으로 볼 수 있다.

 

 

1계층. 물리 계층 Physical Layer

  • 장치간 정보 송/수신을 위한 전기/기계/기능적 세부 사항을 정의한다.
  • 노드간 데이터 전송에 집중하기때문에 데이터의 송수신 역할을 담당한다.
  • 디지털 비트를 전기/무선/광 신호로 변환 하는 기능 수행.
  • PDU : bit
  • 프로토콜 : 모뎀, RS-232 등

 

2계층. 데이터 링크 계층 Data Link Layer

  • 네트워크 계층에서 전달 받은 정보에 프레임 헤더/트레일러를 추가해 기기간 논리적 전송로를 정하는 방법을 규정.
  • 물리 계층을 통해 전달 받은 정보의 전송 오류를 감지하는 역할을 수행.
  • PDU : Frame
  • 프로토콜 : MAC, LAN 등

 

3계층. 네트워크 계층 Network Layer

  • 기기간 연결을 위한 주소와 경로를 정하는 방법을 규정.
    • 최적 경로 설정, 패킷 정보 전송 등.
  • 여러개의 노드를 거칠 때 마다 경로를 찾는 역할.
  • 전송계층에서 전달 받은 정보를 적당한 크기로 쪼개고 각각에 헤더를 추가해 패킷을 생성.
    • 각각의 헤더는 논리주소를 포함.
  • PDU : Packet
  • 프로토콜 : IP, ICMP 등

 

4계층. 전송 계층 Transport Layer

  • 노드간 신뢰성 있고 정확한 정보 전송을 담당.
  • 네트워크 계층의 패킷 전송을 제어하는 역할.
    • 패킷 재전송, 에러복구, 흐름제어 등
  • 실질적인 정보 전송과 논리적 연결 사이 다리 역할.
  • PDU : Segment
  • 프로토콜 : TCP, UDP 등

 

5계층. 세션 계층 Session Layer

  • 포트번호를 기반으로 통신 세션을 구성하고 상호작용과 동기화 제공. 연결 세션에서 에러복구, 데이터 교환을 담당.
  • 프로토콜 : SSH, TLS 등

 

6계층. 표현 계층 Presentation Layer

  • 송/수신측간 데이터 형식을 정의.
  • 수신한 데이터를 변환, 검색, 암호화, 압축 등의 과정을 거져 올바른 방식으로 변환.
  • 문자의 인코딩 방식을 변환.
  • 프로토콜 : png, jpg 등

 

7계층. 응용 계층 Application Layer

  • 응용 프로그램의 정보를 활용하고 통신을 제어.
  • 사용자와 직접 상호작용하는 계층.
  • 프로토콜 : HTTP, SMTP, FTP 등

TCP / IP 모델

OSI 7 계층 구조는 장비 개발과 네트워크 통신 표준화를 위한 개념적인 성향의 모델이다. 반면 TCP/IP 스택(4계층)은 실제 인터넷 통신시 기반이 되는 모델이다. 애플리케이션, 전송, 인터넷, 링크 4계층으로 이루어져있으며 링크 계층을 데이터링크와 물리 계층으로 나누어 5계층으로 구분하기도 한다.


캡슐화와 역캡슐화

네트워크를 통해 데이터를 보낼 때는 캡슐화와 역캡슐화의 과정이 이루어진다. 

데이터를 보내기 위해선 데이터의 앞부분에 전송하는데 필요한 정보를 붙여서 다음 계층으로 보내기 때문이다. 이처럼 헤더를 붙여나가는 것을 캡슐화라고 한다. 데이터 송신 측에서 캡슐화를 통해 데이터를 전송하다면 수신측에서는 역캡슐화를 통해 최초로 보낸 데이터 형태로 받을 수 있는 것이다.

 

캡슐화 과정

 

1. 애플리케이션계층에서 데이터가 전송 계층으로 전달된다.
2. 전송 계층에서는 TCP 헤더가 추가된 후 인터넷 계층으로 전달된다.
3. 인터넷 계층에서 IP 헤더가 추가된 후, 링크 계층으로 전달된다.
4. 링크계층에서는 프레임 헤더와 프레임 트레일러를 추가한 후 물리 계층으로 전송이 진행된다.

 

 

역캡슐화 과정

 

1. 캡슐화된 데이터를 받게 되면 링크계층에서 프레임헤더, 프레임 트레일러를 제거 후 인터넷 계층으로 전달
2. 인터넷 계층에서 패킷에서 IP헤더 제거 후 전송계층으로 전달
3. 전송 계층에서도 TCP헤더를 제거 후 애플리케이션 계층으로 전달
4. 최종적으로 애플리케이션에서 데이터(메세지)를 수신