OSI 7계층
TL;DR
- 물리 계층 : 0과 1로 구성된 데이터를 전기 신호로 변환해 전달 (허브, 리피터)
- 데이터 링크 계층 :
point-to-point
같은 LAN 안에 컴퓨터들끼리 MAC 주소로 통신 가능하게 한다. 프레임을 전달하는 역할 (브리지, 스위치) - 네트워크 계층 : IP주소를 통해 발신지로부터 송신지까지 패킷 전달 (라우터)
- 전송 계층 :
End-to-End
양 끝단 사용자들이 신뢰성 있는 데이터 주고 받도록 함. 포트를 통해 어느 어플리케이션인지 식별 가능 (TCP, UDP) - 세션 계층 : TCP/IP 세션을 생성하고 없애는 역할 (SSH)
- 표현 계층 : 입출력되는 데이터를 하나의 표현 형태로 변환, 암호화 담당
- 응용 계층 : 응용 프로세스와 직접 관계해 일반적인 응용 서비스를 수행 (HTTP)
들어가기 전에
-
1970년대부터 ARPANET, Ethernet 등 네트워크 발전에 의해, 다양한 네트워크 연결의 필요성이 대두됨
-
원활한 통신을 수행하기 위해 서로 합의에 의해 설정한 통신 규약, 즉
프로토콜(Protocol)
을 가지게 됨 - 1983년 ARPANET은
TCP/IP
를 공식 프로토콜로 사용했고, -
1984년 ISO(국제표준화기구)는
OSI 7 계층
이라는 새로운 네트워크 모델을 발표했다. - OSI 7계층은 네트워크에서 통신이 일어나는 과정을 7개 계층으로 분리해 각 계층간 상호 작동하는 방식을 정해 놓은 것으로, 네트워크 학습에 많이 이용된다.
- 하지만 OSI 모델이 시장 점유 싸움에서 졌기 때문에 WWW, EMAIL, TELNET, FTP 등 대부분은 TCP/IP 기반에서 만들어졌고, 현재 TCP/IP 규격을 더 많이 활용합니다.
데이터의 캡슐화
데이터를 보낼 때는 응용 계층에서 시작되어 OSI 계층을 차례로 내려오며 물리 계층으로 간다. 이 과정에서 하위 계층은 상위 계층으로부터 온 데이터에 자신의 계층의 제어정보를 헤더화 시켜 추가한 후 다시 하위 계층으로 전달한다.
헤더화 시켜 붙이는 일련의 과정을 데이터 캡슐화라고 부른다.
OSI 7 계층
- OSI (Open Systems Interconnection Reference Model)
- OSI 7 계층은 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것
- 계층을 나눈 이유는 통신이 일어나는 과정을 단계별로 파악할 수 있고, 특정한 곳에 이상이 생기면 그 단계만 수정할 수 있기 때문이다.
1. 물리 계층 (Physical Layer)
🛠 주요 장비 : 케이블, 허브, 리피터
- 목적 : 들어온 전기 신호를 그대로 잘 전달하기
- 전기적, 기계적, 기능적 특성을 이용해 통신 케이블로 데이터를 전송한다.
- 0, 1의 나열을 아날로그 신호로 바꿔 전선으로 흘려 보내고 아날로그 신호를 0, 1의 나열로 해석하는 역할을 한다.
- 통신 단위는
비트
고, 이건 1과 0으로 나타내어지는, 전기적 on/off 상태다. - 단지 데이터를 전달할 뿐, 전송하거나 받으려는 데이터가 무엇인지 어떤 에러가 있는지 등에는 전혀 신경 쓰지 않는다.
2. 데이터 링크 계층 (DataLink Layer)
🛠 주요 장비 : 브리지, 스위치
📝 주요 프로토콜 : IEEE 802.2, FDDI
- 목적 :
Point-to-Point
간 신뢰성있는 전송을 보장하기 위한 계층 - 직접 연결된 이웃 컴퓨터와의 통신만을 다룬다.
-
물리계층에서 오는 전기 신호를 모아 데이터 형태로 처리하고, CRC 기반의 오류 제어와 흐름 제어 제공
-
통신 단위는
MAC 주소(물리 주소)
, 전송 단위는프레임
- 네트워크 위의 개체들 간 데이터를 전달하고, 물리 계층에서 발생할 수 있는 오류를 찾아 내고, 수정하는 데 필요한 기능적, 절차적 수단을 제공한다.
MAC 주소란?
-
네트워크 인터페이스 카드(랜 카드)의 고유 주소
-
주소 값은 물리적으로 할당 받는데, 이는 네트워크 카드가 만들어질 때부터 맥 주소가 정해져 있다는 뜻
3. 네트워크 계층 (Network Layer)
🛠 주요 장비 : 라우터, L3 스위치
📝 주요 프로토콜 : IPv4, IPv6, NAT, ARP
-
목적 : 경로를 선택하고 주소를 정하고 경로에 따라 패킷을 전달해주는 것
-
네트워크 계층은 전송할 데이터를 여러 개의 경로를 거쳐 목적지에 전송하는 계층이다.
-
주소(IP)를 정하고 경로를 선택하고, 패킷을 전달하는 것이 이 계층에서 이루어지고 이것을
라우팅
이라고 한다.
-
-
전송 계층이 요구하는 서비스 품질(QoS)을 제공하기 위한 기능적, 절차적 수단을 제공한다.
-> 라우팅, 흐름 제어, 세그멘테이션, 오류 제어, 인터네트워킹 등
-
통신 단위는
IP 주소(논리 주소)
, 전송 단위는패킷
-
라우터가 IP 주소를 사용해 최적의 경로를 찾아주고 해당 경로로 패킷을 전송한다.
-
데이터를 연결하는 다른 네트워크를 통해 전달함으로써 인터넷이 가능하게 만드는 계층
4. 트랜스포트 계층 (Transport Layer)
🛠 주요 장비 : 로드 밸런서, 방화벽
📝 주요 프로토콜 : TCP, UDP, SCTP, DCCP, AH, AEP
-
목적 : 양 끝단(End-to-end)의 사용자들이 신뢰성있는 데이터를 주고 받을 수 있도록 보장
- 패킷 생성 (Assembly/Sequencing/Deassembly/Error detection/Request repeat/Flow control) 및 전송
-
통신 단위는
IP주소(논리 주소)
, 전송 단위는 TCP세그먼트
, UPD데이터그램
-
패킷이 유실되거나 순서가 바뀌었을 때 바로잡아 주기 위해 헤더 부분에 패킷 순서를 명시한다. (ACK 번호, 시퀀스 번호)
- 이 계층까지는 물리적인 계층에 속한다.
TCP 프로토콜
- Transmission Control Protocol : 인터넷 상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜
-
TCP는 패킷을 추적 및 관리하는 역할을 갖는다. (패킷에 순서를 부여함으로)
-
3-way handshaking 으로 연결, 4-way handshaking 통해 해제
- 높은 신뢰성 보장, 연결 지향적 (connection oriented)
- UDP 보다 속도 느리다.
UDP 프로토콜
- User Datagram Protocol : 데이터를 데이터그램 단위로 처리하는 프로토콜
-
비연결성 서비스로, 신뢰성이 없고 순서화되지 않은 데이터그램 방식 제공
- UDP 헤더의 checksum 필드 통해 최소한의 오류만 검출
- 속도가 빨라 실시간 응용 및 멀티캐스팅 가능
1계층 ~ 4계층의 주된 기능이
데이터를 전달
하는 것이라면,5계층 부터는 데이터를 송수신하는 양쪽 컴퓨터 내의
프로세스들 간의 통신 프로토콜
이다.
5. 세션 계층 (Session Layer)
📝 주요 프로토콜 : SSH, L2TP, PPTP, NFS, RPC, RTCP, SIP
- 목적 : 양 끝단의 응용 프로세스의 연결을 도와주고 안정적으로 유지되도록 관리
- 세션 설정, 유지, 종료, 전송 중단시 복구 등의 기능
- TCP/IP 세션을 만들고 없애는 책임
- 중요한 기능에는
동기화
기능이 있다. 동기점이 설정된다는건 그 이전까지의 통신은 서로 완벽하게 처리됐다는 것을 의미하고, 송수신 중 오류가 발생하면 처음부터가 아닌 동기화 이후부터 다시 재전송한다.
6. 프레젠테이션 계층 (Presentation Layer)
📝 주요 프로토콜 : SSH, TLS, AFP
- 목적 : 데이터 표현이 상이한 응용 프로세스의 독립성을 제공하고, 암호화
-
사용자 시스템에서 데이터의 형식상 차이를 다루는 부담을 응용 계층으로부터 덜어준다.
-
예를 들어, EBCDIC로 인코딩된 문서 파일을 ASCII로 인코딩된 파일로 바꿔주는 것, </br>
해당 데이터가 Text 인지, 그림인지, gif 인지, jpg인지의 구분 등이 표현 계층의 몫
☝️ 여기서 잠깐!
JPEG : 이미지 압축 프로토콜
MPEG : 영상 압축 프로토콜
ASCII : 알파벳을 사용하는 문자 인코딩
7. 응용 계층 (Application Layer)
🛠 주요 장비 : ADC, NGFW, WAF
📝 주요 프로토콜 : HTTP, FTP, DNS, SMP, SMTP, STUN, TFTP, TELNET 등
- 목적 : 어플리케이션 프로세스를 정의하고 서비스 수행
- 네트워크 소프트웨어 UI 부분이나 사용자의 입출력 부분을 정의함
추가
1계층 - 물리 계층
허브 Hub 🛠
- 중심축에 놓여 가까운 거리에 있는 여러 컴퓨터들을 연결시켜주는 네트워크 장비
- 단순한 중계기 역할로 모든 신호를 브로드캐스트(Broadcast) 한다.
리피터 Repeater 🛠
- 신호를 수신해 증폭한 다음 재전송 하는 장치
- 신호 감쇠를 보상해주기 때문에, 여러 대의 리피터를 써서 신호를 먼 거리까지 전달하는 것이 가능
2계층 - 데이터 링크 계층
네트워크 인터페이스 카드 동작 방식
- 전기 신호를 데이터 형태로 만든다.
- 목적지 MAC 주소와 출발지 MAC 주소를 확인
- 네트워크 인터페이스 카드의 MAC 주소를 확인
- 목적지 MAC 주소와 네트워크 인터페이스 카드가 갖고 있는 MAC 주소가 맞으면 데이터를 처리하고 다르면 데이터를 폐기
스위치 Switch 🛠
- 스위치는 정보를 동시에 주고 받을 수 있어 허브보다 빨리 정보를 보내고 받을 수 있음
- MAC 주소와 포트번호가 기록된 MAC 주소 테이블을 가지고 있고,
- MAC 주소를 가진 방비가 연결된 포트로만 프레임을 전송
IEEE 802.2 📝
-
IEEE 는 물리계층과 데이터링크 계층을 담당하는 기술에 대한 표준을 개발하고, 연관된 기술을 연구하기 위해서 만들어진 일종의 학회
-
IEEE 802.2 는 LLC 하부 계층을 정의하는 부분으로,
에러를 보정하고 프레임을 만들고 흐름제어를 수행하고 네트워크 계층에 서비스를 제공
3계층 - 네트워크 계층
라우터 Router
- 패킷의 위치를 추출해 그 위치에 대한 최적의 경로를 지정해 경로를 따라 다음 장치로 넘기는 장치
- 최적의 경로는 가장 빠르게 통신이 가능한 경로이고, 최단 거리일 수도 있지만 돌아가더라도 고속의 전송로를 통해 전달이 되는 경로가 될 수 있다.
- 네트워크와 네트워크를 연결하지만, NAT, 방화벽, VPN, QoS 등의 부가 기능을 제공하기도 함
ARP (Address Resolution Protocol)
- IP 주소로부터 MAC 주소를 알아내는 방법
- 망 전체로 ARP를 요청하고, 그 중 IP 주소가 동일한 host가 ARP 응답에 자신의 IP 주소와 MAC 주소를 함께 담아서 보내준다.
NAT (Network Address Translation)
- 사설 IP가 외부 인터넷과 통신을 할 때, 공인 IP로 변환해주는 작업
- 공인 IP로 보낼 때 포트 번호를 함께 붙여 사설 IP 중 어느 IP에서 들어간 것인지 구분해주는 방법이다.
예상 질문 + 모의 면접 질문
OSI 7계층이란?
OSI 7계층이란 네트워크에서 통신이 일어나는 과정을 물리, 데이터링크, 네트워크, 전송, 세션, 표현, 응용 계층 7개로 정의한 국제 통신 표준 규약입니다.
(추가) OSI를 7계층으로 나눈 이유는? ( = 계층을 분리했을 때 장점이 무엇인가요?)
통신이 일어나는 과정을 단계별로 파악할 수 있고, 특정한 곳에 이상이 생기면 그 단계만 수정할 수 있기 때문에 네트워크 통신의 과정을 7계층으로 나눴습니다.
(추가) 각 계층 간략하게 소개 + 장비 소개
-
물리계층은 0과 1로 성된 데이터를 전기 신호로 변환해 전달하고, 대표적인 장비에는 허브나 리피터가 있습니다.
-
데이터 링크 계층은 같은 LAN 안에 컴퓨터들끼리 MAC 주소로 통신을 하는 계층으로, 프레임을 전달하고 대표적인 장비에는 브리지나 스위치가 있습니다.
- 네트워크 계층은 IP주소를 통해 발신지로부터 송신지까지 패킷 전달하는 계층으로 대표적인 장비에는 라우터가 있습니다.
- 전송 계층은 양 끝단 사용자들이 신뢰성 있는 데이터 주고 받도록 하는 계층으로 포트를 통해 어느 어플리케이션인지 식별할 수 있는 계층입니다. 대표 장비는 따로 없고, 대표 프로토콜로는 TCP와 UDP가 있습니다.
- 세션 계층은 TCP/IP 세션을 생성하고 없애는 역할을 하는 계층으로 마찬가지로 장비는 없고 대표 프로토콜로는 SSH가 있습니다.
- 표현 계층은 입출력되는 데이터를 하나의 표현 형태로 변환하거나 암호화를 담당하는 계층입니다.
- 응용 계층은 응용 프로세스와 직접 관계해 일반적인 응용 서비스를 수행하는 계층으로 대표 프로토콜로는 HTTP, DNS 등이 있습니다.
(추가) 3계층(네트워크)과 4계층(전송)의 차이는?
네트워크 계층은 데이터를 목적지까지 경로를 찾아 패킷을 전송하는 계층이라면, 전송 계층은 양 끝단 사용자들이 신뢰성 있는 데이터를 주고 받을 수 있도록 전송 속도를 조절하고 오류가 발생된 부분은 다시 맞춰주는 계층입니다.
(추가) 2계층 (데이터링크)과 4계층(전송)의 차이는?
데이터링크 층은 물리적으로 1:1 연결된 호스트 사이의 전송을 담당하고, 전송 계층은 논리적으로 연결된 호스트 사이의 전송을 담당합니다.
논리 주소 vs 물리 주소
- 논리 주소는 IP 주소로 물리적인 네트워크에 관계없이 각 호스트를 유일하게 식별할 수 있는 주소다.
- 물리 주소는 MAC 주소로 하드웨어 자체에 할당된 주소다.
OSI 7계층과 TCP/IP 4계층의 차이점은?
TCP/IP계층과 달리 OSI 계층은 어플리케이션 계층을 세션, 표현, 응용 3개로 쪼개고 링크 계층을 데이터 링크와 물리 계층으로 나눠서 설명하는 것이 다릅니다. 또 OSI 7계층은 각 계층별로 역할을 구분하고 있는데 반해 TCP/IP는 프로토콜 집합으로 계층을 구분하는 점에서도 차이가 있습니다.
마지막으로 OSI 7계층은 국제표준화 기구에서 발표한 모델이고, TCP/IP는 알파넷에서 사용한 프로토콜입니다. 현재는 TCP/IP를 표준으로 사용하고 있다고 알고 있습니다.
TCP/IP에서 TCP와 IP의 역할에 대해 설명해보세요.
TCP는 신뢰성 있고 무결성을 보장하는 연결을 통해 데이터를 안전하게 전달해주는 전송 프로토콜이고, IP는 패킷들을 가장 효율적으로 전송하기 위해 필요한 프로토콜입니다.
DNS 서버의 역할은 무엇인가요?
DNS 서버는 흔히 사용하는 naver.com 같은 도메인 이름과 IP주소를 매칭해주는 역할을 합니다.
숫자의 나열로 이루어진 IP 주소보다는 도메인 이름이 기억하고 사용하기 더 쉽기 때문에 DNS 서버를 두어 사용합니다.
데이터링크 계층의 트레일러란?
데이터링크 계층은 1계층인 물리 계층에서 발생할 수 있는 오류를 감지하고 수정하는 역할을 함께 합니다. 이때 비트의 에러를 감지하기 위해 데이터 뒤에 추가하는 것이 트레일러입니다.
HTTP 프로토콜, FTP 프로토콜 특징에 대해 설명해주세요.
FTP 프로토콜은 서버-클라이언트 간에 파일을 전송하기 위해 사용하는 프로토콜이고, HTTP는 웹에서 사용하는 프로토콜입니다.
FTP는 이름과 암호로 된 텍스트 로그인을 이용해 인증하고 파일을 전송합니다. HTTP는 클라이언트가 서버에 URI로 자원을 요청하고 서버는 요청한 자원에 응답하는 프로토콜로 작동합니다.
주소창에 www.naver.cam을 쳤더니 404 not found가 페이지가 화면에 떴습니다. 이때의 일어나는 일을 OSI 7 계층과 연관지어 설명해주세요.
404 not found 에러는 클라이언트 요청 오류로, 서버가 요청받은 리소스를 찾을 수 없다는 의미입니다.
- 사용자가
www.naver.com
을 크롬과 같은 웹 브라우저라는 응용 프로그램에 입력하면, 브라우저는 입력한 도메인 이름과 대응되는 IP 주소를 캐싱된 DNS 기록 또는 DNS 서버를 통해 찾습니다. - IP 주소를 찾으면 응용 프로그램은 HTTP Request를 만들고 이 데이터를 표현 계층을 거쳐 세션 계층에 전송합니다.
- 세션 계층에서는 서버와 TCP 통신을 연결하고, IP주소와 port 주소를 이용해 전송 계층, 네트워크 계층, 데이터 링크 계층, 물리 계층을 거쳐 서버로 데이터를 전송합니다.
- 서버에서는 다시 물리계층부터 역캡슐화 해서 HTTP Request를 응용 프로그램인 웹 서버로 전달합니다.
- 웹 서버에서는 요청을 처리하고 404 not found가 포함된 HTTP Response를 이전과 같은 과정을 거쳐 웹 클라이언트에게 전달합니다.
- 웹 클라이언트는 도착한 메세지는 HTTP를 사용해 웹 페이지 데이터로 변환되어 사용자가 볼 수 있도록 404 not found 페이지를 출력합니다.
주소창에 google.com 을 치면 일어나는 일을 OSI 7계층과 연관지어 설명해보세요.
- 사용자가
google.com
을 입력하면, 브라우저는 입력한google.com
과 대응되는 IP주소를 캐싱된 DNS 기록들에서 찾습니다. - 캐시에 없으면
DNS 서버
에서 해당 도메인 네임과 맞는 IP 주소를 찾아 전달합니다. - 브라우저가 서버와
TCP connection
을 합니다. - 브라우저는 HTTP request 메세지를 생성해
TCP 프로토콜
을 사용해 인터넷을 거쳐 웹 서버로 요청합니다. -
서버가 요청을 처리하고 HTTP response를 클라이언트로 보냅니다.
- 도착한 메세지는
HTTP
를 사용해 웹 페이지 데이터로 변환되어 브라우저에 의해 사용자가 볼 수 있도록 출력합니다.
응용 프로그램이 데이터를 보내는 과정을 OSI 7계층에 따라 설명해보세요.
이메일을 보낸다고 가정해보겠습니다.
- 작성된 메세지는
Application 계층(7계층)
에서Presentation 계층(6계층)
으로 전달합니다. Presentation 계층(6계층)
에서는 전달된 메세지를 데이터로 변환 하거나, 암호화 또는 압축을 수행하고 이렇게 변한된 데이터는Session 계층(5계층)
으로 전달되게 된다.Session 계층(5계층)
으로 전달된 데이터는 동기화를 위하여 주기적으로동기점(sync)
을 삽입하여Transport 계층(4계층)
으로 데이터를 전달하게 된다.Transport 계층(4계층)
에서는 발신지와 목적지를 정하고 연결 방식을 연결성, 비연결성 방식으로 설정하여, 흐름 제어와 오류 제어 기능을 한다. 데이터 단위를Segment
또는Datagram
으로 나눈다. 만약에 악성코드가 있을 경우 방화벽이 작동을 해서 걸러준다.Network 계층(3계층)
에서 라우팅에 필요한 논리 주소를 설정하고, 패킷에 대한 라우팅 정보를 삽입한다.Data Link 계층(2계층)
에는 우선Frame
단위로 데이터를 나눈다. 그리고 MAC 주소로 지정을 하고 속도 차이를 원할히 메꾸기 위해서 흐름 제어를 한다.Physical 계층(1계층)
에서 프레임을 전기 신호로 변환에 통신 케이블로 데이터를 전송합니다.- 전송 매체가 일반 케이블인지 광케이블인지 메체의 길이를 설정