




네트워크 기초 용어에 대해서 살펴보자.
네트워크 = 여러 대의 시스템이 연결되어 통신하는 집합네트워크
인터페이스 :
인터페이스란 시스템과 전송 매체의 연결 지점에 대한 규격이다.
간단히 말하면 다음 예제와 같다.
시스템 = 컴퓨터
전송 매체 = 케이블
A 컴퓨터와 케이블 간에 연결되는 지점을 생각했을 때 이 지점에서 연결되는 규격을 인터페이스라고 생각하면 된다.
예) USB도 하나의 통신 규격이다.
프로토콜 :
프로토콜이란 시스템이 데이터를 교환할 때 소프트웨어적으로 동작하는 통신 규칙이다.
간단하게 통신할 때 지키는 규칙이라고 생각하면 된다.
표준화 :
표준화란 인터페이스와 프로토콜은 연동 형식의 통일이 필요하다는 의미로
간단하게 규칙에도 통일이 필요하다는 말이다.
따라서 통일적으로 사용하기 위해서 이러한 표준화 작업을 한다.

그래서 위 그림을 보면 시스템(컴퓨터, 핸드폰)이 여러 개 있고 이 시스템들은 여러 개의 선들로 서로 연결되어 있다.
이 선들이 바로 전송 매체를 의미한다.
그리고 시스템과 전송 매체 간에 연결되는 지점, 이 부분의 규격을 바로 인터페이스라고 한다.
마지막으로 이 시스템과 시스템 간에 통신 즉 데이터를 보낼 때 지켜지는 규칙이 있다고 했는데, 이를 프로토콜이라고 말한다.
우리는 프로토콜을 준수하면서 시스템과 시스템 간에 데이터를 주고 받는다.
이런 식으로 연결되어 있는 하나의 모음을 우리는 네트워크라고 말한다.

우리가 방금까지 시스템은 간단하게 컴퓨터, 핸드폰이라고 말했는데
위 내용을 읽어보면 시스템이란
시스템 = 내부 규칙에 따라 자율적으로 동작하는 대상
이를 시스템이라고 말한다.
그래서 그냥 시스템은 다시 정리하면 스스로 연산 처리가 가능한 기기라고 생각하면 된다.
그리고 인터페이스는 위에서도 언급했지만 간단히
인터페이스 = 시스템과 시스템을 연결하기 위한 표준화된 접촉 지점
이라고 생각하면 된다.
지금 이 내용들은 모두 용어에 대해 이해하고 외우기 보단 쭉 읽어보면 좋을 것이다.

다음으로 전송 매체는
전송 매체 = 시스템끼리 정해진 인터페이스를 연동해 데이터를 전달할 때 필요한 물리적인 전송 수단
이라고 정리하면 된다.
(케이블)
다음으로 프로토콜은 규칙으로
프로토콜 = 전송 매체를 통해 데이터를 교환할 때 따르는 표준화된 대화 규칙
이라고 생각하면 된다.
이 프로토콜은 오직 동등한 위치에 있는 시스템 사이에 규칙을 말한다.(상하 관계 X)
다음으로 네트워크는 위에서 봤던 그림의 전체로
네트워크 = 연결된 여러 시스템이 프로토콜을 사용해 데이터를 주고받을 때, 이들을 하나의 단위로 통칭한 것
이라고 정리하면 된다.

인터넷은
인터넷 = 전 세계의 모든 네트워크가 유기적으로 연결되어 동작하는 통합 네트워크
이를 인터넷이라고 말한다.
가볍게 정리하면 하나의 네트워크가 아닌 여러 네트워크들이 서로 연결되어 하나의 거대한 네트워크로 이루어진 인터넷이라고 말한다.
(TCP와 IP 규칙을 준수하는 네트워크의 모음)
표준화는
표준화 = 서로 다른 시스템이 상호 연동해 동작하기 위한 통일된 연동 형식
이를 표준화라고 말한다.
위 예에서는 프린터기를 뽑았다.
회사마다 프린터기가 다르고 A4 용지 회사마다 만들어진 A4 용지가 다르지만
모두 표준화하여 서로 다른 곳에서 만들어졌어도 A4는 A4라는 규격에 맞추고 프린터기는 A4 용지에 맞춰 출력할 수 있도록 표준화 한 것이다.
우리가 표준화를 언급하는 이유는 우리가 프로토콜을 만들 때 표준화를 진행하기 때문이다.
(제조사가 달라도 통신할 수 있게 만든 것이 표준화이다.)

다음으로 노드는
노드 = 데이터를 주고받을 수 있는 모든 시스템을 통칭
노드는 간단히 시스템은 시스템인데 데이터를 주고받을 수 있는 시스템을 노드라고 말한다.
시스템은 2가지로 나뉘는데
하나는 라우터이고
다른 하나는 호스트이다.
라우터 = 인터넷 내부를 구성하며, 기본적으로 데이터 전송 기능을 포함
우리 주변에 존재하는 라우터는 공유기를 생각하면 된다.
호스트 = 인터넷 바깥쪽에 연결되어 사용자들의 네트워크 접속 창구 역할을 함
우리 주변에 존재하는 호스트는 라우터를 제외한 모든 통신기기로 핸드폰, 컴퓨터를 생각하면 된다.
정리하면
노드는 라우터와 호스트로 나뉘어지고
A라는 호스트, B라는 호스트, C라는 호스트가 연결되어 있는데, 이 연결을 할 때 중간에 라우터라는 것이 존재한다.

