상세 컨텐츠

본문 제목

네트워크 모델 | (1) OSI 모델, TCP/IP 모델 개요

Computer Science/네트워크 (Network)

by hyuga_ 2023. 11. 18. 13:31

본문

네트워크의 대표적인 구조적 특징을 알아봤으니, 이번에는 이 구조 위에서 어떤 방식으로 네트워크 서비스가 동작하는지를 알아볼 차례!!

 

 


네트워크 모델

네트워크 모델은 네트워크 통신의 기본 원리와 구조를 설명하는 이론적인 프레임워크이다.

가장 널리 알려진 두 가지 모델은 OSI(Open Systems Interconnection) 7계층 모델과 TCP/IP 4계층 모델이다.

 

왜 사람들은 이 두 가지 모델을 통해 네트워크 공부를 시작할까?

  1. 계층적 구조: 이 모델들은 네트워크 기능을 독립적인 기능을 수행하는 각각의 계층으로 나누어 설명한다. 이는 복잡한 네트워크 시스템을 더 쉽게 이해할 수 있게 해준다. 또한 네트워크 문제를 진단하고 해결하는 데 있어서 계층적 접근 방식은 매우 유용하다. 어플리케이션부터 시작해서 점점 아래 계층으로 내려가면서, 정확히 어느 부분에 문제가 생겼는지를 진단할 수 있다. 
  2. 프로토콜의 역할 이해: 각 계층에는 특정한 프로토콜들이 할당되어 있다. 모델을 이해함으로써, 각 프로토콜이 네트워크 내에서 어떤 역할을 하는지, 어떻게 서로 상호작용하는지를 더 잘 파악할 수 있다.

 

Q. '왜 계층적 구조가 좋을까?'에 대한 하나의 답변

프로그래밍 세계에는 다음과 같은 진리(?)가 있다고 한다: "문제를 보완하려면, 계층을 추가하는게 가장 쉽고 수월하다."
즉, 복잡한 아랫단을 수정하기보다는 위에 필요한 걸 덧씌우라는 거다.
하위 layer를 계속 바꾸면 더 크고 본질적이지만, 수정하기엔 복잡한 문제를 마주할 수 있기 때문이기도 하다..

계층형 구조의 장점이 있다. 

각 계층은 자기가 제공할 기능만 생각하면 된다는 것. (functionality)
그리고 각 계층에서는 자신이 속한 바로 아래 계층만 컨트롤할 수 있으면 된다.
그보다 더 깊은 곳은 아래 계층에서 해결했겠지~
-> 이게 우리가 흔히 접하는 interface 개념이다. 

 

 

Q. OSI 모델 vs TCP/IP 모델?

OSI 모델은 '네트워크를 설계할 때 다음 구조를 참고하세요~' 라는 의미에서 만든 이론적 개념이고, 
TCP/IP 모델은 인터넷(인터넷은 수많은 네트워크 중 하나일 뿐!)을 쌓아올리는 과정에서 점차 정립된 실용적인 개념!

그러므로 OSI 모델은 네트워크의 A to Z를 포괄하는 이론적 토대를 제공하지만, 실제 인터넷 환경에서 해당 계층구조가 정확히 적용되지 않을 수 있다. 

우리는 네트워크 기능을 인터넷 환경 위에서 구현(또는 활용)하는 사람들이다. 때문에 실용적인 지식 위주로 인터넷 환경에서의 네트워크 통신을 이해하고 싶다면, 먼저 TCP/IP 모델로 공부하는 것이 더 적절하다고 생각한다.

왜 우리가 네트워크 자체가 아니라 네트워크 중 하나인 인터넷에 집중을 해야하냐면 ?? -> 보통 사람들은 '네트워크 == 인터넷'이라고 착각할 정도로 인터넷이 표준이 되었으니까 ! 거의 모든게 인터넷 위에 있고, 우리는 인터넷 위에서 생활하고있다고 해도 과언이 아니다.

 


OSI 7계층 모델 개요

이 모델은 국제 표준화 기구에 의해 개발되었으며, 네트워크 통신 과정을 7개의 계층으로 나눈다.

각 계층은 특정한 네트워크 기능을 담당하며, 하위 계층으로 갈수록 하드웨어, 상위 계층으로 갈수록 소프트웨어로 구현된다.

하위 계층에서의 결과는 상위 계층으로 전달된다. 그리고 상위 계층은 하위 계층의 기능에 의존한다. 

 

https://community.fs.com/article/tcpip-vs-osi-whats-the-difference-between-the-two-models.html

