네크워크의 기본 OSI 7 계층
개념
- OSI 7 계층은 네트워크 통신을 표준화한 모델로, 네트워크 통신이 일어나는 과정을 7단계로 나눈 것을 말한다.
- 하지만 OSI 모델이 실무적으로 이용하기에 복잡한 탓에 실제 인터넷에서는 이를 단순화한 TCP/IP 4계층 모델을 기반으로 상업적이고 실무적으로 이용하고 있다.
- 국제표준기(ISO, International Organization for Standardization)에서 네트워크 간의 호환을 위해 OSI 7 계층이라는 표준 네트워크 모델을 만들었다. ( 개방형 시스템 상호 연결 모델의 표준)
OSI 7계층을 나눈 이유는?
- 각 단계을 독립적으로 나누었기 때문에 흐름을 한눈에 알아보기 쉽고 사람들이 이해하기 쉽다
- 네트워크에서 이상이 생기면, 7계층 중 어디에서 생긴 문제인지 파악하고 해당 계층만 고치면 되기 때문에 사용된다.
예를들어, pc방에서 롤을 하고 있는데 연결이 끊겼다. 어디에 문제가 있는지 확인을 하기 위해서는?
- 모든 PC에 문제가 있다면 라우터의 문제 (3계층 네트워크 계층) 이거나 광랜을 제공하는 회사의 회선 문제(1계층 물리계층) 일 것이다.
- 한 PC만 문제가 있고 롤 소프트웨어에 문제가 있다면 -> 7계층 어플리케이션 계층 문제
- 롤 소프트웨어에 문제가 없고 스위치에 문제가 있다면 -> 2계층 데이터링크 계층 문제 라고 판단해 다른 계층에 있는 장비나 소프트웨어를 건들이진 않을 것이다.
OSI 7계층이 생기기 이전에는 표준이 존재하지 않아 각양각색으로 개발을 했기 때문에 데이터 전송이 어려웠다.
- ex) 컴퓨터 a는 OSI를 준수했고, 컴퓨터 b는 표준을 지키지 않고 개발했다면, 둘 사이에 통신하기가 어려움
표준(호환성)과 학습도구에 의미로 제작
캡슐화(Encapsulation) & 역캡슐화(Decapsulation)
- 캡슐화 (Encapsulation)
- 전송 시 7계층에서 1계층으로 각 층마다 통신 프로토콜의 특성을 포함한 정보를 Header에 포함시켜서 하위 계층에 전송
- 최종적으로 물리 계층에서 binary 데이터로 변환되어 상대측으로 전송
- 출발지에서 데이터가 전송될 때 헤더가 추가되는데 2계층에서만 오류제어를 위해 꼬리부분에 추가됨.
- 역캡슐화(Decapsulation)
- 통신 상대측에서 Header를 역순으로 제거하면서 원래 Data를 얻는 과정
- 각 Header에 있는 작업을 진행하면서 최종적으로는 전달하려는 원본 데이터만 남음.
송신측 : 캡슐화(Encapsulation)
수신측 : 역캡슐화(Decapsulation)
헤더(Header) : 데이터 송신 시, 필요한 정보를 데이터에 추가
바디(Body) : 실제 데이터
OSI 7 계층별 역할
1. 물리계층(Physical Layer)
- 시스템 간 물리적 연결을 담당. 비트 0, 1의 통신 단위로 전기적 신호를 주고받는 역할을 한다
- 상위 계층으로부터 받아온 데이터를 전기적 신호로 변환해 전달하는 역할
- 이 계층에서는 단지 데이터를 전달할뿐, 전송하려는(또는 받으려는) 데이터가 무엇인지, 어떤 에러가 있는지 등에 대해서는 신경쓰지 않는다.
- 단지 데이터를 전기적인 신호로 변환해서 주고받는 기능만 있을 뿐이다.
※ 참고
전송 단위 : 비트(bit)
장비 : 케이블, 허브, 리피터
2. 데이터 링크 계층(Data link layer)
- 물리계층을 통해 송수신되는 정보의 오류와 흐름을 관리하여 안전한 정보의 전달을 수행할 수 있도록 도와주는 역할. 따라서 통신에서의 오류도 찾아주고 재전송도 하는 기능을 가지고 있다.
- 이 계층에서는 맥 주소를 가지고 통신하게 된다.
- 데이터 링크 계층은 포인트 투 포인트(Point to Point)간 신뢰성 있는 전송을 보장하기 위한 계층으로 CRC기반의 오류 제어와 흐름 제어가 필요하다.
- 대표적인 프로토콜로는 이더넷(Ethernet)이 있다
CRC 기반의 오류 제어 :물리계층에서 생길 수 있는 오류를 감지하고 수정함
흐름제어(Flow Control) : 송신자와 수신자 사이의 데이터 처리 속도를 조절하는 역할
순서 제어 : 프레임의 순서적 전송
프레임 동기화 : 프레임의 시작과 끝을 구별하기 위한 동기화
Mac 주소(Mac Address)를 가지고 통신한다.
- 각 하드웨어 기기의 LAN카드에는 Mac Address가 정의됨.
- 모든 Mac 주소는 서로 다른 값을 갖고 있으며 데이터 전송 Mac 주소, 전달 받는 Mac 주소. 이 두 주소를 확인하여 정상이면 3계층으로 전달.
※ 참고
전송단위 : 프레임(Frame)
장비 : 브릿지, 스위치, 이더넷
CRC/체크섬 트레일러
데이터의 오류감지를 위한 수학적 함수가 적용된 값. 링크의 오류(과도한 트래픽 등) 로 인해 데이터 손상을 감지하는 역할을 한다.
3. 네트워크 계층(Network layer)
- 경로(Route)와 주소(IP)를 정하고 패킷을 전달해주는 것이 이 계층의 역할이다.
- 다양하고 방대한 네트워크 상에서, 컴퓨터간 논리적 연결을 위해 네트워크 계층이 필요.
- 다른 네트워크와의 통신 경로 설정을 담당, 논리 주소 결정
- 중계 노드를 통하여 전송하는 경우 어떻게 중계할 것인가를 규정
- 라우팅 기능을 맡고 있는 계층으로 목적지까지 가장 안전하고 빠르게 데이터를 보내는 기능을 가지고 있음(최적의 경로를 설정가능)
- Routing(라우팅) : 목적지까지 가기위한 경로를 설정하는 역할 (길을 찾는 역할)
- Forwarding(포워딩) : 라우터의 입력 포트에서 출력 포트로 패킷을 이동시키는 역할
- 대표적인 프로토콜로는 IP 프로토콜이 있다
- IP 프로토콜 버전 : IPv4(43억개의 주소), IPv6(340조 x 1조 x 1조 개의 주소)
- ARP 프로토콜
- IP 주소는 알지만 MAC 주소는 모를 때, IP 주소를 MAC 주소로 매칭시키기 위한 프로토콜
- 네트워크 통신을 하기 위해서는 목적지의 IP주소와 MAC 주소를 모두 알아야 함
- sender는 네트워크 상의 모드 노드에게 ARP Request (Who has 12.34.56.78 ? Tell me 12.34.56.78, ip번호가 12.34.56.78인 애가 누구야? 나한테 MAC 주소 좀 알려줘)를 보내고, 해당하는 노드는 ARP Response로 자신의 MAC 주소를 보낸다.
※ 참고
전송 단위 : 패킷(Packet / Datagram) (데이터를 일정 크기로 나누어 송수신)
장비 : 라우터, L3 스위치
4. 전송 계층(Transport layer)
- 상위 계층에서 받은 메시지를 기반으로 세그먼트 또는 데이터그램으로 데이터를 쪼개고 데이터가 오류없이 순서대로 전달되도록 도움을 주는 층
- 양 끝단(end-to-end) 사용자들( = 프로세스간 통신)이 신뢰성 있는 데이터를 주고받을 수 있게 함
- 송신자와 수신자 간의 신뢰성 있고 효율적인 데이터를 전송하기 위하여 오류검출 및 복구, 흐름제어와 중복검사 등을 수행 (Header에 Checksum이 해당 기능 수행)
- 포트 번호(port)를 통해 목적지의 어떤 응용 프로그램에 데이터를 전달해야 하는지를 식별
- 대표적인 프로토콜로 TCP와 UDP
※ 참고
전송 단위 : TCP - Segment, UDP - Datagram
TCP vs UDP 프로토콜
TCP : 연결형 프로토콜, 데이터의 전송 순서 보장, 데이터 신뢰성 보장
UDP : 비연결형 프로토콜, TCP보다 전송속도 빠름, 주로 스트리밍/브로드캐스팅 서비스 UDP 데이터는 데이터그램 이라고 부름 (패킷으로 부르지 않음)
5. 세션 계층(Session layer)
- 데이터가 통신하기 위한 논리적인 연결을 말한다.즉, 응용 프로세스가 통신을 관리하기 위한 방법을 정의한다.
- 하지만 4계층에서도 연결을 맺고 종료할 수 있기 때문에 우리가 어느 계층에서 통신이 끊어 졌나 판단하기는 한계가 있다.
- 세션 설정, 유지, 종료, 전송 중단시 복구 등의 기능이 있다.
- 이 계층은 TCP/IP 세션을 만들고 없애는 책임을 진다.
※ 참고
전송 단위 : 메세지
6. 표현 계층(Presentation layer)
- 표현 계층은 코드 간의 번역을 담당하여 사용자 시스템에서 데이터의 형식상 차이를 다루는 부담을 응용 계층으로부터 덜어준다.즉, 전송하는 데이터의 표현방식을 결정한다. (예: 데이터변환,압축,암호화 등)
- MIME 인코딩이나 암호화 등이 이 계층에서 이루어진다.
- 해당 데이터가 text 인지, gif, jpg 인지 구분하는 역할을 담당한다.
표현계층은 3가지 기능을 가지고 있다.
- 송신자에서 온 데이터를 해석하기 위한 응용계층 데이터 부호화, 변화
- 수신자에서 데이터의 압축을 풀수 있는 방식으로 된 데이터 압축
- 데이터의 암호화와 복호화
- MIME 인코딩이나 암호화 등의 동작이 표현계층에서 이루어짐. EBCDIC로 인코딩된 파일을 ASCII 로 인코딩된 파일로 바꿔주는 것이 한가지 예임
- MIME 인코딩이나 암호화 등의 동작이 표현계층에서 이루어짐. EBCDIC로 인코딩된 파일을 ASCII 로 인코딩된 파일로 바꿔주는 것이 한가지 예임
인코딩이나 암호화 등의 동작이 표현계층에서 이루어진다.
※ 참고
전송 단위 : 메세지
7. 응용 계층(Application layer)
- HTTP, SMTP, SSH, FTP가 대표적이며 웹 서비스, 이메일 등 서비스를 실질적으로 사람들에게 제공하는 층.
- 브라우저라는 인터페이스를 통해 HTTP와 같은 응용 계층의 서비스를 이용.
- HTTP, FTP 등의 프로토콜
※ 참고
전송 단위 : 메세지
OSI 7계층과 TCP/IP 4계층
- 네트워크 전송 시 데이터 표준을 정리한 것이 OSI 7계층 이라면, 이 이론을 실제 사용하는 인터넷 표준이 TCP/IP 4계층이다.
- 쓸데없이 복잡한 OSI 7계층을 4-5계층으로 분류하여 적용한 것으로 보면 된다.
OSI 7 계층과 TCP/IP 4계층 모델에서 각 계층은 하위 계층의 기능을 이용하고, 상위 계층에게 기능을 제공한다.
- 예를 들어 HTTP는 TCP와 IP를 이용하여 작동한다.
일반적으로 상위 계층의 프로토콜은 소프트웨어로, 하위 계층의 프로토콜은 하드웨어로 구현된다.
(ex. 물리 계층의 통신은 케이블을 통한 전기 신호로 이루어진다.)
PDU (protocol data unit)
PDU(protocol data unit)란 TCP/IP 4계층을 기반으로 설명했을 때 각 계층의 데이터 단위를 의미한다.
- 애플리케이션 계층 : 메세지
- 전송 계층 : 세그먼트(TCP), 데이터그램(UDP)
- 인터넷 계층 : 패킷
- 링크 계층: 프레임(데이터 링크 계층), 비트(물리 계층)
세그먼트 : 적절한 크기로 쪼갠 조각 (세그먼트와 데이터그램의 의미는 같다.)
패킷 : 세그먼트에 SP와 DP가 포함된 IP 헤더가 붙은 형태의 조각
프레임 : MAC주소 헤더와 CRC/체크섬 트레일러가 붙은 조각
SP : 송신자의 32비트 IP주소
DP : 수진자의 32비트 IP주소
참고
- http://wiki.hash.kr/index.php/OSI_7_%EA%B3%84%EC%B8%B5
- https://www.notion.so/coding-study-page/8e86779c6261485fa777e21b1a1cd220?v=bb0b468144444314871d355f43e0dce1&p=d036c9a4d2e94bf7be0e481f6ca930d5&pm=s
- https://shlee0882.tistory.com/110
- https://velog.io/@cgotjh/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-OSI-7-%EA%B3%84%EC%B8%B5-OSI-7-LAYER-%EA%B8%B0%EB%B3%B8-%EA%B0%9C%EB%85%90-%EA%B0%81-%EA%B3%84%EC%B8%B5-%EC%84%A4%EB%AA%85
- http://wiki.hash.kr/index.php/OSI_7_%EA%B3%84%EC%B8%B5