이제는 OSI 계층 진짜 이해하자 진짜 진짜

설현아·2025년 5월 2일

1계층부터 4계층까지다.

OSI 7계층

https://www.cloudflare.com/ko-kr/learning/ddos/glossary/open-systems-interconnection-model-osi/

  1. Application Layer
  2. Presentation Layer
  3. Session Layer
  4. Transport Layer
  5. Network Layer
  6. Data Link Layer
  7. Physical Layer

TCP/IP 4계층

https://ko.wikipedia.org/wiki/인터넷프로토콜스위트

  1. Application Layer
  2. Transport Layer
  3. Internet Layer
  4. Network Access Layer

택배 보내는 과정으로 이해해보기(from GPT..)

  1. 가 물건을 싸지 (Application)
  2. 내용물 포장 (Presentation)
  3. 운송장 부착 + 수거 약속 (Session)
  4. 기사 호출해서 배달 시작 (Transport)
  5. 물류창고 경로 설정 (Network)
  6. 택배 트럭에 실음 (Data Link)
  7. 도로에서 달림 (Physical)
계층이름주요 역할 및 예시
7응용 계층 (Application Layer)사용자 앱과 직접 상호작용. 예: HTTP, FTP, SMTP
6표현 계층 (Presentation Layer)데이터 형식, 암호화, 인코딩 처리. 예: JPEG, TLS
5세션 계층 (Session Layer)세션 관리, 동기화, 재연결. 예: NetBIOS, RPC
4전송 계층 (Transport Layer)신뢰성 있는 데이터 전송. 예: TCP, UDP
3네트워크 계층 (Network Layer)라우팅, 논리 주소 처리. 예: IP, ICMP
2데이터링크 계층 (Data Link Layer)MAC주소, 에러 검출. 예: Ethernet, PPP
1물리 계층 (Physical Layer)전기/광 신호로 비트 전달. 예: 케이블, 하드웨어 장치

이제 본격적으로 하나씩 파보자.

OSI 1계층 - Physical Layer

물리 계층

대표적으로는 이더넷, 광섬유가 있으며 하드웨어와 가장 밀접한 계층이다.

진짜로 전선을 타고 전기 신호가 움직이면서 이루어지는 통신을 한다.

https://namu.wiki/w/이더넷 케이블

이런 랜선을 본 적 있을 것이다. 이는 UTP라는 이름으로 익숙하게 알려진 케이블이다.

네트워크도 결국에는 케이블로 0과 1의 신호를 전기(즉, 빛이다)로 흘려보내는 것이다.

Physical Layer는 진짜 하드웨어적인 그 전기 신호를 말한다.

이에는 특징이 있는데 하나씩 살펴보자.

물리 계층 특징

  1. 비트 단위로 전송한다.

    비트는 0과 1로 나타낸다. 전기 신호도 논리적으로 0과 1의 신호로 바꾸어서 보낸다.

  2. Modulation, Demodulation

    비트 단위는 디지털 신호다. 0과 1로 정확하게 분할된다.

    그러나 물리 계층에서 랜선으로 보내는 전기 신호는 아날로그 신호이다. 디지털 신호를 아날로그 신호로 변환하는 과정을 물리 계층에서 수행한다. 이렇게 변환해주는 변환기가 있는데 이를 모뎀이라고 한다.

  3. 전송 방식

    • Simplex 단방향 전송 방식(회선 1)으로, 키보드 입력이나 TV 방송을 예로 들 수 있다.
    • Half-Duplex 반이중 전송 방식(회선 1)으로, 양방향 통신이 가능하지만 동시에 통신이 이루어질 수는 없다. 한 번에 한 방향만 전송 가능하다. 무전기를 떠올리면 좋다. 허브의 데이터 전송 방식이다.
    • Full-Duplex 전이중 전송 방식(회선 2)으로, 통화를 떠올리면 좋다. 동시에 말하고 들을 수 있다. 스위치, 이더넷의 전송 방식이다.

네트워크 하드웨어 구성요소

UTP 케이블

데이터를 신호로 전달하는 물리 매체

리피터 Repeater

약해진 전기 신호를 증폭해서 다시 보내는 물리 계층의 장비

모뎀 Modem

ISP와 연결하기 위해 필요한 장치이다.

전송선에 디지털 신호를 바로 보내면 신호 전달이 잘 되지 않기 때문에 디지털 신호를 아날로그 신호로, 아날로그 신호를 디지털 신호로 형식을 변경하는 기기이다.

WAN(외부망)에 연결되어 전화선이나 케이블을 디지털화 한다. 별도 장비로 분리되거나 공유기에 내장되어 있다.

NIC Network Interface Card

