본문 바로가기
dev/Web

OSI 7계층 ( PC가 다른 PC와의 데이터 전달 과정 )

by Kyulee 2022. 9. 12.
반응형

🤔우리가 컴퓨터가 다른 컴퓨터를 통신하기 위해서는 어떤 과정으로 통신될까?

이는 우리가 가장 생각하기 쉬운 방식으로 케이블(랜선)을 통해서 다른 컴퓨터에 정보를 보내고 받는 과정을 생각할 수 있다.

이러한 방식을 OSI 7계층의 물리 계층에 해당된다. 물리계층(Physical Layer)에서는 컴퓨터가 만드는 1, 0로 만든 신호(즉, bit 단위의 신호)*케이블(랜선, 전선)을 통해서 전달 할 수 있도록 *아날로그 신호(전자기파)로 바꾸는 작업과 전달된 신호를 다시 디지털 신호로 바꿀 수 있도록 해주는 모듈을 의미한다.

단지 데이터를 전달만 할뿐 전송하려는(또는 받으려는)데이터가 무엇인지, 어떤 에러가 있는지 등에는 전혀 신경 쓰지 않는다. 여기서의 장비는 통신 케이블, 리피터, (더미)허브 등이 있다.

더미 허브와 스위치 허브에 대해서


🤔 물리계층만으로 우리는 1 : 1의 컴퓨터를 연결. 그러나 여러 개는?

우리가 물리계층의 방식으로만 모든 컴퓨터를 연결한다면 다음과 같이 모든 컴퓨터가 선으로 연결되어 있어야 한다.

그러나 우리는 수십, 수천개의 선을 우리 컴퓨터에 연결하고 있지 않다는 사실을 걸 잘 알고 있다. 하나의 선으로 우리는 여러 대의 컴퓨터가 연결되어 있어야 한다.

위와 같이 버스 형태의 하나의 선으로 여러개의 컴퓨터에 연결되어 있다. 여기서 하나의 케이블로 여러대의 컴퓨터를 연결토록 하는 것이 더미 허브라고 한다. 그러나 더미 허브만으로 모든 연결해둔다면 우리가 전달하고 받는 데이터에 대해서 같이 연결되어 있는 모든 컴퓨터가 이를 볼 수 있게 된다. 이때 한 컴퓨터에서 다른 컴퓨터의 주소(MAC 주소)를 가지고 해당 컴퓨터에만 정보를 전달 할 수 있도록 도와주는 것이 스위치 허브이다. 이는 데이터 링크 계층에서의 대표적인 장비라고 할 수 있다.

데이터 링크 계층(Data Link Layer)은 포인트 투 포인트(Point to Point) 간 신뢰성있는 전송을 보장하고, 네트워크 위의 개체들 간 데이터를 전달하고, 물리 계층에서 발생할 수 있는 오류를 찾아 내고, 수정하는 데 필요한 기능적, 절차적 수단을 제공하는 모듈이라고 한다. 이는 다음과 같은 예시를 통해서 보다 자세히 이해해보자.

여러대의 컴퓨터에서 하나의 컴퓨터로 정보를 전송하게 된다면 신호들이 뒤섞여 잘못된 정보를 전송하게 될 것이다. 이때 위와 같은 방식은 0000, 1111(비트 프레임 방식) 과 같이 우리가 전송하려는 데이터의 맨앞과 맨 뒤에 구분자를 붙여 전송하게 된다. 이는 전송을 받은 컴퓨터에서 데이터를 나눠서 읽을 수 있도록 할 것이다. 이외에도 오류 제어나 흐름제어에 대한 동작을 제공하고 있다.

layer3 스위치 : 최근에 사용하는 스위치로 스위치 + 라우터의 기능으로 동작한다.

조금 더 궁금하다면 아래 블로그에 참고.

데이터 전송의 기초(오류 제어, 프레임)


🤔 여러개의 컴퓨터를 연결하는 과정을 배웠다. 그러나, 이는 내 방에서 옆 방에 컴퓨터 연결을 하는 것이라면 괜찮지만, 미국에 컴퓨터를 연결하기엔 어떻게 찾아서 거기까지 신호를 전달할 수 있을까?

이는 앞에서 보았던 스위치끼리의 연결을 생각하면 될 것이다. 아래 그림과 같이 스위치에서 상위에 라우터라는 기기를 두고 이를 연결하도록 한다. 다음 그림에서 A에서 B에 데이터를 전송하기 위해 해당 B에 해당하는 IP주소를 알고 있어야 하는데, 이때 활용되는 것이 DNS를 통해서 B의 IP 값을 얻게 된다.

B의 IP주소를 앞에 붙여서 보내게 된다. 이때 단위를 패킷이라고 한다. 어떤 전선(케이블)을 선택해서 이를 따라 가야하는지에 대해서 정확히 알고 싶으면 우리는 라우팅에 대해서 알고 있어야 한다.

이와같이 네트워크 계층(Network Layer)에서는 데이터 전송에 대해 IP 주소를 기반으로 최적의 경로를 찾아주는 모듈이다.

자세하게 알고 싶다면 다음 블로그를 참조하자.

[네트워크] 라우팅


