본문 바로가기
Computer Science/Network

01장 네트워크 시작하기 - 2

by YIAN 2021. 9. 25.


👈 이전 글 | 📚 목차 | 다음 글 👉


 

1.4 OSI 7계층별 이해하기

■ 계층별 주요 프로토콜 및 장비

계층 계층명 주요 프로토콜 장비
L7 애플리케이션 HTTP, SMP, SMTP, STUN, TFTP, TELNET ADC, NGFW, WAF
L6 프레젠테이션 TLS, AFP, SSH -
L5 세션 L2TP, PPTP, NFS, RPC, RTCP, SIP, SSH -
L4 트랜스포트 TCP, UDP, SCTP, DCCP, AH, AEP 로드 밸런서, 방화벽
L3 네트워크 ARP, IPv4, IPv6, NAT, IPSec, VRRP, 라우팅 프로토콜 라우터, L3 스위치
L2 데이터 링크 IEEE 802.2, FDDI 스위치, 브릿지, 네트워크 카드
L1 피지컬 계층 RS-232, RS-449, V.35, S 등의 케이블 케이블, 허브, 탭(TAP)

1.4.1 피지컬 계층 (L1)

  • 물리 계층으로 물리적 연결과 관련된 정보를 정의
  • 주로 전기 신호를 잘 전달하는 것이 목적이므로 전기 신호가 1계층 장비에 들어오면 이를 재생성하여 내보냄
  • 주소의 개념이 없으므로 전기 신호가 들어온 포트를 제외하고 모든 포트에 같은 전기 신호 전송

주요 장비

  • 허브(Hub), 리피터(Repeater): 네트워크 통신을 중재하는 네트워크 장비
  • 케이블(Cable), 커넥터(Connector): 케이블
  • 트랜시버(Tranceiver): 컴퓨터의 랜 카드와 케이블을 연결하는 장치
  • 탭(TAP): 네트워크 모니터링과 패킷 분석을 위해 전기 신호를 다른 장비로 복제

1.4.2 데이터 링크 계층 (L2)

  • 전기 신호를 모아 사람이 알아볼 수 있는 데이터 형태로 처리
  • 주소 정보를 정의하고 정확한 주소로 통신하는 것이 목적
    • 1계층: 전기 신호를 잘 보내는 것이 목적이므로 출발지와 목적지를 구분할 수 없음
    • 2계층: 출발지와 도착지 주소를 확인하고 여러 검사 후 데이터 처리 수행
  • 주소 체계가 생기면서 여러 통신이 한꺼번에 이루어지는 것을 구분하기 위한 기능으로 주로 정의됨. 전기 신호를 모아 데이터 형태로 처리하므로 데이터에 대한 에러를 탐지하거나 고치는 역할을 수행할 수 있음. 현대에는 에러를 탐지하는 역할만 수행.
  • 무작정 데이터를 던지는 것이 아니라 받는 사람이 현재 데이터를 받을 수 있는지 확인하는 작업부터 해야함. 이 역할을 플로 컨트롤(Flow Contorl)을 일컫음.

▲ 그림1-6. 비교적 간단한 2계층의 플로 컨트롤

주요 장비: 네트워크 구성 요소 - 네트워크 인터페이스 카드, 스위치

네트워크 인터페이스 카드

▲ 그림 1-7. 네트워크 인터페이스 카드의 동작 방식

  • 전기 신호를 데이터 형태로 만든다.
    • 고유 MAC 주소가 있음
    • 입력되는 전기 신호를 데이터 형태로 만듦
  • 목적지 MAC 주소와 출발지 MAC 주소를 확인한다.
  • 네트워크 인터페이스 카드의 MAC 주소를 확인한다.
    • 데이터에서 도착지 MAC 주소를 확인한 후 자신에게 들어오는 전기 신호가 맞는지 확인함
  • 목적지 MAC 주소와 네트워크 인터페이스 카드가 갖고 있는 MAC 주소가 맞으면 데이터를 처리하고 다르면 데이터를 폐기한다.
    • 자신에게 들어오는 전기 신호가 아니면 버리고 자신에게 들어오는 전기 신호가 맞으면 이 데이터를 상위 계층에서 처리할 수 있도록 메모리에 적재함