host 내부와 네트워크 외부의 연결다리 역할을 한다. 구체적으로는 CPU, 메모리 등 시스템이 처리한 데이터를 네트워크로 내보내거나, 네트워크에서 들어온 데이터를 CPU로 전달한다.

데이터를 네트워크로 내보낼 때, 디지털 비트를 전기 신호로 변환한다. 이 전기 신호는 LAN(내부망)의 경로에 있는 다른 호스트, 스위치, 허브 등으로 전달할 수 있다.

  • PHY 블록 : 네트워크 카드 칩이 케이블 단자와 직접적으로 연결되는 부분이다. 여기에서 디지털 비트를 전기 신호로 바꾸거나, 전기 신호를 디지털 비트로 복원하는 역할을 수행한다. 모뎀과의 차이는 LAN용 전기 신호를 처리한다는 점이다.
  • MAC 블록 : 프레임 헤더를 추가하는 2계층의 역할을 하며, MAC 주소로 수신 여부를 판단한다.

허브 Hub

수신한 신호를 내부망의 전체 host에 뿌려준다. 이를 브로드캐스트라고 한다.

요청을 보낸 host를 알지 못하고 모두에게 보내서 효율, 보안적 측면에서 매우 안 좋다.

따라서 허브는 현대에서 잘 사용되지 않고 스위치로 대체되었다. (스위치는 MAC 주소를 확인하여 필요한 포트에 데이터 전달)

OSI 2계층 Data Link Layer

여러 컴퓨터가 한 케이블을 공유한다면 어느 컴퓨터가 언제 데이터를 전송할지 정해주는 역할이다. 충돌 없이 데이터를 전송하기 위해서는 규칙을 정해야 한다.

데이터 링크 계층 특징

  • 프레임 Frame 단위로 비트 스트림을 나누어, 데이터를 주고 받는다.
  • MAC 주소로 목적지를 식별한다. *MAC 주소? 기기에 부여된 고유의 식별자이다.
  • 충돌, 에러 처리를 한다.

주요 기술

  • 이더넷 유선 LAN 기술이며 MAC 주소 기반으로 통신한다.
  • Wi-Fi 무선 LAN 기술이며 MAC 주소를 기반으로 통신한다.
  • 스위치 내부에 MAC 주소 테이블을 둔다. 수신한 프레임의 출발지 MAC 주소를 학습하며 쌓아간다. 테이블에 없는 목적지 MAC 주소라면, 브로드 캐스트(flooding)를 통해 모든 포트로 전송한다.

OSI 3계층 Network Layer

현대에는 엄청난 장치들 사이에서 막대한 데이터들이 오간다. 이 과정에서 일부 데이터가 유실될 수 있지만, 그럼에도 불구하고 목적지까지 데이터를 최대한 정확히 전달할 수 있도록 경로를 설정하고 주소를 관리하는 계층이다.

네트워크 계층 특징

  • 패킷 Packet 단위로 데이터를 주고 받는다.
  • IP 주소를 기준으로 목적지까지의 경로를 설정한다.

주요 기술

  • IP Internet Protocol 비신뢰성 프로토콜로, 순서가 보장되지 않으며 패킷 손실이 있을 수 있다. 하지만 재전송은 하지 않는다. IP 주소는 공유기 등에 의해 IP를 자동으로 할당된다. 또한 동적으로 변경될 수 있다.(DHCP)
  • ARP Address Resolution Protocol 로컬 네트워크에서 동작하며, IP 주소를 MAC로 변환한다. 2계층과 연동되어 같은 네트워크 안에서 목적지를 찾아가기 위한 수단으로 사용된다.
  • 라우터 서로 다른 네트워크(LAN, 내부망)의 연결을 담당한다. IP 주소를 기반으로 경로를 찾는다.
  • NAT Network Address Translation 내부망에서 연결된 장치는 스위치/공유기 등에 의해 사설 IP(192, 172로 시작)가 부여된다. 이는 내부망 내에서 통신할 때는 문제되지 않지만 외부망으로 나갈 때 복잡해진다. NAT은 내부 사설 IP와 외부 공인 IP 사이의 주소/포트 매핑을 통해 인터넷 통신을 가능하게 한다. 여러 내부 장치가 같은 포트를 쓰더라도, 각각을 IP:Port 쌍으로 구분하기 때문에 충돌 없이 처리할 수 있다.

IP 주소와 서브넷 마스크

IP 주소의 구성

192.168.10.34/24

위 IP 주소는 어떤 구성일까?

앞 24비트는 네트워크 그룹을 식별하고, 뒤 8비트는 그 안에 있는 개별 컴퓨터를 식별한다.
그니까, 192.168.10.0 이 부분이 네트워크 주소이고 .34 즉, 호스트 주소 34번의 주소이다.

