diff --git "a/docs/playhuck/2024-03-04_OSI\353\263\265\354\212\265.md" "b/docs/playhuck/2024-03-04_OSI\353\263\265\354\212\265.md" new file mode 100644 index 0000000..ee3aeb4 --- /dev/null +++ "b/docs/playhuck/2024-03-04_OSI\353\263\265\354\212\265.md" @@ -0,0 +1,189 @@ +## OSI 7계층 + +복잡한 데이터 전송 과정에서의 네트워크 프로토콜을 7개의 계층으로 나누고, 일곱 개의 계층으로 나누어 설명하는 개념적인 프레임워크다. + +1. Physical Layer / **물**리 계층 +2. Data Link Layer / **데**이터 링크 계층 +3. Network Layer / **네**트워크 계층 + - IPv4 + - IPv6 + - NAT + - 라우터 / 스위치 +4. Transport Layer / **전**송 계층 + - TCP + - UDP + - Load Balancer / 방화벽(Firewall) +5. Session Layer / **세**션 계층 +6. Presentation Layer / **표**현 계층 + - TLS + - SSH +7. Application Layer / **애**플리케이션 계층 + - HTTP + - SMTP + - FTP + +--- + +## 1계층 (물리 계층) + +1계층은 물리적 연결인 전기 신호를 전달하는데 초점이 맞추어져 있다. + +비트를 전송하고 물리적 연결을 담당합니다. + +주요 장비로는 + +- 허브 +- 리피터 + +등이 있다. + +## 2계층 (데이터 링크 계층) + +전기 신호를 모아 사람이 알아볼 수 있는 데이터 형태로 처리합니다. + +1계층에서 전기 신호를 잘 보내는 것이 목적이기 때문에 출발지와 목적지를 구분할 수 없지만 + +2계층에서는 출발지와 목적지의 주소를 확인하고 해당 네트워크에서 처리해야 하는 패킷이 + +맞는지 확인후 데이터 처리를 수행한다. + +물리 주소(MAC 주소)를 사용하여 네트워크 장치를 식별한다. + +2계층에서 동작하는 주요 구성 요소는 랜 카드다. + +2계층에서 동작하는 랜 카드와 스위치 모두 MAC 주소를 이해할 수 있고, 스위치는 MAC 주소를 + +forwading 할 수 있는 능력이 있다. + +### MAC 주소 + +랜 카드에 할당된 고유 식별자를 의미한다. + +랜 카드는 MAC 주소를 가지고 있고, 전기 신호가 들어오면 2계층에서 전기 신호를 + +데이터 형태(패킷)로 변경하여 내용을 구분한 후 도착지 MAC 주소를 확인한다. + +MAC 주소가 자신이 아니라면 패킷을 폐기한다. + +자기자신이거나 브로드캐스트 / 멀티캐스트라면 패킷 정보를 상위 계층으로 넘겨준다. + +## 3계층 (네트워크 계층) + +3계층에서는 IP 주소와 같은 논리 주소가 정의된다. 일반적인 데이터 통신은 2계층의 물리적인 + +주소인 MAC 주소와, 3계층의 논리 주소인 IP 주소로 이루어진다. + +패킷(Packet)을 라우팅하여 목적지까지 전달한다. + +라우터를 사용하여 최적의 경로를 선택하고, IP 주소를 통해 장치를 식별한다. + +### IP 주소 + +1. 변경 가능한 논리 주소다. +2. 주소에 레벨이 있다. + +흔히 사용하는 IP 주소는 IPv4 주소다. + +## 4계층 (전송 계층) + +4계층은 실제 데이터들이 정상적으로 전송되는지 확인하는 역할을 한다. + +패킷은 데이터를 분할해 전송하기 때문에 유실되거나 순서가 변경될 수도 있다. + +4계층에서는 패킷 유실과 순서가 뒤바끼는 문제를 바로잡는 역할을 한다. + +4계층의 장비로는 + +- 로드 밸런서(Load Balancer) +- 방화벽 + +등이 있다. + +### TCP + +TCP는 패킷 전송을 제어하는 프로토콜로 IP와 함께 사용된다. + +IP가 패킷을 목적지까지로의 안내를 위해 사용된다고치면, TCP는 패킷의 + +안정적인 연결을 통한 세션을 안전하게 연결하고 데이터를 분할하고 분할된 패킷이 + +잘 전송됐는지 확인하는 등의 신뢰성 있는 연결을 위해 사용한다. + +3-way handshaking을 통해 연결하고 4-way handshaking을 통해 연결을 해제한다. + +이런 연결과 연결해제 방식을 통해 신뢰성 있는 서비스를 제공할 수 있다. + +따라서, TCP 통신은 패킷 전달의 연속성보다 신뢰성이 더 중요한 경우에 사용한다. + +UDP보다 속도가 느리다. + +Sender와 Receiver는 1대1로 연결된다. + +패킷에 대한 응답을 해야하기 때문에(시간 지연, CPU 소모) 성능이 낮다. +Streaming 서비스에 불리하다.(손실된 경우 재전송 요청을 하므로) + +### UDP + +TCP와 달리 비연결형 프로토콜이다. 패킷에 순서를 부여하여 재조립을 하거나 흐름 제어 또는  + +혼잡 제어와 같은 기능도 처리하지 않기에 TCP보다 속도가 빠르며 네트워크 부하가 적다는 + +장점이 있지만 신뢰성있는 데이터의 전송을 보장하지는 못한다. + +Sender와 Receiver는 1:1일 수도, 1:N일 수도 N:N일 수도 있다. + +음성이나, 동영상 등 시청각과 밀접하게 연결된 데이터를 송신하는데 사용되며, + +넷플릭스나 티빙같이 살짝 단절되더라도 괜찮은 경우에는 TCP를 사용하기도 한다. + +## 5계층 (세션 계층) + +세션 계층은 양 종단의 응용 프로세스가 연결을 성립하도록 도와주고 안정적으로 유지되도록 관리하고 작업 완료 후 이 연결을 끊는 역할을 한다. + +또한, 에러로 중단된 통신에 대한 복구와 재전송도 수행한다. + +## 6계층 (표현 계층, 프레젠테이션 계층) + +표현 방식이 다른 Application이나 System간 통신들 돕기 위해 통일된 구문 형식으로 변환하는 + +기능을 수행한다. + +인코딩, 암호화 압축 코드 변환 등의 동작이 이루어진다. + +## 7계층 (Application 계층) + +Application 서비스를 수행한다. 실제 사용자와의 UI나 입 출력 등 사용자 인터페이스 및 네트워크 서비스를 제공한다. + +--- + +## 유니캐스트 / 멀티캐스트 / 브로드캐스트 / 애니캐스트 + +네트워크의 출발지에서 목적지로 데이터를 전송할 때 사용하는 통신 방식은 다음과 같다. + +### 유니캐스트 + +출발지와 목적지가 명확한 1:1 통신 방식이다. 대부분의 통신은 유니캐스트다. + + 대부분의 웹 브라우징이나 이메일 전송 등이 유니캐스트 방식으로 이루어진다. + +### 브로드캐스트 + +목적지 주소가 모든으로 표기되어 있는 통신 방식이다. 유니캐스트로 통신하기 전 상대방의 + +정확한 위치를 알기 위해 사용한다. + +전체 네트워크에 데이터를 뿌리기 때문에 대역폭을 많이 소모하게 되어 효율성이 낮아지므로, 최근에는 이러한 방식을 최소화하거나 대체하는 방향으로 발전하고 있다. + +### 멀티캐스트 + +멀티캐스트 그룹 주소를 이용해 해당 그룹에 속한 다수의 호스트로 패킷을 전송하는 + +통신 방식이다. + +그룹 내의 멤버들만 해당 데이터를 수신하며, 이는 효율적인 데이터 전송 방식 중 하나입니다. 사내방송이나 온라인 게임 등에서 사용될 수 있다. + +### 애니캐스트 + +주소가 같은 호스트들 중 가장 가깝거나 효율적인 호스트와 통신하는 방식이다. + +여러 서버가 동일한 IP 주소를 가지고 있지만, 클라이언트는 자신과 가장 가까운 서버에게만 응답을 받게 된다. 주로 안정성 및 가용성을 향상시키는 목적으로 사용됩니다. DNS 서버의 구성에서나 분산 서비스에서 활용될 수 있다.