OSI 7 Layer

JuhyeokLee·2022년 2월 25일
0

CS

목록 보기
2/4
post-thumbnail

OSI 7 Layer 란?

일반적으로 같은 규격의 네트워크를 사용하는 경우에는 통신이 원활하지만 서로 다른 규격의 네트워크들이 통신하기 위해서는 표준규격이 필요했다. 그래서 국제표준기구인 ISO가 네트워크 표준모델인 OSI 7 Layer를 발표하였다.

각 계층의 역할

Layer 계층 주요기능 장비 구현
L7 응용프로그램(Application) 응용 서비스를 수행 SW 프로그램
L6 표현(Presentation) 데이터 변환, 압축, 암호화
L5 세션(Session) 세션의 연결을 제공
L4 전송(Transport) 서로 다른 두 네트워크 간의 전송, 흐름제어, 오류제어 게이트웨이 운영체제 커널에 sw적으로 구현됨
L3 네트워크(Network) ip번호를 통해 라우팅 라우터 운영체제 커널에 sw적으로 구현됨
L2 데이터링크(DataLink) 동일한 네트워크에서 데이터 전송, 흐름제어, 오류제어 스위치, 브릿지 하드웨어 구성
L1 물리(Physical) 비트단위를 전기신호로 변환 및 전송 허브, 리피터 하드웨어 구성
* 흐름제어 : 서로 다른 데이터 전송량을 가진 기기에서 전송량을 낮추거나 높이는 기능
  (stop and wait, sliding window)
* 오류제어 : 오류제어는 전송한 데이터에 오류가 있는지 확인하고 오류가 있다면 데이터를 다시 전송

TCP/IP Model

현재 일반적으로 사용되는 모델은 OSI 7 Model이 아닌 TCP/IP Model이다.
TCP/IP Model표현 세션 계층이 응용 계층으로 통합되어있다.

장비관련 사전지식

허브는 같은 네트워크 안에서 데이터를 보내주기 위한 장비로 같은 네트워크에 연결된 컴퓨터들은 모두 데이터를 받을 수 있다. 이러한 문제점을 해결하기 위해서 스위치를 사용한다.

스위치는 같은 네트워크 안에 특정 주소로 데이터를 보내주기 위해 라우팅하는 기능을 하며 특정 주소가 아닌 컴퓨터는 보내는 데이터를 받아볼 수 없다.

라우터는 서로 다른 네트워크에 있는 특정 컴퓨터에 데이터를 보내주기 위해 스위치들을 연결한 장비이다. ex) 공유기
이런식으로 라우터를 전세계적으로 연결한 것이 인터넷이다.

데이터 전송과정

* 서로 다른 네트워크에 A와 B라는 컴퓨터(노드)가 존재하고 A에서 B로 데이터를 보내는 상황
* 각각의 컴퓨터는 인코더와 디코더가 존재하여 정방향 역방향으로 모두 사용가능

  1. A의 응용계층에서 http 프로토콜을 통해서 데이터에 http status 및 http method등 다양한 값을 헤더에 추가한다.
    ex) 주요 프로토콜 : http, smtp, ftp, telnet

  2. 전송계층에서 TCP, UDP 중 어떤 프로토콜을 사용할지 정하고 정해진 프로토콜과 출발지와 도착지의 포트번호를 헤더에 넣어서 캡슐화 후 만들어진 세그먼트를 네트워크 계층으로 전송한다. 포트번호의 역할은 후에 데이터를 어떤 프로세스에 주어야할지 정해주는 역할을 한다. 그렇기 때문에 각각의 프로세스들은 포트번호를 겹치지않게 가지고 있으며, 포트번호는 송신자가 알고 있다. 일반적으로 도메인주소로 접속하는것도 포트번호가 숨겨져 있기 때문에 포트번호를 송신자가 모르는 것이 아니다.

  3. 네트워크 계층에서는 전송 계층에서 수신받은 세그먼트에 출발지와 도착지에 대한 IP주소정보를 헤더로 만들어서 붙이고 캡슐화하여 패킷을 생성한다. 이 때, IP주소 정보는 DNS서버에 접근하여 도메인네임을 통해 가져온다.(DNS서버는 통신사와 연결되어 있어서 따로 설정안해도 됨)

    Routing : 라우팅알고리즘(RIP,OSPF)을 통해서 찾은 최적의 경로로 포워딩 테이블(라우팅 테이블)을 만드는 작업
    Forwarding : 포워딩 테이블을 통해 패킷을 이동시키는 작업
  4. 데이터링크 계층에서는 현재 위치에서 가장 가까운 라우터의 MAC주소를 넣는다. 이유는 목적지까지 직접적인 연결이 되어있지 않기 때문에 목적지까지 도착하기 위해서 지나치는 라우터들의 MAC 주소를 넣는 것이다. DHCP, ARP를 이용해 IP주소를 MAC주소로 변환하여 헤더에 넣는다. 오류제어를 위해서 트레일러 라는 정보를 함께 넣고 인코딩하여 프레임을 만든다.

    MAC주소 : 네트워크 내에서 컴퓨터를 구분하기 위해 각 컴퓨터에 부여되는 주소 값
  5. 물리계층에서 수신된 프레임을 아날로그 신호로 바꾸거나 아날로그 신호를 비트 단위로 변경하여 데이터를 전송한다.

  6. 중간노드(스위치)에서 전기신호를 받은 후 전달받은 데이터를 디코딩(decapsulation)하여 만약 라우터의 맥 주소가 있다면 다시 캡슐화(encapsulation)하여 라우터로 전송하고 만약에 라우터의 맥 주소가 아니라면 목적지 노드가 같은 네트워크 상에 있는 것이기 때문에 해당 맥 주소를 가진 노드에게 데이터를 전달한다. 물론 이때도 전기신호로 전달하게 되고 목적지의 노드는 이 데이터를 다시 디코딩하여 데이터를 받게 된다.

TCP, UDP(전송계층)

TCP : 보낸 데이터를 손실이 되었는지 혹은 순서가 변경되었는지 확인하여 신뢰성 있는 데이터 전송을 보장한다. 손실되었을 경우엔 재전송한다.

UDP : 일단 데이터를 보내고 나면 보낸 데이터에 대한 책임을 지지 않기 때문에 신뢰도가 떨어진다. 하지만 속도가 빠르고 연속적이라 스트리밍이나 VoIP같은 기술에 사용된다.

출처 : 테코톡 테코톡

profile
성장하는 개발자가 되겠습니다~

0개의 댓글