스위치(Swtich)

▲ 그림 1-8. 스위치의 동작 방식

  • 단말(Terminal)이 어떤 MAC 주소인지, 연결된 포트는 어느 것인지 주소 습득(Address Learning) 과정에서 알 수 있음. 이 데이터를 기반으로 단말들이 통신할 때 포트를 적절히 필터링하고 정확한 포트로 포워딩해줌.
  • 반면, 1계층에서 동작하는 허브는 한 포트에서 전기 신호가 들어오면 전체 포트로 전기 신호를 전달하다 보니 전체 네트워크에서 동시에 오직 하나의 장비에만 데이터를 보낼 수 있음
  • 스위치의 적절한 필터링과 포워딩 기능으로 통신이 필요한 포트만 사용하고 네트워크 전체에 불필요한 처리가 감소하면서 이더넷 네트워크 효율성이 크게 향상되었고 이더넷 기반 네트워크가 급증되는 계기가 됨
  • 2계층의 가장 중요한 특징: MAC 주소라는 주소 체계가 있다는 것
  • 2계층에서 동작하는 네트워크 인터페이스 카드와 스위치 모두 MAC 주소를 이해할 수 있고, 스위치는 MAC 주소를 보고 통신해야 할 포트를 지정해 내보내는 능력이 있음

1.4.3 네트워크 계층 (L3)

  • IP 주소와 같은 논리적인 주소를 정의
  • 데이터 통신할 때는 2가지 주소가 사용됨
    • 2계층의 물리적인 MAC 주소
    • 3계층의 논리적인 IP주소
  • MAC 주소와 달리 IP 주소는 사용자가 환경에 맞게 변경해 사용할 수 있음
  • 3계층을 이해할 수 있는 장비와 단말은 네트워크 주소 정보를 이용해 자신이 속한 네트워크와 원격지 네트워크를 구분할 수 있고 원격지 네트워크를 가려면 어디로 가야하는지 경로를 지정하는 능력이 있음

IP 주소 체계

▲ 그림 1-9. IP주소 체계

  • IP 주소 체계는 네트워크 주소와 호스트 주소로 구분됨
  • IP 주소는 주소를 나누는 구분점이 3개이므로 어디가 네트워크 주소이고 어디가 호스트 주소인지 구분하기 어려움

주요 장비: 라우터

▲ 그림 1-10. 라우터

  • IP 주소 체계를 이해하고 최적의 경로를 찾아 패킷을 포워딩함
    • 3계층에서 정의한 IP 주소를 이해할 수 있음
    • IP 주소를 사용해 최적의 경로를 찾아주고 해당 경로로 패킷을 전송하는 역할을 함

1.4.4 트랜스포트 계층 (L4)

  • 데이터들이 정상적으로 잘 보내지도록 확인하는 역할
  • 패킷 네트워크는 네트워크를 분할해 패킷에 실어보내다 보니 중간에 패킷이 유실되거나 순서가 바뀌는 경우가 생길 수 있음. 이를 해결하기 위해 바로 잡아주는 역할을 4계층에서 담당함.
  • 패킷을 분할할 때 패킷 헤더에 보내는 순서와 받는 순서를 적어 통신하므로 패킷이 유실되면 재전송을 요청할 수 있고 순서가 뒤바뀌더라도 바로잡을 수 있음

애플리케이션 구분자

  • 시퀀스 번호(Sequence Number): 패킷에 보내는 순서, 순서 번호
  • ACK 번호(Acknowledgement Number): 패킷을 받는 순서, 응답 번호
  • 포트 번호(Port Number): 장치 내의 상위 애플리케이션을 구분

주요 장비: 로드 밸런서, 방화벽

  • 4계층에서 볼 수 있는 애플리케이션 구분자를 이용해 부하를 분산하거나 보안 정책을 수립해 패킷을 통과하고 차단하는 기능을 수행

1.4.5 세션 계층 (L5)

  • 세션을 관리하는 것이 주요 역할
  • 양 끝단의 응용 프로세스가 연결을 성립하도록 도와주고, 연결이 안정적으로 유지되도록 관리. 작업 완료 후에는 이 연결을 끊는 역할을 함.
  • TCP/IP 세션을 만들고 없애는 책임을 짐
  • 에러로 중단된 통신에 대한 에러 복구와 재전송을 수행

