
프로토콜은 이전에도 말했듯이 통신할 때 지키는 규칙을 말한다.
이전에 OSI 7계층 모델에 대해 잠깐 공부를 했는데
여기서 각 계층은 정해진 방식과 절차에 따라 상대 계층과 통신을 진행하는데, 이 과정에서 필요한 규칙이 바로 프로토콜이다.
이때 각 계층이 정해진 방식과 절차에 따라 상대 계층과 통신을 한다고 말했는데,
이게 무슨 말일까?
A라는 호스트와 B라는 호스트가 있다고 가정하자
각 호스트의 전송 계층에서 A는 TCP 프로토콜을 사용하고 B는 UDP 프로토콜을 사용한다고 하면 과연 이 두 호스트는 데이터 전송이 제대로 될까?
에 대한 이야기 이다.
프로토콜이라는 것은 같은 계층 같은 등급에서 똑같은 규칙을 준수해야 통신이 이루어진다는 특성이 있다.
그래서 상대 계층과 통신하는데 똑같은 규율 속에서 우리가 통신을 해야 된다는 것이다.
우리가 이전에 인터페이스에 대해 공부할 땐
인터페이스 = 시스템과 시스템을 연결하기 위한 표준화된 접촉 지점
이라고 설명을 했는데 여기서 말하는 인터페이스는 또 다른 의미를 지닌다.
여기서 인터페이스는
인터페이스 = 상하위 계층 간의 데이터를 주고받을 때 지켜야 하는 규칙
이를 인터페이스라고 말한다.
상하위의 계층 간에는 우리가
보내는 호스트에서는 위에서 아래로
받는 호스트에서는 아래에서 위로
데이터가 전달되는데 이때 상하위 계층 간에 데이터가 오고 갈 때 지켜야 하는 규칙을 인터페이스라고 부르는 것이다.
정리하면 다음과 같다.
앞에서 말한 인터페이스
전송 매체와 시스템 간의 접점지금 말하고 있는 인터페이스
상하위 계층 간에 지켜야 할 규칙
앞으로 우리는 인터페이스라고 말하면
상하위 계층 간에 지켜야 할 규칙이라는 의미로 더 많이 사용할 것이다.
그리고 또 서비스 라는 단어가 등장한다.
서비스는 인터페이스와 비슷한 개념인데
이제 상위에서 하위 계층으로 데이터가 이동할 때, 하위에서 상위 계층으로 데이터가 이동할 때 지켜야 하는 규칙이 모두 인터페이스인데
서비스는 여기서 딱 하위에서 상위 계층으로 데이터가 이동할 때 지켜야 하는 규칙을 서비스라고 표현한다.

위 사진은 FTP 프로그램을 사용해서 서버에 요청을 하고 서버가 요청된 데이터를 보내주는 이미지이다.
TCP라고 적힌 부분이 전송 계층이고 전송 계층에서 대표적으로 사용하는 프로토콜이 바로 TCP라는 규칙이다.
그 아래는 네트워크 계층으로 IP라는 규칙을 사용한다.
그 아래는 데이터 링크와 물리 계층으로 LAN 카드 드라이버라는 규칙을 사용한다.
그리고 가장 상위 FTP 클라이언트, FTP 서버는 응용, 표현, 세션 계층을 의미한다.
FTP 클라이언트와 서버가 데이터를 전송할 때 사용하는 주요 계층이 바로 응용, 표현, 세션이기 때문이다.
우리가 데이터를 보내고자 할 때 필요한 정보가 바로 주소이다.
우리가 데이터 통신을 할 때 주소라는 정보가 한 가지 주소 정보만 있는 게 아니라 3 ~ 4가지 주소 정보를 가지고 통신을 한다.
대표적인 주소 정보 중에 하나가 바로 MAC 주소인데
MAC 주소는 컴퓨터, 핸드폰 이런 시스템이 가지고 있는 고유한 주소를 의미한다.
MAC 주소는 조금 더 정확하게 말하면 LAN 카드에 입력된 주소를 의미하며, 우리가 MAC 주소에 대해 이야기 하는 이유는 물리 계층에서 MAC 주소를 사용하기 때문이다.
물리 계층에서는 MAC 주소를 사용해 상대방에게 보내는 것이다.
근데 이 MAC 주소는 LAN 카드(데이터 링크, 물리 계층)에 입력되어 있다.
데이터 링크 계층에 대해 다시 말하자면 간단히 물리 계층에서 데이터를 전송했을 때 중간에 오류가 발생하는 것을 어떻게 제어하는지에 대한 규칙, 메뉴얼을 만들어 놓는 계층이다.
위 사진에서 이더넷은 네트워크 망의 한 종류라고 생각하면 된다.
간단히 다시 말하면 프로토콜은 같은 계층에서 똑같은 규율 하에 데이터를 전송이 가능하다는 것이다.

