일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- RN새로운아키텍쳐
- Throttle
- Swift
- motion.div
- private-access-to-photos
- react-native-permissions
- animation
- no-permission-handler-detected
- Hash-table
- await
- RN아키텍쳐
- javascript
- react
- react-native-image-picker
- axios
- react native
- react-native
- async
- React-Native업데이트
- CS
- promise.all
- debounce
- RN업데이트
- 비동기
- named type
- hydration mismatch
- rn
- react animation
- Promise
- ios
- Today
- Total
하루살이 개발일지
OSI 7계층과 TCP/IP 4계층에 대해서 본문

OSI 7계층이란?
OSI 7계층이란 네트워크 통신이 일어나는 과정을 7단계로 나눈 것
네트워크 통신의 복잡성을 줄이고, 다양한 시스템간의 호환성을 높이기 위해 국제표준화기구(ISO)에 의해 개발됨
OSI 7계층을 나눈 이유?
- 통신이 일어나는 과정을 단계별로 파악하기 위해서
- 특정한 곳에 이상이 생기면 그 단계만 수정할 수 있는 편리성
- 다른 시스템과의 호환성을 높이기 위해
OSI 7계층의 특징
- 각 계층은 독립적인 기능을 수행
- 상위 계층은 하위 계층의 서비스를 이용해 보다 복잡한 기능을 구현
- 계층적 접근 방식을 통해 특정 부분이 변경되더라도 전체 시스템에 영향을 주지 않고, 필요한 부분만 개선하거나 수정할 수 있음
1️⃣ 물리 계층(1계층)
리피터, 케이블, 허브 등
주로 물리적인 매체를 통해서 통신 케이블로 데이터를 전송하는 역할을 한다.
이 계층에서 사용되는 통신 단위는 비트(0과 1)이고, 데이터의 내용이나 구조 및 오류는 신경쓰지 않는다.
즉 데이터를 전기적인 신호로 변환해 주고받는 기능만 담당한다.
대표적인 장비에는 리피터, 케이블, 허브 등이 있다.



2️⃣ 데이터 링크 계층(2계층)
브릿지, 스위치 등
네트워크 세그먼트 및 장비 사이에서 데이터 전송과 오류 검출 및 재전송을 담당한다.
이 계층에서 데이터는 프레임(Frame)이라는 단위로 구성된다.
각 프레임은 전송되는 데이터의 포장지 역할이고, 이 포장지는 데이터를 안전하게 목적지까지 전달하는 데 필요한 정보를 담고 있다.
이 계층에서는 MAC(Media Access Control) 주소라고 하는 고유 식별자를 통해 네트워크 내의 장치를 구별하고, 특정 장치와 통신한다.
각 장치의 네트워크 카드에는 고유한 MAC 주소가 있어서, 이 주소를 통해 장치를 정확히 식별할 수 있다.
이 계층에서 네트워크 세그먼트를 구성하고 관리하는 장치로 브릿지, 스위치가 있다.
브릿지는 두 개 이상의 네트워크 세그먼트를 연결해 데이터 흐름을 관리하고,
스위치는 하나의 네트워크 세그먼트 내에서 여러 장치 사이에서 데이터 전송을 효율적으로 중개한다.
(네트워크 세그먼트 : 서로 연결되어 직접적으로 데이터를 주고받을 수 있는 장치들의 그룹)
🍕 참고) 브릿지와 스위치의 차이
[공통점]
네트워크 장비로서 서로 다른 네트워크나 네트워크 세그먼트를 연결
[차이점]
▶️ 사용성
- 브릿지는 주로 두 개 이상의 네트워크 세그먼트를 연결하고, 서로 다른 세그먼트 간의 데이터 전송을 가능하게 함
- 스위치는 하나의 네트워크 세그먼트 내에서 장비들 간의 데이터 전송을 관리하고, 각 네트워크 노드 간에 전용 신호 경로를 제공함
▶️ 역할
- 브릿지는 개별 장치를 직접 연결하는 것이 아니라, 서로 다른 네트워크 세그먼트를 연결하여 하나의 큰 네트워크처럼 통신할 수 있게 함
- 스위치는 하나의 세그먼트 내에서 더 많은 장치를 연결해 네트워크 내에서의 통신을 더 효율적으로 만드는 데 중점을 둠
▶️ 포트 수
- 대부분의 브릿지는 2~4개의 포트를 가지고 있음
- 스위치는 수백 개의 포트를 가질 수 있음
▶️ 기술적 구현
- 브릿지는 소프트웨어 기반으로 작동
- 스위치는 하드웨어 기반(ASIC 칩 사용)으로 더 빠른 전달 능력을 가짐
▶️ 오류 검사
- 스위치는 데이터 오류 검사를 수행할 수 있는 버퍼를 가지고 있음
- 브릿지는 버퍼가 없는 경우도 있어 오류 검사를 수행하지 않을 수 있음
(버퍼 : 데이터를 일시적으로 저장하는 메모리 공간)
하지만, 이러한 장비가 데이터 오류를 검출하고 관리할 수 있는 능력을 가지고 있음에도 불구하고 네트워크에서의 오류 관리 및 복구 메커니즘은 주로 상위 계층에서 더 세밀하게 이루어지는 경향이 있음
→ 2계층에서는 네트워크 세그먼트를 연결하고, 네트워크 트래픽을 관리하여 네트워크의 성능과 보안을 향상시키는 데 중점을 두기 때문


