네트워크는 노드와 간선으로 이루어진 자료구조라는 점에서 그래프의 형태를 띤다고 할 수 있음

: 네트워크에서 노드와 노드 사이의 연결 구조
이 구조는 노드가 어떻게 연결되고 배치되는지에 따라 다양한 유형으로 나눠짐
주요 네트워크 토폴로지 유형:

: 네트워크의 가장 자리에 위치하면서 네트워크를 통해 주고 받는 정보를 최초로 송신하고 최종적으로 수신하는 노드
네트워크는 규모에 따라 LAN, WAN 으로 나뉨
LAN
집이나 사무실처럼 비교적 가까운 거리를 연결하는 한정된 공간에서의 네트워크
집에 있는 공유기나 사무실의 네트워크에서 모든 기기가 통신한다면 이 네트워크는 LAN으로 구성된 것
LAN에 속한 모든 기기들은 서로 연결되어 정보를 주고받고 동일한 네트워크 안에서 작동
WAN
LAN을 연결하는 원거리 네트워크. 이를 통해 다른 지역에 있는 LAN들 간의 통신이 이루어짐
대표적으로 인터넷. WAN은 전 세계의 LAN을 연결하는 역할을 함
ISP(Internet Service Provider)와 같은 인터넷 서비스 제공 업체에 의해 구축되고 관리. 국내의 대표적인 ISP 업체로는 KT, LG유플러스, SK브로드밴드 등이 있음
LAN은 가까운 거리 내에서 네트워크를 구성하고 WAN은 여러 LAN을 연결하여 넓은 범위의 통신을 가능하게 함
패킷: 네트워크를 통해 송수신되는 데이터의 단위
현대의 네트워크는 패킷 단위로 주고받는 정보를 쪼개서 송수신하고 수신지에서 재조립하며 패킷을 주고받는 패킷 교환 네트워크가 대부분임
하나의 패킷은 페이로드와 헤더로 구성되어 있으며, 때로는 트레일러라는 정보도 포함되기도 함
페이로드: 패킷에서 송수신하고자 하는 데이터
헤더/트레일러: 패킷에 추가되는 부가 정보

주소: 패킷의 헤더의 명시되는 정보
네트워크에서 사용되는 대표적인 주소로는 IP 주소와 MAC 주소
유니캐스트: 송신지와 수신지가 일대일로 메시지를 주고받는 전송 방식 (수신지를 특정 호스트 하나로 지정)
브로드캐스트: 네트워크상의 모든 호스트에게 메시지를 전송하는 방식 (네트워크 내 모든 호스트로 지정)
브로드캐스트 도메인: 브로드캐스트가 전송되는 범위
호스트가 같은 브로드캐스트 도메인에 속해 있는 경우에는 같은 LAN에 속해 있다고 간주

멀티캐스트: 네트워크 내의 동일 그룹에 속한 호스트에게만 전송
애니캐스트: 네트워크 내의 동일 그룹에 속한 호스트 중 가장 가까운 호스트에게 전송
등 다양한 송수신 방식들이 있지만 유니캐스트와 브로드캐스트가 가장 자주 언급됨
: 네트워크에서 통신을 주고받는 노드 간의 합의된 규칙이나 방법
개발자가 기본적으로 알아야 할 프로토콜의 종류
IP: 네트워크 간 주소를 지정하는 목적
ARP: IP 주소와 MAC 주소를 대응시키는 목적
HTTPS: 보안이 강화된 HTTP, 보안상 HTTP 보다 안전
TCP: 신뢰성이 높은 전송을 제공, 데이터 전송의 순서와 오류 복구 보장 (UDP에 비해 신뢰성 높음)
UDP: 신뢰성보다 속도가 중요한 경우 사용, 데이터 전송 순서나 오류 복구 없이 빠르게 전송
패킷을 주고받는 과정에는 정형화된 순서가 있고, 계층적으로 표현할 수 있음
통신이 이루어지는 단계를 계층적으로 표현한 것을 네트워크 참조 모델이라고 함
패킷을 송신하는 쪽에서는 상위 계층에서 하위 계층으로 정보를 보내고 패킷을 수신하는 쪽에서는 하위 계층에서 상위 계층으로 정보를 받아들이게 됨


국제 표준화 기구에서 만든 네트워크 참조 모델
통신 단계를 7개의 계층으로 나눠 OSI 7계층이라고 부름

