미새문지

크래프톤 정글 week06, day47 - OSI 7계층, TCP/IP 4계층, 클라이언트-서버 모델, 잔디 심기 본문

크래프톤 정글/TIL

크래프톤 정글 week06, day47 - OSI 7계층, TCP/IP 4계층, 클라이언트-서버 모델, 잔디 심기

문미새 2024. 2. 24. 00:23
728x90

OSI7 Layer(OSI 7계층)

  • 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것
  • 통신이 일어나는 과정을 단계 별로 파악하기 위해 계층을 나눴다.
    • 흐름을 한 눈에 알아볼 수 있어 7단계 중 특정한 곳에 이상이 생기면 이상이 생긴 단계만 고칠 수 있기 때문이다.

OSI 7계층

1계층 - 물리 계층(Physical Layer)

  • 물리 계층은 주로 기계적인 특성을 이용해서 통신 케이블로 데이터를 전송하게 되는데, 데이터를 전달만 하고 전송하는 데이터가 무엇인지, 어떤 에러가 있는지는 신경 쓰지 않는다.
  • 단지 데이터를 전기적인 신호로 변환해 주고 받는 기능만 할 뿐이다.
    • 대표적인 장비는 통신 케이블, 리피터, 허브 등이 있다.

허브

 

2계층 - 데이터 링크 계층(DataLink Layer)

  • 물리 계층에서 송수신되는 정보의 오류와 흐름을 관리해 안전한 정보의 전달을 수행할 수 있도록 도와주는 역할을 한다.
  • 이 계층에서는 MAC 주소를 가지고 통신하게 되며, 오류도 찾아주고 재 전송도 가능하다.
  • 전송되는 단위는 프레임이라고 하고, 대표적인 장비로는 브릿지, 스위치 등이 있다.

스위치

 

3계층 - 네트워크 계층(Network Layer)

  • 이 계층에서 가장 중요한 기능은 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능(라우팅)이다.
    • 그 외의 기능은 흐름 제어, 세그멘테이션, 오류 제어 등을 수행
  • 경로를 선택하고 주소를 정하고, 경로에 따라 패킷을 전달해주는 것이 이 계층의 역할이며, 다양한 길이의 데이터를 네트워크들을 통해 전달하고, 그 과정에서 전송 계층이 요구하는 서비스 품질(QoS)를 제공하기 위한 기능적, 절차적 수단을 제공한다.
    • 주소 부여(IP), 경로 설정(Route)
  • 대표적인 장비는 라우터이며, 이 계층에서 동작하는 스위치도 있다.

 

4계층 - 전송 계층(Transport Layer)

  • TCP 프로토콜을 이용하며, 포트를 열어서 응용프로그램들이 전송을 할 수 있게 하는 통신 활성화 계층이다.
  • 데이터가 왔다면 해당 데이터를 하나로 합쳐서 5계층으로 전송한다.
  • 전송 계층은 특정 연결의 유효성을 제어하고, 일부 프로토콜은 상태 개념(Stateful)이 있으며, 연결 기반(Connection oriented)이다.
    • 이는 전송 계층이 패킷들의 전송이 유효한지 확인하고 전송 실패한 패킷들을 다시 전송한다는 것을 뜻한다.
  • 종단 간 통신을 다루는 최하위 계층으로 종단간 신뢰성 있고 효율적인 데이터를 전송하며, 기능은 오류 검출 및 복구와 흐름 제어, 중복 검사 등을 수행한다.

 

5계층 - 세션 계층(Session Layer)

  • 데이터가 통신하기 위한 논리적인 연결을 말하며, 양 끝단의 응용 프로세스가 통신을 관리하기 위한 방법을 제공한다.
    • 동시 송수신 방식(Duplex), 반 이중 방식(Half-Duplex), 전이중 방식(Full Duplex)의 통신과 함께, 종료, 다시 시작 과정 등을 수행한다.
    • 세션 설정, 유지, 종료, 전송 중단 시 복구 등의 기능이 있다.
  • 통신하는 사용자들을 동기화하여 오류 복구 명령들을 일괄적으로 다룬다.

 

6계층 - 표현 계층(Presentation Layer)

  • 데이터 표현이 상이한 응용 프로세스의 독립성을 제공하고, 암호화한다.
  • 표현 계층은 코드 간의 번역을 담당하여 사용자 시스템에서 데이터의 형식 상 차이를 다루는 부담을 응용 계층으로부터 덜어준다.
    • MIME 인코딩이나 암호화 등의 동작이 이 계층에서 이루어진다.
    • 해당 데이터가 TEXT인지, GIF인지, JPG인지의 구분 등이 표현 계층의 몫이다.

 

7계층 - 응용 계층(Application Layer)

  • HTTP, FTP, SMTP, Telnet 등과 같은 프로토콜이 있다.
  • 우리가 사용하는 브라우저나 메일 프로그램은 프로토콜을 보다 쉽게 사용하게 해주는 응용 프로그램이며, 해당 통신 패킷들은 위의 프로토콜에 의해 모두 처리된다.
  • 응용 계층은 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행한다.
    • 가상터미널(텔넷), JTM(표준 ISO/IEC 8832) 등이 있다.

 