1.4.6 프레젠테이션 계층 (L6)

  • 일종의 번역기나 변환기 역할을 수행하는 계층
  • 표현 방식이 다른 애플리케이션이나 시스템 간의 통신을 돕기 위해 하나의 통일된 구문 형식으로 변환시키는 기능을 수행함
  • 사용자 시스템의 응용 계층에서 데이터의 형식상 차이를 다루는 부담을 덜어줌
  • MIME 인코딩이나 암호화, 압축, 코드 변환과 같은 동작이 이루어짐

1.4.7 애플리케이션 계층 (L7)

  • 네트워크 소프트웨어의 UI 부분이나 사용자의 입출력 부분을 정의
  • 애플리케이션 프로세스를 정의하고 애플리케이션 서비스를 수행
  • 애플리케이션 프로토콜은 종류가 많은데, 대표적인 프로토콜은 FTP, SMTP, HTTP, TELNET

1.5 인캡슐레이션과 디캡슐레이션

  • 상위 계층에서 하위 계층으로 데이터를 보내면 물리 계층에서 전기 신호 형태로 네트워크를 통해 신호를 보냄
  • 받는 쪽에서는 다시 하위 계층에서 상위 계층으로 데이터를 보냄
  • 이렇게 데이터를 보내는 과정을 인캡슐레이션(Encapsulation), 받는 과정을 디캡슐레이션(Decapsulation)이라고 부름

▲ 그림1-11. 인캡슐레이션과 디캡슐레이션

  • 현대 네트워크는 대부분 패킷 기반 네트워크
  • 패킷 네트워크는 데이터를 패킷이라는 작은 단위로 쪼개 보내는데, 하나의 통신이 회선 전체를 점유하지 않고 동시에 여러 단말이 통신하도록 해줌
  • 데이터를 패킷으로 쪼개고 네트워크를 이용해 목적지로 보내도 받는 쪽에서는 패킷을 다시 큰 데이터 형태로 결합해 사용함

인캡슐레이션(Encapsulation)

  • 애플리케이션에서 데이터를 데이터 플로 계층(1~4계층)으로 내려보내면서 패킷에 데이터를 넣을 수 있도록 분할하는 과정
  • 네트워크 상황을 고려해 적절한 크기로 데이터를 쪼개고 그림 1-11과 같이 4계층부터 네트워크 전송을 위한 정보를 헤더에 붙여넣음
  • 헤더 정보는 4~2계층에서 각각 필요한 정보를 추가하는데 이 정보는 미리 정의된 비트 단위(0 또는 1)로 씀
  • 4계층에서 헤더를 추가하고 3계층으로 내려보내면 다시 3계층에서 필요한 헤더 정보를 추가하고 2계층으로 내려보냄
  • 2계층에서도 다시 2계층에서 필요한 헤더 정보를 추가한 후 전기 신호로 변환해 수신자에게 전송
  • 데이터 한 개를 전송하는 작업은 생각보다 복잡해 데이터 플로 계층에서만 3개의 헤더 정보가 추가됨
  • 받는 쪽에서는 디캡슐레이션 과정 수행

디캡슐레이션(Decapsulation)

  • 받은 전기 신호를 데이터 형태로 만들어 2계층으로 올려보냄
  • 2계층에서는 송신자가 작성한 2계층 헤더에 포함된 정보를 확인함
  • 만약 2계층에 적힌 정보 중 목적지가 자신이 아니라면 자신에게 온 패킷이 아니므로 버림. 랜 카드가 이 역할을 담당함. 반대로 2계층에 적힌 정보의 목적지가 맞다면 3계층으로 이 정보를 보냄.
  • 데이터를 상위 계층으로 올려보낼 때 2계층의 헤더 정보는 더 이상 필요없으므로 벗겨내고 올려보냄
  • 3계층에서는 2계층이 동작했던 것처럼 상대방이 적은 3계층의 헤더 정보를 확인해 자신에게 온 것이 맞는지 확인하고 맞으면 3계층 헤더 정보를 제거하고 4계층으로 보냄
  • 이를 받은 4계층도 3계층과 같은 과정을 거쳐 데이터를 애플리케이션에 올려줌

