본문 바로가기

CS

[네트워크] 네트워크 기본 5계층, OSI 7계층

TCP와 UDP를 이해하기 위해 네트워크 기본 5계층에 대해 먼저 알아보겠습니다.

우선 네트워크란 무엇인가요?


네트워크(Network)는 컴퓨터들이 통신 기술을 이용하여 그물망처럼 연결된 통신 이용 형태를 뜻함

네트워크의 대략적인 이해

  • 처음에 케이블을 이용해 컴퓨터간 통신, 컴퓨터 대수가 늘어나자 허브를 이용하기 시작
  • 이때 MAC주소를 활용하여 통신에 활용하였으며 이 네트워크를 Local Area Network(LAN, 랜)이라 부름
  • 이때의 통신 방식 중 하나가 Ethernet(컴퓨터 네트워크 기술의 하나로, 일반적으로 LAN, MAN 및 WAN에서 가장 많이 활용되는 기술 규격)
  • LAN 허브 끼리 연결한 것이 좀 더 거대한 네트워크를 WAN(Wide Area Network) 이라 부름
  • 이때의 통신을 위해 IP 주소를 사용, 이때부터 허브가 주소를 가지게 되며 게이트웨이(혹은 라우터)라고 불리게 됨
  • 이때 단순히 IP주소로만 데이터를 주고받는다면 효율이 떨어지게 되므로 '어떤 용도의 데이터'라는 구분을 위해 포트를 사용함. 데이터를 받는 컴퓨터가 쉽게 처리할 수 있도록 특정 포트로 보내는 것.
  • 각각의 어플리케이션에 각각의 포트를 부여하는 것, TCP와 UDP는 통신 방식이 다르기 때문에 포트도 각각 가지고 있다.

그럼 OSI 7계층, 네트워크 5계층은 무엇인가요?

소프트웨어 아키텍처 중 Layered Architecure를 따르는 대표적인 예가 네트워크 시스템, 네트워크 시스템은 일종의 소프트웨어
계층 모델은 이 소프트웨어의 구조를 설명하는 것

네트워크 7계층, OSI 7계층


  • 네트워크 7계층은 OSI 7 Layer 라고도 불리며 국제 표준화 기구(ISO)에서 다양한 네트워크의 호환을 위해 설계한 표준 네트워크 모델
  • 프로토콜을 기능별로 나눈 것으로, 각 계층은 하위 계층의 기능을 이용하고, 하위 계층은 상위 계층에게 기능을 제공
  • 전송계층(transport)과 응용계층(application) 사이에 session, presentation layer 존재
  • 하지만 TCP/IP 5계층 모델을 더 많이 사용함

Session layer(세션계층)

  • applications와 transport 레이어 사이에 통신을 원활하게 해주며, 데이터를 presentation layer에 전달해줍니다.
  • 물리계층에서 전송계층까지는 데이터를 전달해 주는 개념, 세션계층은 응용프로그램 간의 대화를 유지시켜주기 위한 구조를 설정
  • 대화가 성립하도록 제어, 다이얼로그 제어
  • 분실데이터 복원을 위한 동기화 지점을 두고 데이터 손실을 복구
  • 동기화, 세션 연결/관리/종료 , 네트워크 오류 검사 및 복구, 전송모드(반이중, 직렬, 병렬, 동기, 비동기)를 결정

presentation Layer(표현계층)

  • 캡슐화되지 않은 어플리케이션 데이터가 어플리케이션에서 이해될 수 있는지 확인
  • 각 어플리케이션들이 정보를 서로 원활히 통신하기 위하여 필터 및 변환하는 과정을 담당
  • 하드웨어랑 OS에 다른 차이를 변환을 통해서 없애줌
  • 데이터의 압축과 암호화를 처리

네트워크 5계층, TCP/IP 5계층


  • TCP/IP는 인터넷 세계에서 표준으로 사용되고 있는 네트워크 프로토콜
  • 네트워크 5계층은 네트워크의 기본 구조를 5개의 계층으로 나눠서 표준화한 것

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

  • 물리적인 연결과 전기 신호 변환/제어
  • 0과 1의 나열을 아날로그 신호로 바꾸어 전선으로 보내고(인코딩) 그 신호를 0과 1로 바꾸어 해석(디코딩), 하드웨어적으로 구현
  • 전송 단위는 Bit(0과 1)
  • ex) 네트워크 케이블 등