1️⃣ 물리 계층 (Physical Layer)
네트워크에서 비트 신호를 주고받는 가장 최하위 계층
컴퓨터는 0과 1로만 이해할 수 있기 때문에 정보를 0과 1로 이루어진 신호로 구성
이러한 신호를 유무선 통신 매체를 통해 운반하는 계층
2️⃣ 데이터 링크 계층 (Data Link Layer)
같은 LAN에 속한 호스트끼리 정보를 올바르게 주고받기 위한 계층
같은 네트워크에 속한 호스트를 식별할 수 있는 주소(MAC 주소)를 사용
물리 계층을 통해 주고받은 정보에 오류가 있는지 확인
-> 물리 계층과 데이터 링크 계층은 서로 밀접하게 연관된 계층이며, 하드웨어와 밀접하게 맞닿아 있는 계층
3️⃣ 네트워크 계층 (Network Layer)
네트워크 간 통신을 가능하게 하는 계층
LAN을 넘어 다른 네트워크와 통신을 주고받기 위해 필요한 계층
따라서 네트워크간 통신 과정에서 호스트를 식별할 수 있는 주소(IP 주소)가 필요
네트워크 계층에서 대표적으로 IP 프로토콜이 사용됨
4️⃣ 전송 계층 (Transport Layer)
네트워크를 통해 전송되는 패킷이 유실되거나 순서가 바뀌지 않도록 신뢰성 있는 전송을 보장
포트를 사용해 특정 응용 프로그램과 연결 다리 역할을 수행
전송 계층에 속한 대표적인 프로토콜로 TCP와 UDP가 있음
5️⃣ 세션 계층 (Session Layer)
응용 프로그램 간의 연결 상태를 의미하는 세션을 관리하기 위한 계층
응용 프로그램 간의 연결 상태를 유지하거나 새롭게 생성하고 필요하다면 연결을 끊는 역할
6️⃣ 표현 계층 (Presentation Layer)
인코딩과 압축, 암호화와 같은 작업을 수행
세션 계층과 표현 계층은 다른 계층과 달리, 두 계층을 명확하게 구분하지 않거나 응용 계층에 포함하여 간주하는 경우가 많음
7️⃣ 응용 계층 (Application Layer)
사용자와 가장 밀점하게 맞닿아 있어 여러 네트워크 서비스를 제공하는 계층
중요한 프로토콜들이 다수 포함되어 있음
응용 계층에 속한 대표적인 프로토콜로 HTTP, HTTPS, DNS 등이 있음
TCP/IP 4계층이라고도 불리는 TCP/IP 모델은 아래 사진과 같이 구성되어 있음
OSI 모델은 주로 네트워크의 이론적 기술을 목적으로 사용하는 반면 TCP/IP 모델은 구현과 프로토콜에 중점을 둔 네트워크 참조 모델임

OSI 모델과 TCP/IP 모델이 만들어진 목적이 다른 만큼, 두 모델에 대한 직접적이고 엄밀한 비교는 어려움
그러나 계층별로 수행하는 역할을 기준으로 OSI 모델과 TCP/IP 모델의 계층을 비교하면 이해할 수 있음
1️⃣ 네트워크 액세스 계층 (Network Access Layer)
물리적인 전송 매체를 통해 데이터를 송수신하는 역할
링크 계층 or 네트워크 인터페이스 계층이라고도 부름
유사 계층: OSI 모델의 데이터 링크 계층과 유사
OSI 모델에서 물리계층과 데이터링크 계층을 포함하는 개념으로 볼 수 있지만,
일부에서는 OSI 모델의 물리계층에 해당하는 개념이 TCP/IP 모델에 명시적으로 존재하지 않는다고도 보고 있음
2️⃣ 인터넷 계층 (Internet Layer)
네트워크 간 통신을 가능하게 하는 것
IP 주소를 사용하여 패킷을 라우팅하고 전달하는 역할
유사 계층: OSI 모델의 네트워크 계층에 해당
3️⃣ 전송 계층 (Transport Layer)
신뢰성 있는 데이터 전송을 제공하며, 데이터의 흐름을 제어하고 오류를 처리하는 기능을 수행
유사 계층: OSI 모델의 전송 계층에 해당
4️⃣ 응용 계층 (Application Layer)
최상위 계층으로, 사용자와 직접적으로 상호작용하는 서비스들을 제공
유사 계층: OSI 모델의 응용 계층, 세션 계층, 표현 계층을 합친 개념에 해당

OSI 모델은 7계층으로 세분화되어 각 계층이 명확한 역할을 담당. 물리계층부터 응용계층까지 각 계층을 세분화하여 설명
TCP/IP 모델은 4계층으로 더 단순하게 구성되어 있음. OSI 모델보다 더 실용적인 관점에서 만들어졌으며, 인터넷과 관련된 프로토콜의 구현을 중심으로 구성
OSI 모델은 이론적이고 개념적인 모델로 네트워크의 기능을 세분화하여 설명하고, TCP/IP 모델은 실제 인터넷에서 사용되는 프로토콜에 초점을 맞추어 더 간단하고 실용적으로 구성
책에서는 TCP/IP 모델에 물리 계층을 추가한 확장된 모델로써 네트워크를 설명
프로토콜과 네트워크 참조 모델을 토대로 이뤄지는 패킷의 송수신 과정 중 송신 과정에서는 캡슐화가 이루어지고, 수신 과정에서는 역캡슐화가 이루어짐
즉, 각 계층에서는 어떤 정보를 송신할 때 상위 계층으로부터 내려받은 패킷을 페이로드 삼아, 각 계층에 포함된 프로토콜의 각기 다른 목적과 특징에 따라 헤더 혹은 트레일러를 덧붙인 다음 하위 계층으로 전달
상위 계층의 패킷이 하위 계층의 페이로드로 간주되는 것
캡슐화: 송신 과정에서 헤더(및 트레일러)를 추가해 나가는 과정
역캡슐화: 캡슐화 과정에서 붙인 헤더(및 트레일러)를 각 계층에서 확인한뒤 제거하는 과정
OSI 모델 기준 패킷명
> 각 계층에서 주고받는 패킷(메시지)을 지칭하는 이름이 다름

네트워크 계층 구조상 캡슐화와 역캡슐화 과정

참고: 북스터디 - 이것이 취업을 위한 컴퓨터 과학이다 (Chapter 5-1)