- 네트워크란 무엇인가?
- 전송매체를 링크로 서로 연결된 장치(또는 노드)의 모임
- 2대 이상의 컴퓨터들을 연결하고 서로 통신할 수 있는 것
- 네트워크는 왜 필요한가?
- 리소스를 공유하기 위해서 필요하다.
- 리소스: 컴퓨터나 사용자가 가진 물리적, 논리적 자원
- 리소스를 공유함으로써 한 대의 컴퓨터로 할 수 없는 일이 가능해지고, 한 곳으로 통합함으로써 효율적으로 사용할 수 있다.
➡️ 각 제조업체나 통신 프로토콜이 자체적으로 통신 스펙을 만들었고, 이로 인해 다른 장비나 시스템과의 통신이 어려웠다. 따라서 표준화된 모델이 필요하여 , ISO에서 OSI 7계층을 정의했다.

각 계층별 역할
- 용어 정리
- 비트 스트림: 0과 1의 이진 숫자로 구성된 연속적인 데이터
- 케이블: 데이터 신호를 전송하기 위한 물리적인 매체
- 허브: 물리 계층에서 사용되는 네트워크 장비로, 여러 컴퓨터나 네트워크 장치를 연결하여 데이터를 중계하는 역할
- 리피터: 물리 계층에서 사용되는 장비로, 신호를 증폭하고 재생시켜 데이터 신호의 전송 거리를 늘립니다.
- 용어 정리
- 스위치: 다양한 장치를 연결하여 데이터를 스위칭하고 전송하는 네트워크 장비
- 네트워크 어댑터 카드: 컴퓨터 또는 장치와 네트워크 매체(예: 이더넷 케이블)를 연결하는 데 사용되는 하드웨어 장치
- 이더넷: 가장 널리 사용되는 네트워크 프로토콜 중 하나로 주로 로컬 영역 네트워크(LAN)에서 사용되며, 유선 및 무선 네트워크에서 모두 적용된다.
- 용어 정리
- 라우터: 패킷을 받아 최적의 경로로 전달하거나 다음 라우터로 패킷을 중계
- 라우팅: 데이터 패킷을 전송하기 위한 경로를 결정하는 프로세스
- 패킷 라우팅: 네트워크에서 데이터 패킷을 출발지에서 목적지로 전달하는 과정을 관리
- 논리 주소 지정: 네트워크 상에서 장치를 식별하기 위한 주소 체계를 지정
- 데이터 패킷: 네트워크에서 전송되는 데이터의 작은 조각이다. 데이터는 패킷으로 나누어져 전송되며, 각 패킷은 헤더(Header)와 페이로드(Payload)로 구성된다.
헤더에는 출발지 및 목적지 주소, 패킷 크기, 패킷 순서 등의 정보가 포함되며, 페이로드에는 실제 데이터가 저장된다.
전송 계층 (Transport Layer):
세션 계층 (Session Layer):
- 용어 정리
- 세션이란?
- 두 개의 컴퓨터나 장치 간에 지속적인 상호 작용, 주로 응용 프로그램과 전송 계층 사이에서 동작하며, 네트워크 통신의 지속성과 안정성을 관리한다.
- 세션이 왜 필요한가?
- 지속성과 데이터 일관성: 세션은 데이터 통신을 지속시켜 사용자나 응용 프로그램이 중단 없이 작업할 수 있도록 한다.
- 상태 관리: 세션은 정보를 저장하고 관리하여 사용자 인증, 쇼핑 카트, 게임 진행 상황 등을 추적할 수 있게 해준다.
- 동기화와 복구: 연결 끊김 시 데이터를 복구하고, 데이터 무결성을 유지하는 데 도움을 준다.
- 보안: 세션은 사용자 인증 및 데이터 보안을 제공한다.
- 효율성: 데이터 교환을 최적화하고 네트워크 자원을 효율적으로 사용할 수 있도록 도와준다.
- 서비스 품질(QoS) 관리: 실시간 통신과 같은 특수 서비스 요구 사항을 충족하기 위해 사용된다.
➡️ 세션이 없다면 데이터 교환 및 네트워크 통신이 비효율적이고 불안정하며, 사용자 경험과 데이터 보안에 문제가 발생할 수 있다.
표현 계층 (Presentation Layer):
응용 계층 (Application Layer):
- Ex) 인터넷을 사용한다면
- 인터넷의 기본 프로토콜 ➡️ TCP/IP
- 웹사이트의 웹페이지를 본다 ➡️ HTTP
- 메일을 주고 받는다 ➡️ SMTP, POP3
- 인터넷으로 데이터나 파일의 업로드, 다운로드 ➡️ FTP


