OSI 모델은 네트워크 통신을 7개의 계층으로 나누어 표준화한 모델이다.
OSI(Open Systems Interconnection) 모델은 ISO(국제표준화기구)에서 개발한 모델로, 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 것이다. wikipedia
OSI 모델의 각 계층은 특정 작업을 처리하고 그 위와 아래의 계층과 통신합니다. cloudflare
현대 인터넷은 OSI 모델을 엄격하게 따르지 않음에도 불구하고(더 단순한 인터넷 프로토콜 제품군을 더 따름), OSI 모델은 여전히 네트워크 문제를 해결하는 데 아주 유용합니다. ... 모델의 어느 특정 계층으로 문제를 좁힐 수 있을 경우 불필요한 많은 작업을 피할 수 있습니다. cloudflare
-
하위 계층과 상위 계층은 목표/관심사가 다르다.
- 하위 (1~3): 물리적인 데이터 전송, 전송하는 것 자체에 중점
- 상위 (4~7): 신뢰성 검사, 에러 검출 및 복구, 응용 프로그램 간 통신 서비스 제공
-
- 노드 간의 물리적 케이블 또는 무선 연결
- 주소의 개념이 없으므로 입력이 온 포트를 제외한 모든 포트에 신호 전송
-
- 물리적으로 연결된 두 노드 사이의 연결을 설정하고 종료
- MAC 주소(주소 체계)를 통해서 출발지와 목적지 정보를 확인해 내게 올바른 요청인지 확인
-
주요 장비: NIC(network interface controller), Switch
- NIC는 MAC 주소를 가진다. (IEEE가 하드웨어 제조업체에 일부 할당, 나머지 업체가 할당)
-
- MAC은 변경 가능하고, 중복될 수 있디. 동일 네트워크 내에서만 겹치지 않으면 된다.
- ARP(MAC -> IP 찾기), RARP(ARP 역순) 프로토콜
- MAC은 변경 가능하고, 중복될 수 있디. 동일 네트워크 내에서만 겹치지 않으면 된다.
-
- 논리 주소인 IP를 정의한다.
- 두가지 기능이 있다.
- 세그먼트를 네트워크 패킷으로 나누고 수신 측에서 패킷을 재조립 - 발신, 수신 노드
- 패킷을 목적지로 라우팅하는 것 - 중계 노드/라우터
- 최적의 경로를 찾는다.
-
- Port 번호 사용해 상위 애플리케이션을 식별할 수 있다.
- 세그먼트를 패킷으로 쪼개거나 수신받은 패킷을 합친다.
- 흐름 제어(Flow Control), 오류 제어(Error Control)를 수행한다.
-
- 장치 간에 세션이라는 통신 채널을 생성하고, 열려있는 동안 통신하고 통신이 끝나면 닫는다.
- 세션을 관리하는게 주요 역할
- 에러 복구와 재전송을 수행한다.
-
- 애플리케이션 계층을 위해 데이터를 통일된 구문으로 변환한다.
- 암호화, 압축, 인코딩 같은 동작을 수행한다.
-
- 사용자 입출력 부분을 정의한다.
- 어플리케이션 프로세스/서비스를 수행한다.
- 아주 많은 프로토콜이 있다. (HTTP, TELNET, SMTP) 해당 자료 주로 참고
현대 많은 네트워크는 TCP/IP와 이더넷으로 구현되어 있다.
(추가) TCP/IP는 인터넷과 네트워크에서 사용하는 프로토콜 스택의 집합으로 볼 수 있다. (인터넷 프로토콜 스위트라고도 함.)
TCP와 IP를 기반으로 하는 프로토콜이 많아서 이런 이름이 붙었고, TCP, IP 프로토콜과는 별개이다. - 관련한 블로그 글
이더넷은 IEEE 802.3에서 명시된 물리/데이터링크 계층의 표준이다.
애초에 프로토콜이 먼저 나오고, 그걸 묶어서 TCP/IP Model은 4~5 계층, OSI는 7 계층으로 나누었을 뿐이다.
특정 기준에 맞춰서 프로토콜이 나온게 아니다보니, 실제로 프로토콜을 보면 특정 layer에 속하지 않고 사이에 끼는 경우도 많다.
DHCP를 보면 해당 프로토콜이 몇 계층인지에 대한 이야기가 지속적으로 나온다. ARP도 그런 경향이 있다. 이런걸 보면 대중적으로 쓰이는 프로토콜도, 명확하게 계층에 맞지 않거나 애매한 부분이 있어보인다.
특히, 항상 위 계층을 모르고 바로 아래 계층만 알아야 하는게 아니라, 사이의 계층을 건너뛰어, 상위 프로토콜을 사용하기도 하는 등... (사실 그냥 기존 프로코톨을 사용하는 것 뿐이지만, 계층을 나눠서 집어놓다보니 이런 일이 생기는듯.)
-> 널널한 개발자의 영상을 보면 OSI 7 Layer는 개념/이론이라고 이야기한다.결론적으로, TCP/IP는 실제 네트워크에서 사용하는 프로토콜 스택을 설명하는 구조이고, OSI는 네트워크 네트워크 통신의 개념적 틀이라고 볼 수 있다.
이론보다는 실용성에 중점을 둔 프로토콜이다.
OSI 7 계층과 달리 4개의 계층으로 구성되어 있다.
책 IT 엔지니어를 위한 네트워크 입문 참고
현대 네트워크는 대부분 패킷 기반 네트워크이다.
패킷이라는 작은 단위를 사용해 하나의 통신이 회선 전체를 점유하지 않고 동시에 여러 디바이스가 통신하도록 해준다.
이러한 데이터를 보내고 받는 과정을 인캡슐레이션/디캡슐레이션이라고 부른다.
- 인캡슐레이션: 데이터를 보내기 위해 패킷 단위로 나누고, 네트워크 전송을 위한 정보를 헤더에 추가한다.
- 디캡슐레이션: 데이터를 수신받아 본인에게 온 요청이 맞는지 확인하고, 필요없는 헤더는 버린다.
책 IT 엔지니어를 위한 네트워크 입문 참고
요즘에는 통신 기술이 이더넷에 포함되어 기준이 명확하지 않음
널널한 개발자라는 사람은 LAN을 "Public IP 없이도 통신 가능한 공간" 정도로 보는 것 같다.
- LAN(Local Area Network): 근거리 통신망
- WAN(Wide Area Network): 광역 통신만
- MAN(Metro Area Network): 도시 통신망
- LAN, WAN 사이의 범위
- 현재 가장 많이 사용되는 IP 프로토콜
- 32비트 주소 체계, 약 43억 개의 IP 주소 제공
- 옥텟(8비트) 단위로
.
으로 구분해서 표시
- 옥텟(8비트) 단위로
- 2011년도 이후 전부 고갈됨
- 1990년대는 클래스 기반을 사용했지만 지금은 CIDR을 사용한다.
IP(4,6 둘 다) 주소의 일부는 네트워크 ID를 나타내고, 나머지는 호스트 ID를 나타낸다.
- 네트워크 ID: 네트워크를 식별한다. 동일한 네트워크에 속하는 IP는 같은 네트워크 ID를 가진다.
- 호스트 ID: 한 네트워크 내에서 개별 디바이스를 식별하는데 사용된다.
한 네트워크에 속한다는 의미는 별도의 장비(L3)없이 서로 소통이 가능하다는 뜻.
- IPv4 고갈 문제를 해결하기 위해 등장
- 사설(Private) IP, 공인(Public) IP로 분리하여 사용한다. 사설 IP는 네트워크 내부에서만 유일하며 유효한 값이다. 공인 IP는 인터넷에서 식별 가능한 유일한 IP이다.
- 네트워크 내부에서 통신할 때는 사설 IP를 사용하지만 네트워크 외부와 통신할때는 공인 IP를 사용한다.
- 주로 3가지 종류가 있다.
- Dynamic NAT: 공인 IP Pool 에서 사용 가능한걸 가져다가 씀
- Static NAT: 각 사설 IP와 공인 IP를 고정(매핑)해서 사용
- NPAT(Network Port Address Translation): 많은 사설 IP를 하나의 공인 IP로 연결, 외부에선 포트로 식별
네트워크 안의 네트워크, 하나의 네트워크를 여러 네트워크로 나누는 것.
서브넷 마스크 (Subnet Mask)를 사용해서 나눈다.
(자세한 설명은 생략, Wikipedia, CIDR 개념 쉽게 이해해보자 & 계산법)
(사이더 라고 읽는다.)
기존 IPv4의 클래스 방식 대신 클래스가 없어 효율적이고 유연한 방식을 제공한다.
기존 방식의 문제점과 CIDR의 장점은 AWS의 문서에서 잘 설명해준다.
IP를 나누거나 합치는 기법을 모두 CIDR라고 볼 수 있다.
A.B.C.D/N
처럼 표기한다.
N
이 서브넷 마스크이고, Network ID의 개수를 의미한다.
늘면 서브넷팅, 줄면 슈퍼네팅이다. 늘면 서브넷은 많아지고, 그 서브넷이 가질 수 있는 Host 수는 줄어든다.
==(AI 피셜, 나중에 보강하기)==
- 동적 IP는 네트워크에서 DHCP(Dynamic Host Configuration Protocol) 서버를 통해 동적으로 할당되는 IP 주소를 의미합니다. 사용자가 네트워크에 연결할 때마다 다른 IP 주소가 할당될 수 있습니다.
- 정적 IP는 사용자가 직접 설정한 고정된 IP 주소를 의미합니다. 수동으로 변경하지 않는 이상 고정된 값을 가진다.
- 128비트(16비트씩 8개의 블럭) 주소 체계
- 사실 상 IP 고갈 걱정을 하지 않아도 된다.
-
지구 표면 전체를 1mm2로 산산이 쪼갰을 때 모든 조각마다 665,570,793,348,866,944개의 주소를 제공할 수 있을 정도야. - 읽자마자 IT 전문가가 되는 네트워크 교과서 책 인용 -
-
한 네트워크(segment)에서 다른 네트워크로 이동하기 위하여 거쳐야 하는 거점으로 볼 수 있다.
네트워크와의 통신을 중계하고, 라우팅 및 패킷 필터링, NAT(네트워크 주소 변환)와 같은 기능을 제공한다.
다양한 프로토콜을 지원하며 OSI 모델의 여러 계층에서 작동할 수 있다.
(아마 조금 느슨한 개념인듯?)
간단하게 한 네트워크에서 다른 네트워크로 넘어갈 때 꼭 거쳐가는 공유기와 비슷하다고 생각해보면 될 것 같다.
CPU 인터럽트 발생(성능) 관점으로 보기
유니케스트는 NIC가 Mac 확인하고 아니면 버림 (CPU 인터럽트 발생 안함) 맞으면 NIC가 CPU 인터럽트 발생
==(AI 피셜, 나중에 보강하기) DNS 부분 프로토콜 설명하는거 아닌거 같은데==
- ARP (Address Resolution(해석) Protocol)
- 네트워크 계층 주소 (예: IPv4 주소)를 물리적 하드웨어 주소 (예: MAC 주소)로 매핑하는 데 사용되는 프로토콜
- ICMP (Internet Control(제어) Message Protocol)
- 주로 진단 및 오류 보고 기능에 사용되는 프로토콜
- 네트워크 연결 테스트(Ping), 라우터 탐색 등에 사용
- IGMP (Internet Group Management Protocol)
- 멀티캐스트 그룹 멤버 설정을 위한 프로토콜
- TCP (Transmission Control Protocol)
- 연결 지향적 프로토콜로 신뢰성 있는 데이터 전송을 보장
- 흐름 제어, 혼잡 제어, 순서 보장 등의 기능
- UDP (User Datagram Protocol)
- 비연결 지향적 프로토콜로 신뢰성은 보장하지 않음
- 실시간 데이터 전송에 적합 (스트리밍, VoIP 등)
- HTTP (Hypertext Transfer Protocol)
- 웹 브라우저와 웹 서버 간 데이터 통신을 위한 프로토콜
- 기본 포트: 80
- TLS (Transport Layer Security) / SSL (Secure Sockets Layer)
- 네트워크 상에서 안전한 통신을 위한 암호화 프로토콜
- 기본 포트: 443
- SSH (Secure Shell)
- 네트워크 서비스에 안전하게 원격 접속할 수 있는 프로토콜
- 강력한 인증과 암호화를 지원
- 기본 포트: 22
- TELNET
- 원격 컴퓨터에 텍스트 기반으로 접속할 수 있는 프로토콜 (보안에 취약)
- 기본 포트: 23
- DNS (Domain Name System)
- 도메인 이름과 IP 주소를 상호 매핑해주는 분산 네이밍 시스템
- 기본 포트: 53
- DHCP(Dynamic Host Configuration Protocol)
- 네트워크에서 호스트에게 IP 주소, 서브넷 마스크, 기본 게이트웨이 등 네트워크 구성 정보를 동적으로 할당하는 프로토콜입니다.
- 기본적으로 UDP(User Datagram Protocol)를 사용하며, 클라이언트가 네트워크에 연결될 때 DHCP 서버로부터 이러한 정보를 받아와 네트워크 설정을 자동화합니다.
- 기본 포트: 67(서버), 68(클라이언트)