-
[Network] 네트워크 통신의 기본 구조 ( OSI 7 Layer, TCP/IP)Network Basis 2021. 3. 2. 17:51
# OSI 모델 (Open Systems Interconnection)
- 1982년경, 네트워크 아키텍처를 하나로 통일하고자 만든 네트워크 표준규격
- 너무 복잡해서 현재 사용되지 않지만, 네트워크 기능 분석, 설계 및 학습에 널리 사용되는 중
# OSI 7 Layer (OSI 참조모델)
# Data Flow Layers
1. Physical Layer (OSI) - 하드웨어 단
0과 1의 나열을 아날로그 신호(전자기파)로 바꾸어 전선(물리적연결)으로 흘려보내고(Encoding)
아날로그 신호(전자기파)를 0과 1로 해석하여 (Decoding)
물리적으로 연결된 두 대의 컴퓨터가 0과 1을 주고받을 수 있게하는 계층
- 네트워크 통신을 위한 물리적인 표준 정의
- 두 컴퓨터 간 기계적인 연결을 정의
* 케이블종류, 데이터 송수신 속도, 신호의 전기전압 등
- Physical 계층 장비 : Hub, Repeater
2. Data Link Layer (OSI)
직접연결된 서로 다른 2개의 네트워크 장치(보통 가정컴퓨터에서는 라우터 -> 랜카드)간 전송을 담당하는 계층
(이를 위해 MAC Address와 같은 추가정보를 데이터에 추가한다.)
[Data Link 계층의 프로토콜, MAC]
동시에 여러데이터들이 도착했을 때, 어떻게 읽어야하는지도 정의해야함
물리적회선으로 직접연결된 컴퓨터간 동시에 보내야한다면 누가 먼저 보낼지도 정해야한다.
(신호충돌이 날 수 있으니..)
랜카드에 구현되어있다.
아래 그림과 같이 목적지에 도착하기 전에는 라우터간 데이터 전송은
Data Link 계층의 프로토콜(정보)로만 확인하여 목적지까지 보낸다.# 물리적 네트워크의 연결
더보기여러대의 컴퓨터의 통신에서 각 컴퓨터간 전선을 모두 연결하는것은 비용적인 측면에서 바람직하지 않다.
따라서 하나의 큰 파이프라인(메인 구리선)을 두고 각 가정으로 전선 한개씩만 배치하는 방법을 채택한다.
전자기파를 전선으로 흘려보내면, 메인파이프라인에 연결된 모든 컴퓨터로 전자기파가 발송될 수 있는데,
이를 제어하여 특정 컴퓨터에게만 전자기파를 보낼 수 있게 제어하는 작은 컴퓨터를 스위치(Switch)라고 한다.
또한, 하나의 스위치로 구성된 전선들의 집합을 네트워크라 칭하며, 인트라넷이라 칭한다.
서로 다른 스위치간의 통신을 위해선 또 다른 전선의 연결이 필요하며,
연결된 전선에서 또 전자기파를 관리하는 장치를 라우터(Router)라 칭한다.
스위치+라우터 의 기능을 탑재한 작은 컴퓨터를 L3 스위치(=공유기)라 칭한다.
공유기(L3 스위치) 끼리 계속 연결하다보면 하나의 거대한 네트워크가 형성되며 이를 인터넷이라 한다.
나라간의 네트워크를 이어주는 전선은 해저케이블이다.
- 하위 계층인 Physical Layer를 사용한 데이터 전송에 신뢰성을 제공
* 하드웨어 주소(MAC, 물리적주소) 지정, 네트워크 토폴로지, 오류통지, 데이터프레임의 순차적 전송, 흐름 제어등
- Local Network에서 데이터(Frame)를 안전하게 전송하는 것을 목적으로 한다.
* PDU(Protocol Data Unit)
> 데이터의 조각, 하드웨어 수준에서는 Frame, 소프트웨어 수준에서는 Packet 이라 칭한다.
> 하나의 컴퓨터로 여러네트워크에서 데이터가 도착할 수 있는데, 이를 끊어읽기 위한 작업을 Framing이라 지칭한다.
(앞뒤로 구분자를 붙이다던가.. 이 역시 Encoding 의 범주에 속한다.)
- 직접 연결되어 있는 컴퓨터 간의 통신을 담당한다.
- Data Link 계층 장비 : Switch, Bridge
3. Network Layer (OSI)
수 많은 네트워크의 연결들 속에서 목적지 컴퓨터로 데이터를 전송하기 위한 로직을 정의하는 계층
IP 주소를 이용하여 길을 찾아(Routing) 자신 다음의 라우터에게 데이터를 넘겨주는 행위(fowarding)를 담당하는 계층
(IP주소를 삽입/제거 하는 Encoder, Decoder 필요)
OS 커널(소프트웨어)에 구현되어 있다.
* [패킷] : 1,2 레이어를 통과하기 위한 데이터에 IP 주소를 추가한 객체
- 논리적주소(IP)를 담당하고 패킷의 이동경로를 결정
- 경로 선택, 라우팅, IP를 정의하는 계층
* 라우팅(routing)
> 패킷을 중계해서 소정의 방향으로 전송하는 것
* 논리적주소(IP)
> 하위 계층인 Data Link가 무슨 프로토콜을 사용하던지 상관 없도록,
하드웨어 주소(MAC)와는 무관하게 접속한 네트워크에서 컴퓨터를 하나하나 식별할 수 있게끔 하는 주소
* IPv4(IP version 4), IPv6(IP version 6) 이 주로 사용되고 있다.
- Network 계층 장비 : Router
4. Transport Layer (OSI)
컴퓨터에 도착한 데이터들을 어느 프로세스에게 주어야할지 결정하는 계층
(포트번호를 사용하여 도착지 컴퓨터의 프로세스에게 데이터가 도달하게하는 모델)
송신자는 데이터에 수신자의 IP(Network Layer)와 프로세스의 포트번호(Transport Layer)를 붙여서 전달한다.
(Port 번호를 삽입/제거 하는 Encoder, Decoder 필요)
OS 커널(소프트웨어)에 구현되어 있다. (TCP/UDP)
* 데이터를 받고자하는 프로세스는 포트번호를 가져야한다.
- 데이터를 분할하고, 상대방에게 도달하기 전 다시 합치는 과정을 담당
- 목적지와 발신지간의 통신에 있어 Error Control과 Flow control을 담당한다.
- 데이터의 전송방식을 결정하며, 포트번호(Port Number) 또한 이 층에서 담당한다.
* 전송방식
> TCP : 데이터를 보내기전 연결 후 데이터 전송, 신뢰도가 높음 (데이터의 신뢰도를 위해, 재전송이나 패킷 순서 재배치등을 한다)
> UDP : 연결 유지 없이 데이터 전송, 신뢰도가 낮으나 전송속도는 빠름 (실시간 성격이 강한 중계나, 전화등에 쓰인다)
# OSI 모델 vs TCP/IP 모델
공통점은 OSI의 4계층까지는 같다는 것 (이름은 다름)
차이점은 OSI 5~7계층이 하나의 계층인 Application Layers로 합쳐짐
* TCP/IP 소켓프로그래밍(=네트워크 프로그래밍)
OS의 Transport Layer 에서 제공하는 API로 통신가능한 프로그램을 만드는 것
자신만의 Application Layer 의 인코더와 디코더를 만들 수 있다. (자신만의 App layer protocol 을 만들 수 있다.)
HTTP 또한 Application Layer 의 프로토콜 이다.
# Application Layers
데이터를 더욱 더 추가된 조건속에서 데이터를 송수신 할 수 있도록 하는 계층
HTTP 프로토콜을 예로 들자면, [Header, Content-Type, Status-Code 등]
(이러한 추가정보를 삽입/제거 하는 Encoder, Decoder 필요)
5. Session Layer (OSI)
- 네트워크 상에서 통신을 할 때, 양쪽 host 간에 최초 연결이 되게 하고, 통신 중 연결이 끊어지지 않도록 유지시켜주는 역할을 담당
- 통신을 하는 두 host들 사이에 세션을 열고, 닫고, 관리하는 기능을 담당
6. Presentation Layer (OSI)
- 전송하는 데이터의 Format을 결정하는 역할
- 다양한 데이터의 Foramt을 일관되게하고, 상호 변환, 압축, 암호화, 복호화 등을 수행
ex) ASCII, GIF, JPEG, AVI, MPEG
7. Application Layer
- 사용자 인터페이스의 역할을 담당
ex) Internet Explorer, Chrome, FireFox
- 애플리케이션 숫자만큼 다양한 프로토콜이 쓰인다.
# 대표적인 프로토콜
HTTP (Web접속, 모바일 애플리케이션 통신등)
SMTP (메일송신, 서버간의 전송등)
POP3 (메일함에서 메일을 꺼냄)
IMAP4 (메일함의 메일을 읽음)
FTP (파일을 전송)
DNS (도메인명과 IP 주소를 상호변환)
NTP (각 컴퓨터의 시간을 동기화한다)
# Reference
https://jhnyang.tistory.com/403
2. 그림으로 배우는 네트워크 구조
3. 히히님의 테코톡
728x90'Network Basis' 카테고리의 다른 글
[Network] SOP 와 CORS Policy (0) 2021.12.01 [Network] DNS란? (0) 2021.11.03 [Network] 윈도우에서 nginx 가 실행되지 않아요! & 윈도우에서 사용 중 포트 종료시키기 (0) 2021.04.12 [Network] TCP 프로토콜의 통신절차(TCP 패킷사이즈, TCP Flags, 3-way handshake, 4-way handshake) (0) 2021.03.03 [Network] TCP/IP 기본용어 정리(IP주소, 서브넷마스크, 기본 게이트웨이, Ethernet) (0) 2020.11.19