🤔 OSI 7계층이 있는데 왜 TCP/IP 프로토콜 4계층을 사용하는 것인가?
- TCP/IP 프로토콜 모델은 4개의 주요 계층으로 구성되어 있어서 상대적으로 간결하고 실용적이다.
- OSI 모델은 더 많은 계층과 세분화를 가지고 있어서 구현과 관리가 복잡할 수 있다. 따라서 교육용으로 사용한다.
🤔 자료조사를 통해 알아본 TCP/IP 프로토콜 모델은 4개의 계층인데 왜 위의 사진에는 5개의 계층으로 나눌까?
➡️ 5개 계층 모델은 특히 네트워크 교육 및 통신 설계에서 사용되며, 일반적인 TCP/IP 4계층 모델보다 계층을 더 상세하게 설명한다.
물리 계층 (Physical Layer): 네트워크 통신에서 신호를 전달하는 데 사용되는 물리적인 매체와 관련된 모든 것을 다룬다.
데이터 링크 계층 (Data Link Layer): 네트워크 접근을 관리하고 데이터의 물리적인 전송을 다룬다.
네트워크 계층 (Network Layer): 데이터 패킷의 라우팅 및 전달을 관리한다.
전송 계층 (Transport Layer): 데이터 전송의 신뢰성을 보장하며, 송신자와 수신자 간의 연결을 설정하고 관리한다.
응용 계층 (Application Layer): 사용자가 접하는 서비스와 응용 프로그램을 지원한다.
✅ 대부분의 실제 네트워크 통신에서는 주로 4계층 모델이 사용된다.

- 네트워크 접근 계층 (Network Access Layer 또는 Link Layer): 물리적인 네트워크 하드웨어와 관련된 데이터 전송을 처리한다.
- 인터넷 계층 (Internet Layer): IP 주소를 사용하여 패킷을 라우팅하고 전달한다.
- 전송 계층 (Transport Layer): 데이터 전송을 관리하고 송수신자 간의 연결을 설정 및 관리한다. 주로 TCP와 UDP를 다룬다.
- 응용 계층 (Application Layer): 사용자와 응용 프로그램 간의 통신을 지원하며 다양한 응용 프로토콜을 포함한다.
➡️ 어떤 모델을 사용할지는 주로 네트워크 설계 및 관리의 목적과 상황에 따라 다르다. 표준적인 TCP/IP 모델은 주로 4개 계층 모델로 설명되며, 이 모델을 기반으로 하는 경우가 가장 많다.