2계층 : Data link layer(데이터링크 계층)

  • 같은 네트워크 안에 여러대의 컴퓨터들이 데이터를 주고 받기 위해 필요한 모듈
  • 같은 네트워크, 세그먼트의 범위 : 허브에 의해 연결되어 있는 범위(멀티액세스), 컴퓨터와 라우터, 라우터와 라우터 사이(포인트 투 포인트)
  • Framing : 원본 데이터 앞뒤로 일종의 식별자를 추가해 데이터를 식별할 수 있도록 하는 작업
  • 프리엠블 : 지금부터 프레임이 시작된다는 일종의 신호로 그 이후 데이터를 보냄, 비트를 읽는 타이밍이 맞아야 함
  • 네트워크 기기 간 데이터 전송 및 물리 주소를 결정 -> 랜 카드에서 하드웨어적으로 구현
  • 데이터 전송 단위는 Frame, 수신지와 송신지의 MAC주소가 포함됨
  • 맥 주소는 최종 목적지가 아닌 다음 목적지(라우터의 맥 주소)를 가르키며 전송 과정 중에 다음 장비의 주소로 교체됨(갱신)
  • Ethernet(이더넷, 컴퓨터 네트워크 기술의 하나로, 일반적으로 LAN, WAN에서 가장 많이 활용되는 기술 규격), Wi-fi 하나의 네트워크를 연결
  • 이더넷 헤더(수신처 MAC주소:송신처 MAC주소:타입) - 페이로드(3계층의 PDU) - 이더넷 트레일러(FCS, 에러 체크용 비트열)
  • 허브에서 온 신호 중 수신처 MAC주소와 자신의 MAC주소를 비교해 일치하지 않으면 폐기함
  • CSMA/CD라는 액세스 제어(반이중 통신)를 활용해 케이블의 신호를 감지해 누군가 송신 중이라면 송신하지 않고 송신 후 충돌이 일어나면 다시 재수행
  • 스위치를 활용해 전이중 통신

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

  • 스위치로 구성된 네트워크에서 1대만 송신한 브로드캐스트가 모든 컴퓨터에 도달, 라우터를 넘어서는 브로드캐스트는 전송되지 않음
  • 2계층에서처럼 브로드캐스트로 통신을 하면 낭비가 심함, 라우터 사이의 통신에는 새로운 프로토콜이 필요 -> 3계층 라우터 끼리의 통신
  • 라우터를 통해서 네트워크들이 서로 소통 -> 운영체제 커널에 소프트웨어적으로 구현
  • 라우팅, 흐름 제어, 세그멘테이션(segmentation/desegmentation), 오류 제어, 인터네트워킹(Internetworking) 등을 수행
  • 여러 네트워크를 연결(다른 네트워크와 통신하기 위한 경로를 설정하고 논리 주소를 결정)
  • IP헤더 : 버전, 헤더 길이, 서비스 타입, 데이터 길이, ID, 플래그(데이터그램을 분할했는지 여부), 플래그먼트 오프셋(분할한 경우 본래대로 되돌릴 때 사용), TTL, 프로토콜, 헤더 체크섬, 송신처 IP주소, 수신처 IP주소, 옵션
  • TTL : 라우터를 경유할 때마다 1만큼씩 줄어들고 0이 되면 데이터그램이 파기됨, 64개나 128개로 지정되어 라우팅이 잘못되었을 때 영원히 떠도는 케이스르를 방지함
  • 데이터 전송 단위는 Datagram(Packet) : data에 IP주소 정보를 붙인 것, 2계층으로 전달됨
  • ex) IP, 클라이언트 PC(192.168.219.120)에서 웹 서버 컴퓨터로(127.12.24.12) 요청을 보냄
  • 송신처 IP주소: DHCP를 통해 할당받음, 송신처 MAC주소: 알고 있음, 수신처 IP주소: DNS로 질의, 수신처 MAC 주소: IP주소로 ARP요청으로 알아냄
  • ICMP(internet control message protocol) : 에러 보고 프로토콜, 네트워크 제어 관리 등을 수행, 라우터에 목적지에 대한 정보가 없으면 라우터는 송신 불능 메시지를 ICMP로 통지함
  • IP헤더 + ICMP 메시지 형태, 상태조사를 위한 쿼리와 에러 통지를 위한 에러 메시지로 구성
  • Echo : 에코 응답과 에코 요청(ICMP 타입 0과 8), ping(임의의 수신처에 에코 요청을 보내는 소프트웨어, 송신처와 수신처 사이 데이터 송수신이 가능한지 확인, 네트워크 상태 조사)
  • TIme Exceeded : 타입 11, TTL은 패킷을 파기하는데 이때 파기를 통지하는 메시지, traceroute(타입11을 사용한 네트워크 체크용 소프트웨어, 수신처까지의 경로를 알려주는 소프트웨어), TTL을 1부터 늘려가면 각 라우터에서 보내는 Time exceeded 메시지를 통해 라우터 경로를 알 수 있음

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

  • 3계층까지는 수신처가 없거나 데이터의 손실, 에러 등을 신경쓰지 않음, 4계층에서부터 처리
  • 응용 계층에서 전달받은 데이터를 목적지 응용계층의 프로그램까지 전달하는 역할, 재전송도 담당
  • 데이터를 받고자 하는 프로세스들은 포트번호(하나의 컴퓨터에서 동시에 실행중인 프로세스들이 겹치지 않게 가져야할 정수값)가 필요함
  • 데이터를 분류해 어떤 프로세스에 데이터를 도달하게 할지 결정하는 모듈, 각 노드에서 동작중인 어플리케이션에 데이터를 할당
  • 운영체제 커널에 소프트웨어적으로 구현(TCP/IP 프로토콜에 따라 동작하도록 만들어진 OS 내장 통신 프로그램)
  • 네트워크 계층에서 보내온 데이터에 대해 정렬, 오류 정정 등을 수행
  • ex) 웹브라우저의 49142 포트에서 웹 서버의 80번 포트로 요청을 보냄
  • ex) TCP/UDP
  • 방화벽 : 특정 기준의 트래픽을 차단, 대부분은 transport layer에서 작동, 특정 포트로의 접근을 모두 차단한다.
  • 데이터 전송 단위는 Segment