위 사진을 보면 라우터에 여러 시스템, 호스트들이 연결되어 있는데 라우터의 역할은 왜 굳이 라우터에 연결되어 있을까?
그 이유는 바로 A라는 호스트가 B라는 호스트에 데이터를 보내고자 하면 A라는 호스트는 먼저 라우터한테 데이터를 보낸다.
그럼 라우터는 연결되어 있는 호스트 중에서 B라는 호스트를 찾아내고 B라는 호스트에 데이터가 전달될 수 있도록 경로를 안내해준다.
따라서 라우터는 데이터를 전달할 때 경로를 안내하는 역할을 하기 때문에 반드시 호스트들 간의 연결 사이에는 라우터가 필요한 것이다.

클라이언트와 서버에 대해서 이야기해보자.
클라이언트 : 임의의 인터넷 서비스를 이용하는 응용 프로그램
서버 : 서비스를 제공하는 응용 프로그램
정리해서 보면
클라이언트는 서버에게 어떤 서비스를 받고 싶다고 요청을 하는 측이고
서버는 클라이언트에게 받은 요청에 대한 서비스를 제공하는 측이다.
위 사진에서 호스트 1, 2, 3이 존재하는데
호스트 1(클라이언트)이 호스트 2(서버)에게 서비스를 요청할 수 있고 호스트 2(클라이언트)가 호스트 3(서버)에게 서비스를 요청할 수 있기 때문에
클라이언트와 서버라는 용어는 특정 서비스를 기준으로 상대적인 관점에서 사용된다.
위에서 텔넷이라는 단어가 나오는데 SSH를 사용하기 이전에 사용했던 것이 바로 텔넷이다.
여기서 SSH란
네트워크를 통해 안전하게 다른 컴퓨터에 접속하고, 명령어를 실행하거나 파일을 전송할 수 있는 보안 프로토콜이다.
텔넷에서 SSH로 바뀐 이유는 보안적인 측면에서 SSH가 더 강하기 때문이다.
(접속 기록, 내역을 가릴 수 있음.)


이제는 OSI 7계층 모델에 대해서 이야기해보자.
위에서 우리는 프로토콜에 대해 이야기를 했고
프로토콜은 통신할 때 지키는 규칙이라고 말했다.
이 OSI 7 계층은 프로토콜을 만들 때 7단계로 나뉘어서 구조를 만든 것이다.
간단히 정리하면
다수의 시스템을 서로 연결해서 통신하려면 선행적으로 전체 시스템 구조를 표준화해야 한다.
따라서국제표준화기구 ISO에서 OSI 7계층 모델이라는 것을 제안해 네트워크에 연결된 시스템이 갖추어야 하는 기본 구조, 기능을 상세하게 정의해 놓은 것이다.
각 계층마다 하는 역할들이 다르며 이 계층 구조에 맞게 규칙을 만들도록 한 것이다.
7단계로 나뉘어진 각 구조는 다음과 같다.
위에서 부터
이렇게 구성되어 있다.
OSI 7계층 맨 위에 있는 응용 계층을 통해 데이터의 송수신을 요청
하위 계층으로 순차적으로 전달되어 맨 아래 물리 계층을 통해 상대 호스트에 전송
이렇게 간략히 진행되고 데이터를 수신하는 호스트에서는 송신 호스트와는 반대 방향으로 처리가 진행된다.