- 네트워크 엣지(Network Edge)
- 컴퓨터 네트워크에서 사용자 및 최종 장치(컴퓨터, 스마트폰, 서버 등)가 위치하는 부분을 가리킨다.
- 사용자와 응용 프로그램이 네트워크에 연결되고 데이터를 주고받는 곳이다.
- 종단 시스템(End Systems) 또는 호스트(Host)로도 알려져 있으며, 이들은 네트워크 엣지에 위치하며 데이터를 생성하고 사용한다.
- 사용자의 PC, 스마트폰, 서버, 랩톱 등이 네트워크 엣지의 일부이다.
- 응용 계층(Application Layer)에서 동작하는 사용자 디바이스와 관련이 있다.
- 네트워크 코어(Network Core)
- 네트워크의 핵심 부분을 가리킨다.
- 네트워크의 중앙에서 데이터를 전달하고 라우팅하는 역할을 한다.
- 라우터, 스위치 및 전용 라인과 같은 네트워크 장비로 구성되며, 데이터를 빠르고 효율적으로 전달하도록 설계되었다.
- 대량의 데이터 트래픽을 처리하며, 엣지 시스템 간의 통신을 중계한다.
- 네트워크 계층(Network Layer)과 전송 계층(Transport Layer)에서 동작한다.
- 접속 네트워크(Access Networks)
- 사용자 또는 최종 장치가 네트워크에 접속하는 부분을 의미한다.
- 주로 가정, 사무실, 학교 또는 다른 장소에서 컴퓨터, 스마트폰, 태블릿과 같은 디바이스가 네트워크에 연결되는 지점을 가리킨다.
- 사용자가 인터넷에 접속하거나 내부 네트워크에 연결하는 데 사용되며, 다양한 기술과 장치로 구성될 수 있다.
- 물리적 매체(Physical Media)
- 데이터를 전송하는 데 사용되는 실제 물리적 매체 또는 전송 매체를 나타낸다.
- 데이터를 전기 신호로 변환하여 전송하는 역할을 한다.
- 예를 들어, 광섬유 케이블, 동축 케이블, 전기 선로, 무선 라디오 파형 등이 있다.
➡️ 네트워크 설계 및 운영에서 중요한 역할을 하며, 데이터가 어떻게 생성, 전송되고 사용자에게 전달되는지를 이해하는 데 도움을 준다.
Access networks와 physical media는 사용자와 네트워크 사이의 연결을 담당하며, Network edge와 Network core는 데이터의 전달과 관리를 담당한다.
TCP는 네트워크 통신에서 데이터 전송을 관리하기 위한 프로토콜이다.



