Coding Memo

OSI, TCP/IP 본문

etc

OSI, TCP/IP

minttea25 2023. 6. 4. 17:49

OSI

 

OSI는 Open System Interconnection으로 통신 시스템의 기능들을 7개의 계층(layer)로 표준화하는 개념적인 프레임워크이다. 1970년대 말, 1980년대 초에 ISO에서 서로 다른 컴퓨터 시스템과 네트워크 장치 간의 상호작용을 위해 개발되었다.

 

OSI의 7개 계층은 아래와 같다.

7 Layers of OSI model

이게 가장 초기의 표준이긴 하지만 활용성은 그리 좋지 않았다. 따라서 OSI 모델을 전부 가져오지는 않았지만 일부를 가져와 사용하는 TCP/IP 모델이 있다.


TCP/IP

Transmission Control Protocol / Internet Protocol로, 현대 인터넷 기반을 형성하는 가장 실용적인 네트워크 프로토콜 프레임워크이다. 현재 가장 많이 사용되고 있으며, 사실상 TCP/IP가 표준이라고 봐도 무방할 정도이다.

OSI 모델과 유사하고 비슷한 개념을 가지고 있으며 4개의 계층으로 보통 이루어져 있다.

The correlation of OSI and TCP/IP model

두 엔드 포인트 간 통신은 아래와 같이 이루어진다.

 

각 계층은 어떤 역할을 하는지 간단하게 살펴보자.


Application Layer

 

Application Layer는 엔드 유저 (사용자)에 가장 가까운 계층으로 사용자와 어플리케이션에 직접적인 네트워크 서비스를 제공하는 역할을 하고 있다.

OSI 모델에서의 Application Layer, Presentation Layer, Session Layer에 해당한다.

다음과 같은 프로토콜들이 있다.

HTTP (Hyper Text Transfer Protocol) WWW에서 웹 브라우저와 웹서버 (=> 웹브라우징)에 사용
FTP (File Transfer Protocol) 클라이언트와 서버 간에 파일 전송 시 사용 
SMTP (Simple Mail Transfer Protocol) 이메일 메시지 전송 및 라우팅 시 사용
POP (Post Office Protocol), 
IMAP (Internet Message Access Protocol)
이메일 클라이언트가 메일 서버에서 이메일 메시지를 검색, 액세스, 관리 및 구성 시 사용
DNS (Domain Name System) 도메인 이름을 IP주소를 변환
DHCP (Dynamic Host Configuration Protocol) 네트워크 장치에 IP 주소 및 구성 매개변수를 자동으로 할당
SNMP (Simple Network Management Protocol) 중앙 네트워크 관리 시스템에서 장치를 모니터링, 제어 및 관리 가능

 

 

Transport Layer

 

Transport Layer는 서로 다른 호스트에서 실행되는 어플리케이션 간의 통신 및 데이터 전송 서비스 처리 및 제공의 역할을 하고 OSI 모델에서 Transport Layer 의 기능을 한다.

소켓 프로그래밍을 할 때 직접적을 건들게 되는 레이어가 바로 이 레이어이다. 포트 번호와 프로토콜을 지정하여 어플리케이션 간 통신을 설정한다.

위 과정에서 데이터 분할 (Segmenation), 오류 감지(Error Detecting), 흐름제어 (Flow Control), 다중화/역다중화(Multiplexing/Demultiplexing)가 일어난다.

다음과 같은 프로토콜이 있다.

TCP (Transmission Control Protocol)
Reliable, Connection-oriented, Error Detection, Flow Control, Congestion Control
UDP (User Datagram Protocol) Connectionless, Simple and Fast (Low latency), Unreliable, Less Overhead
SCTP (Stream Control Transmission Protocol) Safe Transmission
ICMP (Internet Control Message Protocol) 진단 및 오류 보고

TCP는 연결 기반의 프로토콜로, 반드시 사용자간에 연결이 형성이 되어 있어야 한다. 또한 오류를 체크하고 혼잡 제어, 흐름 제어가 일어나므로 UDP에 비해 속도가 느리지만, 신뢰성이 매우 크다.

