OSI 7 Layer
OSI(Open Systems Interconnection) 모델은 네트워크 아키텍처를 설명하기 위한 일반적인 프레임워크로, 데이터 통신 시스템의 다른 요소 간의 상호 작용을 설명하기 위해 일곱 개의 계층으로 구성된다.
또한 7단계로 나눔으로써 특정한 계층에 이상이 생기면 다른 계층의 장비 및 소프트웨어를 건드리지 않고도 이상이 생긴 단계만 고칠 수 있다는 장점도 가지고 있다.
1. 물리 계층(Physical Layer)
이 계층에서는 주로 전기적, 기계적, 기능적인 특성을 이용해서 통신 케이블로 데이터를 전송하게 된다.
이 계층에서 사용되는 통신 단위는 비트이며 이것은 1과 0으로 나타내어지는, 즉 전기적으로 신호가 흐르는지 아닌지로 생각할 수 있다.
이 계층에서는 단지 데이터만을 전달할 뿐 전송하거나 전송받는 데이터가 무엇인지, 어떤 에러가 있는지는 전혀 신경 쓰지 않는다.
이 계층에 속하는 대표적인 장비는 통신 케이블, 리피터, 허브 등이 있다.
-> 케이블, 리피터, 허브를 통해 데이터 전송
2. 데이터 링크 계층(Data Link Layer)
물리 계층을 통해 송수신되는 정보의 오류와 흐름을 관리하여 안전한 정보의 전달을 수행할 수 있도록 도와주는 역할을 한다.
포인트 투 포인트(Point to Point) 간 신뢰성 있는 전송을 보장하기 위한 계층으로 CRC 기반의 오류 제어와 흐름 제어가 진행된다. 따라서 통신에서의 오류도 찾아주고 재전송도 하는 기능을 가지고 있는 것이다.
맥 주소를 가지고 통신한다.
이 계층에서 전송되는 단위를 프레임이라고 하고, 대표적인 장비로는 브릿지, 스위치 등이 있다.
-> 브릿지나 스위치를 통해 MAC 주소를 가지고 물리 계층에서 받은 정보를 전달
3. 네트워크 계층(Network Layer)
데이터를 목적지까지 가장 안전하고 빠르게 전달하는 라우팅 기능을 제공한다.
패킷을 전달할 경로를 선택하고 IP 주소를 부여하고, 선택한 경로를 따라 패킷을 전달해 주는 것이 이 계층의 역할이다.
라우팅 기능뿐만 아니라 흐름 제어, 세그멘테이션(segmentation/desegmentation), 오류 제어, 인터네트워킹(Internetworking) 등을 수행한다.
이 계층에서 전송되는 단위를 패킷이라고 하고, 대표적인 장비로는 라우터가 있으며, 이 계층에서 동작하는 스위치도 존재한다.
-> 주소부여(IP), 경로설정(Route)
4. 전송 계층(Transport Layer)
데이터를 신뢰성 있게 전송하고, 연결 설정, 데이터 분할, 오류 제어, 재전송 등을 처리한다.
종단 간 통신을 다루는 최하위 계층으로 신뢰성 있고 효율적인 데이터를 전송하며 오류검출 및 복구와 흐름제어, 중복검사 등을 수행한다.
양 끝단(End to end)의 사용자들이 신뢰성 있는 데이터를 주고받을 수 있도록 해 주어, 상위 계층들이 데이터 전달의 유효성이나 효율성을 생각하지 않도록 해준다.
시퀀스 넘버 기반의 오류 제어 방식을 사용한다.
일부 프로토콜은 연결 지향(connection-oriented)인데 이는 패킷들의 전송이 유효한지 확인하고 전송 실패한 패킷들을 재전송한다는 것을 뜻한다.
이 계층에서 전송되는 단위를 세그먼트(헤더 + 패킷)이라고 하고, 대표적인 장비로는 로드 밸런서와 방화벽이 있다.
-> 패킷 생성 및 전송
5. 세션 계층(Session Layer)
세션 계층은 데이터 전송을 위한 연결을 생성하고, 데이터 전송이 완료된 후 연결을 종료하는 프로토콜을 제공한다.
또한 세션 계층은 데이터 전송 중에 오류가 발생한 경우 재전송을 수행하며, 동기화(Synchronization)와 체크포인트(Checkpoint) 등의 기능도 수행한다.
세션 계층은 일반적으로 응용 프로그램에서 구현된다.
-> 통신을 하기 위한 세션을 확립/유지/중단
-> 통신하는 사용자들을 동기화하고 오류복구 명령들을 일괄적으로 다룸
6. 표현 계층(Presentation Layer)
응용 프로그램이나 사용자 인터페이스와 네트워크 간에 데이터 형식을 정의하고 변환하는 데 사용된다.
예를 들어 텍스트, 이미지, 오디오, 비디오 등의 데이터 형식을 정의하고, 데이터의 암호화/복호화, 압축/해제 등의 변환 작업을 수행한다.
표현 계층에서 정의된 데이터 형식은 상위 계층인 응용 계층(Application Layer)에서 사용되며, 이를 통해 다양한 종류의 데이터를 전송할 수 있다.
프레젠테이션 계층에서 사용되는 대표적인 프로토콜로는 SSL(Secure Sockets Layer)이 있다.
SSL은 웹에서 보안 연결을 제공하는 데 사용되며, 프레젠테이션 계층에서 데이터를 암호화하고 복호화하는 데 사용된다.
-> 사용자의 명령을 완성 및 결과를 표현, 포장/압축/암호화
7. 응용 계층(Application Layer)
응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행한다.
즉, 사용자와 직접 상호작용하는 응용 프로그램과 네트워크 간의 통신을 담당한다.
애플리케이션 계층에서는 사용자 인터페이스, 메일 프로그램, 파일 전송 프로그램 등 다양한 응용 프로그램이 동작하며, 이들이 데이터를 생성하고 네트워크로 전송합니다
응용 서비스의 예로, 가상 터미널(ex. 텔넷), Job transfer and Manipulation protocol (JTM, 표준 ISO/IEC 8832) 등이 있다.
-> 네트워크 소프트웨어 UI 부분, 사용자의 입출력(I/O) 부분
TCP/IP Layer
TCP/IP 모델은 OSI 모델보다 간단하고 유연하며, 인터넷의 기반이 되는 프로토콜로 널리 사용된다.
TCP/IP 모델은 OSI 모델과 비슷한 역할을 하지만, 4개의 계층으로 구성된다.
1. 네트워크 엑세스 계층(Network Access Layer)
OSI 모델의 물리 계층과 데이터 링크 계층을 결합한 계층이다.
데이터를 물리적인 매체로 전송하기 위한 표준과 규칙을 제공한다.
2. 인터넷 계층(Internet Layer)
OSI 모델의 네트워크 계층에 해당한다.
IP 프로토콜을 사용하여 데이터를 패킷 단위로 전송하며, 라우팅과 경로 선택 등의 기능을 담당한다.
3. 전송 계층(Transport Layer)
OSI 모델의 전송 계층과 같은 역할을 한다.
TCP 프로토콜과 UDP 프로토콜을 사용하여 데이터를 전송하며, 데이터의 신뢰성을 보장하고 오류를 검출하고 수정한다.
4. 응용 계층(Application Layer)
OSI 모델의 세션, 표현, 응용 계층을 결합한 계층이다.
HTTP, FTP, SMTP 등과 같은 응용 프로토콜을 사용하여 데이터를 교환하며, 사용자와 직접 상호작용하는 부분이다.
OSI 7 Layer vs TCP/IP Layer
OSI (Open Systems Interconnection) 모델과 TCP/IP 모델은 모두 네트워크 아키텍처를 설명하기 위한 모델로 네트워크 아키텍처를 이해하는데 도움이 되는 모델이다.
그러나 현재 대부분의 인터넷에서는 TCP/IP 모델이 사용되고 있으며, OSI 모델은 이론적인 차원에서만 사용된다.
1. 계층 구조 : OSI 모델은 7개의 계층으로 구성되어 있으며, TCP/IP 모델은 4개의 계층으로 구성되어 있다.
OSI 모델은 계층 구조를 상세하게 분리하여 각 계층이 서로 분리되어 독립적으로 동작하도록 설계되었으며, TCP/IP 모델은 OSI 모델보다 간결하게 설계되었다.
2. 프로토콜 : OSI 모델은 프로토콜은 각 계층에서 구현되는 것을 명확히 지정했다. 하지만 TCP/IP 모델은 대부분의 기능을 TCP/IP 프로토콜로 구현한다.
3. 사용 목적 : OSI 모델은 업계 표준으로서 설계되었지만 TCP/IP 모델은 인터넷에서 발전되었으며, 현재는 대부분의 네트워크에서 사용된다.
4. 일치성 : OSI 모델은 이론적인 모델일 뿐 아니라, 실제 구현에서는 일관성이 부족하다. 반면, TCP/IP 모델은 실제 인터넷 프로토콜에서 사용되는 일관성 있는 구조를 제공한다.
TCP vs UDP
1. TCP
TCP(Transmission Control Protocol)는 인터넷 프로토콜 스택의 전송 계층에서 사용되는 신뢰성 있는 프로토콜이다.
TCP는 데이터를 전송하기 전에 연결을 설정하고, 데이터를 전송한 후에는 연결을 끊는다.
이러한 연결 기반의 특성으로 인해, TCP는 신뢰성 있는 데이터 전송을 보장한다.
TCP는 오류 검출 및 재전송을 통해 신뢰성을 보장한다.
데이터 전송 중에 데이터의 일부가 손실되거나 손상되었을 때, TCP는 이를 검출하고, 재전송을 통해 누락된 데이터를 복원한다.
이러한 과정에서, TCP는 패킷에 일련번호를 부여하고, 수신 측에서도 일련번호를 확인하여 데이터의 손실 여부를 판단한다.
또한 TCP는 흐름 제어와 혼잡 제어 기능을 가지고 있다.
흐름 제어는 데이터 송신 측과 수신 측 간의 데이터 처리 속도 차이를 조절하여 데이터 전송의 효율성을 높인다.
혼잡 제어는 네트워크 상황에 따라 데이터 전송량을 제어하여 네트워크 혼잡을 방지한다.
TCP는 HTTP, FTP, Telnet, SSH 등 다양한 애플리케이션에서 사용되며, 인터넷에서 가장 널리 사용되는 프로토콜 중 하나다.
2. UDP
UDP(User Datagram Protocol)는 인터넷 프로토콜 스택의 전송 계층(L3)에서 사용되는 비신뢰성 프로토콜이다.
UDP는 연결 설정 및 연결 해제 과정이 없으며, 데이터 전송에 대한 신뢰성을 보장하지 않는다.
UDP는 간단하고 빠른 데이터 전송을 제공한다.
TCP와는 달리, 데이터 전송 중에 오류가 발생하면 재전송하지 않는다.
이러한 이유로 UDP는 오버헤드가 적고 전송 지연이 적은 데이터 전송에 적합하다.
UDP는 DNS(Domain Name System), VoIP(Voice over Internet Protocol), 게임 등 다양한 애플리케이션에서 사용된다.
3. TCP vs UDP
TCP | UDP | |
신뢰성 | O -> 데이터 전송시 오류를 검출하고 재전송하여 데이터 손실을 방지 |
X -> 전송 도중에 오류가 발생하면 오류 검출만 하고 재전송을 하지 않음 |
연결 방식 | 연결 지향 프로토콜 ->전송 전에 연결을 설정하고, 전송이 끝나면 연결을 끊음 |
비연결성 프로토콜 -> 전송 시 연결을 설정하지 않고 전송 |
속도 | 상대적으로 느림 -> 데이터를 보내기 위한 추가적인 절차가 있어서 |
상대적으로 빠름 |
대역폭 | 대역폭을 많이 사용 -> 신뢰성 있는 전송을 위해 불필요한 데이터 전송 및 재전송을 하기 때문 |
대역폭을 적게 사용 |
일반적으로, TCP는 데이터 전송의 정확성이나 신뢰성을 요구하는 애플리케이션에 사용된다.
ex) 웹 브라우저, 이메일 클라이언트, 파일 전송 등
반면 UDP는 실시간 데이터 전송에 사용되며, 오류 검출 및 데이터 무결성에 대한 처리가 필요하지 않은 애플리케이션에 사용된다.
ex) 온라인 게임, 음성 통화, 동영상 스트리밍 등
출처
'개발 > CS' 카테고리의 다른 글
(CS) HTTP Request/Response/Method, CORS, 서브넷 (0) | 2023.05.27 |
---|---|
(CS) HTTP, HTTPS, TCP (0) | 2023.05.19 |
(CS) 네트워크 기본 용어 정리 (0) | 2023.05.04 |
(CS) 단일 연결 리스트 vs 원형 연결 리스트, Stack으로 Queue 구현, 원형 큐 구현 (0) | 2023.04.26 |
(CS) ArrayList, LinkedList, Stack, Queue, Deque (0) | 2023.04.05 |