Post

네트워크 - 기본 개념과 키워드2

Network

네트워크 - 기본 개념과 키워드2

어제 한 내용에 추가적인 내용들은 그저 키워드와 개념들만 나열한 것이라 정리가 되지 않았기에, 다시 정리해봤다.

네트워크란,

네트워크는 기본적으로 노드(장치)와 링크(연결) 로 구성된 것.

여기서 노드는 네트워크에 연결된 기기를 뜻한다. (컴퓨터, 프린터 등등 네트워크에 접속이 가능하고, 정보를 요청 혹은 보낼 수 있는 기기들)

노드는 물리적, 논리적으로 나눌 수 있다.

물리적 노드

물리적 노드는 엔드 노드와 중간 노드로 분류 가능한데,

컴퓨터, 프린터, 핸드폰 같이 데이터를 생성하거나 최종적으로 받는 기기들을 엔드 노드

데이터를 전달하거나 경로를 결정하는 장치는 중간 노드다.

논리적 노드

하나의 기기 내에서 여러 개의 네트워크 인터페이스를 가지면 각각을 개별 노드로 볼 수 있다.

링크도 유선 무선으로 나뉘는데, 기능은 같다.

네트워크 서비스

네트워크 프로토콜에 기반하여 응용 계층에서 만들어진 시스템을 의미한다.

우리가 사용하는 접속하는 인터넷 페이지에는 우리에게 보여줄 데이터들이 존재한다.

이 데이터들은 이미지, 동영상 일 수 있고, html과 같은 코드일 수도 있다.

이 데이터들 웹페이지 사용자가 보기 위해선 다운을 받아야 하는데,
그 파일들이 업로드 된 공간이 서버이며 사용자는 네트워크 접속하여 서버에서 데이터를 요청할 수 있다.

서버에게 데이터를 다운 받을 때, 링크 내에서 데이터가 이동하는데 1초에 이동하는 데이터의 양을 트래픽 이라고 부르며, 단위는 bps(bits per sec) 초당 비트 로 측정한다.

링크에는 최대 bps가 존재하며 이를 무시하고 데이터를 보내면 다운된다.

보통 “트래픽이 많다”라고 하면 네트워크를 통해 전송되는 데이터가 많아 혼잡이 발생할 수 있다는 의미다.

링크를 통해 성공적으로 전달된 초 당 데이터의 양을 처리량이라고 부르며, 단위는 역시 bps를 사용한다.

대역폭은 이론상 최대로 처리할 수 있는 트래픽 양으로, 최대 동시 접속자 수를 유추하는 척도로 사용한다.

처리량과 다른 점은 이론적인 부분 이라는 것.

처리량은 실제 최대 전송 속도라 네트워크 혼잡, 패킷 손실 등의 이유로 대역폭보다 작을 수 있다.

프로토콜

서로 다른 장치끼리 통신하기 위해 미리 정해 놓은 통신 규약 및 약속이다.

마치 프로그래밍 언어처럼 정해진 문법과 구조가 존재하여 OS, 하드웨어, 네트워크 환경 등이 달라도 프로토콜로 정해진 형식을 따르기에 원활하게 송/수신할 수 있게 해준다.

프로토콜의 주요 역할

데이터 포맷 정의: 데이터를 어떻게 구성하고 구조화할 것인지 정의한다. 패킷의 헤더, 페이로드 등(트레일러는 모든 프로토콜에서 포함하지 않아 제외)이 어떻게 구분되는지, 어떤 정보가 포함될지 정한다.

통신 방식 설정: 송/수신자가 데이터를 주고받는 방식을 정의한다. 연결 지향적, 비연결 지향적 방식인지 정한다.

오류 처리: 데이터 전송 중 오류 발생 시 이를 검출하고 수정하는 방법을 정의 TPC는 오류 검출 시 재전송으로 통해 수정하지만, UDP는 오류를 검출해도 무시하고 데이터 전송을 계속한다.

데이터 흐름 제어: 수신자가 데이터를 얼마나 빠르게 처리할 수 있는지에 따라 송신자가 보내는 데이터를 조절하는 규칙을 정한다.
TCP의 경우 수신자의 버퍼에 여유 공간이 많다면 송신자에게 더 많은 데이터를 보내도록 시킬 수 있고, 반대도 가능하다고 한다. (네트워크 과부하를 방지하고 버퍼 오버플로우를 방지하기 위한 기술이라고 한다.)

보안: 데이터를 전송하는 동안 암호화나 인증을 통해 보안을 유지하는 방법을 정의한다.
HTTPS는 데이터 암호화와 서버 인증을 보장한다고 한다.

