나 JAVA 봐라

[네트워크] 네트워크 훑어보기 본문

CS/네트워크

[네트워크] 네트워크 훑어보기

cool_code 2024. 1. 20. 18:08

전공 수업 때, CS를 분명히 공부했음에도 실제로 어떻게 적용되며 어떻게 각 계층이 이어지는 것인지에 대해 유기적으로 이해하지 못했었다. 이번에 강의를 듣고 정리하는 과정을 통해 확실하게 내 지식으로 가져가보고자 한다 !

 

강의는 패스트캠퍼스의 '현실 세상의 컴퓨터공학 지식 with 30가지 시나리오' 를 수강했다.

https://fastcampus.co.kr/dev_online_newcomputer

 

현실 세상의 컴퓨터공학 지식 with 30가지 실무 시나리오 초격차 패키지 Online. | 패스트캠퍼스

국내유일, 77시간 분량의 개발자를 위한 한 번에 끝내는 컴퓨터공학 (CS 지식) 강의를 확인하세요. 자료구조,알고리즘부터 디자인패턴, 클린코드까지 ! CS지식의 이론~실습뿐 아니라, 실제 실무에

fastcampus.co.kr


네트워크 계층은 크게 아래와 같이 나뉜다. 

  • 네트워크 액세스 계층
    • LAN (근거리 네트워크)에 해당하는 계층
    • 이더넷, 네트워크 장비 (로우 레벨에서 이뤄짐) 등이 쓰인다.
  • 네트워크 계층
    • WAN (장거리 네트워크)에 해당하는 계층
    • IP, IP 주소, 라우팅 등의 개념이 나온다.
  • 전송 계층
    • 정보를 주고바다을 때, 안전하고 확실하게 전송하기 위해 있는 계층
    • TCP, UDP 등의 개념이 나온다.
  • 응용 계층
    • HTTP, 웹 기술( 쿠키, 캐시,.. ) 등의 개념이 나온다.

 

위의 계층을 각각 학습하기에 앞서 네트워크의 구조, 프로토콜, 성능 지표 등에 대해 먼저 알아야 한다.


네트워크 거시적으로 보기

네트워크란 무엇일까?

  • 컴퓨터 네트워크 : 여러 장치들이 서로 정보를 주고받을 수 있는 통신망
    • ** 망 : 거미줄처럼 복잡하게 이어져있는 것 같이, 각기 다른 장비들이 각기 다른 연결지점을 바탕으로 정보를 주고 받기 때문에 ‘망’ 이라고 한다. 
  • 호스트 : 네트워크에 연결된 장비

인터넷이란 무엇일까?

쉽게 표현하자면 네트워크의 네트워크 이다. LAN 뿐만이 아니라, 해외와 같이 먼 거리까지 소통해야하는 경우가 있다. 이렇기 때문에 네트워크들을 또 연결한 것이 인터넷 이다. 

인터넷

컴퓨터 네트워크의 구성 요소

컴퓨터 네트워크를 구성하는 요소는 아래와 같다.

  • 노드
  • 메세지
  • 간선 (통신 링크)

노드

  • 종단 시스템(End system), 호스트 라고 부른다.
  • 메세지를 최초로 송신, 생성하는 대상 (이미지, 이메일, 파일, 강의 등의 정보를 최종적으로 받아들이는 노드, 즉 호스트) 이다.
    • 스마트폰, 노트북,… 등이 호스트가 될 수 있다. 요즘은 IoT 기술로 인해 냉장고, 워치도 호스트 될 수 있다.
  • ‘주소’를 통해 위치를 특정한다. (호스트가 어딨는지, 누구인지 알기 위해 ‘주소’가 필요하다. )
    • 캐스트가 가능한 이유는 주소를 통해 네트워크에 있는 호스트를 특정 지을 수 있기 때문에 메시지를 어떻게 주고 받을 지 정할 수 있다.
          - 유니캐스트 : 1대1 통신 (송수신 대상이 1대 1이다.) → 친구와 이메일 주고 받기, 갠톡하기
          - 브로드캐스트: 현재 네트워크에 있는 모든 호스트한테 전부 전송한다.→ ex. 공지사항
          - 멀티캐스트: 네트워크의 특정 그룹에게만 메시지 전송한다.