3️⃣ 네트워크 계층(3계층)
라우터, IP
네트워크 계층은 다양한 네트워크를 통해 데이터를 목적지까지 효율적으로, 안전하게 전달하는 것을 담당한다.
이 계층에서 사용되는 주요 기술과 장비는 다음과 같다.
- IP 주소 : 각 장치에 고유한 주소를 할당해 인터넷 상에서 장치들끼리 식별하고 통신할 수 있게 함
- 라우팅 : 데이터 패킷이 출발지에서 목적지까지 가장 효율적인 경로를 따라 전송되도록 경로를 결정하고 데이터 패킷을 전달
- 라우터 : 라우팅을 수행하는 네트워크 장비. 데이터 패킷을 받아 적절한 경로로 전송
네트워크 계층에서는 다음과 같은 기능이 수행된다.
- 경로 설정 : 다양한 경로 중에서 데이터 패킷이 전송될 최적의 경로 선택
- IP 주소 할당 : IP주소를 사용해 네트워크 내에서 각 장치에 고유한 식별자를 할당
- 흐름 제어 / 세그멘테이션 : 데이터의 효율적 전송을 위해 큰 데이터를 작은 패킷으로 분할(세그멘테이션), 필요에 따라 흐름을 제어
- 오류 제어 : 전송 과정에서 발생하는 오류 감지하고 필요시 수정
- 인터네트워킹 : 서로 다른 네트워크 기술을 사용하는 네트워크 간에 데이터를 전달할 수 있게 함
네트워크 계층은 인터넷을 포함해 대규모 네트워크에서 데이터를 목적지까지 효율적으로 전송하는데 중요한 역할을 한다.
이 계층의 기술과 프로토콜은 네트워크의 성능, 신뢰성, 확장성을 결정하는 중요한 요소가 된다.
즉 네트워크 계층은 데이터를 전세계 어디든 빠르고 안전하게 전달하기 위한 지도(IP 주소)와 운송 수단(라우팅)과 같은 역할이라고 생각할 수 있다.

