Search
🗞️

Ch.5 프로토콜 구조

course
last review
2023/10/11
mastery
rookie
progress
not started
date
2023/09/11
4 more properties
Previous chapter

그래서 프로토콜이 뭔데?

프로토콜은 두 주체데이터를 교환하기 위해 협력하는 방식을 정의하는 규칙 또는 규약의 집합이다.
무조건 외우셈
A protocol is the Set of rules or conventons governing the way in which two entities cooperate to exchange data.

프로토콜 아키텍쳐의 필요성

서로 다른 디바이스 간의 데이터교환이 일어날 때 고려해야할 것들은 정말많다.
1.
전송통로의 확보 : 발신 시스템은 데이터 전송로를 직접 가동시키던가, 목적지 시스템의 식별자를 통신망에게 알려주던가를 한다.
2.
데이터 레이어의 준비 : 발신 시스템은 목적지 시스템이 데이터를 받을 준비가 되어있는지를 확인해야한다.
3.
어플리케이션 레이어의 준비 : 발신 시스템의 파일전송 EXE는 목적지 시스템의 파일관리 프로그램이 파일을 받을 준비가 되어있는지를 확인한다.
4.
형식 호환 : 두 시스템에서 사용되는 파일 형식이 다를 경우 컨버팅을 해야한다.
따라서 두 컴퓨터 시스템 간의 고차원적 상호협력이 필요하다.
이런 여러 시스템을 하나의 모듈로 만드는 것 보다는 여러 레이어를 나눠서 구현하는 것이 유리하다.
스택 형식으로 계층을 만들어 자기 레이어에서는 자기 일만 처리하면 다른 레이어에 관여할 일이 없다.

프로토콜 아키텍쳐의 함수

프로토콜을 구현하는 함수들은 로직을 서브태스크 모듈로 분화하고 각각을 구현하는 방식으로 이루어져있다.
모듈들은 보통 수직적인 스택 형식으로 구성되어있으며 높은 레이어는 더 낮은 레이어의 Primitive함수로 이루어져있다.
각 레이어는 기능의 부분집합만을 구현한다.
primitive 함수에 대해서는 다음 하위의 레이어에게 맡긴다. 따라서 하위 레이어가 어떤 일을 하는지 알 필요가 없다.
각각의 레이어의 로직이나 룰이 변경되더라도 다른 레이어에게 영향을 주지 않는 장점이 있다.

프로토콜의 핵심 Features

당연하지만, 통신하는 두 시스템의 계층은 상호동일해야한다. 즉, 두 시스템 간 동일 계층끼리 Peer가 존재해야한다. 이 피어 계층들은 프로토콜이라 불리는 정해진 규칙에 따라 일정한 형식의 데이터블록을 교환한다.
통신 프로토콜이 주로 하는 일은 다음과 같다.
Syntax : 데이터 블록의 형식을 다룬다. 즉, 통신하는 데이터의 기본 형식이 올바른지 관리한다.
Semantics : 정보 관리와 오류 관리를 위한 제어 정보를 다룬다. 즉, 내용이 정확한지 관리한다.
Timing : 속도조절과 순서조정을 다룬다. 즉, 순서나 시간이 올바른지 관리한다.

간단한 프로토콜

Agents involved
Applications : 파일 전송, 이메일등
Computers : 여러 App을 동시 지원하는 컴퓨터에서 실행됨
Networks : 컴퓨터는 네트워크에 연결되어있으며, 한 컴퓨터에서 다른 컴퓨터로 전송됨.
한 App에서 다른 App으로 데이터를 전송시 App → 컴퓨터 → 네트워크 → 컴퓨터 → App 순서로 데이터가 전달된다.
강의 슬라이드 주석

커뮤니케이션 계층

커뮤니케이션 태스크는 세 독립적인 레이어로 구성됨
네트워크 액세스 레이어
데이터의 교환과 연관되어있음. 네트워크 전송 시스템에 어떻게 전송 되는지에 대해서도 다
전송 레이어
신뢰할만한 데이터 전송 수단을 제공 → 데이터를 전송할 길,데이터를 안전하게 보내는 패킷 등등을 제공
어플리케이션 레이어
Applications를 서포트하기 위한 로직을 보유
강의 슬라이드 주석

