티스토리 뷰
OSI 7 계층이 뭐에요?
- OSI 7 Layers는 국제표준화기구(ISO)가 정의한 네트워크 통신의 과정을 7단계로 분류한 표준 모델입니다.
- 수많은 네트워크 통신 기기들이 상호 호환되기 위해서는 하나의 규격이 필요했고, 또한 네트워크의 전 과정을 한 눈에 알아볼 수 있게 하면서 각 단계를 독립적으로 유지하면 어느 한 부분에서 생긴 오류가 네트워크 전 과정에 확산되는 것을 막을 수 있고 문제를 찾아서 고치는 것도 훨씬 수월하겠죠!
- 이 과정들을 이해하고 있으면 개발 과정에서 겪는 수많은 에러들의 원인을 찾아내기도 쉬워질 것입니다.
- OSI 7 계층은 대부분 눈에 보이지 않는 네트워크의 과정이라 이해하기 어려워서 처음엔 무작정 외우려고만 했었는데 이번 기회에 정리를 해보면서 대략적인 과정을 이해해볼까 합니다!
- 그럼 가보자고~
네트워크 통신의 흐름 요약
- 네트워크 통신은 최초 누군가가 신호를 송신하면서 이루어지게 됩니다.
- 추후 정리하겠지만, OSI 7 계층의 최상단인 어플리케이션 계층에서 최초 신호를 보내게 되고 각 단계를 거칠 때마다 헤더에 각종 정보를 담아서 캡슐화하게 됩니다.
- 최종적으로 신호를 받은 수신자는 OSI 7 계층의 최하단인 물리 계층에서 아주 긴 전기 신호를 받은 후 이 신호(데이터)를 디캡슐화하면서 해석하는 과정을 거치게 됩니다.
- 이 흐름에 따라 어플리케이션 계층에서부터 데이터가 어떤 식으로 이동하는지 따라가보겠습니다.
OSI 7 계층
응용(Application) 계층
- 어플리케이션 계층은 유일하게 사용자가 볼 수 있는 계층입니다. 모든 네트워크 활동의 기반이 되는 인터페이스를 제공해주는 곳이죠!
- 즉, 사용자가 실행하는 응용 프로그램이라고 생각하면 될 듯 합니다.
- 만약 HTTP 요청을 보내는 것이라면 크롬 브라우저를 통해 HTTP 프로토콜을 사용하게 되는 것이고 이메일을 보내는 것이라면 구글 이메일이라는 인터페이스를 이용해서 SMTP 프로토콜 위에서 동작하게 되는 것입니다.
- 프로토콜: HTTP, SMTP, FTP, DNS, Telnet
표현(Presentation) 계층
- 표현 계층은 데이터를 어떻게 표현할지를 결정하는 계층입니다. 응용 계층으로부터 받은 데이터를 읽을 수 있는 형식으로 변환하는 것이죠.
- 확장자 개념이 여기서 사용되며, 받은 데이터를 인코딩, 디코딩, 암호화, 복호화, 압축 등의 과정을 통해 올바른 표준 방식으로 변환해주는 역할을 하고, 해당 데이터가 text인지, 그림인지, 동영상인지를 구분하게 됩니다.
- 문자를 숫자로 표현하기 위한 표준인 ASCII 코드로의 변환도 이 영역에서 이루어지게 됩니다.
- 프로토콜: JPG, MPEG, GIF, ASCII
세션(Session) 계층
- 세션이란 클라이언트와 서버간 연결이 유지되고 있는 상태를 의미합니다.
- 만약 HTTP 요청에 대한 응답 이후에 응답이 끊어졌다면 하나의 세션이 생성되고 종료된 것이죠. 다음 HTTP 요청은 또 하나의 새로운 세션이 생성되며 시작될 것입니다.
- 이러한 세션을 생성하고 유지하고 종료하는 역할을 하는 계층이 세션 계층입니다. 즉, 포트를 기반으로 TCP/IP 세션을 만들고 안정적으로 유지될 수 있게 해주는 계층이라고 볼 수 있겠습니다!
- 프로토콜: SSH, TLS
전송(Transport) 계층
- 전송 계층은 데이터를 패킷으로 나눈 뒤 하위 계층으로의 신뢰성 있는 전송을 담당하는 계층입니다.
- TCP, UDP 프로토콜을 기반으로 패킷 통신을 하기 위한 논리적인 연결을 하게 됩니다.
- 이 계층에서 헤더로 포트 번호가 붙게 되고 이 번호에 해당하는 곳으로 데이터가 전달이 될 것입니다.
- 포트 번호라는 것은 하나의 컴퓨터에서 동시에 실행되고 있는 프로세스들이 겹치지 않게 가져야 하는 정수값입니다.
- A, B, C 라는 데이터를 전송받았을 때, A라는 데이터는 카카오톡으로 전송이 되고, B라는 데이터는 배달의민족으로 전송이 되어야 하는 데이터라고 할 때 그 목적지를 정해주는 것이죠.
- 후술하겠지만 IP가 OO 아파트 라는 주소라면 포트번호는 아파트 내에서 몇 동, 몇 호인지를 알려주는 상세 주소라고 이해할 수 있겠네요!
- 프로토콜: TCP, UDP
- 전송단위(PDU): Segment
- 장비: 게이트웨이
네트워크(Network) 계층
- 네트워크 계층에서는 목적지의 IP 주소를 정하고 그에 따른 최적의 경로를 제공해주는 역할을 합니다.
- 하나의 스위치에 연결된 수많은 컴퓨터들을 네트워크라고 하는데요. 이 하나의 네트워크가 더 멀리 떨어진 또 다른 네트워크와 통신을 하려면 스위치끼리 연결하는 무언가가 필요합니다.
- 이것이 바로 라우터입니다. A라는 네트워크에서 라우터를 타고, 타서 D라는 네트워크에 도달해야 하는데 그 경로가 여러가지일 수도 있는 것이죠. 따라서 라우팅 알고리즘에 의해 최적의 경로를 설정하게 되는데 이 과정을 네트워크 계층에서 하게 되는 것입니다.
- 데이터는 패킷 단위로 분할하여 전송을 하고 수신시 합치는 과정을 거치게 됩니다.
- 프로토콜: IP
- 전송단위(PDU): Packet
- 장비: 라우터, L3스위치
데이터링크(Data Link) 계층
- 데이터링크 계층은 같은 네트워크에 있는 여러 네트워크 기기들 사이에서 데이터 전송을 하는 역할을 합니다.
- 하나의 네트워크에는 여러 대의 기기들이 연결되어 있습니다. 이 네트워크에 들어오는 데이터들을 모든 기기들이 공유해서는 안 되겠죠?!
- 모든 하드웨어 기기들은 고유한 MAC Address를 갖게 됩니다. 이 MAC 주소를 이용해서 어떤 하드웨어와 통신을 할 것인지를 파악하는 것입니다.
- 어떤 기기와 통신할 것인지를 파악했다면 수많은 데이터들 중 해당 기기에게 전송할 데이터만 전송을 해야 합니다. 이 때 필요한 것이 Framing 입니다.
- 사실 Hi 라는 문자가 아스키 코드로 변환된 72 105는 1001000 1101001 이라는 2진수로 변환이 된 데이터로 전달이 되는데 이 외에도 여러 데이터들이 한꺼번에 들어오게 됩니다.
- 이 데이터들 중 해당 MAC 주소에 전달되어야 하는 데이터만 묶는 작업이 프레이밍입니다.
- 프로토콜: MAC, Ethernet, LAN, Wifi
- 전송단위(PDU): 프레임
- 장비: 스위치, 브리지
물리(Physical) 계층
- 전송된 데이터를 물리적인 하드웨어(허브, 케이블)를 통해 전기적 신호로 전송하는 최하단 계층입니다.
- 0과 1로 이루어진 기계어를 on/off인 전기적인 신호로 하드웨어에 전달하는 계층인 것이죠!
- 전달된 전기적 신호는 이 계층에서 시작되어 다시 기계어로 번역되고 최종적으로 응용 계층에서 사용자가 볼 수 있는 데이터로 나타나게 됩니다.
- **전송단위(PDU): 비트(0 또는 1)
- 장비: 통신 케이블, 허브
참고 자료
반응형
'개발냥이 > etc' 카테고리의 다른 글
MSA(Micro Service Architecture) 찍먹 (2) | 2024.02.12 |
---|---|
[운영체제] 프로세스(Process)와 쓰레드(Thread) 정리 (0) | 2023.08.29 |
[프로젝트] 리액트 + 스프링부트를 연동한 To do App (0) | 2023.05.09 |
프론트엔드에서의 UI/UX (0) | 2023.04.13 |
REST API란? (REST 성숙도 모델) (1) | 2023.03.29 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 스프링부트
- Nest
- 이분탐색
- 자바
- SQL
- 프로그래머스
- Comparator
- 스프링
- 리액트
- java
- Spring
- 타입스크립트
- Algorithm
- JPA
- 해시맵
- CS
- Queue
- SQLD
- dfs
- 자바dp
- 자바스크립트
- 정렬
- 자바트리
- DP
- 알고리즘
- 형변환
- 백준
- 자바bfs
- BFS
- JavaScript
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함