계층구조를 이야기하기에 앞서, 네트워크 간의 통신과 프로토콜에 대해서 우선 정리해보고자 한다. 프로토콜이라는 것은 네트워크에 연결된 시스템이 통신하여 데이터를 주고받기 위해 따라야하는 규칙이다.(프로토콜은 HTTP/HTTPS를 공부하면서 듣게 될 개념이며, 중요한 개념이다.) 프로토콜은 전송 오류율, 데이터 전달 경로, 전송 속도 등 다양한 외부 요인의 영향을 받는다. 만약 이러한 문제들을 한 프로토콜에서 모두 처리를 하게 되면 문제가 발생하기 쉽다. 따라서 프로토콜은 모듈화라는 설계 과정을 통하여 이루어진다.
모듈화에 대해 예를 들어보자. 컴퓨터 하드웨어를 뜯어보면 엄청나게 다양한 도구들로 나누어진다. CPU, 메모리, 하드디스크, 키보드, 마우스 등등으로 나타낼 수 있다. 이러한 도구들은 각자가 하는 역할은 다르다. 하지만 모두 적절한 상호작용을 하고 있다. 또한 한 부분이 고장이 나도 그 도구만 고치게 되면 다른 도구들에게는 큰 영향을 끼치지 않는다. 대신에 도구를 바꿀 때에 인터페이스는 바뀌면 안 된다. 만약 키보드가 망가져 새로운 키보드를 구매하여 컴퓨터와 연결을 시키는데 USB 단자가 맞지 않으면 그 도구는 쓸모가 없는 도구가 되는 것이다. 따라서 서로 연결하는 인터페이스는 적절하게 맞추어야한다.
네트워크에서 독립적인 고유 기능을 수행하는 모듈들이 상하위의 계층 구조로 연결되어 동작한다. 각 계층들 사이에서는 인터페이스를 가지는데 네트워크에서는 상위 계층이 하위 계층에게 특정 서비스를 요청하는 방식으로 동작한다. 임의의 호스트에서 실행되는 계층 N 모듈은 상대 호스트의 계층 N 모듈과 논리적으로 통신하며 이를 N 프로토콜이라고 한다. 동일 계층에 위치한 통신 양단은 같은 프로토콜을 사용하여 통신하기 때문에 동료 프로세스(Peer Process)라고 한다. 상위 계층은 서비스를 요청하고 하위 계층은 서비스를 제공한다. 계층 구조(Layered)는 네트워크 뿐만 아니라 운영체제 등 다양한 분야에서 적용된다.
계층 구조를 사용하는 목적은 분할 정복(Divide and Conquer) 때문이다. 어떠한 복잡한 문제를 해결하고자 할 때, 나누어 생각하면 쉽게 해결할 수 있다는 취지인 것이다. 계층 구조의 또다른 특징은 위, 아래 층으로만 이동할 수 있다는 점이다. 건너뛰어 한번에 맨위 또는 아래로 갈 수 없다. 즉, 다음 단계로 넘어가려면 이전 계층이 전제조건이 되어야한다.
계층구조의 장점
- 시스템을 기능별로 간단하게 재구성하여 설계하고 구현하기 쉽게 만든다.
- 모듈 사이에 인터페이스가 존재해서 독립적으로 작동하지만 상호 유기적인 관계를 가진다.
- 오류를 수정하거나 향상시켜야 하는 경우 해당 계층의 모듈만 교체하면 된다.
OSI 7계층(OSI 7 Layer)
컴퓨터 네트워크 디자인과 통신을 계층으로 나누어 설명. 각각 다른 계층간에 서로 투명하고, 독립적인 기능을 수행한다. 이로 인해 장비 개발 시에 유리하고, network modeling 및 trouble shooting에 용이하다.
이름대로 7계층으로 이루어져있으며, 1~4계층은 하위 계층, 5~7계층은 상위 계층이라고 한다.
PDU 란?
OSI 7계층에서는 PDU 개념을 중요시 하는데, PDU(Process Data Unit)란 각 계층에서 전송되는 단위이다. 1계층에서 PDU가 비트(Bit)라고 생각하기 쉽지만 PDU라고 하지 않고 여기서 비트는 단위라기 보다는 단지 전기 신호의 흐름일 뿐이다.
PDU는 2계층-프레임(Frame), 3계층-패킷(Packet), 4계층-세그먼트(Segment) 만 생각하면 된다. 네트워크 통신과정을 깊게 이해하기 위해서는 왜 각각의 계층의 PDU가 다른지 알아야 하고, 역할에 대해 알고 있어야 한다.
1계층 : 물리계층 (Physical Layer)
물리계층은 OSI 모델의 최하위 계층에 속하며, 상위 계층에서 전송된 데이터를 물리 매체(허브, 라우터, 케이블 등)를 통해 다른 시스템에 전기적 신호를 전송하는 역할을 한다. 즉, 기계어를 전기적 신호로 바꿔서 와이어에 실어주는 것이다. 쉽게 말해 단순하게 장비를 가동시키기 위한 전기 공급부터 장비끼리의 물리적인 연결을 위한 랜케이블, 그리고 무선 통신을 위한 주파수까지 다양한 전기적/물리적인 것들을 모두 포함합니다.
- PDU : 비트(Bit)
- 프로토콜 : Modem, Cable, Fiber, RS-232C
- 장비 : 허브, 리피터
2계층 : 데이터링크계층 (Data Link Layer)
링크계층은 네트워크 기기들 사이의 데이터 전송을 한다. 시스템 간의 오류 없는 데이터 전송을 위해 패킷을 프레임으로 구성하여 물리계층으로 전송한다. 3계층에서 정보를 받아 주소와 제어정보를 헤더와 테일에 추가한다. 1계층의 물리적인 링크를 이용하여 데이터를 신뢰성있게 전송하는 계층이다.
- PDU : 프레임(Frame)
- 프로토콜 : 이더넷, MAC, PPP, ATM, LAN, Wifi
- 장비 : 브릿지, 스위치
3계층 : 네트워크계층 (Network Layer)
네트워크계층은 기기에서 데이터그램(Datagram)이 가는 경로를 설정해주는 역할을 한다. 라우팅 알고리즘을 사용하여 최적의 경로를 선택하고 송신측으로부터 수신측으로 전송한다. 이때, 전송되는 데이터는 패킷 단위로 분할하여 전송한 후 다시 합쳐진다. 2계층이 노드 대 노드 전달을 감독한다면, 3계층은 각 패킷이 목적지까지 성공적이고 효과적으로 전달되도록 한다.
쉽게 말해서 각 네트워크의 주소 격인, IP주소를 할당하고, 이를 기반으로 라우팅 즉 이동기능을 제공한다. 이 와중에 최적의 경로도 설정하게 된다.(이때 DNS의 개념이 등장한다고 볼 수 있다.)
- PDU : 패킷(Packet)
- 프로토콜 : IP, ICMP 등
- 장비 : 라우터, L3 스위치
4계층 : 전송계층 (Transport Layer)
발신지에서 목적지(End-to-End) 간 제어와 에러를 관리한다. 패킷의 전송이 유효한지 확인하고 전송에 실패된 패킷을 다시 보내는 것과 같은 신뢰성있는 통신을 보장하며, 헤드에는 세그먼트가 포함된다. 주소 설정, 오류 및 흐름 제어, 다중화를 수행한다.
- PDU : 세그먼트(Segment)
- 프로토콜 : TCP, UDP , ARP, RTP
- 장비 : 게이트웨이, L4 스위치
5계층 : 세션계층 (Session Layer)
통신 세션을 구성하는 계층으로, 포트(Port)번호를 기반으로 연결한다. 통신장치 간의 상호작용을 설정하고 유지하며 동기화한다. 해당 세션을 유지 및 복구한다. 즉 데이터가 서로 만나는 환경을 조성해준다. 인증을 해야 하는 경우에 이러한 기능도 제공하는 것이다.
- 프로토콜 : NetBIOS, SSH, TLS
6계층 : 표현계층 (Presentation Layer)
표현계층은 송신측과 수신측 사이에서 데이터의 형식(png, jpg, jpeg...)을 정해준다. 받은 데이터를 코드 변환, 구문 검색, 암호화, 압축의 과정을 통해 올바른 표준방식으로 변환해준다.
- 프로토콜 : JPG, MPEG, SMB, AFP
7계층 : 응용계층 (Application Layer)
응용계층은 사용자와 바로 연결되어 있으며 응용 SW를 도와주는 계층이다. 사용자로부터 정보를 입력받아 하위 계층으로 전달하고 하위 계층에서 전송한 데이터를 사용자에게 전달한다. 파일 전송, DB, 메일 전송 등 여러가지 응용 서비스를 네트워크에 연결해주는 역할을 한다.
- 프로토콜 : DHCP, DNS, FTP, HTTP
TCP/IP 모델
그렇지만 OSI 참조 모델은 말그대로 참조 모델일 뿐 실제 사용되는 인터넷 프로토콜은 을 7계층 구조를 완전히 따르지는 않는다. 인터넷 프로토콜 스택(Internet Protocol Stack)은 현재 대부분 TCP/IP를 따른다.
TCP/IP는 인터넷 프로토콜 중 가장 중요한 역할을 하는 TCP와 IP의 합성어로 데이터의 흐름 관리, 정확성 확인, 패킷의 목적지 보장을 담당한다. 데이터의 정확성 확인은 TCP가, 패킷을 목적지까지 전송하는 일은 IP가 담당한다.
TCP/IP의 4계층
TCP/IP는 OSI 참조 모델과 달리 표현계층, 세션계층을 응용계층에 다 포함시키고 있지만, 사실상 TCP/IP Model의 Application 계층 하나에서 Application, Presentatiom, Session 계층의 구현을 다 하고 있다고 볼 수 있다.
데이터는 아래 그림과 같이 단계 별로 헤더(Data → Segment → Datagram → Frame)를 붙여 전송하며 이를 데이터 캡슐화라고 한다.
아래의 이미지를 통해 실제로 계층모델이 실무에서 어떻게 활용되고 왜 중요한지를 이해할 수 있다.
1계층은 물리적 통신(전기가 통하느냐 같은)
2계층은 데이터의 통신
3계층은 IP/라우팅(DNS)
4계층은 3계층에서 이루어진 라우팅으로 실제 목표 IP로 이동제어
5계층은 세션(인증 등)
6계층은 오가는 데이터 변형(압축 등)
7계층은 표면적인 통신(일반적인 HTTP 통신/ 로컬에서의 통신)
Reference
'CS STUDY > Computer Science' 카테고리의 다른 글
CPU bound VS I/O bound (0) | 2022.03.01 |
---|---|
프로세스 VS 스레드 (0) | 2021.03.20 |
Data/Network_RAID개념&RAID level (0) | 2021.02.04 |
동적 페이지에 대해 정리해보자(JSP, Sevlet, ASP,PHP) (0) | 2021.01.26 |
What is 네트워크(Network)? (0) | 2021.01.17 |