1. OSI 7Layer이란?
서로 다른 두 기종간에 메세지를 주고받을 수 있는 이유는 통신 방식에 대한 약속(프로토콜)이 있었기 때문이며, 여기서 프로토콜의 3요소는 의미, 형식, 순서이다.
OSI는 Open System Interconnection의 약자로 열린 시스템 상호연결이라는 뜻이다.
그리고 OSI 7Layer은 기종간의 통신이 일어나는 과정을 7계층으로 나눈 것 또는 통신에 필요한 약속인 프로토콜들을 이 7개의 계층별로 정리해 둔 참조 모델이라고 설명할 수 있다.
이렇게 계층을 나누게 되면 네트워크 장애가 발생했을 때, 문제가 발생한 계층을 쉽게 확인하여 Trouble Shooting을 할 수 있다.
2. 계층
1) Application
- 응용 프로그램과 직접 관계하는 계층
- 사용자의 입출력 부분
2) Presentation
- 데이터의 형식을 구분 또는 결정해주는 계층
- 압축 및 암호화(encoding, decoding)을 담당
3) Session
- 통신하는 사용자들을 동기화해주는 계층
- TCP/IP 세션의 생성/유지/종료/복구(전송 중단)의 역할
- 동시 송수신 방식(duplex), 반이중 방식(half-duplex), 전이중 방식(Full Duplex)의 통신을 수행
4) Transport
- 종단간의 통신을 다루는 최하위 계층
- 주로 TCP, UDP 프로토콜을 이용
※ TCP : 가상연결 방식을 사용하여 패킷의 loss 없이 순서를 보장해주는 신뢰성을 보장함
※ UDP : 패킷의 수신 여부와 순서를 신경쓰지 않고 데이터만 전달함. 패킷은 최적의 경로를 선택하기 때문에 속도가 빠르며, 실시간 통신에 사용됨
- 오류검출 및 복구, 흐름제어, 중복검사 수행
- Port를 열어서 응용프로그램들이 전송을 할 수 있게 함
5) Network
- 패킷이 여러개의 노드를 거칠때마다 경로를 찾아주는 라우팅(Routing) 역할을 하는 계층
- 흐름제어, 오류제어, Internetworking, Segmentation
- 변경이 가능한 논리적 주소인 IP를 부여
※ Segmentation : 전송 계층으로부터 받은 Segment를 더 작은 패킷으로 나누는 과정
6) DataLink
- 인접 노드까지의 전송을 담당하는 계층
- 물리계층을 통해 송수신되는 정보의 오류와 흐름을 관리 -> 신뢰성
- 변경이 불가능한 물리적 주소인 MAC을 부여
- 재전송, 흐름제어
- point to point 전송
- 대표적인 장비로 브리지, 스위치가 있음
7) Physical
- 전기적, 기계적, 기능적인 특성을 이용하여 통신 케이블로 데이터를 주고받기만 하는 계층
- 통신 단위는 0과 1로 이루어진 bit
- 대표적인 장비로 리피터, 허브가 있음
3. 헤더와 캡슐화
데이터를 보낼 때는 하위 계층을 거칠 때마다 헤더를 붙이며, 이 과정을 Encapsulation이라고 한다.
그리고 데이터를 받을 때는 상위 계층을 거칠 때마다 헤더를 떼어내며, 이 과정을 De-encapsulation이라고 한다.
각 계층의 데이터 통신 단위를 PDU(Protocol Data Unit)라고 하며, 각 계층의 PDU는 다음과 같다.
Application(7), Presentation(6), Session(5) : Data
Transport(4) : Segment
Network(3) : Packet
DataLink(2) : Frame
Physical(1) : Bit
4. 통신 과정 예시 - 카카오톡 메세지 전송
출처 : https://duni-world.tistory.com/18
1) 카카오톡 메세지를 입력하고 전송(Application)
PDU => 데이터
2) 카카오톡 프로그램이 메세지 압축, 암호화 등을 수행(Presentation)
PDU => + 암호화정보, 압축정보(표현층 헤더)
3) 수신 카카오톡 프로그램과 세션을 어떻게 설정할지 결정(Session)
PDU => + 세션정보(세션층 헤더)
4) 수신 기기에 도착했을때 카카오톡 프로그램에 보낼것이라 지정하고, 그 과정까지의 제어정보를 추가(Translation)
PDU => + 카카오톡포트번호, 제어정보(전송층 헤더)
5) 수신 기기 IP 주소를 정하고, 그 과정까지의 제어정보를 추가(Network)
PDU => + IP주소, 제어정보(네트워크층 헤더)
6) 수신 기기까지의 노드들 중 인접노드의 MAC(물리주소)를 정하고, 그 과정까지의 제어정보를 추가(Datalink)
PDU => + MAC, 제어정보(데이터링크층 헤더)
7) 전송시 물리적인 특성을 결정(Physical)
PDU => + 물리층 헤더
8) 수신 기기가 있는 목적지에 도착할 때까지 Physical - DataLink - Network - DataLink - Physical 반복
9) 수신 기기에 도착한 물리층 데이터에서 헤더를 제거한 뒤에 DataLink 계층으로 올림(Physical)
10) 인접 노드에서 올바르게 왔는지 검사하고 헤더를 제거한 뒤에 Network 계층으로 올림(DataLink)
11) IP와 Segmentation 정보를 확인하고 헤더를 제거한 뒤에 Transport 계층으로 올림(Network)
12) 전송제어 정보와 포트 번호를 확인하고 헤더를 제거한 뒤에 Session 계층으로 올림(Transport)
13) 세션제어정보를 확인하고 헤더를 제거한 뒤에 Presentation 계층으로 올림(Session)
14) 압축을 풀거나 복호화를 하고 헤더를 제거한 뒤에 응용층으로 올림(Presentation)
15) 도착한 메세지를 카카오톡 프로그램에서 사용자가 확인(Application)
'IT 상식' 카테고리의 다른 글
HTTP Cache 기초 (0) | 2021.12.25 |
---|---|
REST API란? (0) | 2021.05.03 |
Domain/DNS/Port/Internet(ip) (0) | 2021.03.27 |
메모리의 구조 (0) | 2021.03.12 |
HTTP/HTTPS와 SSL이란? (0) | 2021.03.12 |
댓글