=> MMORPG, 웹 등의 신뢰성이 중요한 프로그램에 사용

 

UDP는 연결을 설정할 필요 없이 Datagram (packet)을 보내기 위한 단순하고 가벼운 메커니즘을 사용하는 프로토콜이다. 따라서 TCP에 비해 최소한의 오버헤드 밖에 없어 빠르고 효율적이지만, 패킷이 순서 없이 도착하거나 재전송 없이 손실되는 등이 일어날 수 있어 신뢰성이 낮다.

=> 오디오/비디오 스트리밍이나 빠른 반응성이 중요한 게임 등의 실시간 통신이나 속도가 중요한 프로그램에 사용 

 

NOTE: TCP가 신뢰성이 높긴하지만, 혼잡 제어와 흐름 제어로 인해 데이터를 만드는데 필요한 패킷들이 한번에 도착하지 않을 수 있다.

 

 

Internet Layer

 

OSI 모델에서 Network Layer 의 기능을하고 논리 주소(IP 주소)를 네트워크에 연결된 장치에 할당하는 역할을 한다.

이 외에도 패킷 라우팅과 단편화 및 재조립을 수행한다.

 

패킷 라우팅: 서로 다른 네트워크에서 데이터 source와 엔드 유저 사이의 패킷 처리

단편화 및 재조립 (Fragmentation and Reassembly): 링크가 한번에 보낼 수 있는 데이터 유닛의 최대 크기(MTU, Maximum Transfer Unit)이 있기 때문에 데이터 패킷을 IP 데이터 그램을 나누고 재조립

패킷의 무한 순환 방지: TTL(Time-to-Live, IP 데이터 그램에서 폐기되기 전에 통과할 수 있는 최대 네트워크 홉 수)를 감소 시켜 무한 순환 방지

오류 처리: IP 패킷 전송 오류 감지 및 처리

 

다음과 같은 프로토콜이 있다.

IPv4 Internet Protocol version 4, 32bit 크기의 논리 주소
IPv6 Internet Protocol version 6, IPv4 주소의 고갈 우려로 인해 128bit 크기의 논리 주소를 가진 프로토콜이 새로 나옴
ICMP Internet Control Message Protocol, 진단 및 오류 보고 목적으로 사용

 

 

Network Interface Layer

 

OSI 모델에서의 Data Link Layer와 Physical Layer의 역할을 하며, 물리적 매체(구리 케이블, 광섬유, 무선 신호 등)를 통한 데이터 패킷 전송을 처리한다.

"물리적"인 전송을 담당하고 동일한 네트워크 내에서 네트워크 장치 간의 통신 수단을 제공한다.

다음과 같은 프로토콜이 있다.

Ethernet 이더넷, 이더넷 II, IEEE 802.3 포함하는 구리나 광섬유 케이블을 통한 데이터 전송 규칙을 정의하는 프로토콜
Wi-Fi (Wireless Fidelity) IEEE 802.11 표준 기반의 네트워킹 기술
PPP (Point-to-Point Protocol) 직렬 링크를 통해 두 노드 사이에 직접 연결을 설정하는 데 사용되는 프로토콜로 인증, 오류 감지 및 데이터 프레이밍 제공
ATM (Asynchronous Transfer Mode) WAN 및 통신 네트워크에서 사용. 데이터 전송을 위해 고정 크기 셀 사용, 동기/비동기 통신 지원
Token Ring 데이터 전송을 위해 토큰 전달 메커니즘 사용
Frame Relay 광역 네트워크에서 장치를 연결하는데 사용되는 패킷 전송 프로토콜. 가변 길이의 데이터 프레임 전송 허용 및 효율적인 대역폭 활용 제공

 

'etc' 카테고리의 다른 글

Observer Pattern [관찰자 패턴]  (0) 2023.06.11
Singleton Design Pattern [싱글턴 패턴]  (0) 2023.06.11
우분투에서 파일 다운로드: wget  (0) 2022.08.16
AWS RDS (MariaDB) 설치 및 연동 - 4  (0) 2022.08.08
AWS EC2 설치  (0) 2022.08.08