이번 포스팅에서는 컴퓨터 통신을 여러 단계로 나눈 OSI 7 Layer에 대해 다뤄보려고 합니다.
또한, OSI 7 Layer 를 점유율에서 이겨 실질적으로 사용하고 있는 모델인 TCP/IP 모델에서도 다뤄보겠습니다.
아래의 본문이 이해가 잘 안되시는 분들은 맨 아래 레퍼런스의 유튜브 링크를 보시는 것을 추천드립니다. (영상 속 설명이 너무 잘되어있네요)
OSI 7계층
- 통신이 이루어지는 과정을 7가지의 단계로 정의한 국제 통신 표준 규약
- 각 계층마다 수행하는 역할이 존재
- 각 계층은 독립되어 있어 용이성과 유지관리에 좋음
- 송수신에 따라 1계층에서 7계층. 7계층에서 1계층으로 흐를 수 있다.
(송신 시 : 7계층 → 1계층, 수신 시 : 1계층 → 7계층)
- 전체 구조
1계층 | 물리 계층(Physical Layer) |
2계층 | 데이터링크 계층(DataLink Layer) |
3계층 | 네트워크 계층(Network Layer) |
4계층 | 전송 계층(Transport Layer) |
5계층 | 세션 계층(Session Layer) |
6계층 | 표현 계층(Presention Layer) |
7계층 | 응용 계층(Application Layer) |
각 계층의 역할
1계층 : 물리 계층(Physical Layer)
- 데이터를 전기적인 신호로 변환해서 주고 받는 기능을 진행하는 공간
- 컴퓨터의 언어는 이진법(0과 1)으로 표현할 수 있는데, 전선을 통해서 통신을 하기 위해서는 전기 신호로 변경하는 것이 필요함. 이 기능을 물리 계층에서 담당.
- 데이터 송신 시 : 데이터를 전기적인 신호로 변환함(인코딩)
- 데이터 수신 시 : 수신받은 전기적인 신호를 데이터로 변환함(디코딩)
- 통신 케이블(유선 : UTP/STP, 무선 : 공기), 허브 등
2계층 : 데이터링크 계층(Physical Layer)
- 물리계층으로 송수신되는 데이터를 확인
- MAC 주소를 이용하여 통신한다. (MAC 주소 : 컴퓨터의 물리적 주소)
- 데이터에 구분자를 넣어줌
- 송수신된 데이터에 대해 오류 제어, 재전송, 흐름 제어, 프레이밍 등 진행
- 오류 제어 : 프레임 전송 시에 발생한 오류를 복원 or 재전송
- 접근 제어 : 통신 주체가 여럿 존재할 때, 데이터 전송 여부 결정
- 동기화 : 프레임 구분에 사용
- 흐름 제어 : 데이터를 주고 받을 때, 너무 많거나 너무 적지 않도록 흐름을 제어
- 프레이밍 : 데이터를 프레임이라는 틀로 인코딩 or 디코딩 (송신 시 인코딩, 수신 시 디코딩)
- 내 컴퓨터로 여러 컴퓨터가 동시에 데이터를 보낸다고 가정해보자.
- A라는 컴퓨터는 1010, B라는 컴퓨터는 0101을 나에게 동시에 보내면 10100101을 받는다. 이렇게 되면 데이터의 처음과 끝이 어딘지 모르기 때문에 처음과 끝을 정해줘야 한다.
- 이를 방지하기 위해 데이터의 시작과 끝 구분해야한다. 시작을 0000 끝을 1111이라고 가정한다면, A는 0000 1010 1111을 보내고 B는 0000 0101 1111을 보낸다. (프레임으로 인코딩)
- 내 컴퓨터에 수신된 데이터는 0000 1010 1111 0000 0101 1111 받게 되는데 시작과 끝의 신호를 이용해 데이터를 확인한다.
- 내 컴퓨터는 0000 1010 1111 0000 0101 1111 구분자를 제거해서 1010과 0101을 얻는다. (프레임에서 디코딩)
- 이렇게 데이터의 시작과 끝을 구분자를 넣은 것을 프레임이라고 하며, 프레임으로 만들고 분해하는 작업을 프레이밍 이라고 한다.
- 데이터 단위 : 프레임(Frame)
- 장비 : 브릿지, 스위치
3계층 : 네트워크 계층(Network Layer)
- 데이터를 목적지까지 안전하고 정확하게 전달하는 기능을 담당
- 데이터에 IP를 넣어줌
- 우리가 우편을 보낼 때, 상대의 주소를 적어주는 것과 같은 맥락
- 데이터에 IP를 넣어서 목적지의 주소를 알려줌
- 이를 패킷(Packet)이라고 함.
- 데이터 단위 : 패킷(Packet)
- 장비 : 라우터
MAC? IP?
- MAC : 컴퓨터 간 데이터를 전송하기 위해 있는 컴퓨터의 물리적 주소. 변하지 않는 주소(주민 번호와 같은 개념)
- IP : 인터넷에 연결되어 있는 모든 장치를 식별할 수 있도록 장비에게 부여되는 고유의 주소. 변할 수 있음(우편 번호와 같은 개념)
4계층 : 전송 계층(Transport Layer)
- 송수신할 데이터가 어느 포트로 들어가야하는 지 알려주는 기능을 담당
- TCP와 UDP을 이용하여 통신을 활성화 한다.
- TCP
- 연결지향적 프로토콜
- 연결하고 연결해제하는 과정이 있어 UDP 보다는 속도가 느리지만, 연결을 하기 때문에 신뢰성이 높음
- 신뢰성이 중요한 파일 전송과 같은 곳에서 사용
- UDP
- 비연결형 프로토콜로 속도가 빠름
- 연결이라는 개념이 없기 때문에 TCP보다 빠르지만, 신뢰성이 낮음
- 연속성이 중요한 스트리밍과 같은 서비스에서 사용
- 데이터에 Port 정보를 넣어줌
- 실행중인 프로그램이 여러 개가 있을 때, 어느 프로그램에 데이터를 보내줘야할 지를 정해줘야함.
- 각 프로그램은 고유의 포트를 가지고 있는데, 이 포트 정보를 데이터에 넣어줘서 어느 프로그램으로 가야할 지를 알려줌
- MAC주소가 주민번호, IP주소가 우편 번호라면 Port정보는 몇 호인지 알려주는 거와 같은 맥락
5계층 : 세션 계층(Session Layer)
- 통신 시스템 사용자 간의 연결에 대한 설정을 진행
- 데이터가 통신하기 위한 논리적 연결을 담당
6계층 : 표현 계층(Presention Layer)
- 데이터에 대한 암호화, 포장, 압축, 인코딩을 진행한다.
- 세션 계층 간 주고받는 인터페이스를 일관성 있게 제공
7계층 : 응용 계층(Application Layer)
- 최종 목적지로 프로그램과 직접 일반적인 응용서비스를 수행
- 사용자 인터페이스, 전자우편, 데이터베이스 관리, 파일 전송 등의 서비스 제공
ex) HTTP, SMTP, FTP 등
OSI 7 Layer VS TCP/IP Model
- 현대의 인터넷은 OSI 7 Layer가 아닌 TCP/IP Model을 따르고 있음
- TCP/IP Model이 시장 점유율에서 이겼기 때문
- TCP/IP Model로 넘어오면서, 계층들이 합쳐짐
- 대부분은 업데이트된 TCP/IP Model을 사용중
Reference
https://jungeun960.tistory.com/m/181
'etc' 카테고리의 다른 글
[Design Pattern] 디자인 패턴이란? (0) | 2022.03.29 |
---|---|
API vs Library vs Framework (0) | 2022.03.28 |
[개인 메모] packer (0) | 2022.03.25 |
[CS 공부] Network (0) | 2022.03.20 |
[AWS] 8080포트 접속 시, 로그인 화면이 나타나는 경우 (0) | 2022.01.19 |