OSI 7 Layer 

osi 7 계층은 무엇일까?

네트워크 통신이 일어나는 과정을 7단계로 나눈 것을 말함.

나눈 이유는 통신이 일어나는 과정을 단계별로 파악할 수 있기 때문!


Physical Layer(물리계층 1 계층)

 

모든 파일과 프로그램은 0과 1로 이루어져 있고, 결국 0 하고 1만 주고받을 수 있으면 두 컴퓨터가 통신할 수 있다?

 

두 컴퓨터에 선을 놓고 0일 때는 -5v 전류를 흐르게 하고 1일 때는 5v 전류를 흐르게 하면 통신이 가능할까?

 

전압에 대해서는 잘 알지 못하므로.. 결론은 전자기파는 항상 0~무한대[Hz]의 주파수 범위를 가지기 때문에 전기신호를 보낼 수 있는 전선은 없다.

 

그럼 어떻게 신호를 어떻게 보내야 될까?

 

아날로그식으로 보내야 한다 0101 0101 수신자 컴퓨터는 아날로그 신호를 해석해서 받을 수 있게 됩니다.

 

보내는 컴퓨터에서 인코딩을 해서 모듈(함수) 전기 연결 선을 이용해서 받는 컴퓨터에서 아날로그 신호를 디코딩해서 받는 것이다.


Data-Link Layer(2 계층)

Data-Link Layer에 대해서 알기 전에!

 

여러 대의 컴퓨터가 통신하려면 어떻게 해야 할까?

승현 <-> 호창 

      준상

승현하고 호창은 데이터를 주고받을 수 있는데 준상이 와도 데이터를 주고받고 싶으면 어떻게 해야 할까?

선을 준상이한테도 연결하고 호창이한테도 연결하면 가능하지만 컴퓨터가 많아지면 그만큼 비용이 많이 들어가기 때문에 비효율적일 것이다.

 

태정 , 인규 , 상후 , 재홍이의 컴퓨터가 더 추가됐다고 가정하자.

 

그러면 승현 호창 준상 태정 인규 상후 재홍이를 연결하는 구리선을 만들어서 그 구리선에 자기 컴퓨터를 꽂으면 데이터를 주고받을 수 있게 가능하다.

승현은 만약 태정이한테 데이터를 보내고 싶다.

하지만 다른 나머지 사람들도 그 데이터 내용을 알 수 있다.

 

그런데 만약에 이 데이터 보내는 목적지를 확인해서 보낼 수 있다면?

이런 기능을 하게 만들어 준 것이 스위치다.

서로 다른 네트워크가 있는 곳의 준상한테는 메시지를 어떻게 보낼까?

스위치와 스위치를 연결해서 서로 다른 네트워크에 속한 컴퓨터끼리 통신을 가능하게 해주는 것이 라우터다.

 

이때 저 초록색 기계는 공유기라고 생각하면 된다.

 

라우터와 라우터도 라우터로 연결할 수 있다.(라라라😅)

 

우리나라와 일본이 연결되려면 규모가 엄청 커야겠죠?

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=giftsmile4u&logNo=222059529225

더보기

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=giftsmile4u&logNo=222059529225

실제로 해저 안에 저렇게 엄청 큰 케이블이 있다.😲

 

1 계층은 컴퓨터가 많아지면 제약이 생긴다.

 

여러 대의 컴퓨터는 어떻게 통신할까?

승현 -> 0101

호창 -> 1100

재홍 -> 1111

이 스위치에 데이터를 보내면 

준상이는 010111001111 이렇게 받는다.. 잘못 끊어 읽으면 이상하게 해석될 수 있음..😕

 

그럼 어떻게 해야 제대로 끊어 읽을까?

 

송신자 데이터를 보내는 사람은 앞에는 1111을 뒤에는 1111을 붙인다고 생각하자

주석의 시작 /*(1111) */(0000)이라고 생각하면 되겠다.

 

승현은 데이터를 보낼 때 그러면 1111 0101 0000

 

그래서 결국 Data-link Layer는

같은 네트워크에 있는 여러 대의 컴퓨터들이 데이터를 주고받기 위해서 필요한 모듈

Framing은 Data-link Layer에 속하는 작업들 중 하나.

Framing(아까 1111 0000으로 데이터를 감싸는 작업)


Network Layer(3 계층)

라우터들의 이름을 A, B, C, D를 붙여줬다.

승현이 준켄한테 데이터를 보내려면 어떻게 해야 될까?

승현은 목적지 주소 준캔의 주소를 붙인다.

준캔은 구글 재팬이라고 가정하자. https://www.google.co.jp/webhp

준캔의 주소 127.12.34.56 (이것을 IP주소라고 함, 각 컴퓨터들이 갖는 고유한 주소를 말함)

승현은 127.12.34.56 DATA 이렇게 해서 날려준다.

 