위에서 말하고 있는 인터네트워킹이란
인터네트워킹 = 네트워크와 네크워크를 연결하는 것을 인터네트워킹이라고 부른다.
네트워크는 간단히 컴퓨터에 랜선 하나가 연결되어 있는 것을 말한다.
근데 이 네트워크와 네트워크를 연결할 때 중계하는 역할이 필요하다.
만약 네트워크와 네트워크를 연결하는데 연결된 네트워크가 10만개 정도 된다고 하면
내가 홍길동에게 데이터를 전달하고자 할 때 중간에 홍길동이 위치해 있는 곳으로 데이터를 무사히 안내해 주는 역할이 필요해진 것이다.
그래서
네트워크와 네트워크를 연결할 때 중계하는 역할을 하는 인터네트워킹 시스템이 필요해져
게이트웨이가 생겼고 게이트웨이에는 리피터, 브리지, 라우터가 있다.

우리는 네트워크와 네트워크를 연결할 때 중계하는 역할을 인터네트워킹 시스템이라고 불렀고
인터네트워킹 기능을 수행하는 시스템을 일반적으로 게이트웨이라고 부른다.
게이트웨이 기능을 수행하는 것에는
- 리피터
- 브리지
- 라우터
이렇게 3가지가 존재한다.
리피터는 계층 중 물리 계층 기능만 지원하고 단순히 한쪽에서 입력된 신호를 중간에 물리적으로 증폭하여 상대방에게 중개하는 역할을 한다.
리피터는 단순히 중간에 신호를 증폭시킨 것이고 브리지는 추가로 도착한 데이터가 올바른지 혹은 오류가 발생했다면 어떻게 복구, 처리할 것인지가 추가된 것이다.
라우터는 물리, 데이터 링크, 네트워크 계층의 기능을 지원한다.

우리는 프로토콜이 이미 통신할 때 지키는 규칙이라고 알고 있다.
위 예를 보면 전화도 마찬가지로 규칙에 따라 전화를 한다는 것을 예로 보여주고 있다.
연결 설정
각자 집에 전화기에 전원을 키고 대기한다.
a가 b의 전화번호를 누르면
상대방의 전화기에 벨이 울리고
통화 버튼을 누른다
연결 상태
상대화 대화를 진행한다.
연결 해제
종료 버튼을 누른다.
이와 같이 절차에 따라 통화를 하고 있는데
이와 마찬가지로 통신도 진행된다.

데이터 단위에 대해서 살펴보자.
OSI 7계층 모델의 각 계층에서는 사용하는 데이터의 용어가 따로 존재한다.
그리고 계층에 상관없이 사용할 때는 통칭하여 PDU라고 부른다.
응용
APDU
데이터 + 응용 계층에서 추가된 덩어리 = APDU
표현
PPDU
데이터 + 응용 계층 + 표현 계층에서 추가된 덩어리 = PPUD
세션
SPDU
마찬가지 ...
전송
TPDU
전송 계층에서 사용하는 프로토콜의 종류 중 TCP와 UDP가 존재하는데 전송 계층의 데이터 단위를 TCP와 UDP에서는 TPDU가 아닌 다른 용어로 부름.
바로 세그먼트와 데이터그램임
TCP에서는 세그먼트라고 부름
UDP에서는 데이터그램이라고 부름
네트워크
NPDU
IP 프로토콜을 사용하면 NPDU를 패킷이라고 부름.
주로 우리가 통신을 할 때 IP 프로토콜을 많이 사용하기에 패킷이라는 용어를 자주 쓴다고 생각하면 됨.
보통 패킷이라고 부름
데이터 링크
DPDU
보통 프레임이라고 부름
이렇게 구분을 짓는 이유는 각 계층마다 사용하는 프로토콜이 다르고 어떤 방식으로 돌아가는지 설명하기 위함이다.

이제 주소에 대해서 이야기하자

