티스토리 뷰

정보처리기사 시험을 준비했다면 한번쯤 접했을 OSI 7계층과 TCP/IP 4계층

사이드프로젝트를 진행하다가 브라우저에서 url 호출했을 때 서버까지 어떻게 데이터가 전송되는지 물리적으로 어떻게 진행되는 건가 궁금했습니다. 브라우저에서 post, get 방식으로 서버에 요청했을 때 http body에 받아오는 행위가 실제 어떠한 과정을 거치는지에 대해 포스팅을 해보고자 합니다. 

 

 

OSI 7계층에서 각 계층은 무슨 역할을 하는가?

 

 

 

OSI 7계층과 매핑해서 애플리케이션 통신 과정을 정리해보려 합니다.

우선 각 계층의 역할을 아래 테이블과 같이 요약 정리해 보았고, 세부적인 내용을 정리해 보겠습니다.

OSI 7계층 TCP/IP 4계층 역할
application layer Application 애플리케이션에 필요한 통신 방법 제공
presentation layer 애플리케이션 간의 통신 메시지 포맷 관리
session layer 애플리케이션 간의 통신 세션 관리
transport layer Transport 애플레킹션 간의 통신 담당
network layer Internet 호스트 간의 통신 담당
data link layer Network Interface 직접 연결 노드간의 통신 담당
physical layer bits 단위의 data 전송

 

1. Application layer

  • 애플리케이션 목적에 맞는 통신 방법을 제공합니다.
  • 대표적엔 프로토콜로 HTTP, DNS, SMTP, FTP 가 있습니다.
    • 유튜브를 시청 중인 사용자는 유튜브 서버와 HTTP 프로토콜을 사용해 서비스를 이용합니다.
      게시글에 글을 작성하고, 파일을 업로드해 게시하는 일련의 과정도 HTTP 프로토콜을 사용합니다.
    • 파일을 서버에 업로드, 다운로드를 하는 애플리케이션을 이용한다면 FTP 프로토콜을 사용합니다.
      대표적으로 FileZila, WinSCP(윈도), Cyberduck(맥, 윈도우), Putty 가 있습니다.
    • www.naver.com으로 브라우저에 입력해 네이버 도메인으로 접속하는 것은 DNS프로토콜을 이용해 네이버 공인 IP로 연결해 주기에 가능한 기능입니다.
    • SMTP 프로토콜은 사용자가 Gmail, Microsoft Outlook 과같은 서비스를 이용해 이메일을 보낼 때 사용됩니다.
      웹 애플리케이션, 서비스 또는 스크립트에서 SMTP 라이브러리 또는 API를 사용하여 자동화된 이메일 알림, 보고서 전송, 사용자 인증 메일 발송 등의 기능을 구현할 수 있습니다. 예시로 Python의 smtplib 모듈은 SMTP 서버와의 통신을 위해 사용됩니다.

 

실제 서버와 클라이언트 간에 데이터를 전송할 것인가는 아래 Layer에서 구현합니다.
즉, application layer를 제외한 presentation, session, transport, network, data link, physical에서 실제 데이터를 전송하는 부분을 구현하고, application layer는 구현된 기능을 사용하면 됩니다.

 

 

2. Presentation layer

  • 애플리케이션 간의 통신에서 메시지 포맷을 관리힙니다.
    • 인코딩 ↔ 디코딩
      클라이언트에서 특정 Character-set으로 인코딩했다면 서버에서도 동일한 Character-set으로 디코딩해줘야 합니다.
    • 암호화 ↔ 복호화
      클라이언트에서 암호화알고리즘을 이용해 암호화했다면 서버에서도 동일한 암호화알고리즘을 이용해 복호화해줘야 합니다.
    • 압축 ↔ 압축 풀기
      클라이언트에서 압축 후 파일을 전송했다면 서버에서는 압축을 풀어 파일을 받아야 합니다.

 

3. Session layer

  • 애플리케이션 간의 통신에서 세션을 관리합니다.
  • RPC(Remote procedure call)은 Session layer에서 동작합니다.

 

기능을 구분 지어 생각하기엔 어려움이 있기에 위 3개의 layer(Application, Presentation, Session layer)는 하나의 application으로 묶어 생각하는 게 좋다고 생각합니다.

 

