두대의 컴퓨터를 전선 하나로 연결한다고 상상해보자.
0과 1을 주고 받을 수 있으면 모든 데이터를 주고 받을 수 있으므로 이제 두 컴퓨터는 모든 데이터를 주고 받을 수 있게 되었다!
두 대의 컴퓨터가 통신하려면 0과 1을 주고받을수 있으면 된다.
그리고 2대의 컴퓨터가 전자기파 (주파수)를 주고받으면 서로 encoding, decoding 하면 된다.
Encoding = 0과 1의 나열을 아날로그 신호로 바꾸어 전선으로 흘려 보냄
Decoding = 아날로그 신호가 들어오면 0과 1의 나열로 해석함.
Module = 물리적으로 연결된 두 대의 컴퓨터가 0과 1의 나열을 주고 받을수 있게 해주는 모듈
그래서 전선하나로 여러 컴퓨터에 연결할 방법을 모색해야했다.
여기서 말하는 라우터는 우리가 잘 알고있는 공유기에 해당된다.
우리나라와 일본을 잇는, 그러니까 대륙간에도 해저 케이블이 있어서 서로 이어주는 유선케이블이 있다
이런식으로 컴퓨터 끼리 연결이 가능한 것인데,
1계층에 속하는 기술 만으로는 여러 대의 컴퓨터가 통신하도록 만들 수 없다.
같은 네트워크에 있는 여러 대의 컴퓨터들이 데이터를 주고받기 위해서 필요한 모듈
(Framing은 Data-link Layer에 속하는 작업들 중 하나)
이렇게 3대의 컴퓨터가 예림에게 데이터를 동시에 보내면, 예림은 010111110001 이렇게 받는데, 잘못 끊어 읽으면 누가 어떤 데이터를 보냈는지 모른다.
예를 들어 시작이 1111, 끝이면 0000을 붙힌다면
저 동그라미 친 부분이 데이터가 되는 것이다.
아래 사진의 순서는 왼쪽부터이다.
A 는 B 에게 'data'라는 데이터를 보내고 싶다.
B의 주소가 55.10.54.75 인것을 알고 있어서 데이터 앞에 붙였다.
여기서 A의 목적지, 즉 B의 주소는 고유 IP 주소이다. (55.10.54.75)
55.10.54.75 'data' => 패킷이라고 부른다.
컴퓨터는 저 패킷을 가 라우터에게 보낸다
가 라우터는 패킷을 받아서 열어 봅니다.
"엥? 나랑 연결된 컴퓨터 중에는 IP 주소가 55.10.54.75 인 컴퓨터가 없군!"
그러면 가 는 패킷을 다시 포장하고, 라우터 마에게 전달한다.
이런 방식을 반복하여 B에게 도착한다.
이제 인터넷 상의 모든 컴퓨터가 서오롸 통신할 수 있게 되었다.
자 이제 예를 들어 데이터를 받는 컴퓨터가 오른쪽 3개 인사 메시지의 데이터를 받는다고 치자.
그런데 컴퓨터에는 여러개의 프로그램들이 실행되고 있었다.
컴퓨터는 저 3개의 데이터를 프로세스들에게 나누어 주려고 한다.
어떤 데이터를 무슨 프로세스에게 줘야할 지,
컴퓨터는 어떻게 알 수 있을까??
먼저, 데이터를 받고자 하는 프로세스들은 포트 번호 (Port Number) 라는 것을 가져야 한다.
송신자 입장에서, 송신자는 데이터를 보낼 때 데이터를 받을 수신자 컴퓨터에 있는 프로세스의 포트 번호를 붙여서 보낸다.
포트 번호가 있기에 자기 프로세스를 잘 찾아갈 수 있다.
오늘날 Updated 모델이 더 많이 사용된다.
모두들 MVC 패턴에 익숙할거라 믿는다.
MVC 패턴은 소프트웨어 아키텍쳐 중 하나인데,
그러니까 네트워크 시스템은 하나의 커다란 소프트웨어라고 할 수 있다.