5계층 : Application Layer(응용 계층)

  • 사용자에게 서비스를 제공하고 사용자가 제공한 명령을 하위계층에 전달.
  • 웹을 들어가거나 이메일을 보내는 등 어플레케이션 특징적인 작동
  • 이메일, 웹 브라우저, 파일 전송 등 통신하기 위해 필요한 서비스를 제공
  • ex) HTTP, SMTP etc..

개념 정리


프로토콜

  • 컴퓨터끼리 통신을 할 때 어떤 절차에 따라 뭘 보낼 것인가와 같은 규칙을 말함
  • TCP/IP 프로토콜은 하나의 프로토콜이 아니라 인터넷에서 사용되는 각종 표준 프로토콜(HTTP, TCP, UDP, ARP, 이더넷 등)을 일컫는 말
  • 서로 다른 OS나 통신사를 사용해도 공통의 TCP/IP 프로토콜을 사용해서 두 컴퓨터가 통신을 할 수 있음

라우터와 게이트웨이, 스위치 차이

  • 같은 네트워크 내부에서 데이터 전송을 수행하는 기기
  • 네트워크 사이에 데이터 전송을 수행하는 기기
  • 라우터는 주로 LAN과 WAN을 연결(layer3)하는데 사용, 게이트웨이는 프로토콜이 다른 네트워크를 연결(layer4)할 때 주로 사용
  • 라우터는 장비, 게이트웨이는 개념적인 용어

