CS/네트워크

[Network] OSI 7계층 1차 찍먹하기(부제 : 홍대에서 술먹고온 이장희)

장아장 2024. 1. 16. 14:16

분명 나는 학교에서 이 분야에 대해서 학습을 했었다. 

OSI 7계층에 관한 이야기는 나의 학습이라기 보단, 지금까지 배운 것들을 다시 정리해보기 위한 포스팅일것 같다. 

정리를 하고 후에 학습하려했던 본론을 또 정리해봐야겠다. 

정리를 위한 나의 예시(실제는 아니다)를 들어서 정리해보았다. 


태초엔 0과 1이 존재했다.  -> Physical Layer

우리의 컴퓨터가 지금 보았을 때 어떤 화면을 하고있건, 결국 모든 컴퓨터의 데이터는 0과 1로 되어있다. 

0과 1이 넘어가면서 원하는 형식의 문자열이 되기도, 특정 신호가 되기도 한다. 

그렇다면 이 0과 1을 어떻게 주고받을까?

 

초등학교/중학교 시절에 결국 모든 전기 신호는 0과 1로, 껐다가 키는 것으로 분류된다고 이야기한다. 

이러한 0과 1을 랜선을, 와이파이를, 데이터를 통해서 주고받게 된다. 

물리적/전기적 매체를 통한 비트를 전달하는 Physical Layer, 물리 계층이 존재한다. 

물리계층의 특징을 정리해보았다.

 

1. 물리 계층은 0과 1비트로 장치와 전송 매체간의 인터페이스 특성과 전송 매체 유형을 규정한다. 

인터페이스 특성은 전기적, 기계적, 기능적 특성이 존재한다. 

  • 전기적 특성
    • 신호를 전송하기 위한 적시적 특성 정의. 전압/전류/저항등의 전기적 속성을 포함한다.
  • 기계적 특성
    • 장치간의 물리적 연결과 연관된 특성. 연결 인터페이스, 커넥터 형식, 핀 배열등이 해당한다. 
  • 기능적 특성
    • 신호의 세부사항, 전송 속도와 같은 기능적 측면을 규정한다.

2. 비트 표현 방법을 정한다.

전송 매체에 따라 다른 비트 표현 방법을 가지게 되는데, 

동축 케이블, 광섬유 케이블, 무선 통신 3가지로 분류된다. 

  • 동축 케이블 : 0과 1의 전압 수준을 정해준다.
    (실제로 0과 1이라고 정의를 했지만, 실제 전기적 신호는 그럴 수 없다고 통신 강의때 들었다. 그래서 우리는 0과 1로 인식하기 위한 각 신호에 따른 전압값을 정한다고 한다)
  • 광섬유 케이블 :  광섬유 내에 존재하는 광신호의 유/무를 통해 0과1을 구분한다.
  • 무선 통신 : 전자파의 변화/주파수 변조를 통해 0과 1을 정의한다.

 

3. 송수신자간의 비트 동기화를 진행시키며, 물리적 접속 형태와 전송 모드를 설정한다고 한다. 

비트 동기화를 통해 올바른 비트 데이터로 보내준 값을 해석하게 해준다. 

이를 위해 클록 신호, 자가동기라는 방법이 존재한다. 

  • 클록 신호 : 일정 주기로 클록 신호를 주고받아 동기화를 진행한다.
  • 자가동기 : 비트간의 패턴을 만들어, 이를 이용해 동기화가 되게 해준다. 

 

물리적 접속 형태는 점대점, 다중점 형태가 있으며 이중에 알맞은 형태를 설정해준다. 

  • 점대점 : 두 장치간의 직접적인 연결이다. 
  • 다중점 : 여러 장치가 동일한 통신매체를 통해 데이터를 주고받는다. 

 

전송 모드같은 경우에는 단방향, 양방향, 반이중 형태가 존재한다. 

  • 단방향(Simplex) : 단방향 통신만이 가능한 전송모드이다. ex) TV
  • 양방향(Duplex) : 송수신이 모두 일어나는 전송모드다. ex) 네트워크 통신
  • 반이중(Half-Duplex) : 송수신이 가능하지만, 하나씩 주고받아야 한다. (주면서 받지는 못한다) ex) 무전기?

 


