1. 04. 서버 프로그램 구현 - OSI 7 계층
서버 프로그램은 일반적으로 응용 계층에서 구현된다. 응용 계층에서는 사용자의 요청을 처리하고, 데이터를 전송하거나 수신한다. 응용 계층에서 데이터를 전송하거나 수신하기 위해서는 하위 계층의 기능을 이용해야 한다.
OSI 7 계층을 이해한다면, 서버 프로그램의 구현을 보다 쉽게 이해할 수 있으며, 네트워크 통신에서 발생하는 문제를 해결하는 데에도 도움이되기 때문에 아래 글을 작성해본다.

1.1. 1. 개념
- 국제표준화기구(ISO)에서 개발한 모델로, 네트워크 프로토콜 디자인과 통신을 계층으로 나눠 설명한 것으로
실제 인터넷에서 사용되는 TCP/IP는 OSI 참조 모델 기반으로 상업적이고 실무적으로 이용 가능하도록 단순화한 것이다. - 개방형 시스템 상호 연결 모델의 표준이다.

1.2. 2. 탄생 배경
- 초기 여러 정보 통신 업체의 장비들은 자신의 업체 장비들끼리만 연결되어 호환이 되지 않았다.
- 모든 시스템들의 상호 연결에 있어 문제 없도록 표준을 정한 것이 OSI 7 Layer이다.
- 표준(호환성)과 학습도구에 의미로서의 그림처럼 제작되었다.
(01.개념 부분에서의 이미지 참고)
1.3. 3. 작동 원리
- OSI 7 Layer : 응용, 표현, 세션, 전송, 네트워크, 데이터링크, 물리계층으로 분리
- 전송 시, 7계층 → 1계층으로 각 층마다 인식할 수 있는 헤더를 붙임 (캡슐화)
- 수신 시, 1계층 → 7계층으로 헤더를 떼어냄 (디캡슐화)
- 출발지에서 데이터가 전송될 때 헤더가 추가되는데 2계층에서만 오류제어를 위해 꼬리부분이 추가
- 물리계층에서 1, 0의 신호가 되어 전송매체를 통하여 전송
- 전송매체는 동축케이블, 광섬유 등
1.4. 4. OSI 7 Layer 종류 및 특징

1.4.1. 4-1. 물리 계층(Physical Layer) 🕋

- 7계층 중 최하위 계층
- 주로 전기적, 기계적, 기능적 특성을 이용하여 데이터를 전송
- 데이터 단위 : 비트(Bit)
- 즉, On/Off의 전기적 신호 상태로 이루어져 이 계층은 데이터 전송이 주 목적
- 역할 : 데이터 전송
- 장비 : 케이블, 리피터, 허브 등
1.4.2. 4-2. 데이터링크 계층(DataLink Layer) 🧨

- 물리적인 연결을 통하여 인접한 두 장치 간의 신뢰성 있는 정보 전송을 담당 (Point-To-Point 전송)
- MAC 주소로 통신
- 역할 : 오류 감지 시, 재전송 기능 존재 (안전한 정보 전달을 위해)
- 데이터 단위 : 프레임(Frame)
- 장비 : 브리지, 스위치 등
1.4.3. 4-3. 네트워크 계층(Network Layer) 📍

- 전송 데이터를 목적지까지 경로를 찾아 전송하는 계층
- 라우팅 기능을 맡고 있는 계층으로 목적지까지 가장 안전하고 빠르게 데이터를 보내는 기능을 가짐
- 즉, 최적의 경로를 알려주는 계층
- 컴퓨터에게 데이터를 전송할지 주소를 갖고 있어서 통신 가능
( = 우리가 자주 듣는 IP 주소가 바로 네트워크 계층 헤더에 속함 ) - 주소(IP)를 정하고, 경로(Route)를 선택하고, 패킷을 전달하는 것이 가장 핵심인 계층
- 데이터 단위 : 패킷(Packet)
- 장비 : 라우터, L3 스위치 등
1.4.4. 4-4. 전송 계층(Transport Layer) 📞
- 데이터를 전송하고 전송 속도를 조절하며, 오류가 발생된 부분은 다시 맞춰주는 계층
- 종단 간 신뢰성 있고, 정확한 데이터 전송을 담당
- 데이터 전송을 위하여 Port 번호 사용
- 역할 : 오류검출 및 복구, 흐름제어, 중복 검사 등 수행
- 데이터 단위 : TCP(Segment), UDP(Datagram)