주소는 쉽게 생각해서 대표적인 IP 주소를 생각해도 좋다.
우리가 주소를 설계할 때, 표현할 때 고려해야 하는 특성들이 있는데
그 중 하나가 바로 유일성이다.
유일성
상대방과 나를 서로 구분할 수 있도록 하는 것
서로 같은 구분자를 갖지 않도록 유일성을 보장해야 함.
확장성
이용자가 늘어남에 따라 자연스럽게 규모가 확장되었다.
따라서 사용하는 구분자의 양도 증가해야 한다.
시스템의 최대 수용 규모를 파악하지 않으면 표현할 수 있는 공간의 크기가 제한되어 시스템의 확장성이 제한받게 된다.
예) IP 버전 4는 32비트를 가지고 주소를 만들었는데 전 세계에 있는 통신 기기가 증가함에 따라 IP 버전 6가 나와 128비트 만큼 확장되어 더 많은 통신 기기에게 주소를 할당할 수 있도록 했다.
편리성
주소를 설계할 때 구조를 효율적으로 설계해야 한다.
예를 들어 실제 집 주소의 경우 (경기도 수원시 장안구 조원동) 이렇게 큰 단위에서 작은 단위로 알아보기 쉽게 설계되어 있는데 이처럼 효율적으로 주소를 설계해야 한다는 것이다.
또한 사용자는 시스템 내부 동작에 종속된 구분자의 주소 체계를 이해하기 어렵기에
도메인 네임을 활용하여 문자로 된 이름을 추가하여 편리하도록 한다.
정보의 함축
구분자는 응용 환경에 적절히 대응할 수 있는 부가 정보를 포함해야 한다.

IP 주소를 조금 더 자세히 보면 32비트의 이진수를 8비트씩 쪼개서 10진수로 표기해
위와 같이 211.223.201.30으로 더욱 쉽게 볼 수 있도록 한다.
그리고 이를 더 넘어 숫자가 아닌 도메인 네임을 활용해 문자로 된 호스트 이름을 활용해 더 파악하기 쉽게 한다.

위 내용을 보면 IP 주소를 활용하는 방법에 대해 볼 수 있다.
내가 A에게 메일을 보내고자 하면 A의 주소를 알아야 한다.
주소의 종류는 여러 가지가 있는데
하나는 MAC 주소이고
하나는 IP 주소였다.
이 IP 주소를 어떻게 쓰느냐.
이 데이터를 보낼 때 데이터와 함께 목적지 주소인 IP 주소를 함께 보낸다.
데이터가 전송되는 중간에 라우터를 거치게 되고 라우터(중계하는 역할)가 목적지까지 경로를 함꼐 보낸 IP 주소를 가지고 참조해서 중계하여 경로를 알려준다.
따라서 위에서는 211.223.201.* 로 안내해 네트워크 1로 이동하게 되는 것이다.
근데 이렇게 주소를 입력하면 사용자는 이해하기가 힘들다.
따라서 도메인 이름(호스트 이름)을 사용해 사용자가 더 쉽게 파악하도록 한다.

근데 주소가 아닌 도메인 이름을 사용해서 잘 찾아가는 이유는 무엇일까?
바로 DNS 서버 때문이다.
웹 브라우저(응용, 표현, 세선 계층의 기능을 수행)에서 사용자가 입력한 도메인 주소를 받으면
이 주소를 DNS 서버에서 토스한다.
그럼 DNS 서버는 이를 IP 주소로 변환해주고
IP 주소를 웹 브라우저로 토스해준다.
그럼 웹 브라우저는 이 IP 주소를 가지고 상위 계층에서 하위 계층으로 쭉쭉 내려가 네트워크 계층에서 이 IP 주소가 기본 데이터에 추가된다.
이후 데이터 링크, 물리 계층을 통해 데이터가 전송되어 IP 주소를 근거로 목적지를 찾아간다.

도메인 주소에서는 각각의 파트에서 의미하는 바가 있는데
이는 위와 같다.

우리가 위에서 DNS 서버에 대해 이야기를 했는데 DNS 서버 전에는 호스트 파일을 가지고 DNS 서버의 역할을 대신했다.
호스트 파일에 도메인 이름과 그에 맞는 IP 주소가 입력되어 있어 이걸 가지고 통신을 하는 것이다.
마치 명부와 같다.
근데 이 명부는 나만 가지고 있는 게 아니라 네트워크 구성원끼리 각자의 위치 주소가 적혀있는 동일한 명부를 가지고 있어야 한다.
이렇게 되면 한 명만 추가되도 모두 명부를 업데이트 해야 하기에 만들어진 것이 DNS이다.
DNS 하나만 있으면 DNS만 명부를 가지고 업데이트를 되기 때문이다.
근데 DNS도 네트워크 구성원이 증가하면 혼자서는 모든 것을 맡아 진행하기 어려워진다.
그래서 학교, 회사 이런 형식으로 분배를 해 회사는 A가 학교는 B가 담당하도록 분배를 한다.

따라서 DNS는 분산 데이터베이스 시스템을 따른다.
일을 분산해서 데이터를 관리하도록 하는 것이다.
그리고 주소는 IP 주소 하나만 사용하는 것이 아니라 MAC, 포트, 메일 등 여러가지가 존재한다.