## 1. 데이터 통신
- **데이터 통신: 전송 매체(transmission media)를 통해 두 기기 간 데이터를 교환하는 것**
![[data_communication_0_1.png|center|w30]]
<br>
## 2. 네트워크
![[data_communication_0_2.png]]
- **네트워크(Network): 통신 가능한 디바이스 간의 연결**
- **host, end user:** 컴퓨터 네트워크에 연결된 컴퓨터나 기타 장치
- 컴퓨터, 데스크톱, 노트북, 모바일 폰 등
- **connecting device:** 데이터의 형태를 바꿔 전달이 가능하도록 하는 장치들
- 라우터, 스위치, 모뎀 등
<br>
### 네트워크 관련 단위
> **핵심 개념: Bit(비트) vs Byte(바이트)**
> - Bit(b): 데이터의 가장 작은 단위. 0 또는 1. 네트워크 속도를 말할 때 사용함
> - Byte (B): 8개의 비트가 모인 단위. 파일 크기를 말할 때 사용함
> - **1 Byte = 8 bits**
<br>
1. **파일 크기 (저장 공간 단위)**
- 컴퓨터는 **2진법**을 사용하므로, 파일 크기는 2의 제곱으로 커진다
- 1 KiloByte (KB) = 1,024 Bytes
- 1 MegaByte (MB) = 1,024 KiloBytes (약 100만 바이트)
- 1 GigaByte (GB) = 1,024 MegaBytes (약 10억 바이트)
2. **네트워크 속도 (전송 속도 단위)**
- 네트워크 장비는 **10진법**을 기준으로 하므로, 속도는 10의 제곱으로 커진다
- 1 Kilo-bps (Kbps) = 1,000 bps (초당 1천 비트)
- 1 Mega-bps (Mbps) = 1,000 Kbps (초당 1백만 비트)
- 1 Giga-bps (Gbps) = 1,000 Mbps (초당 10억 비트)
<br>
![[data_communication_0_3.png|center|w55]]
<br>
**예시: 1MB 사진을 1Mbps 속도로 전송하는 시간**
→ "파일 크기(Byte)를 비트(bit)로 통일"하는 것이 계산의 핵심
1. 사진 크기를 bit로 변환
- 1 MByte = 1,024 KB = 1,024 * 1,024 Bytes = 1,048,576 Bytes
- 1,048,576 Bytes 8 bits/Byte = 8,388,608 bits*
2. 전송 속도를 bit로 확인
- 1 Mbps = 1,000,000 bps (초당 1,000,000 비트를 전송)
3. 전송 시간 계산
- 필요한 시간 = (총 데이터 크기) / (초당 전송 속도)
- 8,388,608 bits / 1,000,000 bps ≈ 8.4초
결론적으로, 1MB 크기의 파일을 1Mbps 속도로 보내는 데는 **약 8.4초**가 걸린다.
흔히 "1메가 속도로 1메가 파일 보내면 1초 아니야?"라고 생각하지만, Byte와 bit의 차이 때문에 약 8배의 시간이 더 걸리는 셈이다.
<br>
**참고: 시간 단위**
- Second (초): 기본 단위
- Millisecond (ms): 1/1,000 초 (네트워크 지연 시간 측정에 주로 사용)
- Microsecond (μs): 1/1,000,000 초
- Nanosecond (ns): 1/1,000,000,000 초 (반도체 등 내부 처리 속도에 사용)
<br><br>
## 3. 통신 방식과 프로토콜
> 통신 채널의 물리적인 동작 방식 또는 특성
> - **통신 방식 (Simplex, Duplex...):** 도로 자체의 종류 (일방통행, 양방향 도로)
> - **프로토콜 (HTTP, TCP...):** 그 도로 위에서 지켜야 할 교통 법규 (신호등, 속도 제한, 차선 유지)
<br>
### 통신 방식
![[data_communication_0_7.png|center|w60]]
- **Simplex (단방향 통신)**
- 데이터가 한쪽 방향으로만 흐름
- e.g. 라디오 방송, TV 방송, 키보드 입력 (키보드 → 컴퓨터)
- **Half-duplex**
- 데이터가 양쪽 방향으로 흐를 수 있지만, 동시에 전송할 수는 없음. 한쪽이 보내면 다른 쪽은 받아야만 함
- e.g. 무전기, 보통 무선에서 쓰임
- ==**Full-duplex**==
- 데이터가 양쪽 방향에서 동시에 흐를 수 있음
- e.g. 랜선, 전화 통화
<br>
### 프로토콜
프로토콜은 이러한 물리적인 통신 방식 위에서 데이터가 어떻게 잘 오고 갈 수 있는지에 대한 규칙과 약속과 같은 역할을 한다.
![[data_communication_0_4.png|center|w25]]
- **프로토콜(Protocol): 데이터 전송을 위한 일련의 규칙들, 전송 규약**
- **Half-duplex 환경의 프로토콜:** 데이터가 동시에 전송되어 충돌하는 것을막는 규칙(CSMA/CD)이 필요함. 무전기에서 "오버"라고 말하는 것도 일종의 간단한 프로토콜임
- **Full-duplex 환경의 프로토콜:** 동시에 데이터가 오고 가므로 충돌 걱정은 덜하지만, 순서가 뒤바뀐 데이터를 바로잡거나 누락된 데이터를 재전송해달라고 요청하는 등의 규칙이 필요함 (TCP의 역할)
<br>
### 물리적 토폴로지
> **물리적 토폴로지(Physical Topology)** 는 네트워크의 물리적인 연결 구조를 의미함
> 컴퓨터, 케이블, 스위치, 라우터와 같은 장비들이 실제로 어떻게 배치되고 연결되어 있는지를 나타내는 '네트워크의 지도' 또는 '배선도'에 해당하는 개념
<br>
![[data_communication_0_5.png|center|w60]]
- mesh topology: 기기 간 fully connected 거나 연결 몇 개 없는 형태
- ==**star topology**==: 하나에 여러 개가 물려있는 형태, 요즘 통신은 이 형태가 가장 많음
- bus topology: 선을 공유하는 형태, 한 번에 한놈만 보낼 수 있어 비효율적이나 CPU와 메모리 같은 근거리 통신에서는 요즘도 활용됨
- ring topology: 바로 옆 host에게만 전달 가능한 형태, 옛날 topology
<br><br>
## 4. ==TCP/IP protocol suite==
> 데이터가 인터넷을 통해 어떻게 여행하는지를 설명하는 과정
> 이 과정을 "해외에 있는 친구에게 소포를 보내는 과정"에 비유하면 쉽게 이해할 수 있음
<br>
- 데이터를 보내는 컴퓨터(송신 측)는 위에서 아래로 **포장(Encapsulation)** 을 하고, 데이터를 받는 컴퓨터(수신 측)는 아래에서 위로 **포장을 푼다. (Decapsulation)**
<br>
![[data_communication_0_6.png|center|w70]]
<br>
**5. Application Layer (응용 계층): 편지 작성**
- **비유:** 친구에게 보낼 **편지의 내용(데이터)** 을 작성하는 단계
- **역할:** 사용자가 직접 상호작용하는 부분. 웹 서핑(HTTP), 파일 전송(FTP) 등의 서비스를 제공함
- **데이터 단위:** 메시지(Message)
- **주소/식별자**: 없음
**4. Transport Layer (전송 계층): 동/호수 기입**
- **비유:** 편지를 봉투에 넣고, 친구의 **동/호수(포트 번호)** 를 적는 단계. 받는 사람의 컴퓨터에 여러 프로그램이 실행 중일 때, 정확한 프로그램으로 데이터를 전달하기 위한 과정
- **역할:** 프로세스 대 프로세스 (Port-to-Port) 통신. 데이터의 신뢰성(TCP) 또는 속도(UDP)를 결정함
- **데이터 단위:** 세그먼트(Segment)
- **주소/식별자**: **포트 번호(Port #)**
**3. Network Layer (네트워크 계층): 집 주소 기입**
- **비유:** 봉투에 친구의 **집 주소(IP 주소)** 를 적는 단계. 전 세계 어디에 있든 최종 목적지를 찾아갈 수 있게 함
- **역할:** 호스트 대 호스트 (Host-to-Host) 통신. 수많은 네트워크 중에서 최적의 경로를 찾아(라우팅) 최종 목적지까지 데이터를 전송함
- **데이터 단위:** 패킷(Packet) 또는 데이터그램(Datagram)
- **주소/식별자**: **IP 주소(IP Address)**
**2. Data Link Layer (데이터 링크 계층): 근처 우체부에게 전달**
- **비유:** 우리 동네 우체부가 다음 동네 우체부에게 소포를 넘겨주는 단계. 최종 목적지가 아닌, **바로 다음 노드(라우터 또는 컴퓨터)의 물리적 주소** 를 이용함
- **역할:** 노드 대 노드(Node-to-Node) 통신. 같은 네트워크 내에서 장비 간에 데이터를 안전하게 전송함
- **데이터 단위:** 프레임(Frame)
- **주소/식별자**: **MAC 주소(MAC Address)**
**1. [[1. Physical Layer - 아날로그·디지털 신호와 프로토콜|Physical Layer]] (물리 계층): 실제 트럭과 도로**
- **비유:** 소포를 실은 **트럭이 도로를 통해 실제로 이동**하는 단계. 데이터(0과1)를 전기 신호, 빛, 전파 등 물리적인 형태로 변환하여 전송함
- **역할:** 비트(bit) 단위의 데이터를 물리적인 신호로 변환하여 전송 매체(케이블, 마이크로파 등)를 통해 전달함
- **데이터 단위:** 비트(Bit)
- **주소/식별자**: 없음
<br><br>
> **OSI 7계층에는 Transport Layer 상단에 Session 계층과 Presentation 계층이 추가된다.**
>
> OSI 모델은 네트워크를 처음 배울 때 복잡한 통신 과정을 7개의 논리적인 단계로 나누어 이해하기 쉽게 설명하는데, 각 계층의 역할이 명확히 정의되어 있어서 교육적 측면이나 새로운 네트워크 기술 혹은 프로토콜을 개발할 때 참조하기 좋은 모델이다.
> 반면에, TCP/IP 모델은 현재 우리가 사용하는 인터넷 그 자체다. 이론인 OSI와 달리 인터넷을 동작시키는 실제 포로토콜의 모음으로써, 우리가 웹서핑을 하고 이메일을 보내는 모든 활동은 TCP/IP 위에서 이루어진다. 이론적인 완벽함보다는 실제 구현과 효율성을 중시하여 개발되었기 때문에 전 세계적인 표준으로 자리 잡게 되었다.
<br>
<br>
<br>
<br>