저번 포스팅에서 말했듯 데이터 통신에는 표준화된 어떤 약속 혹은 절차
가 필요하다. 데이터라는 아주 긴 전기 신호가 그냥 전달되는 것이 아니다.
보내는 쪽(샌더)에서는 데이터를 안전하고 정확하고 신속하게 규격화하는 방법이 필요하고, 받는 쪽(리시버)에서는 받은 데이터를 안전하고 정확하고 신속하게 해석하는 방법이 필요하다.
그런 기술적인 약속을 프로토콜
이라고 한다. 네트워크를 공부한다는 것은 많은 프로토콜을 학습한다는 것과 마찬가지이다.
우리가 편지를 보낼 때 편지를 우체통에 넣으면(Higher layer)
우체부가 편지를 수거해 간 후(Middle layer)
우체국에서 각 지역으로 보낸다(Lower layer)
.
그 다음 그 지역 우체국에서 우체부들에게 다시 편지를 분배한 후(Lower layer)
우체부가 편지를 우편함에 넣으면(Middle layer)
받는 사람은 편지를 집어가 읽으면 된다(Higher layer)
.
편지를 보낼 때 우체부가 무슨 일을 하는지나 우체국에서 어떻게 편지를 처리하는지 알아야 편지가 잘 도착하는 것은 아니다. 각 레이어에서 자기가 맡은 일만 하면 편지가 잘 도착하는 것이다.
네트워크도 마찬가지이다. 데이터를 보낼 때의 과정이 레이어로 나뉘어 있고, 각 레이어에서 맡은 일을 잘 하면 데이터가 목적지에 잘 도착한다.
편지를 보내는 것처럼 네트워크 통신을 계층화한 것이 바로 이 다음 항목에서 설명할 OSI, TCP/IP 모델이다. OSI가 국제 표준 모형이지만 오늘날 TCP/IP가 더 일반적으로 사용되며 TCP/IP는 OSI 모델에서 5, 6, 7계층을 하나로 묶은 것이라고 생각하면 쉽다.
계층구조(Layered)는 네트워크 뿐만 아니라 운영체제 등 다양한 분야에서 적용되는데, 이것이 사용되는 목적은 바로 분할 정복(Divide and Conquer)
이다. 편지 예시를 떠올리면 이해가 쉽다.
계층 구조의 특징 중 하나는 위, 아래 층으로만 이동할 수 있다는 점이다. 건너뛰어 한번에 맨 위 또는 맨 아래로 갈 수 없다. 다시 말해 다음 단계로 넘어가려면 이전 계층이 전제조건
이 되어야 한다.
OSI 7 layer은 네트워크 통신 과정을 7개의 계층으로 구분한 산업 표준 참조 모델이다. 초창기 네트워크는 각 컴퓨터마다 시스템이 달랐으므로 하드웨어와 소프트웨어의 논리적인 변경 없이 통신할 수 있는 표준 모델로 만들어졌다.
물리 계층은 OSI 모델의 최하위 계층에 속하며, 상위 계층에서 전송된 데이터(전기 신호)를 물리 매체(허브, 라우터, 케이블 등)을 통해 다른 시스템에 전송하는 역할을 한다.
기계어를 전기 신호로 바꾸어 전송하는 계층
이다.
링크 계층은 네트워크 기기들 사이의 데이터 전송을 담당한다. 시스템 간 데이터 전송에 오류가 없도록, 패킷을 프레임
으로 구성하여 물리 계층으로 전송한다. 데이터가 전송되는 구간들을 지나며 에러탐지와 흐름제어를 해 주는 것이다.
또한 3계층에서 정보를 받아 주소와 제어정보를 헤더와 테일에 추가한다.
물리적 매체에 패킷 데이터를 실어 보내는 계층
이다. (환경에 맞는 다양한 통신 프로토콜 지원)
네트워크 계층은 기기에서 데이터그램(Datagram)이 가는 경로를 설정하는 역할을 한다. 이를 라우팅이라 한다. 알고리즘을 사용해 최적의 경로를 선택하고 송신측으로부터 수신측으로 전송한다. 이때 전송되는 데이터는 패킷
단위로 분할하여 전송된 후 다시 합쳐진다.
2계층이 노드 대 노드 전달을 감독한다면, 3계층은 각 패킷이 목적지까지 성공적이고 효과적으로 전달되도록 한다.
네트워크를 논리적으로 구분하고 연결하는 계층
이다. (논리적 주소 사용)
발신지에서 목적지(End-to-End, 종단) 간 제어와 에러를 관리한다. 패킷의 전송이 유효한지 확인하고 전송에 실패한 패킷을 다시 보내는 것과 같은 신뢰성 있는 통신을 보장한다. 주소 설정, 에러 및 흐름제어, 다중화를 수행한다. 헤더에는 세그먼트
가 포함된다.
전송 계층의 예 중에서 가장 잘 알려진 것이 전송 제어 프로토콜(TCP)이다. TCP는 인터넷 프로토콜(IP) 위에 구축되는데 흔히 TCP/IP로 알려져 있다. 기기의 IP 주소가 여기서 작동한다.
서비스를 구분하고 데이터의 전송 방식을 담당(TCP, UCP)하는 계층
이다.
2대의 기기, 컴퓨터 또는 서버 간 통신 세션을 구성하는 계층으로, 포트(Port)
번호를 기반으로 연결한다. 통신 장치 간 상호작용을 설정하고 유지하며 동기화한다. 동시송수신(Duplex), 반이중(Half-Duplex), 전이중(Full-Duplex) 방식의 통신을 수행하며, 체크 포인팅과 유휴, 종료, 다시 시작 등의 기능도 필요하다.
응용 프로그램 간의 연결을 지원해주는 계층
이다.
표현 계층은 송신측과 수신측 사이에서 데이터의 형식(png, jpg, jpeg...)을 정해준다.
일반적으로 응용프로그램 형식을 준비 또는 네트워크 형식으로 변환하거나 네트워크 형식을 응용프로그램 형식으로 변환하는 것을 나타낸다. 다시 말해 이 계층은 응용프로그램이나 네트워크를 위해 데이터를 표현
하는 것이다. 받은 데이터를 코드 변환, 구문 검색, 암호화, 압축의 과정을 통해 올바른 표준방식으로 변환한다.
데이터의 변환 작업을 하는 계층
이다.
응용 계층은 사용자와 바로 연결되어 있으며 응용 SW를 도와주는 계층이다. 사용자와 직접 상호작용하며 사용자로부터 정보를 입력받아 하위 계층으로 전달하고 하위 계층에서 전송한 데이터를 사용자에게 전달한다.
파일 전송, DB, 메일 전송 등 여러가지 응용 서비스를 네트워크에 연결해주는 역할을 한다.
구글 크롬(Google Chrome), 파이어폭스(Firefox), 사파리(Safari) 등 웹 브라우저와 스카이프(Skype), 아웃룩(Outlook), 오피스(Office) 등의 응용 프로그램이 대표적이다.
User Interface를 제공하는 계층
이다.
PDU란?
OSI 7계층에서는 PDU 개념을 중요시하는데, PDU(Process Data Unit)란 각 계층에서 데이터가 전송되는 단위이다.PDU는 2계층-프레임(Frame), 3계층-패킷(Packet), 4계층-세그먼트(Segment) 만 생각하면 된다. 네트워크 통신과정을 깊게 이해하기 위해서는 왜 각각의 계층의 PDU가 다른지 알아야 하고, 역할에 대해 알고 있어야 한다.
OSI 참조 모델은 말그대로 참조 모델일 뿐 실제 사용되는 인터넷 프로토콜은 7계층 구조를 완전히 따르지는 않는다. 인터넷 프로토콜 스택(Internet Protocol Stack)은 현재 대부분 TCP/IP를 따른다.
TCP/IP는 인터넷 프로토콜 중 가장 중요한 역할을 하는 TCP와 IP의 합성어로 현재의 인터넷에서 컴퓨터들이 서로 정보를 주고받는데 쓰이는 통신규약(프로토콜)의 모음이다.
하드웨어, 운영체제, 접속매체에 관계없이 동작할 수 있는 개방성을 가지며 데이터의 흐름 관리, 정확성 확인, 패킷의 목적지 보장을 담당한다.
데이터의 정확성 확인은 TCP가, 패킷을 목적지까지 전송하는 일은 IP가 담당한다.
TCP는 연결형 서비스를 지원하는 프로토콜로 인터넷 환경에서 기본으로 사용한다.
이 말을 들으면 다음과 같은 생각이 떠오를 수 있다. 비연결형인 서비스가 존재하는 건가? 그리고 TCP와 달리 UDP는 왜 기본으로 사용되지 않지?
그것은 TCP와 UDP가 각각 다른 특성을 가지고 있기 때문인데 요건 구글에 찾아보기로,,,
데이터는 위와 같이 단계별로 헤더(Data → Segment → Datagram → Frame)를 붙여 전송하며 이를 데이터 캡슐화라고 한다.
[OSI 7계층, TCP/IP 4계층] 네트워크의 기본 계층 구조
https://ryusae.tistory.com/4
OSI 7 계층과 TCP/IP 계층
https://velog.io/@inyong_pang/OSI-7-계층과-TCPIP-계층
네트워크 계층구조 - OSI모델, TCP/IP에 대해 알아보자
https://blog.naver.com/ljh0326s/220846406187
"데이터가 전달되는 원리" OSI 7계층 모델과 TCP/IP 모델
https://velog.io/@hidaehyunlee/데이터가-전달되는-원리-OSI-7계층-모델과-TCPIP-모델