그냥 비트가 간다가 아니라, 정류장이다. -> Data link

 

이전에는 일련의 비트들을 매체를 통해 쭉 보내거나, 매체를 통해 쭉 받는 형식으로 되어있다면

여기서부터는 단위를 가지고 쪼개서 정확한 목적지를 향해 보내고, 출발지에서 받는다는 것을 알 수 있게 된다. 

 

데이터링크에서는, 전송하는 데이터의 단위를 frame으로 정의하고 보내게 된다. 

이러한 프레임의 헤더와 테일을 두고, 가운데에 우리가 담아야 할 정보를 담는다. (이를 보통 payload라고 한다)

보낼 때에는 상위계층(Network Layer)에서 받은 단위체를 payload로, 앞에 헤더와 테일을 붙여 보내게 된다. 

받을 때에는 물리 계층에서 받은 데이터의 헤더와 테일을 떼어내고, payload만을 상위 계층으로 보내준다. 

 

출발지와 목적지, 프레임이 몇 번째인지에 대한 정보가 헤더에 보통 존재하게 된다. 

또한 이 때 각 지역의 주소는 물리 주소(MAC)라고 한다. 

이 물리주소는 컴퓨터부터 컴퓨터까지가 아닌, 컴퓨터부터 라우터, 라우터부터 라우터, 혹은 라우터부터 컴퓨터까지를 말한다. 

 

내가 사는 용인에서 홍대까지 가기 위해서 버스를 타고 버스정류장에 내린 후, 버스정류장에서 지하철역으로 도보로 걷고, 지하철역에서 홍대입구역까지 지하철을 타고 가야한다. 

홍대입구역까지를 최종 목적지로 잡고, 내가 컴퓨터라면 버스정류장과 지하철역은 라우터이다. 

나(컴퓨터)부터 버스정류장(라우터)까지는 프레임 단위로 데이터를 주고 받게 되는, 데이터링크 계층상의 관계가 되는 것이다. 

 

또한, 데이터링크 계층에서 흐름/오류/접근에 대한 제어를 하게 된다. 


호우대까지 어떻게 가요? 호우대 주소가 어떻게 돼요? -> Network Layer

용인에서 홍대입구역까지 중간 라우터를 통해서 갈 수 있게 된다. 

그렇다면 내가 출발할 때 목적지를 어떻게 정의하고 가야할까?

카카오맵에 뭐라고 주소를 쳐야할까? 

홍대입구역을 표현하기 위해서는 '홍대입구역'이라는 명칭과, '서울 특별시 마포구 양화로 지하 160'라는 주소가 존재한다. 

 

네트워크 계층은 우리가 원하는 주소까지 전달하는 책임을 가지고 있다. 

여기에서 서울시 마포구~~라는 논리 주소를 가지게 된다. 우리가 그렇게 울부짖어대던 IP가 이것이다. 

또한, 주소를 명칭으로 부르게 해주는 DNS도 이 부분과 연관이 있다. 

 

여기에서 데이터를 가지는 단위체(아까 Datalink Layer에서 페이로드로 담았던 것)을 패킷이라고 한다. 

 

이정도만 정리하고, 더 자세한 내용은 포스팅을 분리해야할 것 같다. 


그래서 홍대 어디로 가는데? 클럽가니? -> Transport Layer

자. 홍대에 도착했다. 그러면 무엇을 해야할까?

  1. 친구를 만난다.
  2. 술집으로 간다(클러...ㅂ...크흠)

전송계층에서는 지금까지 나누었던 단위체들을 모아주는 작업을 하게된다. 그리고, 하위 계층으로 나가서 전송을 해야한다면(즉 아침해가 뜨고 집을 가야한다면) 각자 나뉘어 다시 보내지는 작업을 하게 된다. 

또한, 목적지에서 정확히 무엇을 할지를 알려준다. 

 

네트워크적으로 말을 바꾸어 보자면, 

정확한 서비스 지점과 주소를 여기에서 알게 된다. IP라는 주소로 왔다면 이제 포트번호를 통해 정해진 서비스로 가거나, 서비스로 온다. 

또한, 단위체들의 분할과 재조립을 담당하게 된다. 

