OSI 7계층은 1984년 ISO에서 개발한 네트워크 통신 모델로, 프로토콜 디자인과 네트워크 통신을 7개의 계층(Layer)로 나누어 설명한 것이고, TCP/IP 4계층은 DARPA에서 TCP/IP 프로토콜을 미 국방성의 통신 표준으로 채택하면서 해당 네트워크 통신 과정을 4개의 계층으로 나누어 설명한 것이다.
프로토콜
네트워크 상에서 컴퓨터 간의 통신을 위한 규칙이나 약속
결국, 전반적인 네트워크 전송 표준이 OSI 7계층이며 TCP/IP 프로토콜을 통해 이를 실제로 적용한 인터넷 표준이 TCP/IP 4계층이라 할 수 있다.
1. TCP/IP 4계층
TCP/IP 모형은 네트워크 통신 과정에서 컴퓨터들이 서로 정보와 데이터를 주고받는 데 쓰이는 프로토콜의 모음으로, 이를 계층별로 나누어 설계할 경우 서로간의 간섭이 최소화되기 때문에 사용과 유지&보수에 있어서 편리하다는 장점이 있다.
또한, 서로 다른 계층들 끼리는 서로 간의 데이터 전달 과정을 구체적으로 알 필요가 없기 때문에 데이터의 캡슐화가 가능하다. 각각의 계층들의 역할은 아래와 같다.
- 1계층 : 물리적 연결, 전기 신호의 변환/제어, 네트워크 기기 간 데이터 전송 및 물리 주소의 결정
- 2계층 : 다른 네트워크와의 통신을 위한 경로와 논리적 주소(IP주소) 결정
- 3계층 : 데이터 전송의 신뢰성 확보, 2계층에서 보내온 데이터의 정렬 및 오류 정정(ex. TCP/UDP)
- 4계층 : 웹브라우저 등으로 데이터를 보내기 위한 서비스 제공(사용자와의 커뮤니케이션)
각각의 계층을 구체적으로 살펴보자
1계층 : 네트워크 연결 계층(Network Access Layer)
링크 계층이라고도 불리며 물리적으로 데이터가 네트워크를 통해 어떻게 전송되는지를 정의하며(기능 및 절차적 수단 제공), 두 지점 간의 오류 및 흐름 제어를 수행하고 신뢰성 있는 데이터의 전송을 보장한다.
보통 1계층을 물리적 계층(Physical Layer)과 데이터 링크 계층(Data Link Layer)로 나눠 TCP/IP 5계층으로 이야기하기도 한다. 이진수로 구성된 데이터를 전기 신호로 변환하거나, 컴퓨터와 네트워크 장비를 연결하는 하드웨어 측면의 기능이 물리적 계층에 해당되며, 네트워크 간 데이터의 전송을 위한 기능은 데이터 링크 계층에 해당된다.
물리적 계층(Physical Layer)
이진수로 된 데이터를 전기 신호로 변환하는 과정은 랜카드에서 이루어지며, 수신측에서 전기 신호를 받으면 이를 다시 이진 데이터로 변환한다. 전기 신호의 전달은 전송 매체를 통해 이루어지는데, 전송 매체는 전선 유무에 따라 유선과 무선 방식으로 나뉜다.
물리적 계층에 필요한 대표적인 장비로 허브(hub)을 들 수 있는데, 허브는 전기 신호를 전형하고 증폭하는 기능을 한다.
(리피터라는 중계장비가 존재하지만 1:1 통신만 가능하며 대부분 허브로 대체 가능하기 때문에 여기서는 허브만 다루도록 한다.)
위의 그림에서 알 수 있듯, 허브는 여러 개의 포트가 있기 때문에 여러 대의 컴퓨터와의 연결이 가능하다. 하지만 특정 포트로부터 데이터를 받았을 경우, 어떤 포트로 전송해야 할 지 결정하는 것이 아닌, 나머지 모든 포트로 받은 데이터를 전송하는 특징이 있다.
데이터 링크 계층(Data Link Layer)
데이터 링크 계층에서는 물리 계층을 이용해 네트워크 장비 간에 데이터를 전송하는 역할을 수행한다. 즉 랜(LAN)에서 데이터를 정상적으로 주고받기 위해 필요한 계층인 것이다. 데이터 링크 계층에서는 이더넷(Ethernet)이라는 프로토콜을 사용한다. 이더넷은 LAN, WAN에서 사용되는 기술 규격으로 데이터 링크 계층에서 뒤에서 설명할 MAC 패킷과 프로토콜의 형식을 정의한다.
LAN(Local Area Network) / 근거리 통신망
네트워크 매체를 이용하여 집, 사무실, 학교 등의 건물과 같은 가까운 지역을 한 데 묶는 컴퓨터 네트워크를 말함. 반대되는 개념으로 광역 통신망(WAN)이 있으며, 더 넓은 지역 범위를 아우름
앞서 언급한대로 허브는 연결된 모든 컴퓨터에 신호를 전달한다. 따라서 데이터 수신시 실제 목적지가 아닌 컴퓨터는 데이터를 볼 수 없게 하는 기능을 데이터 링크 계층에서 수행하게 된다. 이를 위해 목적지 정보를 추가하여 목적지가 아닌 컴퓨터는 데이터를 받더라도 무시하도록 한다.
여기서 목적지를 정의하기 위해 사용되는 것이 MAC 주소이다. MAC 주소는 제조사에 의해 할당되는 고유 주소이며 컴퓨터의 물리적 주소를 나타낸다. 따라서 컴퓨터가 데이터를 수신받았을 때 목적지 정보에 나타난 물리적 주소와의 일치 여부를 판단하여 데이터를 처리하는 것이다.
또한, 데이터 링크 계층에서는 네트워크 계층(인터넷 계층)으로부터 전달받은 패킷에 이더넷 헤더와 트레일러를 붙여 프레임이라는 데이터를 생성한다. 이더넷 헤더에는 출발지, 목적지, 이더넷 유형 정보(IPv4, IPv6 등)가 담겨 있으며 트레일러에서는 데이터 전송 과정에서의 오류를 감지하는 역할을 한다.
2계층 : 네트워크 계층(Network Layer)
네트워크 계층은 인터넷 계층이라고도 하며 네트워크 상에서의 패킷의 이동을 다룬다. 패킷은 전송하는 데이터의 최소 단위를 말하며, 여기서 어떠한 경로(혹은 절차)를 거쳐 상대 컴퓨터까지 패킷을 보낼 지를 결정하기도 한다. 간단히 말해 네트워크 계층은 서로 다른 네트워크 간의 통신을 가능하게 하는 역할을 수행한다.
데이터의 이동경로를 다루기 때문에, 여기서 출발지와 목적지의 경로를 인지하기 위한 논리적인 주소로 IP 주소를 할당하며 IP주소를 활용한 노드 간 전송 및 라우팅 기능이 여기서 처리된다. 라우팅(Routing)은 데이터를 전송하기 위한 최적의 경로를 찾는 행위를 말하며 이를 처리하는 기기를 라우터(Router)라고 하는데, 라우터는 내부의 라우팅 테이블(Routing Table)에서 경로 정보를 등록하고 관리한다.
IP주소는 네트워크 상에서 컴퓨터를 식별하는 번호로 라우터가 목적지를 식별하기 위해 사용하는 주소로 활용된다. 따라서 IP 주소가 있어야 어떤 네트워크상에 있는 어떤 컴퓨터인지를 식별할 수 있게 된다. IP주소는 보통 32비트의 숫자로 구성되어 있으며 각각 8비트씩 끊어서 표현(IPv4)하지만 오늘날 이것이 포화상태이기 때문에 범위를 확장시켜 128비트의 주소 체계를 사용하기도 하는데, 이것이 IPv6이다.
3계층 : 전송 계층(Transport Layer)
전송 계층에서는 네트워크로 접속된 2대의 컴퓨터 사이의 신뢰성 있는 데이터의 전송 및 흐름을 담당한다. 보통 전송을 위해서는 어떤 프로그램에 접근할 지에 대한 논리적 주소가 필요한데 여기서는 포트 번호(HTTP의 경우 80번)를 논리적 주소로 사용한다. 전송 계층에서 사용되는 데이터는 세그먼트(Segment) 단위로 구성되며, 이는 실질적인 데이터를 전송하기 위해 일정 크기를 기준으로 나눈 것이다.
TCP/UDP 프로토콜이 대표적으로 전송 계층에 속하는데 TCP는 신뢰성 있는 연결 지향형 프로토콜을 말하며 UDP는 비신뢰성&비연결형 프로토콜을 말한다. TCP는 패킷에 하나라도 오류가 있으면 재전송을 통해 에러를 복구하기 때문에 보통 TCP 헤더에 붙는 정보가 많지만, UDP는 패킷을 중간에 잃거나 오류가 발생해도 이에 대처하지 않기 때문에 더욱 간단한 구조를 가진다.
4계층 : 응용 계층(Application Layer)
응용계층은 사용자에게 제공되는 어플리케이션에서 사용하는 통신의 움직임을 결정한다. 사용자와 가장 가까운 계층으로 사용자가 소프트웨어와 소통할 수 있도록 한다.
서버나 클라이언트 관련 응용 프로그램이 이 계층에서 동작하며, 대표적으로 HTTP가 포트 80번을 사용하여 이 계층에 포함된다.
2. TCP/IP 통신의 흐름
TCP/IP로 통신을 할 경우 서버와 클라이언트는 계층을 순서대로 거친다. 데이터를 송신하는 측은 응용계층에서부터 시작해서 네트워크 연결 계층으로 내려가고, 수신하는 측은 네트워크 연결 계층에서 응용 계층으로 올라간다.
HTTP를 예시로 들자면, 먼저 클라이언트 측의 응용 계층에서 특정 웹페이지를 보고 싶다는 HTTP Request를 지시하게 된다. 그러면 바로 다음인 전송 계층에서 받은 HTTP 메시지(데이터)를 통신하기 쉽게 패킷 단위로 조각내어 포트 번호를 붙여 인터넷 계층으로 전달하게 된다.
인터넷 계층에서는 여기에 논리적 주소인 IP 주소를 할당하고 수신지 MAC 주소를 추가해서 네트워크 연결 계층으로 전달하며, 이로써 네트워크를 통한 데이터의 송신 준비가 완료되는 것이다.
송신된 데이터는 네트워크 연결 계층에서부터 순서대로 전달되어 응용 계층까지 도달하며, 응용계층에 도달하게 되면 HTTP Request 내용을 수신할 수 있게 된다.
보통 각 계층을 거칠 때에는 반드시 헤더라고 불리는 해당 계층마다 해당 계층에 필요한 정보를 추가하며, 수신측에서는 역순으로 각 계층을 거치면서 계층별로 확인한 헤더를 삭제한다. 맨 처음 언급한 계층화를 통한 데이터의 캡슐화가 바로 헤더를 통해 정보를 감싸는 것을 통해 실현된다.
참고:
velog.io/@jehjong/%EA%B0%9C%EB%B0%9C%EC%9E%90-%EC%9D%B8%ED%84%B0%EB%B7%B0-TCPIP-4%EA%B3%84%EC%B8%B5
'네트워크&서버' 카테고리의 다른 글
HTTP의 개념과 동작구조 (0) | 2020.12.14 |
---|
댓글