계층 기능, 특징
7. 응용 계층
(Application Layer)
- 최종 유저와 직접적인 상호작용을 담당한다.
- 네트워크 서비스(웹 브라우징, 이메일, 파일 전송 등)를 사용자에게 제공한다.
HTTPFTP, SMTP 등의 프로토콜이 포함된다.
6. 표현 계층
(Presentation Layer)
- 데이터 형식, 암호화, 압축을 관리한다.
- 데이터를 응용 계층과 전송 계층 사이에서 번역한다.
- 데이터 표현 형식 변환, 문자 인코딩 등을 처리한다.
5. 세션 계층
(Session Layer)
- 데이터 교환의 세션 관리를 담당한다.
- 세션 설정, 유지, 종료 및 데이터 교환을 관리한다.
- 대화 제어 및 동기화 기능을 제공한다.
4. 전송 계층
(Transport Layer)
- 노드 간(end-to-end) 신뢰성 있는 데이터 전송을 관리한다.
- TCP  UDP 프로토콜을 사용하여 포트 번호를 통한 통신을 제어한다.
- 세그멘테이션, 오류 검사, 흐름 제어 등을 수행한다.
3. 네트워크 계층
(Network Layer)
- 다른 네트워크 간의 데이터 전송과 라우팅을 담당한다.
- IP 주소를 사용하고, 라우팅 프로토콜로 최적 경로를 결정한다.
- IP, ICMP 등의 프로토콜이 포함된다.
2. 데이터 링크 계층
(Data Link Layer)
- 물리 계층에서 받은 데이터를 프레임으로 구성하고 MAC 주소를 사용한다.
- 오류 검출, 재전송 및 흐름 제어를 수행한다.
- 이더넷, PPP(Point-to-Point Protocol), ARP 등이 포함된다.
1. 물리 계층
(Physical Layer)
- 네트워크 하드웨어 전송 기술과 전송 매체를 관리한다.
- 데이터를 전기 신호로 변환하고, 케이블, 광섬유 등을 통해 전송한다.
- 비트 단위의 데이터 전송을 담당한다.

 

[계층별 간략 해설]

 

L7. Application 계층에서는 HTTP(웹), FTP(파일 전송) 등 프로그램 목적에 맞는 프로토콜을 어떻게 정하고 보낼 것인가가 주 관심사이다. 그 밑에서 이게 어떻게 전송되고.. 하는 건 아래 계층에서 맡을 일이다. 

 

L6. Presentation 계층에서는 애플리케이션 간 통신에서 메시지 포맷을 관리한다. 인코딩 <-> 디코딩, 암호화 <-> 복호화, 압축 <-> 압축 풀기

 

L5. Session 계층에서는 애플리케이션 간의 통신에서 세션을 관리한다. RPC (Remote Procedure call)이 그 예이다. 

 

----------- 여기까지가 User Layer ------------

 

L4. Transport 계층에서는 애플리케이션 간의 통신 방식을 담당한다. 목적지 애플리케이션으로 어떤 방식으로 데이터를 전송하느냐가 주 관심사이고, 이때 안정적이고 신뢰할 수 있도록 보내는 것에 주로 관심을 갖는 프로토콜이 TCP, 필수 기능만 제공하나 커스터마이징이 용이한 프로토콜이 UDP이다. 

 

L3. Network 계층에서는 목적지 호스트로의 데이터 전송 경로를 담당한다. 여기서 목적지가 어디인가는 IP 주소로 표시하고(IP 프로토콜), 네트워크 간 최적의 경로를 어떻게 찾아갈 것인가 등이 주 관심사이다. 목적지까지의 경로 중간중간에 있는 라우터가 네트워크 계층의 기능을 담당한다. 

 

----------- 여기까지가 Kernel Layer ------------

 

L2. Data Link 계층에서는 직접 연결된 노드 간의 통신을 담당한다. 여기부터는 하드웨어의 영역이다. 장치와 장치 간에는 IP 주소가 아니라 MAC 주소로 서로를 찾아간다. 이때, 위에서 받은 주소는 IP 주소이기 때문에 IP 주소를 MAC 주소로 변환해야 한다. 이때 사용하는 프로토콜이 ARP 프로토콜이다. 반대로 MAC -> IP로 돌리는 건 RARP 프로토콜이라고 한다. 

 

L1. Physical 계층에서는 실제로 bits 단위로 데이터를 전송하는 것을 담당한다. 이때 전송되는 매체는 케이블, 광섬유 케이블 등이 있다. 참고로 Wifi 등 무선으로 데이터를 보내는 것도 여기에 속하는 기술이다. 

 