이러한 복잡한 작업은 2가지 정보 흐름으로 설명할 수 있음

  • 인캡슐레이션, 디캡슐레이션 과정을 통해 데이터가 전송되는 과정
  • 각 계층 헤더를 이용해 송신자 계층과 수신자 계층 간의 논리적 통신 과정

실제로 데이터는 상위 계층에서 데이터 플로 계층으로, 즉 상위계층에서 패킷 형태로 하나씩 인캡슐레이션되면서 내려오고 랜 카드에서 전기 형태로 변환되어 목적지로 전달됨

  • 전기 신호를 받은 목적지에서는 데이터 형태로 변환해 상위 계층으로 올려주고 이 패킷들을 조합해 데이터 형태로 만듦. 결국 주고받는 데이터 흐름을 간단히 표현하면 상위 계층에서 하위 계층으로, 다시 하위 계층에서 상위 계층으로 전달되는 형태임.
  • 각 계층에서 인캡슐레이션 과정에서 수행했던 것처럼 현재 계층에서 추가하는 헤더 정보는 받는 상대방이 확인해야 하는 정보
  • 만약 4계층에서 헤더를 추가했다면 그 정보는 받는 쪽의 4계층에서 확인
  • 중간에 적힌 헤더 정보는 받는 계층에서 참고하고 버림
  • 정리하면 실제 데이터는 상위계층 > 하위계층, 하위계층 > 상위 계층으로 전달되고 헤더 정보는 각 계층끼리 전달

2, 3, 4계층 헤더 비교

▲ 그림 1-12. 2, 3, 4계층 헤더 비교

  • 데이터를 인캡슐레이션하는 과정에서 헤더에 넣는 정보들이 꽤 많아 모두 이해하기 힘듦
  • 프로토콜마다 특성이 달라 적어 넣는 정보가 다르므로 이 정보를 이해하려면 많은 공부가 필요함
  • 하지만 이런 복잡한 정보들에도 규칙이 있으며 헤더에 두 가지 정보는 반드시 포함되어야 함
    • 현재 계층에서 정의하는 정보
    • 상위 프로토콜 지시자

현재 계층에서 정의하는 정보

  • 앞에서 다루었던 OSI 7계층의 각 계층에서의 목적에 맞는 정보들이 포함됨
  • 4계층의 목적은 큰 데이터를 잘 분할하고 받는 쪽에서는 잘 조립하는 것
    • 잘 분할하고 잘 조립하도록 데이터에 순서를 정하고 받은 패킷의 순서가 맞는지, 빠진 패킷은 없는지 점검하는 역할이 중요하며 이 정보를 헤더에 적어 넣게 됨
    • TCP/IP의 4계층 프로토콜인 TCP에서는 시퀀스(Sequence), 애크(ACKnowledgement) 번호 필드로 이 데이터를 표현함
  • 3계층 헤더에는 3계층에서 정의하는 논리적인 주소인 출발지, 도착지 IP 주소를 헤더에 적어 넣음
  • 2계층은 MAC 주소를 정의하는데 3계층처럼 2계층도 출발지, 도착지 MAC 주소 정보를 헤더에 넣음

상위 프로토콜 지시자

▲ 그림1-13. TCP/IP 프로토콜 스택

  • 프로토콜 스택은 상위 계층으로 올라갈수록 정보가 많아짐
  • 3계층 프로토콜인 IP는 4계층에서는 다시 TCP와 UDP로 나뉘고 그보다 더 상위 계층에서는 FTP, HTTP, SMTP, POP3 등 더 다양한 프로토콜로 다시 나뉨
  • 인캡슐레이션 과정에서는 상위 프로토콜이 많아도 문제가 없지만 디캡슐레이션하는 목적지 쪽에서는 헤더에 아무 정보가 없으면 어떤 상위 프로토콜로 올려보내 주어야 할지 결정할 수 없음
    • 예시: 3계층에서 목적지 IP 주소를 확인하고 4계층으로 데이터를 올려보낼 때 헤더에 상위 프로토콜 정보가 없다면 TCP로 보내야 할지, UDP로 보내야 할지 구분할 수 없음. 4계층에서 애플리케이션 계층으로 올려보낼 때도 똑같은 문제 발생.