PDU (Protocol Data Unit)이란?

  • 데이터를 보내기 위해서는 전송하려는 데이터(SDU, Service Data Unit) 이외에도 제어데이터(PCI, Protocol Control Information) 필요
  • 이 두개를 합한 것이 프로토콜 데이터 유닛이며, PCI에는 송수신자 주소 및 오류 검출 코드, 프로토콜 제어 정보 등이 포함됨
  • 데이터를 보낼 때는 OSI 모델 각 계층을 지날 때마다 필요한 제어 데이터를 추가함(반대로 데이터를 받을 때는 제어 데이터를 벗겨냄)
  • 이런식으로 데이터를 덧붙여 PDU를 완성하는 것을 캡슐화라 부름, 제어데이터가 앞에 붙으면 헤더(header), 뒤에 붙으면 트레일러(trailer)
  • 물리 계층: Bit, 데이터링크 계층: Frame, 네트워크 계층: Packets, 전송 계층: Segment, 세션, 표현, 어플리케이션 계층: Message(Data)

IP주소

  • 위치정보를 갖는 어드레싱(논리적 주소)과 경로를 찾는 라우팅의 기능을 갖춘 프로토콜
  • 논리주소는 유니캐스트, 멀티캐스트, 브로드캐스트 3가지 주소로 구성, IP주소는 네트워크 주소와 컴퓨터 번호의 조합
  • 호스트 버호의 비트가 모두 0인 경우 네트워크 주소, 모두 1인 경우 브로드캐스트 주소
  • IP주소 A클래스, B, C, D(네트워크 부분이 32비트, 멀티캐스트로 사용되는 특수한 주소)
  • 클래스 A의 주소로는 한 네트워크당 1677만대 호스트의 어드레스 할당 가능. 하지만 실제로 저렇게 쓰지는 않아 효율적으로 사용하기 위해 서브넷 마스크 활용
  • 서브넷, 서브넷팅 : 네트워크를 작은 네트워크로 나누는 것
  • 서브넷 마스크: 네트워크 번호, 서브넷 번호의 비트수를 나타내기 위해 활용하는 비트열로 호스트번호를 0, 나머지는 모두 1로 표기
  • 클래스 C보다는 A와 B에서 주로 서브넷 활용
  • 슈퍼넷 : 클래스를 통합해서 1개의 네트워크로 운용하는 것(클래스리스 어드레싱) <-> 클래스풀 어드레싱

DHCP

  • 송신처(자신의) IP주소의 결정이 필요, 동적과 정적할당이 있음
  • IP 주소가 동적으로 컴퓨터에 설정되는 방식
  • 네트워크에 속한 호스트의 IP주소가 중복되지 않아야 함, 각 호스트들에 대해 IP주소를 할당하고 관리하는 자동 작업
  • 신규 호스트는 네트워크의 모든 호스트에게 브로드캐스트 방식으로 DHCP 발견 메시지를 보내고 DHCP 서버가 사용 가능한 IP주소를 알려주는 방식으로 자동 할당(DHCP서버도 브로드캐스트 방식으로 알려줌)

허브와 스위치

  • 명확한 개념은 아니나 허브는 신호의 증폭과 재생을 수행하고 다수의 컴퓨터를 연결하는 개념
  • 그 외 제어는 하지 않음, 허브를 통해 신호가 도달하는 범위를 넓힐 수 있음(하나의 케이블 취급)
  • 스위치는 제어의 개념이 추가
  • MAC주소 필터링 : 스위치에서 송신처와 수신처 MAC주소를 기억한 후 해당 프레임을 적절한 포트에만 보냄(포트에 연결되어 있는 컴퓨터의 맥주소를 기억)
  • 학습 전의 MAC주소 수신의 프레임을 수신한 경우랑 멀티캐스트와 브로드캐스트의 경우에만 플러딩이 발생(스위치 사용 전보다 오류 줄임)
  • 버퍼링 : 같은 포트로의 프레임이 동시에 도착할 때 등 충돌 가능성이 있는 프레임을 임시로 저장해 두는 것
  • 버퍼 용량의 제한이 있기 때무네 백프레셔, IEEE802.3x 등을 활용해 더이상의 송신을 중단시킴
  • 반이중(Half duplex) : 누군가 송신 중이면 송신 불가능, 내가 송신 중이면 수신 불가능 등, CSMA/CD
  • 전이중(FULL duplex) : 동시에 송신과 수신을 할 수 있음, 스위치 활용