순서 보장 (Order Preservation): 데이터는 송신자에서 수신자로 전송되는 순서대로 도착하며, 수신자는 데이터를 받을 때마다 해당 순서를 확인한다. 이를 통해 데이터가 잘못된 순서로 수신되는 것을 방지한다.
흐름 제어 (Flow Control): 데이터의 흐름을 조절하여 수신자의 버퍼 오버플로우를 방지한다. 수신자가 처리할 수 있는 데이터 양을 고려하여 데이터를 송신하므로, 송신자와 수신자 간의 데이터 전송 속도 조절이 이루어진다.
- 버퍼: 데이터를 일시적으로 저장하거나 보관하는 메모리 영역
- 버퍼 오버플로우: 메모리의 끝을 넘어가 데이터를 계속 쓰거나, 할당된 버퍼보다 더 많은 데이터를 입력하는 경우 발생
혼잡 제어 (Congestion Control): 네트워크 혼잡을 감지하고 제어하기 위한 혼잡 제어 알고리즘을 사용한다. 혼잡이 발생하면 데이터 전송 속도를 줄여 혼잡을 완화시키고 네트워크의 공평한 사용을 지원한다.
신뢰할 수 있는 프로토콜 (Reliable Protocol): 데이터의 손실, 중복, 불완전 전송 및 순서 이상을 감지하고 이러한 문제를 해결하기 위한 메커니즘을 제공한다.
사용 분야
인터넷 통신: 웹 브라우징, 이메일 전송, 파일 다운로드, 소셜 미디어 사용 등 인터넷을 통한 모든 종류의 통신에 사용된다. 웹 사이트를 불러올 때 사용되는 HTTP(Hypertext Transfer Protocol)도 TCP 위에서 작동한다.
이메일: 이메일 서비스는 전자 메일 메시지를 주고받는 데 TCP를 사용한다. SMTP (Simple Mail Transfer Protocol)는 이메일을 전송하기 위한 TCP 프로토콜 중 하나이며, POP3 (Post Office Protocol) 및 IMAP (Internet Message Access Protocol)은 이메일을 수신하기 위해 TCP를 사용하는 예이다.
파일 전송: FTP (File Transfer Protocol)와 SFTP (SSH File Transfer Protocol)는 파일을 안전하게 전송하기 위해 TCP를 사용하는 프로토콜이다.
게임: 온라인 멀티플레이어 게임은 TCP를 사용하여 게임 클라이언트와 서버 간의 통신을 관리한다. TCP는 데이터 신뢰성을 제공하기 때문에 게임에서 중요한 역할을 한다.
UDP(User Datagram Protocol)는 비연결형, 신뢰성을 제공하지 않고 빠른 데이터 전송을 지원하는 네트워크 통신 프로토콜이다.
비연결형 프로토콜: 연결 설정 및 연결 해제 과정이 없이 데이터를 전송한다. TCP와 달리 UDP는 간단하게 데이터를 보내고 받는 역할만을 수행하며, 연결 상태를 유지하지 않는다.
신뢰성 부족: 데이터의 신뢰성을 제공하지 않는다. 데이터를 전송하면 데이터가 손실되거나 순서가 바뀔 수 있다. 이로 인해 UDP를 사용할 때 데이터의 완전성과 순서를 유지하기 위한 추가적인 메커니즘이나 애플리케이션 수준에서의 처리가 필요하다.
빠른 전송: TCP보다 전송 속도가 빠르다. 연결 설정 및 연결 해제와 같은 오버헤드가 없으므로 데이터를 신속하게 보내고 받을 수 있다.
오버헤드: 어떤 작업이나 프로세스를 수행하기 위해 필요한 추가적인 리소스, 시간, 또는 비용
데이터 크기 제한: 단일 데이터그램(Datagram)으로 데이터를 전송하며, 데이터그램의 크기에는 제한이 있다. 일반적으로 이 크기는 65,507바이트로 제한된다. 이 때문에 큰 데이터를 UDP로 전송할 때는 데이터를 나누어 보내야 할 수도 있다.
데이터그램: 네트워크 통신에서 데이터의 단위이다. 패킷(Packet)이라고도 불리며, 네트워크를 통해 전송되는 데이터의 조각을 나타낸다. 주로 비연결형 프로토콜인 UDP (User Datagram Protocol)에서 사용된다.
🤔 온라인 게임은 TCP, UDP 둘 다 가능한건가?
➡️ TCP와 UDP 모두 온라인 게임에서 사용될 수 있으며, 어떤 프로토콜을 선택하는지는 게임의 요구 사항 및 설계에 따라 다를 수 있다.
- TCP를 사용하는 경우:
- 신뢰성이 중요한 게임: TCP는 데이터 신뢰성을 제공하므로, 데이터의 손실을 최소화하려는 게임에서 사용될 수 있다.
예를 들어, 텍스트 채팅, 게임 상태 업데이트, 로그인, 계정 관리와 같은 게임 요소에 사용된다.- 데이터 순서가 중요한 게임: TCP는 데이터의 순서를 보장하므로, 순서가 중요한 게임에서 유용하다.
- UDP를 사용하는 경우:
- 낮은 지연 시간이 중요한 게임: UDP는 빠른 데이터 전송을 지원하므로, 실시간 반응이 필요한 게임에서 주로 사용된다.
예를 들어, 온라인 멀티플레이어 액션 게임, 슈팅 게임, 레이싱 게임 등은 UDP를 활용하는 경우가 많다.- 데이터 신뢰성이 상대적으로 낮아도 되는 게임: UDP는 데이터 손실이나 패킷의 순서 변경을 감수할 수 있는 환경에서 사용된다. 이를 통해 게임이 더 빠르게 동작하고, 일부 데이터 손실이 발생하더라도 게임 플레이에 큰 영향을 미치지 않는 게임에 유용하다.
✅ 대부분의 온라인 게임은 TCP와 UDP를 혼합하여 사용하며, 게임 내 다양한 요소에 대한 프로토콜 선택을 결정한다.
네트워크 코어의 구조는 'Mesh of interconnected routers' 즉, 수많은 라우터들이 그물처럼 얽혀있는 구조라고 보면 된다.
라우터란 무엇인가?
➡️ 네트워크에서 데이터 패킷을 전달하는 역할을 하는 장비
- 라우팅 테이블
- 입력 패킷에 대한 교환 규칙을 정의하는 자료구조
- 패킷 전달 테이블(Forwarding table)
- 라우팅 프로토콜
- 라우팅 테이블을 자동으로 생성하는 프로토콜
- 링크 전송속도(Link transmission rate)
- 초당 링크가 전송가능한 비트의 수(bit per second, bps)
- 링크의 종류에 따라 달라짐
- Fast Ethernet 링크 : 100Mps, Gigabit Ethernet 링크 : 1000Mbps
- 패킷 전송지연시간(Transmission delay)
- 전송 장치가 패킷을 링크로 전송하는데 걸리는 시간
- 패킷 크기 : L 비트, 링크 전송속도 : R bps
패킷 전송지연시간 : L/R seconds- L = 7.5Mbits, R = 1.5Mbps ➡️ 전송 지연시간 = 5 sec
- 라우터의 저장-전달(Store-and-Forward) 전송
- 수신 패킷을 버퍼 메모리에 저장
- 패킷을 완전히 수신 후 패킷 전송 시작
- 출발지와 각 라우터에서 전송지연시간 발생
- 종단간 패킷 전송지연시간 : D_end-to-end
- 패킷 크기 : L 비트, 링크 전송속도 : R bps, 링크 개수. : N
- D_end-to-end = N x (L/R), 전달 지연시간 미고려
- 큐잉 지연시간(Queuing delay)
- 패킷이 패킷 스위치(라우터)의 출력 링크의 큐 버퍼 메모리에서 전송전에 대기하는 시간
- 출력 링크의 전송속도보다 많은 량의 패킷이 해당 링크로 교환될 때 발생
- 패킷 손실(Packet loss)
- 버퍼 메모리에서 패킷이 저장되지 못하고 없어지는 현상
- 유한한 크기의 버퍼 메모리에 저장될 수 없을 만큼 많는 양의 패킷이 해당 링크로 교환될 때 발생
- 패킷 분할: 데이터는 전송하기 전에 작은 패킷으로 분할된다. 각 패킷은 고유한 패킷 헤더를 가지며 목적지 정보, 출발지 정보, 시퀀스 번호 등의 정보를 포함한다.
- 독립적인 전송: 패킷들은 각각 독립적으로 전송된다. 이것은 모든 패킷이 독립적으로 경로를 선택하고 다른 패킷과 별개로 전송됨을 의미한다.
- 다중 경로 라우팅: 패킷 스위칭에서는 데이터 패킷이 다양한 경로를 통해 목적지에 도달할 수 있다. 패킷은 라우팅 장치에 의해 최적의 경로로 전달된다.
- 리소스 공유: 네트워크 리소스는 여러 통신 사이에 공유된다. 이것은 다수의 패킷이 동시에 네트워크 리소스를 사용할 수 있음을 의미한다.
- 패킷 조립: 패킷들은 목적지에 도착하면 다시 조립되어 원본 데이터로 복원된다. 패킷 헤더의 정보를 사용하여 올바른 순서로 조립된다.