우리가 주소창에 www.naver.com을 입력하면 이 영어 주소는 IP 주소로 변환되어 사용합니다.(준캔은 일본 구글 주소이므로 https://www.google.co.jp/webhp를 사용한다.)

 

따라서 우리는 상대방의 IP주소를 알고 있어야 메시지를 보낼 수 있다.

 

가장 먼저 승현은 [127.12.34.56 DATA] A에게 패킷을 전달합니다.

패킷을 열어서 목적지 IP주소를 확인함. A는 자기와 연결된 컴퓨터 중에 IP주소가 같은 것이 없다는 것을 확인하고

데이터를 다시 포장해서 HA에게 넘겨줍니다.

우리는 HA에서 당연히 일본으로 넘어가 D의 라우터에게 주는 것을 알지만

HA는 A에게 줘야 할지, B에게 줘야 할지 C에게 줘야할지 고민에 빠짐.. 이것에 대해서는 라우팅에 대해서 공부를 해야 함!

이 부분은 라우팅에 관한 부분이니깐 넘어가고, 다시 D의 라우터한테 포장해서 넘겨줌.

그렇게 해서 데이터를 준켄한테 가는 것을 알 수 있음.

 

그래서 Network Layer란?

수많은 네트워크들의 연결로 이루어지는 inter-netwrok 속에서

어딘가에 있는 목적지 컴퓨터로 데이터를 전송하기 위해,

IP 주소를 이용해서 길을 찾고(routing)

자신 다음의 라우터에게 데이터를 넘겨주는 것(forwarding)이다.

Network Layer 기술은 어디에 구현되어 있을까?

운영체제의 커널에 소프트웨어적으로 구현되어 있다.


Transport Layer(4 계층)

모든 컴퓨터가 통신할 수 있게 되었음

일본의 준켄까지 데이터를 받을 수 있는 걸로 보아 전 세계적으로 데이터를 받을 수 있음.

 

이제 지금 승현의 컴퓨터에서는 카카오톡이랑 디스코드 같은 프로그램들이 실행되고 있음.

근데 이제 Hello , 안녕하세요 라는 다른 유저들이 데이터를 보냈음.

만약에 Hello, 안녕하세요라는 데이터를 카카오톡이랑 디스코드에 주고 싶은데 컴퓨터는 어떻게 알 수 있을까?

 

데이터를 받고자 하는 프로세스(프로그램)들은 포트 번호(8080,8090)라는 것을 가져야 함.

포트번호는 하나의 컴퓨터에서 동시에 실행되고 있는 프로세스들이 서로 겹치지 않게 가져야 함.

우리가 지금 실행하는 것도 cmd를 통해서 보면 각각 하나의 포트번호를 가지고 있음 작업 관리자를 통해서도 확인할 수 있음.

 

카카오톡 포트번호 8080 디스코드 포트번호 8090이라 치면

Port:8080 안녕하세요 처럼 카카오톡에 보내려고 하면 포트번호까지 알고 있어야 한다.

그럼 승현은 카카오톡의 포트번호까지 알고 있어야 하나요?

사실 검색창에 www.naver.com을  을 입력하는 것은 뒤에 www.naver.com:80  이 생략된 것이므로 

네이버의 포트번호까지 알고 있는 셈이 된다.

결국 Transport Layer 란?

port 번호를 사용하여 도착지 컴퓨터의 최종 도착지인 프로세스에 까지 데이터가 도달하게 하는 모듈이다.

Transport Layer 기술은 어디에 구현되어 있을까?

운영체제의 커널에 소프트웨어적으로 구현되어 있다.

 


Application Layer(7 계층)

엥?😯왜 5,6 계층은 설명하지 않고 넘어가는 거지?

사실 현대의 인터넷은 OSI 모델이 아니라 TCP/IP 모델을 따르고 있음.

현대의 인터넷이 TCP/IP 모델을 따르는 이유는 OSI 모델이 TCP/IP 모델과의 시장 점유 싸움에서 졌기 때문입니다.

4,5,6 계층이 Application Layer에 들어갔음.

 

TCP/IP 소켓 프로그래밍

운영체제의 Transport layer에서 제공하는 API를 활용해서

통신 가능한 프로그램을 만드는 것을

TCP/IP 소켓 프로그래밍, 또는 네트워크 프로그래밍이라고 한다.

 

소켓 프로그래밍 만으로도

클라이언트, 서버 프로그램을 따로따로 만들어서 동작시킬 수 있는데요.

뿐만 아니라, TCP/IP 소켓 프로그래밍을 통해서 누구나 자신만의 Application Layer 인코더와 디코더를 만들 수 있습니다.

누구든 자신만의 Application Layer 프로토콜을 만들어서 사용할 수 있다는 뜻!

 

응용 계층에서는 클라이언트의 요청을 전달하기 위해 서버가 이해할 수 있는 데이터로 변환하고 전송 계층으로 전달하는 역할을 함.

 

클라이언트 측 애플리케이션에서 서버 측 애플리케이션과 통신하려면 응용 계층의 프로토콜을 사용해야 한다.

 

웹사이트를 볼 때는 HTTP, 파일을 전송할 때는 FTP, 메일을 보낼 때는 SMTP, 메일을 받을 때는 POP3라는 프로토콜을 사용한다.

 

프로토콜 : 사람과 사람이 서로 이해할 수 있는 언어, 전 세계 사람과 얘기하려면 공용된 언어를 사용하듯이 컴퓨터도 컴퓨터 서로 이해할 수 있는 공용된 언어를 사용하는 것이 프로토콜.

 

 

+ Recent posts