물론 모든 프로토콜이 저 주요 역할들을 모두 수행하지 않는다.

프로토콜은 네트워크 계층이나 사용 목적에 따라 종류가 나뉘기 때문이다.

TCP, UDP는 전송 계층의 프로토콜이고, 데이터 통신을 위해 사용되는 프로토콜이다.

IP. IPX는 네트워크 계층의 프로토콜이며 인터넷에서 데이터 통신을 위해 사용하는 프로토콜이다.

HTTP, HTTPS는 응용 계층의 프로토콜이며 웹에서 HTML 페이지, 리소스 등을 전송할 때 사용하는 프로토콜이다.

네트워크 계층은 총 7단계로 이루어져 있다. 이 부분은 아직 공부가 필요하기에 패스 하겠다.

패킷

네트워크를 통해 전송되는 형식화된 데이터 덩어리 라고 한다.

packbucket의 합성어라는데, 우체국에서 화물을 덩어리로 나눠 보내는 방식을 데이터 통신에 접목한 것.

데이터를 한 번에 전부 보내는 편이 좋다고 생각하겠지만, 데이터가 너무 크면 대역폭을 너무 많이 차지하기에 좋은 방법이 아니다.

패킷의 구조

네트워크 패킷은 헤더, 페이로드, 트레일러 세 부분으로 구성된다.

헤더

패킷 길이, 프로토콜, 송/수신자의 IP 주소 등이 포함되며 UDP, TCP, IP 등 모두가 가지고 있는 데이터의 가장 앞부분 이다.

헤더에는 주로 데이터 형식에 대한 정보나 시간 데이터, 주소 데이터로 구성되어있다.

패킷의 전송 과정

  1. 응용 계층에서 데이터 생성: 응용 계층에서 최종 사용자가 전송하려는 실제 데이터를 생성 이 부분이 패킷의 페이로드가 된다.
  2. 전송 계층에서 처리: 데이터를 더 작은 덩어리로 나누고, 데이터가 목적지까지 안전하게 전달될 수 있도록 한다. 이 파트에서 필요한 헤더 정보가 추가된다. (소스/목적지 포트 번호, 시퀀스 번호, 체크섬 등이 추가)
  3. 인터넷 계층에서 처리: 소스/목적지 IP 주소, TTL(time to Live), 패킷 길이 등의 정보가 들어간 IP 헤더가 추가된다. 이 파트에서 IP가 패킷을 라우팅해 올바른 경로로 전달할 수 있도록 한다.
  4. 네트워크 인터페이스 계층에서 처리: 네트워크 인터페이스 계층에서 실제로 물리적인 전송을 위해 MAC 주소와 같은 하드웨어 주소를 사용해 데이터를 전송할 준비를 한다. 이 파트에서 Ethernet이나 Wi-Fi 등에서 프레임을 생성하며, 이 프레임에는 헤더, 페이로드(응용 계층의 데이터), 그리고 트레일러가 포함된다.
  5. 다른 네트워크 장치에서의 처리: 패킷이 출발지에서 목적지로 이동하며 각 네트워크 장치(라우터, 스위치 등)를 통과할 때마다 각 계층에서 처리된다. 패킷이 라우터를 지나면 IP 헤더에 있는 정보(목적지 IP 주소)를 기반으로 다음 라우터로 전달된다.

수신자에서 처리

  1. 네트워크 인터페이스 계층: 수신자가 패킷을 수신하고, Ethernet 헤더나 Wi-Fi 헤더에서 물리적 주소를 확인하여 자신에게 온 패킷인지 확인한다.
  2. 인터넷 계층: 수신한 패킷에서 IP 헤더를 확인하고, 목적지 IP 주소가 자신과 일치하는지 확인한다.
  3. 전송 계층: 수신한 데이터의 TCP/UDP 헤더를 확인하고, 포트 번호 등을 기반으로 적절한 응용 프로그램에 데이터를 전달한다.
    • TCP의 경우에는 패킷의 시퀀스 번호를 확인하여 데이터가 제대로 도착했는지 확인한다. (아직 뭔 뜻인지 모름)
  4. 응용 계층: 마지막으로, 응용 계층에서 최종 데이터를 추출해 사용자가 사용할 수 있게 만든다.

내일은 7계층과 자주 사용하는 프로토콜들, 네트워크 인터페이스, MAC 주소에 대해 공부할 예정이다.
기본적인 개념을 빨리 배우고 멀티플레이어 게임 네트워크로 빨리 넘어가야겠다.

This post is licensed under CC BY 4.0 by the author.