🎈 OSI (Open Systems Interconnection Reference Model) 7계층이란?
네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것이다.
국제표준기구 (ISO)에서 발표한 것으로
'인터넷 연결을 할 때 이렇게 설계를 하면 통신이 정상적으로 작동을 할것이다'라는 권고안이다.
🎈 왜 나눌까?
통신이 일어나는 과정을 단계별로 알 수 있고,
특정한 곳에 이상이 생기면 그 단계만 수정할 수 있기 때문이다.
1. 물리계층 (physical layer)
0과 1로 되어있는 데이터를 전기신호로 바꿔주는 계층이다.
물리계층에서는 0과1로 데이터가 구성이 되고, 통신단위는 'bit'이다.
이 계층에서는 단지 데이터를 전달만 할 뿐
전송하려는 데이터가 무엇인지, 어떤 에러가 있는지 등에는 전혀 신경 쓰지 않는다.
이 계층에 속하는 대표적인 장비는 통신 케이블, 리피터, 허브등이 있다.
2. 데이터링크 계층 (datalink layer)
물리계층으로 송수신되는 정보의 오류와 흐름을 관리하여
안전한 정보의 전달을 수행할 수 있도록 도와주는 역할을 한다.
아파트의 호수에 해당하는 MAC(media access control)이라는 고유주소를 통해 통신한다.
이 계층에서 전송되는 단위를 프레임이라고 하고,
대표적인 장비로는 브리지, 스위치 등이 있다.
3. 네트워크 계층 (network layer)
데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능을 담당한다.
이 때 사용되는 것이 IP이다.
라우터를 통해 이동할 경로를 선택하여 IP 주소를 지정하고, 해당 경로에 따라 패킷을 전달해준다.
네트워크 계층은 라우팅, 흐름 제어, 세그멘테이션(segmentation/desegmentation),
오류 제어, 인터네트워킹(Internetworking) 등을 수행한다.
데이터 전송 단위는 Datagram(Packet)이다.
4. 전송 계층 (transport layer)
통신을 활성화하기 위한 계층이다.
보통 TCP 프로토콜을 이용하며, 포트를 열어서 응용프로그램들이 전송을 할 수 있게 한다.
포트는 전송할 대상이 누구인지 파악하는 것이다.
데이터 전송 단위는 Segment이다.
- TCP : 신뢰성, 연결지향적
- UDP : 비신뢰성, 비연결성, 실시간
5. 세션 계층 (session layer)
데이터가 통신하기 위한 논리적 연결을 담당한다.
연결을 생성(created), 유지(establish), 종료(close)를 관리하는 층이다.
연결 방식에는 한쪽만 전달이 가능한 단방향,
무전기와 같이 한쪽이 연락을 할 때는 상대방이 연락을 할 수 없는 반이중,
전화와 같이 동시에 전달이 가능한 전이중이 있다.
TCP/IP 세션을 만들고 없애는 역할을 한다.
6. 표현 계층 (presentation layer)
응용계층에서 내린 명령, 발송한 데이터 등을 어떻게 표현할지 정해주는 계층이다.
- 암호화: 암호가 설정되어있으면 이 자료는 암호를 해석해야한다 알려줌
- 인코딩: 언어가 중국어로 작성이 되었으면 영어가 아니라 중국어로 읽어야 함을 알려줌
- 압축 : 해당 자료가 압축이 되어있다면 압축해제가 필요함을 알려줌
비유하면 편지를 발송할 때 상대방에게 이 편지가 영어인지, 중국어인지 혹은 암호로적힌 것인지 등을 알려주는 계층이다.
7. 응용 계층 (application layer)
우리가 사용하는 프로그램들을 '응용프로그램'이라고 한다.
응용계층은 우리가 사용하는 웹 브라우저, 어플 등등에서 하는 활동이다.
편지를 발송하는 과정 중 편지를 작성하는 과정을 응용계층에서 담당한다고 볼 수 있다.
'Programming > 프로그래밍 내용 정리' 카테고리의 다른 글
[보안] SQL Injection / PreparedStatement / Statement (1) | 2022.09.13 |
---|---|
왜 프로그래밍 언어에서 0.1 + 0.2 는 0.3이 아닐까요? (0) | 2022.08.16 |
[네크워크] TCP와 UDP의 차이점이 뭔가요? 소켓 프로그래밍이 뭔가요? (0) | 2022.08.14 |
System.out.println()의 원리가 무엇인가요? (0) | 2022.08.09 |
[JPA] 즉시로딩(EAGER)과 지연로딩(LAZY) 차이점이 뭔가요? (0) | 2022.08.01 |