OSI 7 계층
오늘날 OSI Layer 7 Model 은 경쟁에 밀려 TCP/IP모델을 주로 사용하고 있으며 계층은 비슷하다.
TCP/IP Model | TCP/IP Model(Updated) | OSI Layer 7 Model |
---|---|---|
Application Layer | Application Layer | Application Layer |
Presentation Layer | ||
Session Layer | ||
Tranport Layer | Tranport Layer | Tranport Layer |
Internet Layer | Internet Layer | Network Layer |
Network Interface | Data Link Layer | Data Link Layer |
Physical Layer | Physical Layer |
L1. 물리 계층 - Physical Layer
디지털 신호(X)
Sender ➡️ 010101 ➡️ 🪒encoding ➡️ ⍽⍽⍽⍽⍽⍽ ➡️ 전선(X)
아날로그 신호(O)
Sender ➡️ 010101 ➡️ 🪒encoding ➡️ ~~~~~~ ➡️ 전선(O) ➡️ 🪒decoding ➡️ 010101 ➡️ receiver
두 대의 컴퓨터가 통신하려면?
- 모든 파일과 프로그램은 0과 1의 나열이다.
- 결국 0과 1만 주고 받으면 통신 성공
두 대의 컴퓨터가 통신하려면?
- 1을 보낼 때는 +5V 의 전기를 전선으로 흘려보내고
- 0을 보낼 때는 -5V 의 전기를 전선으로 흘려보내면
- 0과 1의 전송이 가능
0과 1을 주고 받을 수 있으면 두 대의 컴퓨터는 모든 데이터를 주고 받을 수 있다.
주파수와 파동
- 1초 당 주파수의 파동의 진동을 Hz라고 함
- 전선은 모든 주파수를 다 통과시키지 못함(전선 뿐만 아니라 모든 매질이 마찬가지)
- 전선의 대역폭에 따라 전자기파의 손상이 발생하여 데이터가 손상될 수 있음
- 0과 1을 대역폭(0~무한대Hz 주파수 범위)를 통과시킬 수 있는 전선은 없음
- 아날로그 신호로 변경해서 전송
- 수신하는 컴퓨터도 도 아날로그 신호로 수신하면 가능
- 0과 1을 대역폭(0~무한대Hz 주파수 범위)를 통과시킬 수 있는 전선은 없음
아날로그 신호
- Encoding
- 0과 1의 나열을 아날로그 신호로 바꾸어 전선으로 흘려 보냄
- Decoding
- 아날로그 신호가 들어오면 0과 1의 나열로 해석
물리 계층(Phisical Layer)이란?
- 물리적으로 연결된 두 대의 컴퓨터가 0과 1의 나열을 주고 받을 수 있게 해주는 하드웨어
- PHY 칩(하드웨어)에 구현되어 있음
L2. 데이터 링크 계층 - Data-Link Layer
Sender ➡️ 010101 ➡️ 🪒encoding ➡️ ~~~~~~ ➡️ 전선(O) ➡️ 스위치 ➡️ 🪒decoding ➡️ 010101 ➡️ Receiver
1계층인 물리계층의 기술만으론 여러대의 컴퓨터가 통신할 수 없다.
여러 대의 컴퓨터가 통신하려면?
- L1의 방식으로 전선을 물리적으로 연결하려면 물리적 한계와 비용이 많이 발생하게 된다.
전선 하나를 가지고 여러대의 컴퓨터와 통신하려면?
- 하나의 전선에 여러대의 컴퓨터를 연결한다.
- 결과적으로 아날로그 신호를 받을 수 있음
- 연결 된 다른 컴퓨터로 데이터를 전송 받게 되는 문제 발생
스위치
- 컴퓨터로서 연결된 컴퓨터에게 데이터를 전송할 때 다른 컴퓨터는 데이터를 읽지 못하도록 제어
[스위치] ↗️ ⬆️ ⬆️ ↖️ [com] [com] [com] [com]
대표적으로 Ethernet
라우터
- 스위치와 스위치를 연결해서 서로 다른 네트워크에 속한 컴퓨터끼리 통신이 가능하게 해주는 장비
[라우터] ↗️ ↖️ [스위치] [스위치] ↗️ ⬆️ ⬆️ ↖️ ↗️ ⬆️ ⬆️ ↖️ [com] [com] [com] [com] [com] [com] [com] [com]
- 라우터끼리 연결 가능
- 라우터는 우리가 잘 알고 있는 공유기에 해당
라우터는 스위치의 역할도 하고 있음 라우터와 라우터를 트리구조로 연결한다면 전세계가 연결 됨
이것을 인터넷이라고 함
끊어 읽기
- 여러대의 컴퓨터가 데이터를 동시에 보낸다면 데이터를 올바르게 수신하도록 처리가 필요
- Framing
- 송신 컴퓨터를 데이터의 앞 뒤에 특정한 비트열을 붙여서 보낸다.
- 수신 컴퓨터도 데이터의 앞 뒤의 특정한 비트열을 찾아 구분한다.
데이터 링크 계층(Data-link Layer)이란?
- 같은 네트워크에 있는 여러 대의 컴퓨터들이 데이터를 주고받기 위해서 필요한 모듈
- Framing은 Data-link Layer에 속하는 작업들 중 하나
- 랜카드에 구현되어 있음
L3. 네트워크 계층 - Network Layer
Sender 192.168.0.44[data] ➡️ Receiver 157.23.22.55[data]
더 많은 컴퓨터들 사이의 통신
- IP주소
- 각 컴퓨터들이 갖는 고유한 주소
- DNS를 통해 도메인은 IP주소로 변환되어 사용
- 패킷
- 전송할 데이터 + 목적지(IP)
네트워크 계층(Network Layer)이란?
- 수 많은 네트워크들의 연결로 이루어지는 inter-network 속에서
- 어딘가 있는 목적지 컴퓨터로 데이터를 전송하기 위해,
- IP 주소를 이용해서 길을 찾고(routing)
- 자신 다음의 라우터에게 데이터를 넘겨주는 것(forwarding)
- 운영체제의 커널에 소프트웨어적으로 구현되어 있음
L4. 전송 계층 - Transport Layer
Sender 192.168.0.44:443[data] ➡️ Receiver 157.23.22.55:443[data]
- 컴퓨터는 프로세스에게 전송 된 데이터를 전달해주어야 한다.
- TCP
- 주고 받는 사이에서 패킷이나 로스에 대해 보정
- UDP
- 단방향 전달
- 데이터 스트리밍
- TCP
- 포트 번호
- 하나의 컴퓨터에서 동시에 실행되고 있는 프로세스들이 서로 겹치지 않게 가져 가야하는 정수 값
- 데이터를 보낼 때
- 데이터를 받을 수신자 컴퓨터에 있는 프로세스의 포트 번호를 붙여서 보낸다.
전송 계층(Transport Layer)이란?
- Port 번호를 사용하여
- 도착지 컴퓨터의 최종 도착지인 프로세스 까지
- 데이터를 전송 하는 모듈
- 운영체제의 커널에 소프트웨어적으로 구현되어 있음
L1. Application Layer
HTTP response status code: 200
TCP/IP 소켓 프로그래밍(네트워크 프로그래밍)
- 운영체제의 Transport layer에서 제공하는 API를 활용해서 통신 가능한 프로그램을 만드는 것
- 소켓 프로그래밍만으로도 클라이언트, 서버 프로그램을 따로 만들어서 동작 가능
- 누구나 Application Layer Encoder, Decoder를 만들 수 있음
- 누구든 Application Layer Protocol을 만들 수 있음
대표적인 Application Layer의 Encoder, Decoder는 HTTP
- header
- body
- request
- response
- status code
- 누구든 Application Layer Protocol을 만들 수 있음
SMTP
- 메일
SSH
- 접속 규격
FTP
디자인 패턴 중 Layerd Architecture가 있음
Layerd Architecture의 대표적인 예가 네트워크 시스템
네트워크 시스템은 커다란 소프트웨어라고 할 수 있음
OSI7 Layer 모델은 거대한 소프트웨어 구조를 설명하는 것
댓글남기기