네트워크 접속 계층 : Network Access Layer

컴퓨터와 접속된 네트워크 사이의 데이터 교환을 담당한다.
여러 경로 중에서 최적의 경로를 선택하고 패킷을 목적지까지 전달하는 역할을 한다.
네트워크 접속 계층의 일은 크게 3가지로 나뉜다.
송신 컴퓨터는 네트워크에 목적지 컴퓨터 주소를 제공하여 해당 목적지까지 데이터를 배달하는 역할을 한다.
우선순위와 같은 특정 서비스를 호출할 수 있다.
패킷교환, 회선교환, LAN 등
서로 다른 두 네트워크를 가로지르기 위해 라우팅하기도 한다.(?)
네트워크 액세스 레이어는 요청하는 서비스의 종류에 따라 서로 다른 소프트웨어를 사용하기 때문에 별도의 레이어로 관리해야한다. 이때 상위 레이어는 네트워크의 종류에 관계없이 제대로 동작해야한다.
강의 슬라이드 주석

수송 계층 : Transport Layer

데이터의 신뢰성순서를검증하고 오류가 생길 시 바로 맞추는 일을 담당한다.
데이터는 어떤 타입이던 간에 신뢰성있게 교환되어야 한다.
모든 데이터는 목적지 어플리케이션에 확실하게, 순서대로 도착해야한다.
이런 기능은 어플리케이션이 어떤 데이터 타입을 쓰는가와는 관련없는 독립적인 기능이므로, 하나의 통합된 레이어로 관리할 수 있을 것이다.
데이터 전송의 신뢰성을 보장하는 시스템을 제공한다.
신뢰성 : 복사본이 목적지에 반드시 도착해야하며, 도착한 복사본에 에러가 없어야 한다. → 이 과정에서 데이터의 Corruption이 발생하면 에러가 일어났다고 간주한다.
노이즈 등 Corruption은 반드시 일어날 수 밖에 없는 상황이므로, 이에 대한 Error Detection 및 Correction을 처리할 수 있어야 한다.
Flow Control : 송신 속도는 수신 속도보다 빠를 수 없다. 즉, 송신 속도는 수신 속도에 맞춰야 한다.
트랜스포트 레이어는 모든 Application이 해당 양식을 공유한다.
즉, 규격이 통일되어있어 Application간의 호환성을 보장한다.
강의 슬라이드 주석

응용 계층 : Application Layer

다양한 사용자 응용을 지원하기 위해 필요한 작업을 수행한다.
강의 슬라이드 주석

프로토콜 아키텍쳐와 네트워크

그림은 각 컴퓨터의 피어(동일 레벨) 프로토콜을 사용하여 상대방과 통신한다는 것을 보여준다.
각 컴퓨터는 여러개의 어플리케이션을 수행하기 위해 Application, Transport, Network Access 레이어 소프트웨어를 가지고 있다.
상위 레이어는 하위 레이어를 통해 데이터를 전송한다. → 같은 레이어끼리는 같은 종류의 일을 취급한다.
Application Layer에서는 응용 프로그램 수준 프로토콜을 통해 다른 컴퓨터의 응용 프로그램과 통신한다. 이때 필요한 세부사항은 하위 레이어로 매개된다.
각 레벨의 각 개체는 상대방 개체에게 무엇을 통신해야 할 것인가만 집중하면 된다.
즉, 호스트 어드레스나, 어플리케이션의 포트와 데이터만 신경쓰면 된다.
올바른 통신을 위해서 시스템 내 모든 객체는 유니크한 주소를 가지고 있어야 한다.
서브네트워크 상의 모든 호스트는 모두 유니크한 주소를 가진다.(IP)
호스트 위에 물려져있는 프로세스는 호스트 내에서 유니크한 주소를 가진다.(Port or SAP)
실선은 물리적으로 연결된 라인을 의미한다.
점선은 P2P 커뮤니케이션(논리적으로 연결된 라인)을 의미한다.
강의 슬라이드 주석

Simplified Architecture