이를 통해서 우리는 전세계의 데이터를 주고 받을 수 있게 되었다.🙂 이렇게 주고 받은 정보는 컴퓨터 내에서 어떤 프로세스(프로그램)에게 전달 될까?

우리의 컴퓨터에는 프로세스 별로 각각의 포트번호(port)라는 것을 점유하고 있다. 포트 번호란 하나의 컴퓨터에서 동시에 실행되고 있는 프로세스들이 서로 겹치지 않게 가져야하는 정수값을 의미한다. 이렇게 점유하고 있는 포트 번호에 우리가 데이터를 전달한다면 프로세스에서 이를 활용할 수 있게 된다.

그럼 우리는 보낼 때 부터 포트번호를 알고 있는 것인가라고 생각한다면, 맞다. 우리가 일반적으로 인터넷으로 접속하는 사이트의 기본 포트는 80번 포트로 이는 숨겨져 있어 이러한 포트번호가 붙어서 신호가 전달 된다.

전송 계층(Transport Layer)이란 Port 번호를 사용하여 도착지 컴퓨터의 최종 목적지인 실행중인 프로세스까지 데이터가 도달할 수 있도록 하는 모듈을 의미하며, TCP와 UDP 프로토콜을 통해 통신을 활성화한다. 포트를 열어두고, 프로그램들이 전송을 할 수 있도록 제공해준다. 오류제어, 흐름제어, 세그먼트와 같은 내용을 찾아보면 좋을 거 같습니다.

🌏 네트워크 구조 이해:: 전송 계층_ 신뢰할 수 있는 데이터 전송하기


이후에 세션, 표현, 응용 계층이 있다. 이는 사용자 프로그램을 구현하는데 사용된다.

세션(Session)계층이다. 데이터가 통신하기 위한 논리적 연결을 담당한다. TCP/IP 세션을 만들고 없애는 책임을 지니고 있다. 세션 계층은 전달계층과 표현 계층 사이의 정보전달의 동기화를 담당한다. 세션의 연결, 유지, 해제를 담당하며 사용자간의 상호작용을 관리하는 기능으로서 암호화기능, 로그인기능, 호스트 인증 기능등이 있다. 만약 데이터가 100MB의 데이터라고 할 때 5MB마다 일종의 체크포인트를 만들어두어 중간에 끊기더라도 가까운 체크포인트부터 다시 시작할 수 있도록 해준다.

컴퓨터 네트워크 30장 - 세션 계층 -

표현(Presentation)계층이다. *데이터 표현에 대한 독립성을 제공하고 *암호화하는 역할을 담당한다. 파일 인코딩, 명령어를 포장, 압축, 암호화한다.

컴퓨터 네트워크 31장 - 표현 계층 -

응용(Application)계층은 최종 목적지로, 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행한다. 사용자 인터페이스, 전자우편, 데이터베이스 관리 등의 서비스를 제공한다. 우리가 아는 FTP, HTTP, SMTP, Telnet 등을 통해서 응용 프로세스를 이용해서 직접적인 응용서비스를 수행하는 모듈을 의미한다.

컴퓨터 네트워크 32장 - 응용 계층 -

이렇게 우리가 인터넷을 어떻게 사용하는지에 대해서 이번 시간을 통해서 알 수 있게 되었다.


그러면 현재 OSI 7계층 모델을 통해서 네트워크 통신이 이루어지는 구나라고 생각할 수 있을 것이다.

그러나 이는 맞지 않는다. 현재에서의 OSI 7계층 모델의 네트워크 통신이 아닌 TCP/IP 모델을 이용하여 통신이 이루어지고 있다. 현재로는 OSI 모델은 단지 네트워크를 묘사해주기 위한 모델일 뿐이다.

아래 그림과 같이 TCP/IP 모델은 기존에 세션, 표현, 응용 계층을 하나로 묶어 하나의 응용계층으로 되었다.

TCP/IP 모델을 통해서 전달되는 과정을 아래와 같이 간단히 정리해놨습니다. 우리가 앞에서 공부했던 내용을 바탕으로 충분히 이해할 수 있을 것 같습니다.

OSI 7계층과 TCP / IP 4계층 비교

  1. TCP/IP 4계층은 OSI 모델보다 먼저 개발되었고, 서로 간의 계층은 정확하게 일치하지는 않는다.
  2. 두 계층을 비교할 때, 세션(Session)과 표현(Presentation) 2개의 계층이 TCP/IP 계층에 없다.
  3. TCP/IP 4계층은 인터넷이 발전되면서 표준화되어 신뢰성이 우수한 반면 OSI 7계층은 표준이지만 실질적 구현 예가 없어신뢰성이 저하되었다.
  4. OSI 7계층은 장비 개발과 통신 자체를 어떠한 방식으로 표준으로 잡을지에 관련해 사용되는 반면에TCP/IP 4계층은 실질적인 통신 자체에서 많이 사용된다.

참고

[10분 테코톡] 🔮 히히의 OSI 7 Layer

 

반응형

'dev > Web' 카테고리의 다른 글

Nginx  (0) 2022.10.10
server/client 동시 실행(Concurrently)  (0) 2022.03.27
npm npx yarn  (0) 2022.03.26
Web Server  (0) 2022.01.11
browser  (0) 2021.12.29