물리 계층
= 인터페이스를 어떤 규격으로 할 것인지, 전송 매체를 뭘로 할 것인지에 대해 정의한 계층
(광 케이블 혹은 동축 케이블을 쓸 것인지, 와이파이 혹은 블루투스를 쓸 것인지)
데이터 링크 계층
= 물리 계층의 오류에 관한 오류 제어 기능을 수행하는 계층
(물리 계층에서 만약 동축 케이블을 통해 데이터를 전달하는데 이 과정에서 오류가 발생한다면, 데이터의 변형이 일어났을 땐 A 방안으로, 데이터의 분실이 일어났을 땐 B 방안으로 대처하는 메뉴얼, 규칙, 프로토콜을 정의해 놓는 계층)
네트워크 계층
= 송신 호스트가 전송한 데이터가 수신 호스트까지 안전하게 도착하려면 여러 개의 중개 시스템인 라우터를 거쳐야 하는데, 이 과정에서 데이터가 올바른 경로를 선택할 수 있도록 도와주는 계층
(데이터가 목적지까지 도착해야 하는데 어떤 경로로 안내를 해야 될지에 대해 메뉴얼로 정의해 놓은 계층, 경로 상에 트래픽이 발생하면 다른 경로로 안내함.)
여기서 라우터가 나오는데 라우터가 경로를 안내해주는 기기로 앞에 나온 3가지 계층의 기능만을 수행한다.
라우터가 물리, 데이터, 네트워크 계층만을 수행하면,
즉 데이터를 어디로 보내야 하고, 어떤 방식으로 보내고 이때 오류가 발생하면 어떻게 하고에 대한 정보만 있으면 목적지로 전달이 가능하기에 라우터는 3가지 계층의 기능만 수행하는 기기가 된다.
(전송, 세션, 표현, 응용의 기능은 라우터에 필요 없다.)
전송 계층
= 송신, 수싱 프로세스 간의 연결 기능을 제공해 안전한 데이터 전송을 지원
(사용자가 데이터를 배에 화물로 싣어 보내는데 처음에 배는 2번 포트에 정착되어 있다. 이 배가 이제 상대방의 항구에 도착해 정착을 하려고 하는데 어느 포트에 정착을 해야 하는지에 대한 정보가 담겨 있는 것 + 상대방 항구에 있는 선착장의 어느 라인까지 갈 때 발생되는 오류에 대해 어떻게 해결할 것인지에 대한 메뉴얼 전체가 바로 전송 계층이다.정리하면 데이터를 보냈을 때 배가 어느 항구 라인(포트)에 정착하면 되는지에 대한 것 + 상대방 선착장의 어느 라인까지 가는 도중에 발생한 오류에 대해 메뉴얼로 정해놓은 것이다.)
세션 계층
= 전반적으로 데이터 전달하는 것 자체를 할지 말지에 대해 관리해주는 계층
(상대방과 통신을 진행하고 있는데 그 연결 설정을 하고 나서 연결이 중간에 끊어졌는지 아닌지 또는 연결하는 과정에서 오류가 발생했는지 전체적으로 관리하는 계층)
우리가 데이터를 보내기 위해서는 그냥 툭 보내는 것이 아니라 상대방에게
"내가 지금 데이터를 보낼건데 너가 받아줄래?"라고 사전에 알리고
"그래 좋아 받을게"라고 상대방이 응답을 주면
이때 연결이 이루어진 것이고
이러한 연결을 전반적으로 관리하는 계층이 세션 계층이다.
표현 계층
= 전송되는 데이터의 의미를 잃지 않도록 올바르게 표현하는 방법을 다룸, 정보를 교환하는 호스트들이 표표준화된 방법으로 데이터를 인식할 수 있게 함.
(우리가 보내는 데이터가 한국어, 영어로 보낸다고 그대로 가는 것이 아니라 통신을 할 때 쓰는 언어로 변환하게 된다. 이때 그 언어로 변환해주는 계층이 바로 표현 계층이다.)
응용 계층
= 응용 프로그램이 사용자와 대화를 할 때 지켜야 할 규칙
(예를 들어 FTP 프로그램을 사용하는 경우 FTP 프로토콜이라는 규칙을 사용해야 한다. 이때 이 FTP 프로토콜의 규칙이 바로 응용 계층에 포함된다.)


응용 계층은 간단히 FTP 프로그램 혹은 응용 프로그램이라고 생각하면 된다.
FTP 프로그램
= FTP를 사용해 컴퓨터 간에 파일을 전송할 수 있는 소프트웨어로 주로 원격 서버와 로컬 컴퓨터 간에 파일을 업로드하거나 다운로드하는 데 사용
예를 들어 사용자가 상대방에게 사진(데이터)를 보내고 싶을 때 밑에 계층인 표현 계층으로 넘거야 한다.
그러므로 응용 계층은 사용자가 명령한 것을 밑에 계층에게 넘기는 역할을 진행한다.
응용 계층은 사용자와의 직접적인 대화를 하면서 동시에 아래 계층에게 전달하고
표현 계층에게 전달된 데이터는 다시 세션 -> 전송 -> 네트워크 -> 데이터 링크 -> 물리
이렇게 쭉 아래로 전달이 된다.
이때 아래로 데이터가 전달되면서 추가적으로 데이터에 정보가 붙는다.
결국
응용 -> 표현 -> 세션 -> 전송 -> 네트워크 -> 데이터 링크 -> 물리
이렇게 전달된다.
물리 계층에 도착하면 물리 계층은 상대방에게 데이터를 전달하게 되는데 이때 위에서 말한 전송 매체를 통해 데이터를 전달하게 된다.
상대방은 데이터를 받을 때 물리 계층을 통해 데이터를 전달 받고 이 데이터를 다시 위로
물리 -> 데이터 링크 -> 네트워크 -> 전송 -> 세션 -> 표현 -> 응용
(상대방이 전달 받은 데이터에는 추가적인 정보들이 다 붙어있는 상태이고 위로 전달하면서 추가된 정보들이 하나씩 떨어져 나간다. 결국 상대방에게 최종적으로 도착하는 데이터는 원본 데이터가 된다.)
이와 같이 올라가게 되고 상대방에게 데이터를 보여주게 된다.
이때 데이터를 받을 땐 상대방 응용 계층에 있는 FPT 프로토콜(규칙)을 따르는 FTP 프로그램을 통해서 파일을 받게 된다.