네트워크로 통신을 한다는 것은 컴퓨터와 컴퓨터 사이가 연결되어 있고 원하는 곳으로 데이터를 보낼 수 있음을 의미한다. 이렇게 인터넷을 통해서 데이터를 전달하는 하려면 연결되어 있어야 한다. 그 연결되어 있는 원리와 과정을 알아보기 위해서는 네트워크가 어떤 약속을 가지고 어떤 방식으로 흘러가는지 흐름을 알아야 한다. 그 흐름을 잘 설명해주는 모델이 OSI 모델이다. 이 OSI 모델은 7단계로 나눠져 있는데 각 부분을 살펴보면 흐름을 파악하는데 도움이 되고 정말 중요하다. 현재는 TCP/IP 프로토콜 스택을 많이 사용하는데 OSI와 원리는 비슷하기 때문에 개념을 공부하는데 좋은 Reference가 된다.
프로토콜은 통신 규약을 말한다. 통신을 할때 목적이나 상황이 정말 많이 다를 수 있는데 이런 각 상황에서의 통신에 규칙을 정해두는 것이다. 혼자 하는 것이 아니고 주고 받는 것이 통신이기 때문에 특정 통신을 사용하기 위해서는 그 규칙대로 사용하도록 정하는 것이다. 표준협회나 어떤 회사에서 사용하느냐에 따라 정말 다양한 프로토콜이 존재해왔다.
과거에 통신규약들이 표준화되지 않았을때는 호환이 잘 되지 않는 경우가 많아 통신이 불가능했다. 이를 하나의 규칙으로 잘 정리하여 만들어져 오랜 기간 사용해 온 것이 OSI 7 계층이다. TCP/IP 계층이 OSI 7계층이 보다 먼저 개발되었고 OSI가 나중에 개발되었지만 시장 점유율에서 TCP/IP가 앞서면서 지금은 TCP/IP 를 더 많이 사용하고 있다.
그림에서 OSI Model을 보면 이렇게 이루어져 있다. 크게 두 부분으로 나누면 1~4의 데이터 플로우 계층과 5~7의 애플리케이션 계층으로 나눌 수 있다. 두 부분으로 나눈 기준은 역할과 목표에 따라 나눈 것이다. 데이터 플로우 계층은 데이터를 목표한 곳에 잘 전달하는 역할을 하는 계층을 묶은 것이고 애플리케이션 계층은 데이터 처리를 하는 역할을 묶은 것이다. 가운데의 TCP/IP Original은 초기의 버전이고 그 후에 OS model이 나오게 되고 TCP/IP Updated는 계속된 발전을 거듭되며 구성되었다. 업데이트 된 형태를 보면 OSI 모델의 하위계층이 같아진 점이 눈에 띈다.
1계층은 물리적 연결과 관련된 정보를 정의한다. 전기 신호를 전달하고 전달받는 역할을 한다. 1계층에서는 들어온 전기 신호를 그대로 잘 전달하는 것이 목적이다. 1계층 장비에 전기신호가 들어오면 이 전기 신호를 재생성하여 내보낸다. 1계층 장비에는 주소 개념이 없다. 상위 계층에서 만들어진 데이터를 전기신호로 바꿔서 보내거나 다른 네트워크에서 전해온 전기신호를 데이터로 바꾸는 역할을 한다. 네트워크로 전송되는 실제 1과 0을 처리하는 기술이다. 리피터, 허브 및 트랜시커 장치들은 메세지 내용을 전혀 알지 못한다. 단지 비트를 입력받아 출력으로 보낸다.
2계층은 주소 정보를 정의하고 정확한 통신이 되도록 하는 역할을 한다. 1계층은 전기 신호를 잘 보내는 것이 목적이기 때문에 전기신호 자체에 주소가 있지 않지만 2계층에서는 출발 주소와 도착 주소를 확인하고 자신에게 보낸 데이터인지 아닌지 검사한 후 데이터 처리를 수행한다. 이 때의 주소는 IP 주소가 아닌 MAC 주소다.
여기서 MAC 주소를 간단하게 짚고가자면
MAC 주소(Media Access Control Address)는 네트워크 세그먼트의 데이터 링크 계층에서 통신을 위한 네트워크 인터페이스에 할당된 고유 식별자이다. MAC 주소는 이더넷과 와이파이를 포함한 대부분의 IEEE 802 네트워크 기술에 네트워크 주소로 사용된다.
2계층에서는 같은 스위치에 연결되어 있는 같은 네트워크의 여러 컴퓨터들이 데이터를 주고 받기 위해 필요한 모듈이다.
3계층에서는 IP 주소와 같은 논리 주소가 정의된다. 데이터 통신을 할 때 2계층의 물리적인 MAC 주소와 3계층의 논리적인 IP 주소가 사용된다. IP 주소는 이미 기기에 정해져 변경이 불가능한 MAC 주소와는 다르게 사용자가 환경에 맞게 변경하여 사용할 수 있다.
IP 주소는 네트워크 주소와 호스트 주소로 구분되어 있다. 3계층에서 동작하는 장비는 라우터다. 라우터는 3계층에서 정의한 IP를 이해할 수 있다. 라우터는 IP 주소를 통해 최적의 경로를 찾고 해당 경로로 패킷을 전송하는 역할을 한다.
수 많은 네트워크들의 연결로 이루어지는 Inter-network 속에서 어딘가에 있는 목적지로 데이터를 전송하기 위해 IP주소를 이용해서 길을 찾고(라우팅) 자신 다음의 라우터에게 데이터를 넘겨주는 것(포워딩)
하위 계층인 1, 2, 3 계층은 신호와 데이터를 올바른 위치로 보내고 실제 신호를 잘 만들어 보내는데 집중한다. 이에 반해 4층은 실제로 해당 데이터들이 정상적으로 잘 보내지는지 확인하는 역할을 한다. 데이터를 분해해 패킷에 실어보내면서 중간에 패킷이 유실되거나 순서가 바뀌는 경우가 생길 수 있다. 이 문제를 해결하는 역할을 4계층이 담당한다. 패킷에 보내는 순서는 시퀀스 번호(Sequence Number)로, 받는 순서는 ACK 번호(Acknowledgement Number)로 애플리케이션 구분은 포트번호(Port Number)로 구분한다.
4계층에서 동작하는 장비는 로드벨런서와 방화벽이 있다. 시퀀스 번호, ACK 번호, 포트번호 등을 이용해서 부하를 분산하거나 보안정책대로 패킷의 문지기 역할을 수행한다.