4. Transport layer

  • 애플리케이션 간의 통신 담당합니다.
  • 실제로 목적지 애플리케이션으로 데이터 전송합니다.
  • 실제 목적지 애플리케이션으로 데이터를 전송하는 방법으로 UDPTCP가 있습니다.
    • 두 프로토콜 중 어떤 걸 사용할 것인지 결정하는 layer가 Transport layer입니다. 
    • 안정적이고 신뢰할 수 있는 데이터 전송보장을 위한 TCP (3-way handshake)
    • 필수 기능만 제공되는 UDP(보내고 제대로 받았는지 신경 안 쓰는)
실제 보내려는 데이터가 어떻게 목적지까지 찾아가는 기능은 Network layer에서 담당합니다.
Transport layer는 Network layer의 기능을 기반으로 어떤 방식으로 애플리케이션까지 전달할 것지를 구현 합니다.

 

5. Network layer

  • 호스트 간의 통신을 담당(IP) 합니다.
  • 목적지 호스트의 IP주소를 활용해 데이터를 전송합니다.
    • 데이터를 목적지까지 찾아가게 만들어야 하는데 중간에 찾아가는 과정 사이사이에 라우터가 존재하는데 라우터와 같은 장치도 Network layer의 기능을 구현해줘야 합니다. 
      이때 사용하는 프로토콜이 IP 프로토콜입니다.
  • 네트워크 간의 최적의 경로를 결정합니다.
    •  평소에 최적의 경로를 찾아놓고 해당 경로를 이용해 데이터를 전송합니다.
전체 경로를 담당하지만, 각 노드 사이에 어떻게 데이터를 전송할 것인지는 data link layer에서 제공합니다.
network layer는 data link layer의 기능(데이터 전송)을 이용해서 목적지까지 데이터를 보내는 일을 수행합니다.

 

 

6. Data link layer

  • 직접 연결된 노드 간의 통신을 담당합니다.
    • 클라이언트 ↔ 라우터 ↔ 라우터 ↔ 서버 : 각 장치 사이의 통신을 담당합니다.
  • MAC 주소 기반 통신(ARP)을 수행합니다.
    • network layer와 달리 Data link layer는 IP 주소가 아닌 MAC 주소를 사용하기 때문에 IP → MAC 변환을 해줘야 하는데 이때 사용되는 프로토콜이 ARP 프로토콜입니다.

 

 

7. Physical layer

  • bits 단위로 데이터를 전송합니다.
    • 실제 물리적 매개체(유선, 무선)를 통해 실제 데이터를 bits 단위로 전송하는 역할을 합니다.
      Physical Layer에서 실제 노드와 노드 간 데이터를 전송합니다.

 

 

 

 

 애플리케이션은 어떤 과정으로 통신하는가?

 

 

 

통신과정을 간단하게 그림으로 도식화해보았습니다.

각 노드는 동일하게 OSI 7 계층을 구현하고 있습니다. 노드 간에 통신을 위해선 일반적으로 노드 사이에 라우터가 존재하고 라우터는 3개의 Layer(Network layer, Data link layer, Physical layer)의 프로토콜을 구현하고 있습니다. 

각 layer는 위 그림과 같이 각 layer 끼리 통신을 진행합니다.

 

 

※ 전송 예시

  1. 클라이언트에서 서버로 데이터를 전송한다고 하면 클라이언트에서는 Application layer부터 physical layer까지 내려오면서 각 layer 정보를 아래 그림과 같이 포장합니다. 
  2. 포장된 데이터를 라우터로 전송합니다.
  3. 라우터는 받은 포장된 데이터를 하나하나 풀어보며 Network layer까지 풀어봅니다.
  4. 라우터의 Network layer에서는 목적지 IP주소를 확인하고 다시 Network layer부터 Physical layer 까지 포장을 합니다.
  5. Physical layer까지 포장된 데이터는 목적지 서버로 전송됩니다.
  6. 전송받은 데이터를 Physical layer부터 Application layer까지 포장을 풀어봅니다.
  7. 최종적으로 application layer에서 필요한 데이터를 전달받습니다.

 

 

출처

쉬운코딩 - [입문용] 프로토콜과 OSI 7 layer 설명! 네트워크의 기능들이 어떻게 구조화 돼서 동작하는지를 설명합니다! 👍

 

 

 

 

 

 

이상 정리 끝!

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
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
글 보관함