OSI 모형(Open System Interconnection Reference Model)은 국제 표준화기구 ISO에서 개발한 모델로 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 것이다. 일반적으로 OSI 7계층이라고 표현한다.
위 그림은 OSI 7계층의 각 계층을 아래서 위로 순서대로 정리한 것이다.
물리 계층은 OSI 7계층 중 가장 아래에 있다. 시스템 간의 물리적 연결을 하고, 전기 신호의 변환 및 제어 역할을 담당한다. 데이터를 '전기신호'로 바꾸어 전송하는 일을 한다.
먼저, 물리 계층을 잘 이해하고 네트워크 통신에 대해 이해하는 기반을 다지기 위해서 한가지 전제를 깔고가자. 우리의 관점에서 네트워크 통신은 복잡한 정보를 주고 받지만 실제로는 0
과 1
만 사용되며, 이것을 '잘' 주고받을 수 있으면 된다. 0
과 1
은 흔히 비트(bit) 라고 불린다.
물리 계층은 이러한 0
과 1
이 다른 컴퓨터로 전달되는데에 핵심적인 역할을 한다. 0
과 1
은 신호를 통해 주고받을 수 있는데, 신호의 종류는 아날로그 신호 와 디지털 신호 가 있다.
정확히 0
혹은 1
이 아니라, 0
혹은 1
사이 어딘가의 값을 갖는다.
대략 위와 같은 모습을 갖는다.
정확히 0
혹은 1
의 값을 갖는다. 매우 정확하다.
이전에 말했듯, 0
과 1
만 보낼 수 있으면, 두 대의 컴퓨터가 통신할 수 있고, 모든 정보를 보낼 수 있다. 그렇기 때문에 통신을 위해 디지털 신호를 쓸 것이다. 그렇다면 디지털 신호를 보내기 위해서 먼저 디지털 신호로 특정한 의미를 갖는 0
과 1
의 조합을 만들어보자. 이를테면, 3
이라는 데이터를 보내고 싶다면 11
, 8
이라는 데이터를 보내고 싶다면, 100
과 같은 조합을 만들어서 보낼 수 있다.
그런데 여기서 문제가 생긴다. 디지털 신호의 0
과 1
을 이용해 의미를 부여한다는 것은 알겠다. 그런데 어떻게 보내야 할까?
결국 우리가 할 수 있는 것은 딱 한가지밖에 없다. 네트워크를 구축하고 싶은 두 장치에 전기가 통할 수 있는 전선을 연결한다. 그리고 전기 신호를 흘리면 1
, 전기 신호를 흘리지 않으면 0
을 받은 것이라고 통신 규약을 정하자.
그런데 여기서 또 문제가 생기는데, 전기라는 것은 정확히 흐르고 안 흐르고를 정의하기 상당히 어렵다는 것이다. 왜냐하면 사람이 전선을 만졌을 때, 아무런 느낌이 없어도 0.001V의 전압이 있는 상태일 수도 있기 때문이다.
그리고 현실의 전압 숫자는 우리가 과학시간에 배운 것처럼 1V, 2V 딱 떨어지지 않는다. 수많은 소숫점이 함께한다.
그래서 우리는 대략 5V라는 기준 전압을 세우고, 이 전압을 넘어서면, 전기가 흘렀다. 그리고, 이 전압을 넘어서지 못하면, 전기가 흐르지 않았다. 는 약속을 정한다.
이러한 기준 전압에 대해 간혹 문턱 전압
이라는 표현도 쓴다.
5V의 전기 신호가 얼마만큼의 시간동안 흘러야 디지털 신호의 1
이라는 값이 될까? 0.1
초만 유지되면 1
로 해석해야 하는가? 아니면 1
초를 온전히 흘러야 1
로 해석해야 하는가? 0.1
초만 5V 밑으로 유지되면 0
으로 해석해야 하는가? 1
초를 온전히 5V 밑으로 유지해야 0
으로 해석해야 하는가?
여기서는 주파수 라는 개념이 쓰일 수 있다.
이를테면, 위와 같이, 1초간 2번의 진동을 할 수 있는 파동(2Hz의 주파수)이라는 것을 알면 해당 파동을 해석할 수 있다. 이를테면 위의 경우에는 11
이라는 디지털 신호가 들어왔다고 가정할 수 있다.
이론상 0~무한대 까지의 주파수를 갖는 디지털 신호를 마음대로 만들어낼 수 있지만, 현실 세계에 있는 매개체들은 그 신호를 전부 감당할 수 없다.
이를테면, 인간은 약 20~20000Hz의 가청 주파수를 갖고 있는데, 그 이상의 주파수가 유입되거나 그 이하의 주파수는 유입되어도 전혀 인지하지 못한다.
어찌됐든 같은 이유로 컴퓨터의 네트워크도 무한한 주파수의 디지털 신호를 한번에 보낼 수 없고, 전선이 감당할 수 있는 적당한 단위로 끊어서 보내야 한다.
케이블의 정의 중 위와 같은 정의가 있다. 실제로 물리 계층에서 네트워크를 연결할 때는 케이블을 이용한다. 주로 흔히 볼 수 있는 UTP 케이블이란 것을 이용한다.
UTP 케이블은 Cat3
부터 Cat7
까지 존재하는데, 보통 카테고리3, 카테고리7 등으로 발음한다. 우리가 일반적으로 쓰는 UTP 케이블의 종류는 카테고리5이다.
카테고리5 UTP 케이블은 최대 속도가 100Mbps이다. bps 단위는 bit per second라는 뜻이며, 비슷한 단위인 B/s와 헷갈리면 안된다. B/s는 byte per second이다.
어찌됐든, 카테고리5 UTP 케이블은 100Mbps의 전송속도를 가지고, 이것을 주파수로 환산하면 100Mhz이다.
네트워크에 사용되는 케이블은 UTP 말고도 동축 케이블, 광케이블, STP 케이블 등 다양하다.
UTP 케이블은 총 8개의 구리선을 갖고 있지만, 실제로는 4개만 쓴다. 일반적인 경우는 1,2,3,6 번 구리선만 각각 송수신을 위해 이용한다.
크로스 케이블은 PC간의 직접 연결에 쓰이며, 다이렉트 케이블은 스위치와의 연결에 쓰인다. 다이렉트 케이블은 구리선 8개를 같은 순서로 연결한 케이블이며, 크로스 케이블은 1, 2번에 연결되는 구리선을 다른쪽 커넥터의 3, 6번에 연결한 케이블이다.
PC간의 연결에 크로스 케이블을 사용하는 이유는, PC에서는 동일하게 각각 1,2번 구리선을 수신에 이용하고 3,6번 구리선을 송신에 이용한다. 그런데 이 경우 다이렉트 케이블을 직접 연결하여 이용하면 두 PC 모두 1,2번을 수신으로 쓰고, 3,6번을 송신으로 쓰기 때문에 제대로 송수신이 되지 않는다. 그래서 1,2번 구리선을 3,6번에 연결하고, 3,6번 구리선을 1,2번에 연결하면 올바르게 송수신이 맞물리게 된다.
스위치는 애초에 PC와 다르게 3,6 번을 송신에 사용하므로, 다이렉트로 만들어도 잘 송수신이 된다.
이전에 배웠던 지식들을 되짚어보자. 컴퓨터가 0
과 1
을 이용해 송신할 데이터를 만들면 디지털 신호로 된 데이터를 전송하기 위해 전기를 흘려야 한다고 했다. 전기는 전선을 타고 갈 것이며, 전선은 위에서 얘기했던 UTP 케이블을 말한다.
그런데 컴퓨터 본체를 살펴보면 UTP 케이블이 꽂혀있는 곳이 보일 것이다. UTP 케이블이 꽂혀있는 곳인 랜카드가 디지털 신호를 전기 신호로 만들어주는 주체이다.
랜카드는 보내야 하는 디지털 신호를 아날로그 전기 신호로 바꾸고, 바꾼 전기 신호를 UTP 케이블을 통해 날린다.
500ml 물통에 물을 가득 넣어두고, 반복해서 옆 사람의 물통에 옮기면, 물이 튀기거나 햇볕에 의해 증발하여 계속해서 조금씩 물이 줄어들 것이다. 전기 신호도 동일한 현상이 일어난다. 전선이 매우 길면 전기는 전선을 타고가며 점점 손실이 일어난다.
이러한 손실에 의해 전송에 문제가 생기는 것을 방지하기 위해 리피터는 세기가 약해진 전기 신호를 받아서 다시 강화시켜주는 역할을 한다. 약해진 파형을 다시 정상으로 만들어준다. 요즘에는 리피터가 따로 나오는 것이 아니라, 다른 네트워크 장비에서 리피터의 역할까지 맡는 경우가 많다.
컴퓨터를 여러대 연결할 수 있는 네트워크 장비이다. 허브는 리피터처럼 전기신호를 정형하고 증폭하는 기능도 한다. 1:1로 데이터를 전송하는 것이 아니라 여러 컴퓨터의 집합을 만들어서 서로 데이터를 공유할 때 유용하다.
그러나, 허브는 내가 보내고 싶은 목적지 컴퓨터에만 신호를 보내는 것이 아니라, 허브에 연결된 모든 컴퓨터에 신호를 보내서 더미 허브(dummy hub) 라는 이름으로 불리기도 한다.
이러한 단점을 보완한 스위치가 있다.
0
과 1
을 서로 주고 받을 수 있으면 된다.0
과 1
로 된 디지털 신호를 갖고 있다.0
과 1
로 된 디지털 신호를 보내기 위해서는 전선을 통해 전달해야 한다.0
과 1
에 해당하는 아날로그 신호를 보냈으면 일단 물리계층에서 할 일은 끝난다.
위 그림은 물리 계층을 함수로 나타내본 것이다. 오른쪽 의사 코드는 자바를 기준으로 작성해보았다.
위와 같은 PHY 칩에 구현되어 있다고 한다.
메인보드에 phy 칩이 달린 경우 위와 같이 표기되는 것도 볼 수 있다.
주파수, UTP 케이블의 종류, 리피터, 허브 등의 개념도 잊지말자.
좋은글 감사합니다!!