노드, 즉 호스트는 서버와 클라이언트로도 나뉠 수 있다.

 

서버와 클라이언트

  • 클라이언트: 요청을 보내는 호스트
    • 웹브라우저가 클라이언트의 역할을 한다. google.com 입력하면 웹브라우저는 구글의 서버에 구글의 홈페이지를 달라고 ‘요청’ 한다.
  • 서버: 응답을 보내는 호스트
    • 구글의 웹서버가 요청한 웹브라우저한테 구글의 웹페이지를 응답한다.

 

서버와 클라이언트를 배타적으로 생각하기 쉽지만, 호스트는 서버의 역할도 할 수 있고 클라이언트의 역할도 할 수 있다.

예를 들어 스마트폰, 노트북은 주로 클라이언트 호스트지만 서버의 역할도 할 수 있다.

 

(중간) 노드

  • 네트워크 장비
    • 라우터, 스위치, 공유기
  • 호스트와 배타적인 개념은 아니다. (같은 노드이긴 하다.) 잘만 한다면 버려진 데스크탑(호스트)도 공유기처럼 사용할 수 있다.

간선 (통신 링크)

  • 유선 케이블
    • 광케이블 : 인터넷을 연결하는 해저 케이블 등
    • 집에 있는 LAN 케이블 등
    • 트위스티드 페어 케이블
  • 무선
    • 주파수, 무선링크, 와이파이 등

 

메세지

  • 주고받는 정보
    • 예를 들어, '패스트캠퍼스' 서버로 부터 동영상을 메시지로 받아서 강의를 듣는다. / 친구에게 이미지 메시지를 받는다.
  • 웹페이지, 사진, 동영상 등이 메세지가 될 수 있다.

네트워크 구분

  • LAN : 근거리를 연결한 네트워크
    • 사무실 내의 컴퓨터들을 연결하거나, 가정에 있는 것들 연결하는 정도 -> 공유기를 중심으로 아빠 컴퓨터, 내 스마트 폰 등을 연결한다.

  • WAN: 원거리를 연결한 네트워크
    • ex) 인터넷 (네트워크의 네트워크)

그렇다고, 내가 미국까지 해저케이블을 깐 것도 아닌데, LAN에서 어떻게 WAN에 접속할까?

ISP (인터넷 서비스 프로바이더)가 WAN에 접근하기 위한 서비스를 제공한다. 즉, WAN에 접근하기 위한 ISP 회선을 제공한다.

너도 끼려면 돈 내

국내에 KT, LG U+, SK 등의 ISP 업체가 있다. 

 


프로토콜과 캡슐화

네트워크를 미시적으로 살펴본다.

 

패킷 교환 네트워크

인터넷 네트워크에서는 메시지는 ‘패킷’ 단위로 주고 받는다. (= 즉, 인터넷 네트워크는 패킷 교환 네트워크를 사용한다.)

예를 들어, 2GB가 한번에 전송되는 것이 아니라 패킷 단위로 전송되고 목적지에서 다시 재조립 된다.

 

  • 패킷 교환 네트워크 : 주고받는 정보를 패킷 단위로 주고 받는 네트워크
  • 패킷 : 패킷 교환 네트워크에서 주고받는 데이터 단위

그리고 패킷을 교환하기 위해 중간 노드(= 패킷 교환기 = 패킷 스위치)가 필요하다.

패킷 스위치는 쪼개진 패킷을 어디로 전달해야하는지(= 라우팅), 패킷에 손상이 없는지 검사한다.

이 때 하나의 경로로만 한번에 전송하는게 아니라, 여러 경로로 패킷을 나눠 보낼 수 있다.

 

