반응형

각 계층들의 개념

 

 

※ LINK 계층 ※

 

LINK 계층 물리적인 영역의 표준화에 대한 결과이다.

 

이는 가장 기본이 되는 영역으로 

 

LAN, WAN, MAN과 같은 네트워크 표준과 관련된 프로토콜(약속)을 정의하는 영역이다.

 

두 Host가 인터넷을 통해 데이터를 주고받으려면 이러한 물리적인 연결이 필요하다.

 

-

 

※ IP 계층 ※

 

이제 물리적인 연결이 형성되었으니, 데이터를 보낼 기본 준비는 되어있다.

 

그런데 복잡하게 연결되어 있는 인터넷을 통한 데이터의 전송을 위해 선행되어야 할 일은 경로의 선택이다.

 

IP 계층은 목적지로 데이터를 전송하기 위해 중간에 어떤 경로를 걸쳐갈지 결정하는 계층이다.

 

이 계층에서 사용하는 프로토콜 IP(Internet Protocol)이다.

 

IP자체는 비 연결 지향적이며 신뢰할 수 없는 프로토콜이다.

 

데이터를 전송할 때마다 거쳐야 할 경로를 선택해 주지만, 그 경로는 일정하지 않다.

 

특히 데이터 전송 도중에 경로상의 문제가 발생하면 다른 경로를 선택해주지만

 

이 과정에서 데이터가 손실되거나 오류가 발생하는 등의 문제가 발생한다고 해서 이를 해결해주지 않는다.

 

즉, 오류발생에 대한 대비가 되어있지 않은 프로토콜이다.

 

-

 

※ TCP / UDP 계층 ※

 

데이터의 전송을 위한 경로의 검색을 IP계층에서 해결해준다.

 

그리고 그 경로를 기준으로 데이터를 전송만 하면 된다.

 

TCP와 UDP 계층은 이렇듯 IP계층에서 알려준 경로정보를 바탕으로 데이터의 실제 송수신을 담당한다.

 

그렇기에 이 계층을 가리켜 "전송(Transport) 계층"이라고 한다.

 

전송 계층에 존재하는 UDP는 TCP에 비해 상대적으로 간단하다.

 

TCP는 신뢰성 있는 데이터의 전송을 담당한다.

 

그런데 TCP가 데이터를 보낼 때 기반이 되는 프로토콜이 IP이다.

 

(이것이 프로토콜이 스택의 구조로 계층화되어 있는 이유이다.)

 

IP는 오로지 하나의 데이터 패킷(데이터 전송의 기본단위)이 전송되는 과정에만 중심을 두고 설계되었다.

 

따라서 여러 개의 데이터 패킷을 전송한다 하더라도 각각의 패킷이 전송되는 과정은

 

IP에 의해서 진행되므로 전송의 순서는 물론, 전송 그 자체를 신뢰할 수 없다.

 

만약 IP만 이용해서 데이터를 전송한다면 

 

먼저 전송한 A패킷보다 뒤에 전송한 B패킷이 먼저 도달할 수 있다.

 

그리고 이어서 전송한 A ~ C 패킷들 중에서 A와 C 패킷만 전송될 수 있으며

 

게다가 C 패킷은 데이터가 손상된 상태로 전송될 수도 있다.

 

반면에 TCP 프로토콜이 추가되어 데이터를 송수신하면 패킷의 전송 확인 여부와

 

데이터의 손실 확인 여부를 체크하고 재 전송 과정까지 거친다.

 

즉, IP의 상위계층에서 호스트 대 호스트의 데이터 송수신 방식을 약속하는 것이 TCP와 UDP이며

 

TCP는 확인 절차를 걸쳐서 신뢰성 없는 IP에 신뢰성을 부여한 프로토콜이라 할 수 있다.

 

-

 

※ APPLICATION 계층 ※

 

지금까지 설명한 내용은 소켓을 생성하면 데이터 송수신 과정에서 자동으로 처리되는 것들이다.

 

데이터의 전송경로를 확인하는 과정이라든가 데이터 수신에 대한 응답의 과정이

 

소켓이라는 것 하나에 감춰져 있기 때문이다.

 

하지만 감춰져 있다는 표현보다는 이러한 일들에 대해서 프로그래머를 자유롭게 해 줬다는 표현이 더 정확하다.

 

즉, 프로그래밍에 있어서 이러한 과정을 프로그래머들이 신경 쓰지 않아도 된다는 뜻이다.

 

하지만 신경을 쓰지 않아도 된다 하여, 몰라도 되는 것이 아니다.

 

이론적인 내용들도 알고 있어야 필요에 맞는 네트워크 프로그램을 작성할 수 있다.

 

최종적으로 소켓이라는 도구가 사용자에게 주어졌고

 

사용자들은 이 도구를 이용해서 무엇인가를 만들면 된다.

 

이렇게 무엇인가를 만드는 과정에서 프로그램의 성격에 따라

 

클라이언트 서버간의 데이터 송수신에 대한 약속(규칙)들이 정해지기 마련인데

 

이를 가리켜 APPLICATION 프로토콜이라고 한다.

 

그리고 대부분의 네트워크 프로그래밍은 APPLICATION 프로토콜의 설계 및 구현이 상당 부분을 차지한다.

 

반응형

+ Recent posts