4️⃣ 전송 계층(4계층)
TCP, UDP
전송 계층은 데이터의 신뢰성 있는 전송을 보장하고, 어플리케이션 간 통신을 가능하게 한다.
전송 계층에서 주로 사용되는 두 가지 프로토콜은 TCP와 UDP이다.
전송 계층에서는 다음과 같은 기능을 수행한다.
- 통신 : TCP와 UDP 프로토콜을 사용해 데이터의 효율적이고 신뢰성 있는 전송을 가능하게 함
- 포트 관리 : 각 어플리케이션은 특정 포트를 통해 데이터를 송수신하는데, 전송 계층에서 이러한 포트를 관리함
- 데이터 조립/분해 : 보내는 쪽에서는 여러 조각의 데이터를 하나로 조립하고, 받는 쪽에서는 하나로 조립된 데이터를 다시 여러 조각으로 분해해 처리함
- 오류 검출/복구 : 전송중에 발생할 수 있는 오류를 검출하고 필요시 데이터 재전송을 요청
- 흐름 제어 : 데이터 전송 속도를 조절해 송수신 측의 데이터 처리 능력에 맞춤
여기서, TCP란 Transmission Control Protocol의 약자로 신뢰성 있는 데이터 전송을 보장한다. 데이터의 순서 보장, 오류 없는 데이터 전송, 흐름 제어 등을 통해 안정적인 통신을 보장한다.
UDP란 User Datagram Protocol의 약자로, 비연결성과 실시간성을 제공한다. TCP보다는 빠르지만, 신뢰성이 낮은 통신 방식이다.
즉, 전송 계층은 종단 간(end to end)의 신뢰성 있는 데이터 전송을 담당하고, 데이터가 정확히 전송되도록 담당한다.
TCP를 통해 데이터 전송의 신뢰성을 높이고, UDP는 더 빠른 전송을 위해 연결 설정 없이 데이터를 전송한다.
이 계층은 데이터의 조립, 오류 검출 및 복구, 흐름 제어 등을 통해 효율적이고 신뢰성 있는 통신을 제공한다.