- No sharing link (링크 공유 없음): 회선 스위칭에서는 설정된 연결 또는 회선을 통해 데이터가 전송된다. 이 설정된 회선은 다른 통신과 공유되지 않으며, 전용으로 사용된다. 따라서 해당 회선을 사용하는 동안 다른 통신과 공유하지 않아 데이터 전송 중에 링크가 공유되지 않는다.
➡️ 리소스가 전용으로 예약되므로 여러 통신이 동시에 이용하기 어렵고, 효율성이 낮을 수 있다.
- No store-and-forward (저장 및 전달 없음): 회선 스위칭에서는 데이터가 전달되기 전에 저장되거나 버퍼링되지 않는다. 데이터는 실시간으로 회선을 통해 전송된다. 이것은 데이터가 전달되는 동안 지연이 최소화되고, 전송이 즉시 시작된다는 것을 의미한다.
- No queuing delay (대기 지연 없음): 회선 스위칭에서는 데이터 패킷이 대기열에 대기하거나 지연되지 않는다. 데이터는 설정된 회선을 통해 즉시 전송되므로 대기 지연이 발생하지 않는다.
➡️ 실시간 통화와 같은 음성 통신에 적합하며, 데이터 전송 중에 지연을 최소화하고, 데이터의 안정성과 성능을 보장한다.
Circuit Switching은 전용 연결을 설정하고 데이터를 전송하기 위해 회선을 예약하는 방식으로 주로 음성 통화와 같은 실시간 통신에 사용되며, 리소스 낭비가 발생할 수 있다.
- Circuit switching : 링크 일부 전용
- 링크 전송속도 : 1Mbps
- 사용자 수 : 10명
- 1인당 100Kbps 전용회선 할당
Packet Switching은 데이터를 작은 패킷으로 나누어 전송하고, 리소스를 효율적으로 공유하며 다양한 종류의 데이터 트래픽을 처리할 수 있다. 그러나 패킷 손실 가능성과 추가 오버헤드가 발생할 수 있다.
- Packet switching : 링크 공유
- 링크 전송속도 : 1Mbps
- 전체 시간 중 10%만 링크 사용
- 35명의 사용자중에 11명 이상이 동시에 링크 사용할 확률 : 0.0004(0.04%)
- 35명이 100Kbps 이상의 전송속도로 링크를 사용할 확률이 99.94%
- 1명만 사용하는 경우 1Mbps 전송속도 사용
- 불연속적인 데이터 전송에 매우 효율적
| 특징 | Circuit Switching | Packet Switching |
|---|---|---|
| 주요 특징 | 전용 연결 설정 및 유지 | 데이터 패킷 전송 및 공유 |
| 리소스 공유 | 리소스 공유 없음 | 리소스 공유 |
| 패킷 분할 | 데이터를 패킷으로 나누지 않음 | 데이터를 작은 패킷으로 분할 |
| 대역폭 할당 | 전체 회선 대역폭을 할당 | 대역폭을 다수의 패킷 사이에 공유 |
| 저장 및 전달 | 즉시 전달 (저장 및 전달 없음) | 데이터를 저장하고 전달 |
| 대기 지연 | 대기 지연 최소화 | 대기 지연 발생 |
| 유연성 | 특정 유형의 통신에 적합 (음성 통화) | 다양한 데이터 유형에 적합 |
| 리소스 효율성 | 비효율적 (회선 예약 및 유지로 인한 리소스 낭비) | 효율적 (리소스 공유 및 패킷 분할로 리소스 효율성 향상) |
| 대안적 사용 사례 | 전화 네트워크, 전용 회선 통신 | 인터넷, 데이터 통신 네트워크 |
| 손실 및 오류 처리 | 회선 손실 없음 | 패킷 손실 가능성이 있으며 오류 처리가 필요함 |

