OSI 7계층
1계층 물리계층
1계층(물리계층)은 데이터를 0과 1의 비트로 표현하고, 이를 전선으로 아날로그 신호 형태로 전달합니다. 이 과정에서 전압의 변화를 이용하여 데이터를 전송합니다. 아래는 물리계층의 데이터 전송 방식을 단계별로 설명합니다.

상단 그래프:
5Hz의 주파수를 가진 신호입니다.
전선의 대역폭(5Hz~8Hz) 내에 있기 때문에 정상적으로 전달됩니다.
하단 그래프:
10Hz의 주파수를 가진 신호입니다.
대역폭 범위를 초과했기 때문에 전선에서 손실됩니다.

위와같이 수직 수평이 된 주파수를 가진 신호는 무한대의 주파수를 가지게 되므로 안되고

위와같이 곡선으로 완만한 주파수를 가진 신호만 전달해야합니다
1. 디지털 데이터와 전압의 관계
디지털 데이터: 컴퓨터 내부 데이터는 이진수(0과 1)로 이루어져 있습니다.
전압 변환: 전선을 통해 데이터를 보내기 위해 0과 1을 특정 전압으로 변환합니다.
1: +5V (전압 상승)
0: -5V (전압 하강)
2. 아날로그 신호로의 변환 과정
물리계층에서는 디지털 신호를 아날로그 신호로 변환하여 전송합니다. 이는 데이터가 전선이라는 아날로그 매체를 통해 손실 없이 이동하도록 하기 위함입니다.
3. 변조 방식 예시
NRZ (Non-Return-to-Zero) 방식
설명: 0과 1을 각각 고유의 전압으로 표현하는 방식.
1: +5V로 유지
0: -5V로 유지
4. 전송 신호의 실제 예
예를 들어, 아래와 같은 데이터를 전송한다고 가정합니다.
디지털 데이터: 0 1 0 1 1 0 0 1
이 데이터를 NRZ 방식으로 전송하면, 전선의 전압 변화는 다음과 같이 나타납니다.
디지털 데이터: 0 1 0 1 1 0 0 1
전압 변화: -5 +5 -5 +5 +5 -5 -5 +5
아래는 인코더와 디코더를 코드블록으로 단순하게 표현한 다이어그램입니다.
+---------+ +-----------------+ +---------+
| | | | | |
| Encoder +--------> Transmission +--------> Decoder |
| | | (Signal Flow) | | |
+---------+ +-----------------+ +---------+
2. 데이터 링크 계층
1. 문제: 여러 대의 컴퓨터 연결
기본적으로 컴퓨터 간 통신을 위해 전선을 연결해야 하지만, 여러 컴퓨터를 연결할 경우 효율적인 방법이 필요합니다.
문제 상황:
웅진 → 멀티캠퍼스 (전선 1개)
웅진 → 유데미 (전선 추가)
웅진 → 더 많은 컴퓨터들 (각각 전선 추가 필요)
2. 해결 방법: 공유 전선과 허브 사용
:
웅진 컴퓨터 1 컴퓨터 2 멀티캠퍼스
| | | |
+------+--------------+--------------+-------------+------+
| 전선 |
+---------------------------------------------------------+
전선 공유:
[ 구리 전선 ]
컴퓨터 A ---+
컴퓨터 B ---+ 연결 (데이터 공유)
컴퓨터 C ---+
데이터를 모든 컴퓨터로 동시에 전송하는 방식.
+---------+
|(더미 허브)|
+---------+
| | | |
+---------------+ | | +---------------+------------------+
| | | | |
+--------+ +--------+ +--------+ +--------+
| 웅진 | | 컴퓨터 1 | | 컴퓨터 2 | |멀티캠퍼스|
+--------+ +--------+ +--------+ +--------+
문제점:
모든 컴퓨터가 데이터를 받아 신호를 해석할 수 있음 → 데이터 충돌.
3. 스위치 사용: 데이터 목적지 지정
스위치란?
스위치는 데이터를 보내는 컴퓨터가 지정한 목적지에만 데이터를 전달하는 장치입니다.
+---------+ +---------+
| 컴퓨터 A +--------> 스위치 +--------> 컴퓨터 B |
+---------+ +---------+
스위치가 데이터를 분석하여 컴퓨터 B만 데이터를 받게 함.
효율적이고 보안이 강화된 데이터 전송 가능.
4. 여러 네트워크 연결: 라우터 사용
라우터란?
라우터는 서로 다른 네트워크를 연결하여 데이터를 전송합니다.
[ 네트워크 1 ] -- 라우터 -- [ 네트워크 2 ]
컴퓨터 A | 컴퓨터 B
라우터는 컴퓨터 B의 IP 주소를 읽어 올바른 네트워크로 데이터를 전송.
라우터 구성:
+---------+ +----------+ +---------+
| 네트워크 A |----> 라우터 <----| 네트워크 B |
+---------+ +----------+ +---------+
5. 인터넷 연결: 전 세계 라우터 연결
:
+---------+ +---------+
| 스위치 | | 스위치 |
+---------+ +---------+
| |
+-----------------+ +-----------------+
| | | |
+---------+ +---------+ +---------+ +---------+
| 웅진 | | 컴퓨터 1 | | 컴퓨터 3 | | 멀티캠퍼스 |
+---------+ +---------+ +---------+ +---------+
| | | |
+---------+ +---------+ +---------+ +---------+
| 컴퓨터 2 | | 컴퓨터 4 | | 컴퓨터 5 | | 컴퓨터 6 |
+---------+ +---------+ +---------+ +---------+
인터넷 구조:
여러 라우터들이 연결되어 모든 네트워크를 통합.
+-----------+ +-----------+
| 네트워크 1 |--------> 라우터 1 |
+-----------+ +-----------+
|
+--------+--------+
| 라우터 최상위 |
+--------+--------+
|
+--------+--------+
| 네트워크 2 |
+----------------+
6. 데이터 링크 계층: 데이터 구분 (Framing)
문제: 데이터를 구분하지 않으면 해석 불가
+---------+ +---------+ +---------+
| 컴퓨터 1 |------>| |<------| 컴퓨터 2 |
+---------+ | 스위치 | +---------+
| 0101 | | | | 1111 |
+---------+ +---------+ +---------+
| |
+---------+ +---------+
| 컴퓨터 3 | | 웅진 |
+---------+ +---------+
| 0001 | | ...수신 |
+---------+ +---------+
데이터 흐름:
1. 컴퓨터 1: 0101
2. 컴퓨터 2: 1111
3. 컴퓨터 3: 0001
4. 스위치: 데이터를 모아서 웅진 컴퓨터로 전송
5. 웅진: 데이터 전체 수신 (...010111110001...)
[ 받은 데이터 ]
11110101010100000...
해결: 데이터 앞뒤에 구분자 추가
[ 전송 데이터 ]
1111 010101010 0000
데이터 링크 계층 과정:
+---------+ +---------+ +---------+
| 송신 컴퓨터 |--> 1111---> 01010101---> 0000 |
+---------+ +---------+ +---------+
[ 데이터를 보내는 컴퓨터 ] [ 데이터를 받는 컴퓨터 ]
+--------------------+ +--------------------+
| 2계층 인코더 | | 2계층 디코더 |
| (Framing 추가) | | (Framing 제거) |
+--------------------+ +--------------------+
| ^
v |
+--------------------+ +--------------------+
| 1계층 인코더 | | 1계층 디코더 |
| (아날로그 변조) | | (디지털 변환) |
+--------------------+ +--------------------+
| ^
v |
전선 -------------------------------------> 전선
(아날로그 신호 흐름) (아날로그 신호 수신)
3계층: 네트워크 계층 (Network Layer)
데이터 전송 시나리오
A 컴퓨터에서 B 컴퓨터로 데이터를 보내고 싶습니다.
이를 위해 IP 주소를 사용하여 데이터를 정확한 목적지로 전달합니다.
+-----+ +-----+
| 마 |--------| 바 |
+-----+ +-----+
| |
+--------+ +----+----+
| | |
+-----+ +-----+ +-----+
| 가 | | 다 | | 라 |
+-----+ +-----+ +-----+
| | |
+----+ +----+ +----+ +----+ +----+ +----+
| A | | PC | | PC | | PC | | PC | | B |
+----+ +----+ +----+ +----+ +----+ +----+
A의 IP를 51.12.42.51
B의 IP를 61.23.51.25
1. 데이터에 목적지 IP 주소 추가
+-----------+ 데이터 전송 +-----------+
| 컴퓨터 A |------------------->| 라우터 가 |
+-----------+ +-----------+
1. 데이터 생성:
- 원본 데이터에 B 컴퓨터의 IP 주소(예: 61.23.51.25)를 추가.
- 데이터 구조: [ 목적지 IP | 데이터 ]
예: [ 61.23.51.25 | Hello, B! ]
2. 라우터 가에서의 동작
+-----------+ +-----------+
| 라우터 가 |-------------------> | 라우터 마 |
+-----------+ +-----------+
1. 데이터 수신:
- 라우터 가는 패킷을 받아 목적지 IP(61.23.51.25)를 확인.
- 라우터 가는 자신과 직접 연결된 장치 중 해당 IP가 없음을 확인.
2. 데이터 전달:
- 데이터 패킷을 다음 라우터 마에게 전달.
3. 라우터 마에서의 동작
+-----------+ +-----------+
| 라우터 마 |-------------------> | 라우터 바 |
+-----------+ +-----------+
1. 데이터 확인:
- 라우터 마는 데이터 패킷을 열어 목적지 IP를 확인.
- 목적지 IP(61.23.51.25)에 도달하려면 다음 라우터 바로 데이터를 전달해야 함을 결정.
2. 데이터 전달:
- 데이터 패킷을 라우터 바로 전송.
4. 최종 전달
+-----------+ +-----------+
| 라우터 바 |-------------------> | 컴퓨터 B |
+-----------+ +-----------+
1. 데이터 확인:
- 라우터 바는 목적지 IP(61.23.51.25)가 자신과 연결된 컴퓨터 B의 IP 주소임을 확인.
2. 데이터 전달:
- 데이터 패킷을 컴퓨터 B에 전달.
3. 컴퓨터 B:
- 데이터 수신 완료: "Hello, B!"
3계층 인코딩 및 디코딩
+------------------+ +------------------+
| 3계층 인코더 | | 3계층 디코더 |
| [IP 주소 추가] | | [IP 주소 해석] |
+------------------+ +------------------+
| |
+------------------+ +------------------+
| 2계층 인코더 | | 2계층 디코더 |
| [프레임 추가] | | [프레임 제거] |
+------------------+ +------------------+
| |
+------------------+ +------------------+
| 1계층 인코더 | | 1계층 디코더 |
| [아날로그 변조] | ---> 데이터 이동 ---> | [디지털 복원] |
+------------------+ +------------------+
[ 데이터를 보내는 컴퓨터 ] [ 라우터 ]
+------------------+ +------------------+
| 3계층 인코더 | | 3계층 디코더 |
| [목적지 IP 추가] | | [목적지 IP 확인] |
+------------------+ +------------------+
| ^
v |
+------------------+ +------------------+
| 2계층 인코더 | | 2계층 디코더 |
| [프레임 추가] | | [프레임 제거] |
+------------------+ +------------------+
| ^
v |
+------------------+ +------------------+
| 1계층 인코더 | | 1계층 디코더 |
| [아날로그 변조] | | [디지털 복원] |
+------------------+ +------------------+
| ^
v |
전선 -----------------------------------------> 전선
(아날로그 신호 전송) (아날로그 신호 수신)
[ 라우터 내부 재처리 과정 ]
+------------------+ +------------------+
| 3계층 인코더 | <-------------------------------+ | 3계층 디코더 |
| [목적지 IP 유지/수정] | [목적지 IP 확인] |
+------------------+ +------------------+
| ^
v |
+------------------+ +------------------+
| 2계층 인코더 | | 2계층 디코더 |
| [프레임 추가] | | [프레임 제거] |
+------------------+ +------------------+
| ^
v |
+------------------+ +------------------+
| 1계층 인코더 | | 1계층 디코더 |
| [아날로그 변조] | | [디지털 복원] |
+------------------+ +------------------+
| ^
v |
전선 -----------------------------------------> 전선
(아날로그 신호 전송) (아날로그 신호 수신)
4계층: 트랜스포트 레이어 (Transport Layer)
데이터 전송 시나리오
데이터를 받는 컴퓨터에 여러 프로그램(프로세스)이 실행 중입니다.
전송 계층은 포트번호를 사용하여 데이터를 정확한 프로세스에 전달합니다.
1. 포트번호 추가 및 데이터 전송
[ 데이터를 보내는 컴퓨터 ] [ 데이터를 받는 컴퓨터 ]
+------------------+ +------------------+
| 4계층 인코더 | | 4계층 디코더 |
| [포트번호 추가] | | [포트번호 확인] |
+------------------+ +------------------+
| ^
v |
+------------------+ +------------------+
| 3계층 인코더 | | 3계층 디코더 |
| [목적지 IP 추가] | | [목적지 IP 확인] |
+------------------+ +------------------+
| ^
v |
+------------------+ +------------------+
| 2계층 인코더 | | 2계층 디코더 |
| [프레임 추가] | | [프레임 제거] |
+------------------+ +------------------+
| ^
v |
+------------------+ +------------------+
| 1계층 인코더 | | 1계층 디코더 |
| [아날로그 변조] | | [디지털 복원] |
+------------------+ +------------------+
| ^
v |
전선 -------------------------------------------> 전선
(아날로그 신호 전송) (아날로그 신호 수신)
데이터 전달 과정
데이터를 보내는 컴퓨터:
4계층 인코더: 데이터에 목적지 프로세스의 포트번호를 추가.
예:
포트번호: 8000
(줌),포트번호: 9000
(카카오톡).
3계층 인코더: 데이터에 목적지 IP 주소를 추가.
2계층 인코더: 데이터에 프레임(구분자)을 추가.
1계층 인코더: 데이터를 아날로그 신호로 변조하여 전송.
전송:
데이터를 전선으로 전송 (아날로그 신호 형태).
데이터를 받는 컴퓨터:
1계층 디코더: 아날로그 신호를 디지털 신호로 복원.
2계층 디코더: 프레임 제거.
3계층 디코더: 목적지 IP 주소를 확인.
4계층 디코더: 포트번호를 확인하여 데이터를 해당 프로세스에 전달.
포트번호 8000: 줌
포트번호 9000: 카카오톡
포트번호를 활용한 데이터 구분
[ 수신 데이터 ]
1. [포트번호: 8000 | 데이터: 메시지1]
2. [포트번호: 8000 | 데이터: 메시지2]
3. [포트번호: 9000 | 데이터: 주문정보]
[ 포트번호로 데이터 구분 및 전달 ]
8000 → 줌
9000 → 카카오톡
트랜스포트 레이어 요약
포트번호 추가:
데이터를 특정 프로세스와 연결.
한 컴퓨터에서 실행 중인 여러 프로그램이 데이터를 구분해서 받을 수 있도록 도와줌.
포트번호 사용 예시:
줌:
8000
카카오톡:
9000
데이터 흐름:
데이터는 포트번호와 IP 주소를 기반으로 정확한 프로세스까지 도달.
코드블럭 표현
1. 데이터 생성:
[ 원본 데이터 ] → [ 4계층 인코더 ]
데이터: "Hello, World!"
포트번호 추가: "8000"
결과: [ 포트번호: 8000 | 데이터: Hello, World! ]
2. IP 주소 추가 (3계층):
결과: [ 목적지 IP: 192.168.0.10 | 포트번호: 8000 | 데이터: Hello, World! ]
3. 프레임 추가 (2계층):
결과: [ 프레임: 시작 | 목적지 IP: 192.168.0.10 | 포트번호: 8000 | 데이터: Hello, World! | 프레임: 끝 ]
4. 아날로그 변조 (1계층):
결과: 아날로그 신호 전송.
5. 수신 컴퓨터 디코딩:
- 1계층 디코더: 아날로그 신호 → 디지털 신호 복원.
- 2계층 디코더: 프레임 제거.
- 3계층 디코더: 목적지 IP 확인.
- 4계층 디코더: 포트번호 확인 및 프로세스에 전달.
8000 → 줌
9000 → 카카오톡
[ 데이터를 보내는 컴퓨터 ]
+------------------+
| 4계층 인코더 |
| [포트번호 추가] |
+------------------+
|
v
+------------------+
| 3계층 인코더 |
| [목적지 IP 추가] |
+------------------+
|
v
+------------------+
| 1-2계층 인코더 |
| [프레임 추가 및 |
| 아날로그 변조] |
+------------------+
|
v
[ 전선 ]
(아날로그 신호 전송)
---
[ 데이터를 받는 컴퓨터 ]
+------------------+
| 1-2계층 디코더 |
| [디지털 신호 복원 및 |
| 프레임 제거] |
+------------------+
|
v
+------------------+
| 3계층 디코더 |
| [목적지 IP 확인] |
+------------------+
|
v
+------------------+
| 4계층 디코더 |
| [포트번호 확인] |
+------------------+
|
v
[ 최종 데이터 전달 ]
---
데이터 흐름:
1. [보내는 컴퓨터]:
- 4계층 인코더:
데이터: "data"
포트번호 추가: `Port: 9000`
결과: `[Port: 9000 | data]`
- 3계층 인코더:
목적지 IP 추가: `Destination: 55.10.54.75`
결과: `[Destination: 55.10.54.75 | Port: 9000 | data]`
- 1-2계층 인코더:
프레임 추가 및 아날로그 변조.
결과: `[아날로그 신호 전송]`
2. [전선]:
- 아날로그 신호로 데이터 전송.
3. [받는 컴퓨터]:
- 1-2계층 디코더:
디지털 신호 복원 및 프레임 제거.
결과: `[Destination: 55.10.54.75 | Port: 9000 | data]`
- 3계층 디코더:
목적지 IP 확인.
결과: `[Port: 9000 | data]`
- 4계층 디코더:
포트번호 확인.
결과: `data`가 해당 포트의 프로그램(예: 배달의 부족)으로 전달.
[ OSI 모델 ] [ TCP/IP 모델 ]
+-------------------+ +-------------------+
| 7. 응용 계층 | <-------------> | 응용 계층 |
| (Application) | | (Application) |
+-------------------+ +-------------------+
| 6. 표현 계층 | | |
| (Presentation) | 통합됨 | |
+-------------------+ ---> | |
| 5. 세션 계층 | | |
| (Session) | | |
+-------------------+ +-------------------+
| 4. 전송 계층 | <-------------> | 전송 계층 |
| (Transport) | | (Transport) |
+-------------------+ +-------------------+
| 3. 네트워크 계층 | <-------------> | 인터넷 계층 |
| (Network) | | (Internet) |
+-------------------+ +-------------------+
| 2. 데이터 링크 계층 | <---------> | 네트워크 인터페이스|
| (Data Link) | 통합됨 | (Network Interface)|
+-------------------+ +-------------------+
| 1. 물리 계층 | | |
| (Physical) | | |
+-------------------+ +-------------------+
---
[ 주요 차이점 ]
1. OSI 모델:
- 총 7개의 계층으로 세분화.
- 세션 계층(5), 표현 계층(6), 응용 계층(7)을 독립적으로 나눔.
- 데이터 링크 계층(2)과 물리 계층(1)을 독립적으로 나눔.
2. TCP/IP 모델:
- 총 4개의 계층으로 단순화.
- 응용 계층: OSI의 응용 계층, 표현 계층, 세션 계층이 통합.
- 인터넷 계층: OSI의 네트워크 계층과 동일.
- 네트워크 인터페이스 계층: OSI의 데이터 링크 계층과 물리 계층을 통합.
3. 실질적인 사용:
- 현대 인터넷은 **TCP/IP 모델**을 주로 사용.
- OSI 모델은 개념적 모델로 주로 참고용.
---
[ 데이터 흐름 비교 ]
[ OSI 모델 ] [ TCP/IP 모델 ]
1. 응용 계층 (Application) 1. 응용 계층 (Application)
2. 표현 계층 (Presentation) 통합됨
3. 세션 계층 (Session) 통합됨
4. 전송 계층 (Transport) 2. 전송 계층 (Transport)
5. 네트워크 계층 (Network) 3. 인터넷 계층 (Internet)
6. 데이터 링크 계층 (Data Link) 4. 네트워크 인터페이스 계층
7. 물리 계층 (Physical) 통합됨
[ 데이터 전송 흐름: TCP/IP 모델 기반 ]
[ 데이터 전송측: 서버 컴퓨터 ] [ 데이터 수신측: 클라이언트 컴퓨터 ]
+----------------------+ +-------------------------+
| HTTP encoder | | HTTP decoder |
| [데이터: "Hello World"]| | [데이터: "Hello World"] |
| [상태코드: 500 추가] | | [상태코드: 500 확인]. |
+----------------------+ +--------------------------+
| ^
v |
+-------------------+ +-------------------+
| 4계층 encoder | | 4계층 decoder |
| [포트번호: 9000 추가] | | [포트번호: 9000 확인]|
+-------------------+ +-------------------+
| ^
v |
+-------------------+ +-------------------+
| 1-3계층 encoder | | 1-3계층 decoder |
| [프레임 추가 및 | | [프레임 제거 및 |
| 아날로그 변조] | | 디지털 복원] |
+-------------------+ +-------------------+
| ^
v |
[ 전선 ] ------------------------------------------> [ 전선 ]
(아날로그 신호 전송) (아날로그 신호 수신)
---
[ 전송 단계 요약: 서버 컴퓨터 → 클라이언트 컴퓨터 ]
1. **HTTP encoder**:
- 데이터: "Hello World"
- 상태코드: `500` 추가.
- 결과: `[상태코드: 500 | 데이터: Hello World]`
2. **4계층 encoder**:
- 포트번호: `9000` 추가.
- 결과: `[포트: 9000 | 상태코드: 500 | 데이터: Hello World]`
3. **1-3계층 encoder**:
- 프레임 추가 및 아날로그 변조.
- 결과: `[아날로그 신호로 변환된 데이터]`
4. **전송**:
- 아날로그 신호로 전선 통해 전송.
---
[ 수신 단계 요약: 클라이언트 컴퓨터 ]
1. **1-3계층 decoder**:
- 아날로그 신호 → 디지털 복원.
- 프레임 제거.
- 결과: `[포트: 9000 | 상태코드: 500 | 데이터: Hello World]`
2. **4계층 decoder**:
- 포트번호 확인.
- 결과: `[상태코드: 500 | 데이터: Hello World]`
3. **HTTP decoder**:
- 상태코드 확인.
- 최종 데이터: `"Hello World"`
---
[ TCP/IP 모델 계층 역할 ]
1. **응용 계층 (HTTP)**:
- 데이터 생성 및 상태코드 추가.
- 수신 측에서 상태코드 확인 및 데이터 추출.
2. **전송 계층**:
- 포트번호를 추가하여 프로세스 식별.
- 수신 측에서 포트번호 확인.
3. **인터넷 계층 및 네트워크 인터페이스 계층**:
- 데이터를 프레임으로 캡슐화하고 아날로그 신호로 변조.
- 수신 측에서 디지털 신호로 복원 및 프레임 제거.
Last updated