dev-writeup-2024 / march

개발 1일 1글 스터디
2 stars 0 forks source link

[03-07] OSI 7계층 (1) #17

Open snaag opened 6 months ago

snaag commented 6 months ago

OSI 7계층 (1)

들어가며

학교 다닐때 열심히 암기하고자 했으나 도통 헷갈려서 암기하지 못했던 7계층! 당시의 제게는 넘나 어려웠습니다 🫠🫠🫠... 계층별 데이터의 이름도 달라서 너무 헷갈렸는데요, 이번 기회에 200% 까지는 아니어도 어느정도 알아보고자 합니다~

OSI

OSI 는 Open Systems Interconnection 입니다. 1984년에 국제표준화기구(International Organization for Standardization, ISO) 에 의해 발표되었습니다.

OSI 는 컴퓨터 네트워크의 통신과정을 7단계로 구분한 것을 말합니다. OSI 는 OSI 모델 이라고 말합니다.

(출처 : link)

영어 단어는 알겠는데, 각각이 어떤 의미를 나타내는지는 아직 잘 이해가 가지 않습니다.

즉 OSI 는 서로 다른 host 가 정보를 주고받기위해 (interconnection) / 정의된, 공개되어있는 (open) / 각 계층의 기술 (system) 을 의미합니다.

예전에 네트워크 수업 때, 계층이 독립적으로 분리되어있어 각 계층은 자신의 업무에만 집중할 수 있다는 말씀을 들은 기억이 있습니다. 이는 각 계층이 서로 의존성을 갖고 얽혀있는 것 보다 단순합니다.

그리고 각 계층간에 통신 규약만 정해두고, 이것만 잘 지킨다면, 각 계층의 서로 다른 회사의 서로 다른 장비들끼리도 통신을 할 수 있다고 하였습니다.

즉 교수님의 말씀은 OSI 의 정의와 큰 맥락을 같이 하고 있었던 것 이었습니다!

OSI 7계층

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

1계층은 1계층에 들어온 전기신호를 잘 전달하는 것이 목적입니다.

데이터의 전기신호는 출발지로부터 거리가 멀어질수록 약해집니다. 때문에 1전기 신호가 1계층 장비에 들어오게 되면, 받은 전기 신호를 재생성 하여 내보냅니다.

이를위해 1계층에서는 전기신호와 관련된 장비들을 주로 사용합니다.

1계층의 장비

네트워크 통신을 중재하는 네트워크 장비

(출처 : link)

케이블 본체를 구성하는 요소

컴퓨터의 랜카드와 케이블을 연결하는 장비

(출처 : link)

네트워크 모니터링과 패킷 분석을 위해 전기 신호를 다른 장비로 복제하는 장비

(출처 : link)

2계층 (데이터 링크 계층, Data Link Layer)

2계층의 장비는 NIC (Network Interface Card) 와 스위치 입니다. 이 장비들은 MAC 주소를 이해 할 수 있습니다. 스위치는 MAC 주소를 보고 어느 포트 (host 가 있는 곳) 로 가야 하는지 알고 있습니다.

(출처 : 위키피디아)

(출처 : link)

주소 가 있다는 말은 하나의 host 하고만 통신하는 것이 아닌, 여러 host 와 통신한다는 의미 이기도 합니다.

따라서 2계층에서는 받은 데이터의 출발지와 도착지 주소를 확인 하고, 자신에게 온 것이 맞는지, 내가 처리해야 하는지를 검사하고, 맞다면 데이터를 처리 합니다.

뿐만아니라 보내는 입장에서는, 받는 쪽이 제대로 데이터를 받을 수 있는 상태인지 확인하는 작업도 하는데, 이를 Flow Control 이라고 합니다.

네트워크 인터페이스 카드의 여러 이름들