1.4.5. 04-5. 세션 계층(Session Layer) 📮
- 네트워크 상 양쪽 연결을 관리하고 연결을 지속시켜주는 계층
- 통신 장치 간 상호작용 및 동기화 제공
- TCP/IP 세션을 만들고 삭제시킴
- 역할 : 세션 생성 및 유지 / 세션 종료 / 전송 중단 시 복구 관리
- 대표적인 예시 : OS

1.4.6. 04-6. 표현 계층(Presentation Layer) 🙆
- 데이터를 어떻게 표현할지 정하는 역할을 하는 계층
- 데이터가 다양하기 때문에 데이터를 이해할 수 있게 응용프로그램에 맞춰 변함
- 표현 계층의 3가지 역할
- 송신자에서 온 데이터 해석을 위한 데이터 부호화, 변화
- 수신자에서 데이터 압축을 풀 수 있는 방식인 데이터 압축
- 데이터의 암호화와 복호화 (MIME 인코딩이나 암호화)
- 대표적인 예시 : JPEG, TIFF, GIF, MPEG 등

1.4.7. 04-7. 응용 계층(Application Layer) 🗣️
- OSI의 최상위 계층
- 사용자와 가장 밀접한 계층으로 사용자 또는 어플리케이션이 네트워크에 접근할 수 있도록 도와줌
- 사용자를 위한 인터페이스 지원(사용자에게 보이는 유일한 계층)
- 대표적인 예시 : 메일 전송, 인터넷 접속, 동영상 플레이어 등

[참고자료]
https://blog.naver.com/zkdxhd10823/221243470867
NIC(Network Interface Card 또는 랜카드)
이번 시간에는 NIC에 대해 알아보도록 합시다. . . NIC은 Network Interface Card의 약자로, 우리...
blog.naver.com
http://www.zyxel.kr/product_discontinue.php
자이젤코리아
유무선 네트워크 솔루션
www.zyxel.kr
https://velog.io/@sj_dev_js/네트워크-OSI-7계층을-왜-배울까
[네트워크] OSI 7계층을 왜 배울까?
네트워크를 공부할 때 가장 먼저 배우게 되는 것이 TCP/IP 모델 혹은 OSI 모델이다.오늘날의 네트워크에서 OSI모델은 참조적 모델일 뿐이고 실제로 쓰이는 것은 TCP/IP 모델이라는데 그렇다면 OSI 모
velog.io
https://velog.io/@nellholic108/네트워크-OSI-7-계층
네트워크 OSI 7 계층
네트워크 관련 개념을 공부하던 중에 '데이터를 패킷으로 감싼다' 이런 개념이 많이 나왔습니다. 대략적으로 이해를 하고 있다가 스터디 중에 검색키워드를 알려주셔서이 부분에 대해서 조금
velog.io
https://subspace.com/resources/tune-tcp-udp-performance
Introductory Guide to Tuning Your TCP and UDP Performance
There are some basic considerations and best practices for tuning TCP and UDP performance. Buffer and write sizes can have a dramatic impact.
subspace.com
https://computer-science-student.tistory.com/384
운영체제(OS, Operating System) - 정의, 종류, 기능, 목적
운영체제(OS, Operating System)란? 운영체제(OS, Operating System)는 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고, 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프
computer-science-student.tistory.com
https://dydtjr1128.github.io/image/2019/07/01/Image-compression.html
이미지 압축방식 이해하기(bmp, jpeg, jpg, png, svg) - dydtjr1128's Blog
Image compression 1. Intro 이미지 압축 방식을 이해하기 앞서 이해해야 할 몇가지가 있다. Lossy vs Lossless Indexed...
dydtjr1128.github.io
Free PSD | Technology icon rendering
Download this Free PSD File about Technology icon rendering, and discover more than 99 Million Professional Graphic Resources on Freepik. #freepik #psd #3d #3d #sync
www.freepik.com
'Data Engineering > CS 기초' 카테고리의 다른 글
[CS] 기본검색 알고리즘(Basic Search Algorithm) (2) | 2023.11.28 |
---|---|
[CS] 소프트웨어 개발방법론 (0) | 2023.07.23 |