----------- 여기까지가 Hardware Layer ------------

 

 

https://www.youtube.com/watch?v=6l7xP7AnB64

 

여기서 포장하는 과정을 encapsulation, 포장을 푸는 과정을 decapsulation이라고 표현한다. 

위 이미지를 캡쳐해온 유튜브 영상이 있는데, 15:21 부터 설명해주는 네트워크 통신 예제가 과정을 이해하기에 큰 도움이 되는 것 같다. 

개념이 확실히 잡힐 때까지 반복적으로 보자! 

 


TCP/IP 4계층 모델 개요

이 모델은 초기 인터넷 개발 과정에서 실용적인 목적으로 개발되었으며, 인터넷의 실제 동작 방식을 반영한다. 

인터넷 통신 과정을 네트워크 접근, 인터넷, 전송, 응용의 네 계층으로 나눈다.

 

더 정확하게 표현하자면, 인터넷 프로토콜의 모음, 즉 인터넷 프로토콜 스위트(Internet Protocol Suite)라고 표현하는 것이 적절하다. 그러나 그중 TCPIP 프로토콜이 가장 많이 쓰이기 때문에 TCP/IP로 해당 모델의 대명사로서 이름 붙여지게 되었다고 한다. 

 

TCP/IP 모델은 인터넷에 쓰이는 프로토콜들을 기술한다. TCP/IP 모델은 인터넷 계층을 갖추고 있는데 이 계층은 링크 계층 위에 위치한다.

수많은 서적과 기타 이차 문헌에서 TCP/IP 인터넷 계층은 OSI 네트워크 계층과 동일하게 취급한다. 그러나 이러한 비교는 잘못된 것으로서, 이러한 계층들에 위치하는, 프로토콜에서 허용되는 특징들(연결 지향인지, 연결 비지향인지)이 두 모델에서 다르게 나타난다. TCP/IP 인터넷 계층은 사실 네트워크 계층 기능의 하부 집합일 뿐이다. 이는 네트워크 구조의 일종인 인터넷만을 기술한다.

(위키피디아)

 

 

계층 기능, 특징
L7. 응용 계층
(Application Layer)
- 최종 유저에게 서비스를 제공하는 인터페이스 역할을 한다.
HTTPFTP, SMTP 등과 같은 고수준의 프로토콜이 포함된다.
- 사용자의 데이터를 전송 계층으로 전달하고, 거꾸로 수신 데이터를 사용자에게 전달한다.
L4. 전송 계층
(Transport Layer)
- 두 장치 간의 신뢰성 있는 데이터 전송을 관리한다.
TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)를 포함한다.
- TCP는 연결 지향적이고 신뢰성 있는 통신을, UDP는 빠른 속도를 제공한다.
L3. 인터넷 계층
(Internet Layer)
- IP 주소를 사용하여 패킷의 라우팅 및 전달을 관리한다.
IP(Internet Protocol), ICMP(Internet Control Message Protocol) 등이 포함된다.
- 라우팅 프로토콜을 통해 최적의 경로를 결정한다.
L2. 네트워크 접근 계층
(Network Access Layer)
- 물리적 주소와 네트워크 토폴로지를 관리한다.
- 데이터 링크 계층의 기능을 수행하며, 물리적 매체로 데이터를 전송한다.
- 이더넷, Wi-Fi 등의 기술이 여기에 해당한다.

 

 

 

 


각종 위키 스크랩
IT 위키 

나무위키
위키피디아의 OSI 7계층 설명 스크랩

더보기

1. 물리 계층(Physical layer)은 네트워크의 기본 네트워크 하드웨어 전송 기술을 이룬다.

 

네트워크의 높은 수준의 기능의 논리 데이터 구조를 기초로 하는 필수 계층이다. 다양한 특징의 하드웨어 기술이 접목되어 있기에 OSI 아키텍처에서 가장 복잡한 계층으로 간주된다.

 

2. 데이터 링크 계층(Data link layer)은 포인트 투 포인트(Point to Point) 간 신뢰성있는 전송을 보장하기 위한 계층으로 CRC 기반의 오류 제어와 흐름 제어가 필요하다.

 

네트워크 위의 개체들 간 데이터를 전달하고, 물리 계층에서 발생할 수 있는 오류를 찾아 내고, 수정하는 데 필요한 기능적, 절차적 수단을 제공한다. 주소 값은 물리적으로 할당 받는데, 이는 네트워크 카드가 만들어질 때부터 맥 주소(MAC address)가 정해져 있다는 뜻이다.

 