잘 알려진 상위 프로토콜 지시자 정보

  • 4계층
포트 번호 (Port Number) 서비스
TCP 20, 21 FTP(File Transfer Protocol)
TCP 22 SSH(Secure Shell)
TCP 23 TELNET(Telnet Terminal)
TCP 25 SMTP(Simple Mail Transport Protocol)
UDP 49 TACACS
TCP 53/UDP 53 DNS(Domain Name Service)
UDP 67, 68 BOOTP(Bootstrap Protocol)
TCP 80/UDP 80 HTTP(Hyper Text Transfer Protocol)
UDP 123 NTP(Network TIME Protocol)
UDP 161, 162 SNMP(Simple Network Management Protocol)
TCP 443 HTTPS
TCP 445/UDP 445 Microsoft-DS
  • 3계층
프로토콜 번호 (Protocol Number) 프로토콜
1 ICMP(Internet Contorl Message)
2 IGMP(Internet Group Management)
6 TCP(Transmission Control)
17 UDP(User Datagram)
50 ESP(Encap Secuity Payload)
51 AH(Authentication Header)
58 IPv6용 ICMP
133 FC(Fibre Channel)
  • 2계층
이더 타입 (Ether Type) 프로토콜
0x0800 IPv4(Internet Protocol version 4)
0x0806 ARP(Address Resolution Protocol)
0x22F3 IETF TRILL Protocol
0x8035 RARP(Reverse ARP)
0x8100 VLAN-tagged frame(802, 1Q)
Shortest Path Bridging(802, 1aq) AH(Authentication Header)
0x86DD IPv6(Internet Protocol version 6)
0x88CC LLDP(Link Layer Discovery Protocol)
0x8906 FCoE(Fibre Channel over Ethernet)
0x8915 RoCE(RDMA over Converged Ethernet)
  • 각 계층마다 상위 프로토콜 지시자를 가지고 있지만 이름이 달라서 다음과 같이 부름
    • 4계층: 포트 번호 (Port Number)
    • 3계층: 프로토콜 번호 (Protocol Number)
    • 2계층: 이더 타입 (Ether Type)
  • 디캡슐레이션할 때 상위 프로토콜 지시자 정보를 이용해 어느 상위 계층 프로토콜로 보내야 할지 구분해야 하므로 동작하는 계층보다 한 계층 위의 정보가 적혀있게 됨
  • [!] 착각하기 쉬운 정보
    • 포트 번호는 4계층 헤더에 적힌 정보이지만 애플리케이션 계층에서는 프로토콜 종류를 나타내주는 정보임

 


👈 이전 글 | 📚 목차 | 다음 글 👉


 

 회고

실무에서 로드밸런서, WAF 등 관련된 용어를 접할 때가 많았었는데, 어디서 나온 개념인지 헷갈릴 때가 있었습니다. OSI 7계층에서 등장하는 단어라는 것을 알고 나서는 이해하기 좀 더 쉬워졌습니다.

본 포스팅을 정리하면서 느낀 점이 있다면, 학부 때는 컴퓨터 네트워크 과목 공부할 때 어려웠는데 이번에 공부하면서 그때는 왜 어려워했을까? 싶더라고요. 학부 때 더 열심히 했다면 지금 덜 고생하지 않았을까 싶네요. 😅

스터디 외로 랜선모각코를 진행 중인데, OSI 7계층을 편하게 외울 방법을 새로 알게 되어 공유합니다.

이번에도 그림 1-6.~1-13. 모두 직접 아이패드로 그렸습니다. '잘 알려진 상위 프로토콜 지시자 정보'는 참고로만 알고 있으면 될 것 같아 보입니다. 학습하면서 제가 이해하기 편한 대로 내용을 요약했으므로 책에 나온 목차나 순서가 다를 수 있으니 참고 부탁드립니다.

🧸 참고사항

 

댓글