[네트워크프로그래밍] 통신 기초- OSI 7계층 모델, 프로토콜 헤더, 라우터

[네트워크프로그래밍] 통신 기초- OSI 7계층 모델, 프로토콜 헤더, 라우터

통신 기초

OSI 7계층 모델

계층 구조에서 소프트웨어가 동작하는 원리는 상위 계층은 하위계층에게 서비스를 요청한다.(request)

하위 계층은 작업을 한 다음에 결과를 상위 계층에게 서비스를 제공한다.

* 상위 계층과 하위 계층 사이에 SAP(Service Access Point)라는 것이 있음.

상위 계층의 어플리케이션을 만들어 반대편에 있는 어플리케이션에 데이터 요청을 할 수 있도록 하위 계층에게 지시를 하거나 결과를 리턴받을 때, 사용하는 soket API 함수가 SAP이다.

=> 상위 계층에서 soket API를 써서 함수를 호출하면 하위 계층인 TCP/IP계층이 받아 처리를 해 결과를 알려준다.

상위 계층과 하위 계층의 중간 부분을 연결하는 부분을 인터페이스라고 부른다.

통신 프로토콜에서의 특징은 동일한 계층은 상대측 n번째 계층과 대등 관계를 갖는다.

이러한 동일한 계층과 주고받는 메세지를 주고받는 것을 프로토콜이라 한다.

프로토콜이란, 동일한 계층간 통신을 위한 미리 정의된 약속/규정/규약이라 할 수 있다.

ex) IP 프로토콜은 네트워크 계층의 프로토콜 중에 가장 널리 쓰이고 있는 표준이다.

프로토콜 헤더와 라우터 기능

프로토콜 헤더

상대 계층간의 약속인 프로토콜을 하려고 시키거나 상대편에서 결과를 받을 때, 그 내용을 헤더에다가 써줘야 한다.

예를 들면, 응용 계층에서 수신 호스트에게 데이터를 "hello"라고 보내고 싶다. 상대 계층에게 바로 주진 않고

하위 계층인 표현계층에게 API나 명령어등을 요청 한다.

몇바이트인지, 누가 받아야하는지, 몇번째 데이터인지 등등 제어 정보를 붙여서 보낸다. 즉, 제어 정보(프로토콜 정보)는 응용 계층 간의 약속된 정보를 포함하고 있다.

이러한 프로토콜 정보를 저장하는 곳이 헤더이다. 헤더는 데이터 앞에 붙인다.

그림에서 본다면 상위계층의 헤더가 하위계층의 헤더로 계속 내려와 전달하고, 하위계층은 자기 계층의 헤더를 덧붙인다.

이렇게 쌓아온 헤더를 가지고 상대편 수신 호스트에게 보내고 긴 데이터를 받은 하위 계층은 자기 계층 헤더에 에러가 있는지 확인해 없으면 상위 계층으로 보낸다. (서비스 제공)

궁극적으로 맞는 내용물만 제일 상위 계층인 응용 계층으로 전달시킨다.

그렇게 해서 받은 응용 어플리케이션은 다시 똑같은 형식으로 하위 계층으로-> 상대편 하위계층에서 상위 계층으로

데이터를 보낸다.

라우터

보통은 내가 원하는 데이터를 아주 멀리 떨어져있는 컴퓨터로부터 요청을 해서 받아온 경우가 많다.

그럴 경우 중간에 중개 노드(중계기)라는 것이 데이터를 전달하는데, 이것을 라우터라고 부른다.

라우터는 물리 계층(L1), 데이터 링크 계층(L2), 네트워크 계층(L3)로 되어있고 이것을 L3 스위치라고 부른다.

인터넷은 라우터의 집합체라고도 할 수 있다.

네트워크 계층에서 데이터의 전송 경로를 결정하는 것을 라우팅(Routing)이라 한다.

from http://yeoncoding.tistory.com/124 by ccl(A) rewrite - 2021-09-04 14:00:18