192.168.10.34 = 11000000.10101000.00001010.00100010
              = 8비트 + 8비트 + 8비트 + 8비트 =32비트

이렇게 말이다!

그렇다면 /24 는 무슨 역할일까? 아래에서 보겠지만, 네트워크 주소가 몇 비트인지 알 수 있다. 앞에서 24비트가 네트워크 주소라는 의미이다.

위 예제는 8비트 만큼으로 식별하지만, 호스트가 많은 상황에서는 유동적으로 지정할 수 있다.

서브넷 마스크

네트워크 주소와 호스트 주소를 나누는 규칙이다. 이를 기준으로 어디까지가 네트워크고, 어디부터가 호스트인지 알 수 있다.

AND 연산을 통해 IP 주소에서 빠르게 네트워크 주소를 계산할 수 있어, IP가 어느 네트워크 소속인지 파악할 수 있다.

255.255.255.0

위의 서브넷 마스크는 앞 24비트까지가 네트워크이고 뒤 8비트는 호스트이다.

2진수로 풀어보면

11111111.11111111.11111111.00000000

이렇게 되며, 1이 네트워크 그룹, 0이 호스트를 식별하는 비트 구분 기준이다.
이걸 왜 쓰는지 의문이 들테다.
서브넷 마스크가 있으면 네트워크 주소를 쉽게 알아낼 수 있다. AND 연산으로 말이다.

11000000.10101000.00001010.00100010   (IP)
11111111.11111111.11111111.00000000   (Subnet mask)
------------------------------------
11000000.10101000.00001010.00000000   → 네트워크 주소 = 192.168.10.0

위의 예제에서 이렇게 AND 연산을 하면 바로 네트워크 주소를 얻을 수 있고, 이를 따라 라우팅하게 된다.

+) IPv6

여태까지 IPv4를 사용하며 32비트로 주소를 표시했다. 하지만 현대에는 엄청난 수의 장치들이 생겨나면서 택도 없이 부족한 상황에 맞닥뜨렸다. 주소 고갈 상태에 도달했다.

따라서 128비트로 주소를 표시하는 IPv6 규격을 도입하였다.

라우팅 테이블

라우터가 어떠한 IP 주소를 목적지로 할 때, 어디로 보내야 할 지 적어둔 테이블이다.

  1. IP 주소를 받으면 라우팅 테이블에서 어떤 네트워크게 속하는지 찾는다.
  2. 같은 네트워크라면 바로 찾아간다.
  3. 다른 네트워크라면 가장 일치율이 높은 항목을 선택해서 전송한다.

OSI 4계층 - Transport Layer

한 컴퓨터 안에서도 여러 프로그램이 동시에 돌아간다. 그 중에서 어떤 프로그램(프로세스)에게 데이터를 전달해야 하는지 결정하는 게 정송계층이다.(포트번호로 식별)

전송계층 특징

  • 종단 간 데이터 전송 담당
  • 포트 번호를 사용해 목적지 애플리케이션을 식별한다.

TCP

수신자가 받을 때까지 추적하여 신뢰성을 보장한다. 손실되면 재전송하고, 순서를 보장한다. 어떻게 보장할 수 있을까?

3-way handshake

  1. 클라이언트가 서버에게 SYN 패킷을 보낸다. (연결 요청)
  2. 서버가 SYN + ACK로 응답한다. (수락 + 너도 연결 요청해)
  3. 클라이언트가 다시 ACK를 보낸다. (응답 수락)
  4. 연결 성공!

이러한 절차를 거쳐 데이터를 송수신 한다.

UDP

신뢰성이 없지만 빠르게 데이터를 전송할 수 있다. 따라서 일부 패킷이 손실 되어도 속도가 보장되어야 하는 상황에적합하다.

유투브 등의 실시간 스트리밍, 게임, 화상회의처럼 조금 손실 되더라도 빠른 전송이 더 중요한 상황에서 사용한다.

포트

IP 주소는 호스트를 식별하고, 포트 번호는 그 호스트 안에서의 애플리케이션(프로세스)를 식별한다.

0번에서 1023번 포트는 Well-Known Ports라고 부르며 시스템이 예약해둔 영역이라서, 일반 사용자 앱은 1024 이상의 포트를 사용한다. 이외의 정해진 몇몇 포트 번호가 있으니 참고하자.

서비스포트 번호
HTTP80
HTTPS443
SSH22
DNS53
FTP21
profile
어서오세요! ☺️ 후회 없는 내일을 위해 오늘을 열심히 살아가는 개발자입니다.

0개의 댓글