- 노드 처리 지연(Nodal processing delay)
- 노드에서 데이터 패킷을 처리하는데 걸리는 시간
- 패킷 헤더를 검사하고 목적지를 결정하는 라우팅 과정, 오류 검사 및 수정, 패킷 큐에서 대기하는 동안의 대기 시간 등이 포함한다.
- 노드의 성능 및 부하에 따라 다를 수 있으며, 일반적으로 작고 빠른 노드에서는 지연이 짧다.
- 큐잉 지연(Queueing delay)
- 데이터 패킷이 노드에서 전달되기를 기다리는 동안 발생하는 지연
- 이전 내용과 동일
- 전송 지연(Transmission delay)
- 데이터 패킷이 물리적인 매체(유선 또는 무선)를 통해 전송되는 데 걸리는 시간
- 패킷의 비트가 전송 매체를 통과하는 시간으로서, 패킷이 노드를 빠져나가는 과정
- 데이터의 비트 수, 매체의 전송 속도 및 패킷의 크기에 따라 결정
- 이전 내용과 동일
- 전파 지연(Propagation delay)
- 데이터 패킷이 노드에서 다른 노드로 전파되는 데 걸리는 시간
- 전파 매체(예: 광섬유, 동축 케이블, 무선 신호)의 전파 속도와 두 노드 간의 물리적 거리에 영향을 받는다.
- 두 노드 간의 거리가 멀면 전파 지연이 증가