요약

  • 1계층 : 케이블, 리피터, 허브를 통해 데이터를 전송한다.
  • 2계층 : 프레임에 주소 부여(MAC 주소)하고 에러 검출, 재 전송, 흐름 제어 등의 기능을 한다.
  • 3계층 : 주소 부여(IP), 경로 설정(Route) 기능을 한다.
  • 4계층 : 패킷 생성(Assembly, Dessembly, Sequencing …) 및 전송
  • 5계층 : 통신하는 사용자들을 동기화하고 오류 복구 명령들을 일괄적으로 다룬다. 통신을 하기 위한 세션을 확립/유지/중단(운영체제가 해준다.)
  • 6계층 : 사용자의 명령어를 완성 및 결과 표현, 포장/압축/암호화
  • 7계층 : 네트워크 소프트웨어 UI 부분, 사용자의 입출력(I/O) 부분

 

TCP/IP 4 Layer(TCP/IP 4계층)

 

 

1계층 - 네트워크 액세스 계층(Network Access Layer)

  • OSI 계층의 물리 계층과 데이터 링크 계층에 해당하며 신뢰성 있는 데이터 전송을 담당한다.
  • 물리적인 주소로 MAC 주소를 사용하고 LAN, 패킷망 등에 사용한다.
  • 에러 검출 기능과 패킷의 프레임화
  • 주요 프로토콜 : 이더넷, 토큰 링, ATM

 

2계층 - 인터넷 계층(Internet Layer)

  • OSI 계층의 네트워크 계층에 해당하며 호스트 간의 라우팅을 담당한다.
  • 전송 계층으로부터 받은 데이터에 IP 패킷 헤더를 붙여 전송한다.
  • 통신 노드 간의 IP 패킷을 전송하는 기능과 라우팅 기능을 담당하며 어드레싱과 패키징 기능도 제공한다.
  • 주요 프로토콜 : IP, ARP, ICMP, RARP

 

3계층 - 전송 계층(Transport Layer)

  • OSI 계층의 전송 계층에 해당하며 프로세스 간의 신뢰성 있는 데이터 전송을 담당한다.
  • 통신 노드 간의 연결을 제어하고 네트워크 양단의 송수신 호스트 사이에서 신뢰성 있는 데이터 전송을 담당한다.
  • 주요 프로토콜 : TCP, UDP

 

4계층 - 응용 계층(Application Layer)

  • OSI 계층의 세션 계층, 표현 계층, 응용 계층에 해당하며 사용자와 가장 가까운 계층으로 서버나 클라이언트 응용 프로그램이 이 계층에서 동작한다.
  • 동작하기 위해서는 전송 계층의 주소, 즉 포트번호를 사용하고 TCP/UDP 기반의 응용 프로그램을 구현할 때 사용한다.
  • 주요 프로토콜 : 파일 전송(FTP), 원격 로그인(Telnet), 지원 서비스 범주(DNS, SNMP), 기타 프로토콜(HTTP, SSH), 전자 메일 범주(SMTP, POP3)

 

클라이언트 서버 모델(Client-server model)

  • 서비스 요청자인 클라이언트와 서비스 자원의 제공자인 서버 간에 작업을 분리해주는 분산 애플리케이션 구조이자, 네트워크 아키텍처를 나타낸다.

  • 클라이언트-서버 구조
    • 클라이언트는 서비스를 사용하는 사용자 혹은 사용자의 단말기를 가리킨다.
    • 서버는 서비스를 제공하는 컴퓨터이며, 다수의 클라이언트를 위해 존재하기 때문에 일반적으로 매우 큰 용량과 성능을 가지고 있다.
    • 특정 시스템이 클라이언트-서버 구조로 만들어져 있다는 것은 클라이언트와 서버가 각자의 역할에 맞게 구성됨을 말하며, 대표적인 예로는 WWW(월드 와이드 웹)이 있다.
    • 웹사이트에서는 웹 서버(Apache)가 서버 역할을 하고, 사용자가 쓰는 웹 브라우저가 클라이언트 프로그램이 된다.
  • 그러나 근래에는 네트워크 응용 프로그램들의 기능이 고도화 되고 있어 웹 2.0에서는 클라이언트면서 동시에 서버인 경우도 종종 볼 수 있다.

 

오늘의 잔디심기

백준
7568
JavaScript
실버5
덩치
let Dungchi = () => {
    const fs = require("fs");
    const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
    let input = fs.readFileSync(filePath).toString().split("\n");

    const n = Number(input[0]);
    let people = [];

    for(let i = 1; i <= n; i++) {
        const [weight, height] = input[i].split(" ").map(Number);
        people.push({weight, height});
    }

    for(let i = 0; i < n; i++) {
        let rank = 1;
        for(let j = 0; j < n; j++) {
            if(i !== j && people[i].weight < people[j].weight && people[i].height < people[j].height) {
                rank++;
            }
        }
        process.stdout.write(rank + " ");
    }
}

Dungchi()

 

 

학습 시간 : 10 ~ 25시 

728x90