🍊 TCP와 UDP를 좀 더 알아보자
🦴 TCP
인터넷 상에서 데이터를 1. 신뢰성 있게, 2. 순서대로, 3. 오류 없이 전송할 수 있도록 설계된 프로토콜
1. TCP는 데이터 전송 전에 송수신 양쪽 간에 '핸드셰이크' 과정을 거쳐 연결을 설정한다. 이 과정을 통해 양쪽은 데이터 전송 준비가 되었음을 확인하고, 연결이 설정된 후에 데이터를 전송한다.
2. TCP는 패킷에 순서 번호를 부여하여 전송한다. 수신 측에서는 이 순서 번호를 기반으로 데이터를 올바른 순서로 재조립한다. 만약 어떤 패킷이 누락되거나 순서가 뒤바뀌었다면, TCP는 이를 감지하고 조정한다.
3. TCP는 전송된 데이터에 오류가 없는지 확인한다. 데이터가 손상되었거나 누락된 경우, TCP는 해당 데이터의 재전송을 요청하여 오류를 복구한다.
4. TCP는 네트워크의 현재 상태와 수신자의 데이터 처리 속도를 고려하여 데이터 전송 속도를 조절한다. 이는 네트워크 혼잡이나 데이터 손실을 방지하기 위함이다.
🦴 UDP
UDP는 연결 설정 없이 데이터를 전송하는 프로토콜로, TCP보다 더 단순하고 빠르다.
1. UDP는 데이터 전송 전에 연결을 설정하지 않는다. 이는 연결 설정과 해제에 소요되는 시간과 자원을 절약할 수 있으며, 결과적으로 전송 속도가 빨라지게 된다.
2. UDP는 지연 시간이 짧아 실시간 통신에 적합하다. 온라인 게임, 스트리밍 서비스, VoIP(음성 통화) 등에 사용된다.
3. UDP는 패킷의 순서 보장, 오류 검출 및 복구 등의 기능을 제공하지 않는다. 따라서 패킷 손실이나 순서 변경이 발생해도, UDP 자체에서는 이를 복구하지 않는다. 그래서 신뢰성이 중요하지 않은 애플리케이션에서 주로 사용된다.
요약하자면, TCP는 데이터의 신뢰성과 순서를 중요시하는 상황에 적합한 반면, UDP는 낮은 지연 시간과 실시간 데이터 전송이 필요한 상황에서 사용된다.
5️⃣ 세션 계층(5계층)
API, Socket
세션 계층은 통신을 하는 응용 프로그램 간에 세션, 즉 논리적인 연결을 관리한다.
이 계층은 양쪽 응용 프로그램이 데이터를 주고받을 수 있게 세션을 확립, 유지, 종료하는 기능을 담당한다.
세션 계층은 다음과 같은 주요한 기능을 담당하는데,
- 세션 확립/유지/종료 : 세션 계층은 양 끝단 사이에 세션을 만들고, 이 세션을 통해 데이터 교환을 관리한다. 통신이 끝나면 세션을 종료한다.
- 동기화 및 오류복구 : 데이터 전송중에 발생할 수 있는 오류를 복구한다. 예를 들어, 통신 중에 오류가 발생하거나 연결이 끊기면 이전 상태로 돌아갈 수 있는 체크포인트를 설정해 복구를 돕는다.
- 통신 방식 관리 : 세션 계층은 다양한 통신 방식을 지원한다. 이를 통해 데이터 교환 방식을 효율적으로 선택할 수 있다.
세션 계층은 TCP/IP 모델에서는 명시적으로 구분되지는 않지만, 실제 응용 프로그램에 있어서는 API나 소켓을 통해 이 계층을 구현한다.
이는 운영체제가 제공하는 네트워킹 기능을 사용해 응용 프로그램이 통신할 수 있는 세션을 생성하고 관리하는 것을 포함한다.
이 계층은 전송 계층과는 독립적으로, 응용 프로그램의 관점에서 통신 세션을 관리하는 데 중점을 둔다.
즉, 세션 계층은 응용 프로그램이 데이터를 안전하고 효과적으로 교환할 수 있게 하는데 필수적인 역할을 한다. 이를 통해 사용자들 간 통신 세션을 효율적으로 확립하고, 필요에 따라 중단할 수 있다.
예시 : 웹 브라우징
1. 세션을 확립하는 순간
유저가 웹사이트에 로그인할 때, 웹 서버는 유저의 세션을 식별하기 위해 고유한 세션 ID를 생성하고 이를 브라우저에 전송한다. 이 세션 ID는 유저가 로그인한 동안 서버와 브라우저 간의 모든 통신을 식별하는 데 사용된다.
2. 데이터 교환
유저가 웹사이트 내에서 다양한 페이지를 방문하거나 정보를 요청할 때마다 브라우저는 해당 세션ID와 함께 요청을 서버로 전송한다. 서버는 세션ID를 통해 유저의 세션을 식별하고, 요청에 따른 적절한 응답을 브라우저로 전송한다.
3. 세션 유지
세션 ID를 통해 유저의 로그인 상태, 방문 페이지, 입력 정보 등의 세션 데이터를 유지하고, 유저 맞춤화된 경험을 제공할 수 있다.
4. 세션 종료
유저가 로그아웃하거나 세션 타임아웃이 발생하면 웹 서버는 해당 세션을 종료하고 세션 ID를 무효화시킨다. 이후 같은 사용자가 다시 로그인하면 새로운 세션 ID가 생성된다.
이처럼 세션 계층은 컴퓨터 네트워크 상에서 두 응용 프로그램이 서로 통신할 수 있도록 '논리적 연결'을 확립하고 관리하는 역할을 담당한다. 이 계층은 통신의 시작부터 끝까지 안정적으로 데이터를 주고받을 수 있도록 도와주며, 필요시 오류 조정과 복구를 담당한다.
6️⃣ 표현 계층(6계층)
JPEG, MPEG 등
표현 계층은 데이터가 네트워크를 통해 전송될 때 표현 방식을 관리하는 역할을 담당한다.
이 계층은 다양한 어플리케이션 간에 데이터 교환을 원활하게 하기 위해 데이터 형식의 변환, 암호화, 압축 등의 기능을 제공한다.
표현 계층에는 다음과 같은 주요 기능을 표함한다.
- 데이터 형식 변환 : 만약 서로 다른 인코딩 방식을 사용하는 시스템 간 데이터를 교환하면, 데이터 형식을 적절히 변환한다. 예를 들어서 EBCDIC 인코딩 방식을 사용하는 시스템에서 ASCII 인코딩 방식을 사용하는 시스템으로 데이터를 전송할 때, 해당 데이터의 인코딩 변환을 담당한다.
- 데이터 암호화 및 복호화 : 네트워크를 통해 전송되는 데이터 보안을 강화하기 위해 데이터를 암호화하고 목적지에서 다시 복호화한다.
- 데이터 압축 : 데이터 전송 효율을 높이기 위해 크기가 큰 데이터를 압축하고 수신 측에서는 이를 다시 압축 해제하여 원래의 데이터로 복원한다. 네트워크 대역폭을 절약하고 전송 시간을 단축할 수 있다.
- 데이터 구분 : 전송되는 데이터가 txt, 이미지(jpg, gif 등), 비디오(mpeg 등)와 같은 다양한 형태임을 식별하고 이에 따라 적절히 처리한다.
즉 표현 계층은 데이터가 어떻게 표현되어야 하는지, 어떻게 암호화되어야 하는지 결정하며 응용 계층이 데이터의 내용에만 집중할 수 있도록 돕는다. 따라서, 표현 계층은 응용 프로그램과 데이터 전송 사이에서 데이터를 적절히 포장하고 처리하는 중간 역할이라고 볼 수 있다.
7️⃣ 응용 계층(7계층)
HTTP, FTP, SMTP 등
응용 계층은 OSI 모델의 최상위 계층으로, 사용자와 직접 상호작용하는 네트워크 서비스를 제공한다.
이 계층은 데이터를 네트워크를 통해 다른 장치로 전송하기 위한 다양한 프로토콜과 인터페이스를 관리한다.
응용 계층의 주요 기능은 다음과 같다.
- 프로토콜의 종류 : 응용 계층에서는 HTTP, FTP, SMTP, POP3, IMAP, DNS, Telnet 등과 같은 프로토콜을 사용한다. 이러한 프로토콜은 웹 브라우징, 파일 전송, 이메일 송수신, 도메인 이름 해석 등 다양한 네트워크 기반 서비스를 가능하게 한다.
- 사용자 인터페이스 제공 : 사용자가 네트워크 리소스에 접근하고 이를 사용할 수 있게 하는 UI를 포함한다. 예를 들어, 웹 브라우저는 HTTP 프로토콜을 사용해 웹 서버와 통신하는 UI를 제공한다.
- 응용 프로그램간 통신 관리 : 다른 네트워크 장치에 있는 응용 프로그램 간의 데이터 전송과 통신을 관리한다. 이를 통해 유저는 이메일 클라이언트, 데이터베이스 관리 시스템, 파일 공유 시스템 등의 애플리케이션을 네트워크를 통해 사용할 수 있다.
- 데이터 전송의 최종 목적지 : 모든 네트워크 통신의 최종 목적지는 응용 계층의 프로토콜이다. 즉 네트워크를 통해 전송되는 모든 데이터는 결국 사용자가 사용하는 애플리케이션의 프로토콜에 의해 처리된다.
응용 계층은 네트워크를 통해 제공되는 다양한 서비스와 리소스를 최종 사용자에게 접근 가능하게 하는 역할을 수행한다.
이 계층은 사용자의 데이터를 생성하고, 이를 다른 응용프로그램이나 사용자에게 전송하는 모든 과정을 담당한다.
응용 계층은 사용자에게 제일 가까운 계층이고, 네트워크 소프트웨어의 사용자 인터페이스와 입출력 부분을 관리한다.
OSI 7계층의 예시
OSI 7계층을 이해하기 위해, 집에서 인터넷 연결 문제를 해결하는 상황을 예시로 들어보겠다.
집에는 Wi-Fi를 통해 인터넷에 연결되는 여러 기기(스마트폰, 노트북, 스마트 TV 등)가 있다.
이때, OSI 7계층 모델을 이용해 문제를 단계적으로 진단하고 해결할 수 있다.
1️⃣ 물리 계층(1계층)
먼저 모든 케이블 연결과 Wi-Fi 라우터의 전원을 확인한다.
라우터가 켜지지 않았거나 케이블이 끊어진 경우, 이곳에 문제가 있을 수 있다.
2️⃣ 데이터 링크 계층(2계층)
라우터와 기기들 사이의 Wi-Fi 연결을 확인한다.
Wi-Fi 신호는 보이지만 연결이 안 된다면, Wi-Fi 라우터의 설정 문제일 수 있다.
3️⃣ 네트워크 계층(3계층)
기기가 Wi-Fi에 연결되었지만 인터넷에 접속할 수 없다면,
라우터의 인터넷 설정이나 ISP(인터넷 서비스 제공업체)의 문제일 수 있다.
4️⃣ 전송 계층(4계층)
특정 서비스(예: 웹사이트 방문)가 작동하지 않는다면,
포트 설정이나 방화벽 문제일 수 있다.
5️⃣ 세션 계층(5계층) / 표현 계층(6계층) / 응용 계층(7계층)
특정 애플리케이션이 인터넷에 연결되지 않는다면, 해당 소프트웨어의 설정을 확인해 본다.
예를 들어, 이메일 앱이 서버에 연결되지 않는다면, 계정 설정이 올바른지 확인한다.
이처럼 OSI 7계층 모델을 사용하면, 복잡한 네트워크 문제를 체계적으로 접근하여 각 계층에서 발생할 수 있는 문제를 좁혀나가고, 정확한 원인을 찾아 해결할 수 있다. 이를 통해 문제 해결 시 시간과 비용을 절약할 수 있게 된다.
TCP/IP 4계층

