1. 프로토콜(Protocol)
프로토콜은 컴퓨간의 통신을 위해서 지키기로한 규약이다. 과거의 네트위크는 느린 속도를 이용해서 최대한 효율적으로 통신하는 것이 목표였습니다. 그렇다 보니 대부분의 프로토콜 처럼 문자 기반이 아닌 2진수 기반으로 만들어졌습니다. 최소한의 비트로 내용을 전송하기 위해서는 약속을 철저하게 지켜야 했습니다. 애플리케이션 레벨은 프로토콜은 비트 기반이 아닌 문자 기반 프토콜이 많이 사용되고 있습니다. HTTP, SMTP 등이 있습니다. 문자를 이용해서 헤더와 헤더 값, 데이터를 표현하고 전송합니다.
TCP/IP는 프로토콜이라 부르지 않고, 프로토콜 스택이라고 부릅니다. TCP와 IP는 다른 계층에서 동작하는 프로토콜이지만 함께 사용되고 있다. 이런 묶음을 프로토콜 스택이라고 한다.
2. OSI 7계층, TCP / IP 모델
OSI 7계층은 네트워크의 통신에서 일어나는 과정을 7단계로 나눈것이다. 7계층을 다시 2계층으로 나눌 수 있다. 1~4계층 까지를 데이터 플로계층(하위계층) 그리고 5~7계층을 애플리케이션 계층(상위 계층)으로 나뉜다. 각 계층마다 역할과 목표는 다르다. 상위 계층은 데이터를 만드는 애플리케이션 계층이고 하위계층은 만들어진 데이터를 잘 전달하는것을 집중하고 있다.
반면에 TCP / IP모델은 4계층으로 구분이 된다. 7계층에서의 상위 계층을 하나의 애플리케이션 계층으로 묶고, 물리계층과 데이터 링크 계층을 묶어서 하나의 네트워크 계층으로 묶었다. TCP / IP는 OSI 모델을 기반으로 실무적으로 이용할 수 있도록 설계되었다.
3. OSI 7모델의 각 계층
1계층 물리계층 (Physical Layer)
이름 그대로 물리적 연결과 관련된 정보를 정의한다. 주로 전기 신호를 전달하는 데 초첨이 맞추어져 있다. 1계층에서는 허브, 케이블, 커넥터 등 네트워크 장비를 통해 들어온 전기신호를 잘 전달하는 것이 목적이다. 1계층 장비의 경우에는 주소의 개념이 없기 때문에, 전기 신호가 들어온 포트를 제외하고 모든 포트에 같은 전기를 전송한다.
2계층 데이터 링크 계층 (Data Link Layer)
전기 신호를 모아서 알아볼 수 있는 데이터의 형태로 처리한다. 주소 정보를 정의하고 정확한 주소로 통신이 되도록 한다. 1계층과는 달리 출발지와 도착지 주소를 확인하고 나에게 보내진 것이 맞는 지, 내가 처리해야하는 지를 확인하고 처리를 수행한다. 2계층에서는 여러 통신이 한꺼번에 이루어 지는 것을 일일이 구분하는 기능을 주로 한다. 또한 전기 신호를 데이터 형태로 처리하기 때문에 데이터에 대한 에러를 확인하고 고치는 역할도 수행할 수 있다.
2계층은 네트워크 인터페이스카드, 스위치로 구성하고 가장 중요한 것은 MAC 주소라는 체계가 있다. 네트워크 인터페이스 카드에는 고유한 MAC주소가 있다. 입력되는 전기 신호를 데이터 형태로 만들고, 데이터에서 도착 MAC주소를 확인하고 자신에게 들어오는 신호가 맞는지 확인한다. 자신에게 오는 것이 맞으면 처리하고, 아니면 버린다.
3계층 네트워크 계층 (Network Layer)
IP주소 와 같은 논리적인 주소가 정의된다. 데이터 통신을 할 때, 두가지 주소가 사용된다. 물리적인 MAC주소와 논리적인 IP주소이다. IP주소는 사용자의 환경에 맞게 사용할 수 있고 네트워크 주소 부분과 호스트 주소부분으로 나뉘어져 있다. 3계층은 라우터 장비를 사용한다. 라우터는 IP 주소를 이해할 수 있다. IP주소를 사용해서 경로를 찾아주고 패킷을 전송하는 역할을 한다.
4계층 전송 계층 (Transport Layer)
실제로 전송되는 데이터들이 정상적으로 잘 보내지는지 확인하는 역할을 한다. 데이터를 분할해 패킷에 실게 된다. 그러다보니 중간에 유실되거나, 순서가 바뀌는 경우가 생길 수 있다. 이 문제를 해결하기 위해서 바로잡아주는 역할을 4계층에서 한다. 패킷을 분할할 때 패킷 헤더에 보내는 순서와 받는 순서를 적어 통신한다. 패킷이 유실되면 재전송을 요청할 수 있고 순서가 뒤바뀌더라도 바로잡을 수 있다. 패킷에 보내는 순서는 시퀀스 번호에 나와있고, 받는 순서를 나타내는건 ACK번호이다. 4계층에서 동작하는 장비는 로드밸런서와 방화벽이 있다.
5계층 세션 계층 (Session Layer)
세션계층은 연결을 성립하도록 도와주고 연결이 안정적으로 유지되고 관리하고 작업이 끝난 후에는 연결을 끊는 역할을 한다. 에러로 중단된 통신에 대하여 에러 복구와 재전송도 수행한다.
6계층 프레젠테이션 계층 (Presentation Layer)
표현 방식이 다른 애플리케이션이나 시스템 간의 통신을 돕기 위해 하나의 구문으로 형식으로 변환시키는 기능을 수행한다. 암호화, 압축, 코드 변환과 같은 동작이 이루어집니다.
7계층 애플리케이션 계층 (Application Layer)
애플리케이션 계층은 애플리케이션 서비스를 수행합니다. 소프트웨어의 UI부분이나 사용자 입출력 부분을 정의하는 기능을 수행합니다.
4. 인캡슐레이션 디캡슐레이션
상위 계층에서 데이터를 하위 계층으로 보냅니다. 물리계층에서는 전기 신호 형태를 통해 네트워크로 신호를 보냅니다. 반는 쪽에서는 하위 계층에서 상위 계층으로 데이터를 보냅니다.
보내는 쪽: 상위 계층 - 데이터 -> 하위 계층 - 전기 신호 -> 네트워크 통신
네트워크 통신 -> 하위계층 - 데이터 -> 상위계층 : 받는 쪽
데이터를 보내는 과정을 인캡슐레이션, 받는 과정을 디캡슐레이션이라고 부른다. 현재의 네트워크는 패킷(네트워크를 통한 전송의 기본단위) 기반 네트워크이다. 데이터를 패킷으로 쪼개고 네트워크를 이용해 받는 쪽에서는 패킷을 데이터 형태로 결합해서 사용한다.
애플리케이션 계층에서 데이터를 데이터 플로 계층으로 내려보내면서 패킷에 데이터를 넣을 수 있도록 분할한다. 이 과정을 인캡슐레이션이라고 한다. 4계층 부터는 전송을 위한 정보를 위해서 헤더에 붙여 넣는다. 헤더정보는 4, 3, 2계층에서 각각 필요한 정보를 추가한다. 데이터 플로 계층에서는 3개의 헤더정보가 추가된다.
반대로 받는 쪽은 디캡슐레이션이 진행된다. 전기신호를 받아서 2계층으로 간다. 2계층에서 송신자의 2계층 헤더를 확인하고 목적지가 자신에게 온것이 아니면 버린다. 3계층으로 올리기 전에 2계층 헤더는 필요 없기 때문에 떼어내고 다음계층으로 보낸다.
헤더에는 반드시 두가지가 포함이 되어야 한다. 현재 계층에서 정의하는 정보, 상위 프로토콜 지시자 이다. 두가지 정보로 받은 패킷들의 순서가 맞는지 빠진것은 없는지 확인하고 조립을 하는데에 필요합니다. 그리고 프로토콜은 스택은 상위 계층으로 갈수록 종류가 많아집니다. 목적지 헤더에 상위 프로토콜에 대한 지시자가 있어야 계속해서 전달을 할 수 있다.
'리코딩 : 네트워크(Network)' 카테고리의 다른 글
네트워크(Network) - 로드밸런서 공부 내용 정리 (0) | 2021.11.22 |
---|---|
네트워크(Network) - 라우터 - 공부 내용 정리 (0) | 2021.11.19 |
네트워크(Network) - 스위치, VLAN - 공부 내용 정리 (0) | 2021.11.17 |
네트워크(Network) - TCP 연결해제, ARP - 배운 내용 정리 (0) | 2021.11.16 |
네트워크(Network) - 통신 방식, MAC / IP주소, TCP / UDP 배운 내용 정리 2 (0) | 2021.11.15 |