회선 교환 네트워크

메시지를 주고 받는 또 다른 방법으로 회선 교환 네트워크가 있다. 이는 패킷 교환 네트워크와 비교되는 네트워크이다.

  • 회선 교환 네트워크 :  정해진 회선(circuit)으로만 통신하는 네트워크
  • 사전에 연결 수립 작업이 필요하다.
  • 다른 호스트는 도중에 끼어들 수 없다.
  • 장점: 전송률이 보장된다. 이미 정해진 회선으로만 통신하기 때문이다.
  • 단점: 회선 이용률이 저하된다. A ↔ B가 회선 교환 중이면, C가 A한테 무언가 보낼 수 없다.

 

현재에는 대부분 패킷 교환 네트워크를 사용한다. 패킷 교환 네트워크에서 메시지를 전송하는데 필요한 '패킷'은 무엇일까?

패킷 구성 요소

  • 헤더 : 패킷에 붙일 부가 정보
    • 송수신 주소, 프로토콜을 구현하기 위한 정보 등이 포함된다.
  • 페이로드 : 패킷에 보낼 정보
    • 실제로 전송할 내용을 포함한다.
  • 트레일러: 패킷 뒤에 붙일 부가 정보 
    • 기본적으로는 헤더, 페이로드로만 구성이 되어있으며 트레일러는 '데이터 링크 계층'에만 사용된다.

프로토콜

  • 프로토콜 : 장비 간 정보를 주고받을 규칙이나 방법
  • 호스트 간에 합의된 의사소통 규칙이다. 즉, 호스트 간의 언어가 곧 프로토콜이며, 프로토콜이 통해야 정보를 주고 받을 수 있다.
    • ex) HTTP, FTP 등
    • 사용 예시 ) 구글 서버와 내가 사용하는 클라이언트가 합의된 의사소통 규칙인 HTTP로 정보를 주고 받기 때문에 내 웹브라우저에 구글 웹브라우저가 나타날 수 있다.
  • 헤더의 내용은 프로토콜의 영향을 받는다. 즉, 프로토콜이 달라지면 헤더의 내용이 달라진다.
    • ex) TCP(신뢰성, 확실한 정보가 목적)과 UDP(빠른 전송이 목적) 프로토콜의 헤더 내용이 다르다. 왜냐하면 프로토콜 목적에 따라 헤더 내용이 달라지기 때문이다. TCP 헤더에는 순서 번호, 체크섬 등 정보를 체크하여 신뢰성을 보장하기 위한 내용이 있고, UDP의 헤더에는 송,수신지 주소만 있다. 

TCP, UDP 헤더

 

네트워크 참조 모델

  • 네트워크 참조 모델:  송수신 과정을 계층으로 정형화한 모델

만약 HELLO 메시지를 보내면 송신할 때 4→1계층 지나고, 수신하는 쪽에서 1~4계층 순으로 메시지를 받는다. 즉 송신은 높은 계층에서 낮은 계층으로 수신은 낮은 계층에서 높은 계층으로 이뤄진다.

 

근데 예전 전공 수업 때는 네트워크 모델을 7계층으로 배웠는데 위의 모델과 어떻게 다른걸까?

 

OSI 모델, TCP/IP 모델

  • OSI 모델 : 흔히 알고 있는 '물데네전세표응' 7계층 모델이다.
    • 물리 계층: 0,1로 이뤄진 비트를 케이블, 전자파 등을 통해 주고 받는다. ( = 하드웨어 단에서 물리적으로 주고 받는다.)
    • 데이터링크 계층: 오류제어, LAN 환경에서 주소(MAC)을 식별하는 등의 역할을 한다.
    • 네트워크 계층: LAN 간의 통신을 할 수 있게 한다. LAN 간의 통신을 위해 인터넷을 사용한다. IP를 사용한다.
    • 전송 계층: 송수신 과정에서 신뢰성 갖도록 한다. 인터넷 밖으로 나갈 때 식별 위해 port를 같이 쓴다.
    • 세션 계층: 세션이라는 연결 관계를 유지한다.
    • 표현 계층: 인코딩,… 등을 수행한다.
    • 응용 계층: 앱 등이 실제로 등장한다. http 등을 사용한다.
  • TCP/ IP 모델
    • 네트워크 엑세스 계층 (물리, 데이터링크)
    • 인터넷 계층 (네트워크 계층)
    • 전송 계층 (전송 계층)
    • 응용 계층 ( 세션, 표현, 응용 계층)