TCP/IP 4계층 모델은 네트워크 통신을 위한 프로토콜의 집합을 구조화한 것으로, OSI 7계층 모델을 기반으로 하되 실용적인 측면에서 더 단순화하여 구성된 것이다.
각 계층의 기능과 특징을 알아보자.
1️⃣ L1 - 링크 계층 (Link Layer)
- 역할 : 데이터의 물리적 전송을 담당. 네트워크 장비 간의 데이터 교환을 위한 프레임을 구성
- 데이터 단위 : 프레임(Frame)
- 전송 주소 : MAC (Media Access Control) 주소
- 특징 : 물리적 주소를 이용한 데이터 전송, 에러 검출, 패킷의 프레임화 처리 등을 수행. 이더넷과 같은 기술이 이 계층에서 사용됨.
2️⃣ L2 - 인터넷 계층 (Internet Layer)
- 역할 : 서로 다른 네트워크 간의 데이터 전송 및 경로 설정을 담당
- 데이터 단위 : 패킷(Packet)
- 전송 주소 : IP (Internet Protocol) 주소
- 특징 : IP 주소를 이용한 라우팅, 목적지까지 데이터를 안내하는 기능 등을 제공. IP, ARP, ICMP 등의 프로토콜이 이 계층에서 작동
3️⃣ L3 - 전송 계층 (Transport Layer)
- 역할 : 데이터의 신뢰성 있는 전송을 보장하고, 애플리케이션 간의 통신을 관리
- 데이터 단위 : 세그먼트(Segment) 또는 데이터그램(Datagram)
- 전송 주소 : 포트(Port) 번호
- 특징 : 연결의 설정과 종료, 데이터의 분할 및 재조립, 오류 검출 및 복구 등을 수행. TCP와 UDP가 대표적인 프로토콜
4️⃣ L4 - 응용 계층 (Application Layer)
- 역할 : 사용자가 네트워크 서비스에 접근할 수 있게 하는 인터페이스를 제공
- 데이터 단위 : 데이터(Data) 또는 메시지(Message)
- 특징 : 사용자의 요구에 따라 네트워크를 통한 데이터 교환을 가능하게 함. HTTP, FTP, SSH, DNS와 같은 다양한 응용 프로그램 프로토콜이 이 계층에서 활동
TCP/IP 모델은 각 계층이 독립적으로 작동하면서도, 상위 계층이 하위 계층의 서비스를 기반으로 구축되는 계층화된 구조를 가진다.
이러한 구조는 네트워크 통신의 복잡성을 관리 가능한 여러 부분으로 나누어, 효율적이고 유연한 데이터 교환을 가능하게 한다.
Reference
https://shlee0882.tistory.com/110
https://www.fiberopticshare.com/bridge-vs-switch-whats-the-difference.html
https://yohanpro.com/posts/%EB%9D%BC%EC%9A%B0%ED%84%B0%EC%9D%98%20%EA%B5%AC%EC%A1%B0/
'CS' 카테고리의 다른 글
[Network] SSL/TLS에 대하여 (0) | 2024.05.12 |
---|---|
[CS] 대칭키와 공개키(비대칭키)의 차이점에 대해서 (0) | 2024.05.08 |
[CS] 네트워크에 대하여 (1) | 2024.05.01 |
[Data Structure] 기본적인 자료구조 8가지 정리 (2) | 2024.03.22 |
[CS] HTTP와 프로토콜에 대하여 (response, request) (0) | 2023.07.04 |