네트워크 - Protocol Stack
컴퓨터 네트워크를 공부하면서 정리를 한 내용들 입니다.
-참고 K-mooc 부산 대학교 유영환 교수님 : 컴퓨터 네트워크 강의
통신 프로토콜은 많은 기능들을 가지고 있는데 이런 기능들은 몇 가지 영역으로 분류 해 볼 수 있습니다.
그리고 이 하나의 영역들을 레이어, 계층으로 불리며 구분할 수 있습니다.
프로토콜의 레이어들은 우리가 비행기를 타고 여행을 할 때 받게 되는 서비스와 비유 해 볼 수 있습니다.
우리가 출발 공항에 도착하면 맨 먼저 티켓을 받고, 그 다음에 짐을 부치고, 이어서 비행기에 탑승을 하게 되고,
도착 공항에서는 이것의 역순으로 비행기에서 내리고, 짐을 찾고, 이야기 할것이 있을 때 창구를 찾아가는 것.
이처럼 출발 공항에서와 도착 공항에서의 서비스를 살펴 보면 각 서비스가 대응되고 있다는 것을 알 수 있습니다.
마찬가지로 통신 프로토콜도 보내는 쪽과 받는 쪽의 서비스가 대응이 되기 때문에 이를 레이어로 만들어 둔 것입니다.
Internet Protocol Stack
인터넷 프로토콜은 그림과 같이 다섯 가지의 계층을 가지고 있습니다.
Application layer
가장 상위 계층(응용 계층)입니다.
응용 계층이라고 하면 인터넷을 사용하기 위해서 쓰는 애플리케이션, 응용 프로그램들을 이야기 합니다.
파일을 전송하는 FTP라던지, 메일 전송을 위한 SMTP, 웹 서비스를 이용하기 위한 HTTP 같은 경우,
해당 계층에서의 서비스입니다.
Transport layer
위에서의 패킷을 목적지까지 안전하게 전달하는 서비스를 제공하는 것이
트랜스포트 레이어(transport layer), 전송 계층이라고 합니다.
전송 계층의 서비스가 되겠고요. TCP, UDP 이런 것들이 있습니다.
Network layer
데이터에 보내는 소스에서부터 목적지까지의 길을 찾아주는 기능을 하는 것이
네트워크 레이어, 네트워크 계층의 작업입니다.
Link layer
source에서 destination까지 가다 보면은 여러 계층을 거쳐가게 되는데
하나의 호스트와 그 다음 호스트 또는 여러 hop을 거쳐서 소스에서 destination까지 간다고 하면
이 사이사이 마다 데이터를 전송하는 일을 합니다.
이러한 길 자체를 결정하는 것은 네트워크 레이어가 하는 일입니다.
Physical layer
실제로 이 사이에서 데이터를 전달 할 때 어떠한 방식으로 전달 할 것이냐,
비트를 어떤 식으로 전달 할 것이냐를 결정하는 것입니다.
유선 링크라고 하면 유선링크에서도 twisted pair cable과 coaxial cable, fiber cable도 있는데,
각 케이블에서의 비트 정보를 어떤 식으로 처리 할 것인가 하는 것을 알려줍니다.
무선이라고 하면 무선 전파를 어떤 식으로 송신하고 어떤 식으로 받을 것인가를 결정합니다.
OSI 7 Layer
이전에 OSI 7계층에 대해 간략하게 정리해 놓았었습니다.
OSI 7 계층을 보면 인터넷에 비해서 두 가지 레이어가 더 있다는 것을 알 수 있습니다.
Internet Protocol Stack에서는 이 두가지가 Application 레이어에 포함 되어 있습니다.
국제표준화기구에서는 이것을 조금 더 세분화해서 별도의 레이어로 만들어 둔 것 입니다.
왜 인터넷 프로토콜은 표준을 따르지 않았나요? 인터넷이 표준보다 더 먼저 만들어졌기 때문입니다.
OSI에 추가 된 두 가지 계층은 무엇이냐면
Presentarion layer
암호화 또는 데이터 압축, 데이터 인코딩과 같이
데이터를 어떤식으로 부호화 할 것이냐를 결정 해 주는 역할을 합니다.
Session layer
트랜스포트(transport) 레이어, 연결을 관리 해 주는 역할합니다.
그래서 연결의 데이터 동기화라던지 연결 관리라던지를 담당합니다.
Why layering
왜 이렇게 layer들을 구별해서 만들었는가?
layer를 만들어서 각 서비스를 모듈화 해 두어 해당 모듈만 개발하고, 관리, 수정하면 편하기 때문입니다.
예시)
Physical layer가 있고 Link layer가 있는데,
처음에는 twisted pair cable를 이용해서 서비스를 했다고 가정 해 봅시다.
Link layer를 설계하는 기술자들이 링크 레이어를 잘 설계 했고,
twisted pair cable을 사용해서 Physical layer 설계자들이 잘 설계를 했습니다.
둘 사이에 인터페이스를 잘 정의 해서 서비스를 제공하고 있었습니다.
이러는 와중에 새로운 기술들이 나왔습니다.
동축 케이블이든 광케이블이든 무선 주파수를 이용하든,
전체 프로토콜에서 밑에 Physical을 바꾸기 위해서는 Physical layer 부분만 바꾸는 것.
필요한 부분만 갈아 끼우면 나머지는 전혀 손대지 않고도
계속 서비스를 이어나갈 수 있게 만든 것이 모듈화의 이점입니다.
Encapsulation
예를 들어 웹 브라우저나 메신저 이런 프로그램이라고 하면
어떤 메세지를 데스티네이션 쪽으로 전달 하고 싶습니다.
소스 시스템의 애플리케이션이 먼저 트랜스포트(transport) 계층에 메세지(message)
를 내려주게 됩니다.
트랜스포트 계층은 데이터 전송을 위해서 필요한 정보들이 있을 텐데 이것을 담아서 앞에다 붙이게 됩니다.
제어 정보를 담고 있는 부분을 헤더라고 부르는데
이것이 트랜스포트 레이어에서 붙으면 그것을 세그먼트(segment)
라고 부릅니다.
그렇게 해서 만들어진 전체의 세그먼트는 네트워크 레이어에 전달 됩니다.
네트워크 레이어에서는 목적지까지 길을 찾는데 필요 한 제어 정보들을 앞에 붙이게 됩니다.
만들어진 것을 IP 데이터그램(datagram)
라고 부릅니다.
다시 링크 레이어에 내려지고 링크 레이어를 대표하는 이더넷 주소 같은 주소를 앞에 붙입니다.
그렇게 해서 만들어진 것이 이더넷 프레임(frame)
입니다.
그렇게 물리층을 통해 유선이나 무선을 통해서 전송이 됩니다.
전송이 되면 중간에 몇 가지 interconnecting device를 지나고,
목적지에 도달하게 되면 목적지 컴퓨터에 있는 레이어들은
각각에 담겨진 정보들을 이용해서 작업을 해서
최종적으로 원래 소스가 보내고자 했던, 메세지와 동일한 형태의 메세지만을 이쪽 상위 애플리케이션에 전달을 합니다.
어떤 메세지의 헤더가 차례차례 붙어 지는 이런 작업을 Encapsulation
이라고 부릅니다.