여기에서도 데이터링크에서 말한 연결/흐름/오류 제어를 하는데, 이는 데이터링크 계층과는 약간의 차이가 존재한다.


메뉴도 고르고 자리도 잡고 -> Session Layer

홍대의 한 술집에 갔다. 

우리가 먹을 메뉴와 주종을 정해야 한다. 

 

즉, 통신 시스템간의 상호 대화 설정, 유지, 동기화등을 해주어야 한다. 

세션 계층은 이러한 동작에 대한 기능을 제공해준다. 

 

또한, 상위 계층에서 내려준 데이터를 전송시키려 할 때에는, 동기화 시킬 포인트들을 만들어주어야 한다(그래야 받아서 동기화를 시킨다)

이를 위해 syn이라고 적힌 포인트를 만들어주는데, 이를 검사점을 추가해준다고 한다. 

 

즉 대화 제어와 동기화를 해주는 계층이다. 


내가 내 친구들이랑 술도 묵고 밥도 먹고 사우나도 가고 다 했어! -> Presentation Layer

홍대에서 재밌게 놀고온 내가 있다. (한번 데이터를 보내고 이제 받아오는 길이다)

집에 돌아가 여자친구에게 어디서 뭘 했는지 이야기 시간이 곧 다가온다. 

결국에는 집에 들어가 뭘 했는지 설명을 해야겠지...

그렇다면 모든 상황을 다 말했다가 혼나느니 약간 바꾸고, 함축하고, 숨기는 것 정도는 괜찮지 않을까?

(점점 예시가 나를 이상한 사람으로 만든다. 하지만 나는 술도 안먹는다... 오해 ㄴㄴ해)

 

표현계층에서는 세션 계층에서 동기화된, 다 결합된 일련의 정보가 있을 때 이 정보에 대한 변환, 암호화, 압축을 진행하게 된다. 

이를 상위 계층에 보내주거나, 세션 계층에 보내 동기화를 위한 검사점을 추가한 후에 헤더를 붙여 데이터를 전송할 수 있다. 


 

과연 이장희의 미래는...?! -> Application Layer

그렇게 정리한 이야기를 여자친구에게 모두 털어주게 되었다. 

이제 어떻게 될지 모른다. 내가 다시 홍대에 다녀올 수 있는지, 밖에 놀러 나갈 수 있는지...

결과는 여자친구의 판단과 생각에 따라 갈릴 것이다. 

별일 없었네...라고 분명 말했다. 이제 문제가 없다!!!! (해방 - 스카이민혁)

나는 홍대에 친구들과 놀러 갈 수 있는 것이다. 

 

응용 계층도 이런 상태와 비슷하다고 생각했다. 

사용자나 소프트웨어가 네트워크에 접근 가능하도록 하는 기능을 제공해준다. 

이러한 기능에는

  • 네트워크 가상 터미널
  • 파일 접근, 전송 및 관리(이장희 외출시 따라 가보기, 보내주기 및 통제하기?)
  • 우편 서비스
  • 디렉토리 서비스

가 있다고 한다. 


번외. 7개는 너무  많소! 4딸라!!! -> TCP/IP

OSI 7계층을 4가지 공간으로 나누어, 이를 간략화 시킨 상태도 있다. 

왜 간략화될까? 인터넷을 기준으로 정리한 상태이다. 

인터넷 프로토콜인 IP를 사용할 때, 우리는 OSI 7계층을 TCP/IP의 4계층으로 다시 만들 수 있게 된다. 

각 계층을 간단하게 톺아보자면, 

  • 응용 계층 : OSI 참조모델의 세션, 표현, 응용계층을 모두 포함
  • 전송 계층 : OSI 참조모델의 4계층에 해당하는 TCP/UDP
  • 인터넷 계층 : 인터넷에서 사용하는 모든 장비들이 가져야 하는 주소쳬계 정리, 경로설정(라우팅), IP, ICMP등
  • 네트워크 접근 계층 : OSI 참조모델의 물리계층+데이터링크 계층에서의 전달과정 포함

정도가 된다. 

 

후우 길기도 하다. 

이제 데이터링크부터 하나씩 깊이있게 정리를 해보아야 겠다. 

그럼...twenty thousand...🔥