두 가지의 모델은 목적 자체가 다르다. OSI 모델은 이론적,TCP/IP는 구현에 목적을 두고 있다.

그렇기 때문에 둘을 두고 딱 비교할 순 없다!

 

캡슐화와 역캡슐화

  • 캡슐화 : 상위 계층으로부터 내려오는 패킷을 페이로드로 삼아, 상위 계층으로부터 받은 정보에 프로토콜에 걸맞는 헤더 (혹은 트레일러)를 덧붙이는 것
    • 송신 호스트 입장에서는 높 → 낮 계층, 수신 호스트는 반대로 메시지가 전송된다. 그 과정에서 캡슐화가 이뤄진다.
    • 계층마다 사용되는 프로토콜이 다르다. (ex. 네트워크 계층: IP, 전송 계층 : TCP, 응용 계층 : HTTP) 그렇기 때문에 사용하는 프로토콜에 따라 헤더의 내용이 달라진다. → 즉, 사용하는 프로토콜에 따라 메시지가 전송되면서 계층이 바뀔 때 목적에 맞게 헤더가 하나씩 추가된다. (+ 데이터링크 계층에 추가되는 추가정보가 ‘트레일러’)

캡슐화

  • 역캡슐화 : 캡슐화 과정에서 붙인 헤더( 및 트레일러)를 각 계층에서 제거하는 것. 즉 수신지 쪽에서 제거한다.

역캡슐화

 

캡슐화와 역캡슐화

 

PDU

각 계층마다 전송되는 패킷을 그냥 '패킷' 이라고 부르면 어느 계층에 속한 것인지 몰라 헷갈릴 것이다. 그래서 각 계층에 있는 패킷을 부르는 용어를 PDU 라고 한다.

먼저, 패킷 교환 네트워크에서 말하는 패킷은, 계층 상관 없이 패킷 이라고 하는 것이다. 즉 네트워크 계층에서의 PDU와는 다르다.


네트워크 성능

네트워크의 성능을 나타내기 위한 여러 지표들이 있다.

트래픽

  • 트래픽 : 특정 시간 동안 네트워크 내의 정보 흐름
  • 얼마나 많은 패킷들이 한 순간 몰리는가? 를 나타낸다.
    • 트래픽이 몰린다 → 과부하/ 오버헤드 발생
    • 한 노드에 얼마나 많은 패킷이 한순간에 경유하는가?

전송 속도

  • 네트워크 장비, 케이블의 성능을 말할 때 많이 사용하는 지표
  • bps/Mbps/Gbps 로 표현한다.
  • 기대 가능한 속도 , 즉 어느 정도의 속도까지 가능한지를 표현한다. (= 실제로 안될수도 있다.)

처리율 (Throughput)

  • 실제로 전송되는 데이터 양 (‘전송 속도’보다는 더 현실적인 지표)
  • 단위 시간 동안 네트워크를 통해 전송되는 데이터 양

대역폭 (bandwidth)

  • 전송 매체의 두께
  • 네트워크 트래픽을 수용할 수 있는 용량
  • 송수신 가능한 최대 데이터 양

패킷 손실(packet loss)

  • 얼마나 많은 패킷이 송수신 과정에서 손실되었는가?
  • 보통 백분율로 표기한다. (%)
  • ping 명령어로 패킷을 보내볼 수 있다.