malloc_lab의 할당기를 구현하고, 버디 시스템구현한다고, 까불다가 호되게 혼났다. 해당 과정은 아직 왜 실패했는지 원인을 찾기 어려워서 일단 뒤로 미뤘다.
그러면 새로운 주차가 시작됬으니....
네트워크 레츠고,,,
network라는 용어는 많이 친숙하지만,
" 이게 정확히 뭔데 ? " 라고 얘기하면
지금의 깊이로써 이거다 ! 할만한 답변을 내놓을 수 없어서 찾아봤다...
네트워크란 ?
서로 데이터를 주고 받을 수 있게 연결된 시스템의 구조, 또는 집합.
예를 들어
1. 컴퓨터 2대 이상이
물리적으로 케이블, 와이파이, 광섬유 등으로 연결돼 있고,
2. 서로 데이터를 주고받을 수 있다면
그건 바로 네트워크이다.
일단 연결시키는 거 OK.
근데 이제 우리가 실생활에서 어떤식으로 사용하는지도 알아보자.
네트워크의 종류
| 종류 | 설명 | 예시 |
|---|---|---|
| LAN (근거리 네트워크) | 한 건물이나 집 안에서 연결 | 집 Wi-Fi, 사무실 네트워크 |
| WAN (광역 네트워크) | 도시/국가 간 넓은 범위 연결 | 통신사 네트워크 |
| 인터넷 | 전 세계 컴퓨터들이 연결된 공공 네트워크 | 구글, 유튜브, 웹 전체 |
| 인트라넷 | 회사 내부에서만 사용하는 네트워크 | 기업 내부 서버망 |
이제 더 큰 개념도 있지만, WAN 까지만 설명했다.
해당 예시를 보면 결국 컴퓨터와 컴퓨터를 잇기 위해서
건물, 도시 단으로 연결 범위를 넓히고, 서로 연결한다.
여기서 네트워크가 하는 일은 패킷화, 라우팅 등이 있다.
근데 위 두 단어도 처음 들어보니까 한번 알아보자.
패킷을 만들려면 패킷화라는 과정을 거쳐야한다.
그럼 패킷화가 뭔데 ?
패킷화(Packetization)
데이터를 네트워크로 보내기 위해서 작은 조각들(패킷)로 나누는 과정
한 번에 보내기엔 너무 크거나 위험해서, 나누어서 보낸다.
이때 패킷이 유실된다면, 전체가 아니라 그 조각만 데이터를 전송하면 돼서 효율적 !
패킷의 구성요소
| 구성 요소 | 설명 |
|---|---|
| 헤더(header) | 송/수신지 IP, 순서 번호, 오류 검출 등 제어 정보 |
| 페이로드(payload) | 실제 데이터 내용 (예: HTML, 이미지, 텍스트 등) |
웹 페이지(1MB)를 전송한다면
-> TCP가 1460 BYTE 정도로 나누고
-> IP 패킷으로 포장한다 (전송)
라우팅
패킷을 목적지까지 가장 효율적인 경로로 전달하는 과정이다.
즉, 네트워크의 길잡이 역할이며 목적지의 IP주소를 보고 다음에 보낼 곳(다음 홉)을 결정함.
라우팅 테이블 동작 과정
| 목적지 주소 대역 | 다음으로 보낼 인터페이스 |
|---|---|
| 192.168.1.0/24 | eth0 (이웃 A 라우터) |
| 10.0.0.0/8 | eth1 (이웃 B 라우터) |
위 처럼 라우터는 라우팅 테이블을 가지고 있고, 다음 경로로 패킷을 넘긴다.
즉, 패킷화를 통해 데이터를 패킷으로 쪼개고, 라우팅을 통해 각 패킷들을 목적지까지 안내한다 !
예시
1. 구글에 접속 → 요청 데이터가 수십 개의 패킷으로 쪼개짐
2. 각각 다른 경로로 전송됨
3. 목적지에서 다시 조립됨
나는 이걸 보고 옛날 영화 플라이가 생각났다.
이 영화는 먼 미래에 텔레포트를 할 수 있는 기술이 발명 됬는데,
원리는 인간을 작은 단위로 쪼개고, 다시 목적지에서 재조립 하는 것이다.
그 과정에서 파리가 들어가서 재조합 과정에서 주인공이 파리 인간이 되는 내용이다.
이게 패킷화와 라우팅개념과 너무 비슷했다 ㅋㅋㅋ
- 컴퓨터 간 통신을 추상적인 7개의 계층으로 나눠 이해하고 설계하기 쉽게 만든 구조
- 상호 운용성과 표준화를 위한 이론 모델
- 실제로는 TCP/IP 4계층이 쓰이지만, OSI모델이 분석과 설계에서 더 정밀하고 설명력이 높음 !
네트워크 하면 항상 나오는 OSI 7계층이다...
네트워크에 대해서 기억은 잘 안나지만, 아직도 응표세전네데물 은 기가막히게 기억한다.
그럼 하나하나 꼭꼭 씹어보자...
OSI 7계층
| 계층 | 이름 (영문) | 주요 역할 | 대표 프로토콜/기술 | 예시 |
|---|---|---|---|---|
| 7 | 응용 계층 (Application) | 사용자 인터페이스, 앱 제공 | HTTP, FTP, SMTP | 웹 브라우저, 메일 앱 |
| 6 | 표현 계층 (Presentation) | 데이터 형식 변환, 암호화/복호화, 압축 | JPEG, MP3, TLS | 한글 → UTF-8 변환 |
| 5 | 세션 계층 (Session) | 연결 세션 제어, 동기화 | NetBIOS, RPC | 로그인 상태 유지 |
| 4 | 전송 계층 (Transport) | 신뢰성 보장, 흐름 제어, 오류 복구 | TCP, UDP | 데이터 재전송, ACK |
| 3 | 네트워크 계층 (Network) | 주소 지정, 라우팅 | IP, ICMP, ARP | 목적지 IP로 패킷 전송 |
| 2 | 데이터링크 계층 (Data Link) | 물리 주소, 프레임 전송, 오류검출 | Ethernet, MAC, PPP | MAC주소 기반 전송 |
| 1 | 물리 계층 (Physical) | 0과 1 신호 전송 | 전압, 케이블, Wi-Fi | 광섬유, UTP선 |
위로 높아질수록 우리가 아는 추상화에 가까워지고, 아래로 내려갈수록 하드웨어에 가까워진다.
계층이 엄청 많은데 이중에서 이번 주차와 관련이 깊은 네트워크 계층, 전송 계층을 집중적으로 파볼 것이다.