네트워크 인터페이스 카드는 네트워크의 발전에 따라 여러 이름들을 가지게 되었습니다. 개중에는 비슷한 의미인 것도, 과거의 역사를 담고 있는 것도 있습니다.

  1. 네트워크 인터페이스 카드 (Network Interface Card, NIC)
  2. 네트워크 카드 (Network card)
  3. 네트워크 어댑터 (Network Adapter)
  4. 랜 카드 (Lan Card), 과거에 이더넷(유선)은 LAN 에서만 사용되었습니다. 그래서 랜 카드라고도 불렀습니다.
  5. 이더넷 카드 (Ehternet Card), 3번과 비슷한 사연입니다. 과거에는 대부분의 네트워크가 이더넷으로 이루어져있었기 때문에, 일반적으로 네트워크를 연결할 때에 이더넷을 연결하는 네트워크 인터페이스 카드가 사용되었습니다.

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

3계층의 목적은 IP 주소 체계를 이해하고, 이를 바탕으로 최적의 경로를 찾아 패킷을 전달 (포워딩) 해주는 것 입니다.

3계층의 장비는 라우터 입니다. 즉 라우터는 IP 주소 체계를 이해할 수 있습니다. 이를 바탕으로 데이터의 도착지 주소에 따라 가장 효율적인 경로를 찾습니다.

(출처 : link)

항상 3계층이 필요한 것은 아닙니다. 다른 네트워크로 넘어가야 하여 라우터의 도움이 필요한 경우를 3계층 통신이라고 합니다. 이와달리, 하나의 네트워크 상에서만 데이터를 주고받아 다른 네트워크를 거칠 필요가 없는 경우가 있는데요, 이는 2계층 통신이라고도 합니다.

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

4계층의 주 역할은 데이터를 잘 쪼개서 보내고, 쪼개서 보내진 데이터를 잘 받는 것 입니다. 4계층에서 데이터의 순서와 무결성을 확인하기 때문에, 1~3 계층에서는 전송에만 집중하면 됩니다.

이러한 확인은 시퀀스 번호 (seq) 와 ACK 번호 (ack number) 로 할 수 있습니다. 만약 확인하였는데 패킷이 유실되거나 순서가 바뀌었거나, 손상되었다면 다시 요청하여 받을 수 있습니다.

4계층의 장비는 포트번호를 이해할 수 있습니다. 3계층에서는 IP 주소만 알고 있습니다. 즉 포트번호에 대해서는 인지하지 못합니다. 때문에 도착지 호스트까지 도달은 하였으나 잘못된 어플리케이션으로 넘겨줄 수도 있습니다. 예를들어 음악 데이터를 게임에게 보내줄 수도 있습니다. 그러나 4계층에서는 포트 번호를 알고 있기 때문에, 적절한 어플리케이션으로 데이터를 넘겨줄 수 있습니다. https://github.com/dev-writeup-2024/march/issues/12#issue-2171678553

4계층의 장비로는 로드밸런서 (LB) 와 방화벽 (Firewall) 이 있습니다. 이 장비들은 애플리케이션 구분자 (포트 번호) 와 시퀀스 번호 (seq), ACK 번호 (ack number) 정보를 이용해 부하를 분산하거나 보안 정책을 수립해 패킷을 통과, 차단할 수 있습니다. 각 컴퓨터의 운영 체제에는 소프트웨어 기반의 방화벽이 설치되어 있습니다.

(출처 : link)

(출처 : link)

PDU (Protocol Data Unit)

PDU 는 Protocol Data Unit 의 약자 입니다. 즉 각 layer 에서 사용하는 데이터 (헤더 + 데이터) 의 단위를 말합니다.

계층 (Layer) PDU 이름
1계층 (물리 계층, Physical Layer) Bits
2계층 (데이터 링크 계층, Data Link Layer) Frame
3계층 (네트워크 계층, Network Layer) Packet
4계층 (전송 계층, Transport Layer) Segments
5계층 (세션 계층, Session Layer) Data
6계층 (표현 계층, Presentation Layer) Data
7계층 (어플리케이션 계층, Application Layer) Data

참고자료