피어 프로토콜을 달성하기 위한 절차가 바로 캡슐화이다.
Encapsulation(캡슐화)는 데이터 조각에 프로토콜 제어정보(Header)를 붙여 각 레이어가 다른 레이어의 정보를 알지 못하도록 하는 행위를 뜻한다.
1.
데이터가 Transport 레이어로 전송된다.
2.
트랜스포트 레이어에서 컴퓨터 B의 어떤 포트에 전송할지 헤더를 추가해 Transport PDU를 만든다.
a.
From(A) To(B)
3.
Transport PDU를 Network Access Layer로 내린다.
4.
Network Access Layer에서 어떤 호스트로 전송할지 헤더를 추가해 Network Access PDU를 만든다.
데이터에 각종 헤더를 추가해서 어떤 정보를 어디에 어떻게 보낼지 설정해주는 절차를 캡슐화라고 한다.(Encapsulation), 반대로 이 헤더를 없애주는 작업을 역캡슐화라고 한다.
그리고 일반적으로 생성된 PDU를 싸잡아서 세그먼트라고 부른다.

미해결사건부

캡슐화를 굳 이 굳 이 해야하는 이유
캡슐화를 할 경우 하위 레이어가 데이터를 참조할 수 없도록 소프트 락을 거는건지 (그냥 예의상 안여는 것) 아니면 하드 락을 거는 건지(물리적으로 디컴파일을 못하는 지)
강의 슬라이드 설명

Addressing

각 컴퓨터는 유니크한 네트워크 주소를 가지고 있어야 한다.(ipv4 ipv6)
각 어플리케이션은 SAP라는 컴퓨터 내에서 구분할 수 있는 주소를 가진다. (포트)
강의 슬라이드 설명

Transport PDU : 프로토콜 데이터 유닛

데이터와 컨트롤 정보의 조합을 PDU(Protocol Data Unit)이라고 한다.
PDU로 데이터를 캡슐화한다. 즉 어플리케이션에서 하위 레이어로 데이터에 헤더 파일(컨트롤)을 붙인 최종 블록을 PDU라고 한다.
헤더에는 다음과 같은 정보가 들어간다.
소스 포트 : 데이터를 보낸 포트
데스티네이션 포트 : 데이터를 받을 포트
데이터 순서 : 데이터를 순차전송할 경우 세그먼트(데이터)의 번호를 붙여 순서를 Correcting한다.
에러 발견 코드 : 세그먼트에 특정 연산을 하여 Extra code를 붙이는데, 받는 측에서 Extra code를 역연산한다. 이 코드를 도착 데이터와 비교하는데 일치하지 않을 경우 복구절차를 밟는다. Checksum이나 Frame check sequence라고도 불린다.
강의 슬라이드 설명

미해결사건부

에러 디텍션 코드는 절대로 커럽션되지 않음을 보장해야하는데 어떻게 그걸 보장하는가?

네트워크 액세스 프로토콜 : Netowork Access PDU

위와 같이 App→Transport로 PDU를 제작했다면, 이제 Transport→Network Access로 데이터를 넘겨 PDU를 만들차례다.
NAP의 PDU를 위한 헤더는 다음과 같은 것들이 있다.
발신지 ip : 패킷의 발신지를 가리킨다.
수신지 ip : 패킷의 목적지다.
서비스 요청 : 우선순위와 같은 서브네트워크 서비스를 어떤 걸 사용할지 정한다.
이때 Transport 헤더는 여기 레이어에서는 단순한 데이터 중 일부로 전락한다는 사실을 잊지 말자.
강의 슬라이드 설명

TCP/IP 프로토콜 아키텍쳐

TCP/IP는 단일 프로토콜이 아닌 멀티플 프로토콜 컬렉션이다.
TCP는 현재 인터넷의 표준으로 자리잡고 있다.
강슬설

TCP/IP 레이어

이메일은 SMTP 프로토콜을 사용한다.
파일 전송 FTP(File Transfer Protocol) 프로토콜을 사용한다.
SSH 프로토콜을 사용한다.
대부분의 인터넷은 HTTP(Hyper Text Transfer Protocol)프로토콜을 사용한다.
강설슬
Next chapter