주소 체계는 계층이 없는 단일 구조이다. 데이터 링크 계층의 가장 잘 알려진 예는 이더넷이다. 이 외에도 HDLC나 ADCCP 같은 포인트 투 포인트(point-to-point) 프로토콜이나 패킷 스위칭 네트워크나 LLC, ALOHA 같은 근거리 네트워크용 프로토콜이 있다. 네트워크 브릿지나 스위치 등이 이 계층에서 동작하며, 직접 이어진 곳에만 연결할 수 있다.

 

3. 전송 계층(Transport layer)은 양 끝단(End to end)의 사용자들이 신뢰성있는 데이터를 주고 받을 수 있도록 해 주어, 상위 계층들이 데이터 전달의 유효성이나 효율성을 생각하지 않도록 해준다.

 

시퀀스 넘버 기반의 오류 제어 방식을 사용한다. 전송 계층은 특정 연결의 유효성을 제어하고, 일부 프로토콜은 상태 개념이 있고(stateful), 연결 기반(connection oriented)이다. 이는 전송 계층이 패킷들의 전송이 유효한지 확인하고 전송 실패한 패킷들을 다시 전송한다는 것을 뜻한다. 가장 잘 알려진 전송 계층의 예는 TCP이다.

 

종단간(end-to-end) 통신을 다루는 최하위 계층으로 종단간 신뢰성 있고 효율적인 데이터를 전송하며, 기능은 오류검출 및 복구와 흐름제어, 중복검사 등을 수행한다.

  • 패킷 생성(Assembly/Sequencing/Deassembly/Error detection/Request repeat/Flow control)

 

4. 네트워크 계층(Network layer)은 여러개의 노드를 거칠때마다 경로를 찾아주는 역할을 하는 계층으로 다양한 길이의 데이터를 네트워크들을 통해 전달하고, 그 과정에서 전송 계층이 요구하는 서비스 품질(QoS)을 제공하기 위한 기능적, 절차적 수단을 제공한다.

 

네트워크 계층은 라우팅, 흐름 제어, 세그멘테이션(segmentation/desegmentation), 오류 제어, 인터네트워킹(Internetworking) 등을 수행한다. 라우터가 이 계층에서 동작하고 이 계층에서 동작하는 스위치도 있다. 데이터를 연결하는 다른 네트워크를 통해 전달함으로써 인터넷이 가능하게 만드는 계층이다. 논리적인 주소 구조(IP), 곧 네트워크 관리자가 직접 주소를 할당하는 구조를 가지며, 계층적(hierarchical)이다.

 

서브네트의 최상위 계층으로 경로를 설정하고, 청구 정보를 관리한다. 개방형 시스템들의 사이에서 네트워크 연결을 설정, 유지, 해제하는 기능을 부여하고, 전송 계층 사이에 네트워크 서비스 데이터 유닛(NSDU : Network Service Data Unit)을 교환하는 기능을 제공한다.

 

5. 세션 계층(Session layer)은 양 끝단의 응용 프로세스가 통신을 관리하기 위한 방법을 제공한다.

 

동시 송수신 방식(duplex), 반이중 방식(half-duplex), 전이중 방식(Full Duplex)의 통신과 함께, 체크 포인팅과 유휴, 종료, 다시 시작 과정 등을 수행한다. 이 계층은 TCP/IP 세션을 만들고 없애는 책임을 진다.

 

통신하는 사용자들을 동기화하고 오류복구 명령들을 일괄적으로 다룬다.

  • 통신을 하기 위한 세션을 확립/유지/중단 (운영체제가 해줌)

 

6. 표현 계층(Presentation layer)은 코드 간의 번역을 담당하여 사용자 시스템에서 데이터의 형식상 차이를 다루는 부담을 응용 계층으로부터 덜어 준다.

 

MIME 인코딩이나 암호화 등의 동작이 이 계층에서 이루어진다. 예를 들면, EBCDIC로 인코딩된 문서 파일을 ASCII로 인코딩된 파일로 바꿔 주는 것이 표현 계층의 몫이다.

  • 사용자의 명령어를 완성 및 결과 표현.
  • 포장/압축/암호화

 

7. 응용 계층(Application layer)은 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행한다.

 

일반적인 응용 서비스는 관련된 응용 프로세스들 사이의 전환을 제공한다. 응용 서비스의 예로, 가상 터미널(예를 들어, 텔넷), "Job transfer and Manipulation protocol" (JTM, 표준 ISO/IEC 8832) 등이 있다.

  • 네트워크 소프트웨어 UI 부분
  • 사용자의 입출력(I/O)부분

 

 

 

 

 

관련글 더보기