서랍장

[통신2] Protocol, Internet 본문

책장/네트워크

[통신2] Protocol, Internet

TERAJOO 2021. 4. 17. 23:47

학습목차

  • 프로토콜 구조 도입의 필요성
  • 간단한 프로토콜 구조 예제
  • TCP/IP 프로토콜 구조

프로토콜의 체계화 필요성을 이해하고, 간단한 프로토콜 예제를 통해 프로토콜의 기능을 이해한다. 또한 TCP/IP 프로토콜의 기본 개념을 이해해보자

◆ Need for a Protocol Architecture

프로토콜이 왜 필요할까? 이 질문에 답하기 위해선 계층화 구조에 대해 알아야 한다.

Data를 전송하는 과정에 대해 생각해보자.

일단 source는 dest 까지의 path를 설정 하고 보내야 하고 , 해당 대상이 온라인이냐 아니냐를 감지할 수 있어야 하며, data로써 전송하는 file 을 다룰 수 있고 받고 처리할 수 있어야 하고, 포맷 변화를 해서 데이터를 잘 보낼 수 있어야 한다.

기능이 너무 많다는 단점과도 같은 특징 이 있다. 이를 잘 처리하기 위해 전문가들은 해당 과정을 계층화 해서 각 기능들을 모듈화하여 처리하도록 구현하였고, 이 과정에서 프로토콜의 개념이 생겨 각각의 계층들이 해당

정해진

기능을 수행하도록 설정하였다.


◆ Functions of Protocol Architecture

프로토콜의 구조는 수직적 구조로 특정 layer의 각 primitive function 이 바뀌어도 다른 layer에 큰 영향이 없으며, 각 계층 마다 상위 하위 계층과의 관계를 user & provider로써 바라보는 구조이다.

수직적인 구조 때문에 프로토콜은 기능들을 체계화 할 수 있고 인터페이스가 쉬워진다는 특징을 가질 수 있게 되었다.

OSI 는 계층을 7개로 나누어 관리하였다. OSI 좀 primitive 한 규정으로써 하위 계층과의 연결에서 다 동일한 전송구조를 가지도록 통일 시켜논 것이다.

허나 TCP/IP는 4 layer (3layer) 로 나누어 관리하였다. 이 두 표준 중에 OSI가 더 완벽하지만 간단한 TCP/IP 를 실제로 더 많이 사용한다는 거 기억해두자.


◆ Key Features of a Protocol

 

프로토콜은 3가지의 핵심을 가지고 있다. 즉, 이 3가지 핵심을 가지고 바라보아야 한다.

  • Syntax : 데이터의 포멧을 어떻게 정의할 것인가
  • Semantics : 어떤식으로 정보를 제어하고 에러를 처리할 것인지
  • Timing : 데이터의 order를 어떻게 할 것인지, 상대방의 입장을 어떻게 반영해 데이터를 전송할 것인지

◆ Communication Layers

보통 TCP/IP는 3개의 agent (Application, Computers, Networks) 를 각각의 layer로 쪼갰다.

  • Network access layer ( 망 ) : 유선으로 보낼까, 무선으로 보낼까?
  • Transport layer ( 단말 ) : 전송에 대해 공통된 포맷으로 묶어버리자
  • Application layer ( 단말 안에 있는 app )

 

일단 Network access layer는 Network 라는 망 agent 기능을 담당하는 계층으로 단말 구분, 주소를 가지고 routing, forwarding 등의 기능들을 담당하는 계층이다.

두 번째 Transport layer는 단말-단말 사이의 data를 잘 전송하도록 신뢰성있게 전송하도록 하는 계층이다.

세 번째 Application layer는 어떠한 정보를 보낼 것인가에 대한 담당을 하는 계층이다.

말로만 들으면 더 헷갈릴 수 있으니 다음의 그림으로 이해해보자.

각각의 computer(단말)은 3개의 계층으로 되어있고 applicationport 를 가지고 있으며 각각의 계층끼리의 통신 규약인 프로토콜이 존재한다는 점을 그림을 보고 이해할 수 있다. 또한 추가적으로 address 는 모든 layer마다 가지고 있다.

이를 OSI에서는 SAP(service access point) 라고 한다. 그치만 TCP/IP에서는 IP, HWA(하드웨어 주소) 를 사용한다. 때문에 TCP/IP 에서는 이 주소를 변환해주는 변환 프로토콜이 필요하다. 따라서 NAT, ARP, RARP 같은 프로토콜들을 두어 사용하고 있다.

 

이 그림을 봐 보자. 좀 더 상세하게 전체 계층을 나눈 것이다. 일단 IP 계층에는 IP/ICMP/IGMP 같은 프로토콜들이 쓰인다. ICMP는 IP layer를 control 하고 management 하는 프로토콜이며, IGMP는 Group 통신할 때 사용되는 프로토콜이다.

네트워크 계층의 주 기능을 2가지가 있다. Routing, Forwarding 이다. Routing 알고리즘은 크게 distance vector 방법, path vector 방법, link-state 방법으로 나뉜다. 추가적으로 IPv6 가 생기고 나서 QoS 를 위한 RSVP 가 생겨 resource 를 네트워크 계층 레벨에서 처리하는 프로토콜도 생기게 되었다.


◆ Physical Layer

Physical layer 는 전송매체에 대한 계층으로써 크게 2가지를 확인하면 된다.

  1. Interface definition
    • Cable, connector
  2. Signal definition
    • Modulation, rate, encoding

즉 어떠한 전송 매체를 쓸 것 인가에 대한 interface, 어떤 신호로 보낼 것 인가에 대한 signal 이렇게 2가지 확인하면 된다.


◆ Network Access/Data Link Layer & Internet Layer

참고로 network layer의 큰 기능 중 하나가 routing 이라고 했었다.

이 때 헷갈리면 안되는 것은 단말은 data가 뭔지 알고 그걸 만들어 내는 놈을 이야기하고 router는 data 내용엔 관심 없고 전달만 해주는 놈을 이야기 한다. 이것을 헷갈리면 안된다. 다만 요즘은 이 두 가지 기능이 다 같이 장착되어있다는 것을 알아두자.

여튼 단말을 구분해주는 globally 하게 unique 한 값이 IP 주소이고 이를 Router 가 경로를 추적해주는 layer 가 Internet Layer이고, 같은 LAN 상에 있는 두 단말 사이에 routing 해주는 layer 가 Network Access/Data Link Layer 이다.

Network Access Layer 에 대해 추가 설명을 하자면 다음과 같다. 각 네트워크 마다 다른 protocol을 사용할 수도 있기 때문에 각 network 별로 별도의 NAP 를 쓸 수 있게 할 수 있게끔 해주는 layer이다.

추가로 한 단말 내에서 application 들을 식별하는 주소 개념이 port number 라는 걸 알아두자.

또한 네트워크에서 배웠듯이 다음과 키워드들을 알아두자.

💡
Subnetwork, TCP connection, Logical connection, UDP, connection oriented application

다음 그림을 잘 알아두어야 한다. 각 계층에서 data에 헤더를 붙여가며 하위 계층으로 보내는데 이 떄 불리는 데이터의 이름이 층마다 다르다.



Host-to-Host Layer

일명 peer to peer layer로써 data 손실 없이 전송하는 특징을 가지는 놈으로 Transmission Control Protocol 이라고 불리는 TCP가 대표적이다. 쉽게 생각해 택배회사를 떠올리면 되는데 Transport layer에서 해당 과정이 일어나니 알아두자.

TCP는 connection을 열고 데이터를 송수신하기 떄문에 reliable하다는 특징이 있고, TCP segment 가 기본 데이터 단위이다. 또한 헤더의 구조가 정해져 있는데 이는 넘어가겠다.

TCP와 반대되는 프로토콜로 UDP가 존재한다. 이 UDP는 connection 연결 없이 일단 데이터를 보내고 보기 때문에 데이터 손실 위험도가 있는 프로토콜이다.

 


◎ 학습목차 - 2

  • 프로토콜의 표준화 방식
  • 인터넷 기반 응용 서비스의 전형
  • 멀티미디어
  • 소켓 프로그래밍

이제 프로토콜의 표준화를 위한 계층 구조 도입의 필요성을 이해하고, 인터넷 기반 서버-클라이언트 응용 서비스의 체계화를 이해한다. 멀티미디어 데이터 수용을 위해 통신망의 구조 변화가 필요하다는 사실을 이해한다. 기본적인 통신 프로그래밍 수단인 Socket 프로그램의 개념을 이해한다.



Servie Primitives and Parameters

인접한 계층 사이의 서비스를 이야기 한다. Primitive는 기능의 이름을 명시한 것을 의미하고, Parameter는 입력 값을 의미한다.

Service Primitive는 다음과 같이 4개의 종류가 있다.

  • Request
  • Indication
  • Response
  • Confirm

이 4가지 타입은 2가지 service에 따라 다르게 사용된다. 다음 그림을 보자.

일단 2가지 service 는 Confirmed Service , Nonconfirmed Service 이렇게 이다. 그림을 보면 알 수 있듯이 Response가 있냐, 없냐 에 따라 2가지로 나누었고, 전자인 confirmed Service 같은 경우가 Response 를 해주는 서비스로써 현재 대다수의 servie 가 confimed service 이다.

해당 service 방식을 사용하는 대표적인 프로토콜 방식이 TCP이 있으며 해당 TCP 방식을 사용하는 Application layer이 SMTP, FTP, SSH 등 여러가지가 있다.

현재 인터넷의 발달 방향은 대역폭, 실시간 (속도) 이고 이 발달 정도가 커질수록 새로운 app이 많이 생기게 된다. 왜냐 데이터를 보낼 수 있는 수단이 많아지기 때문이다. 때문에 현재 오디오, 비디오 등등 여러 미디어 데이터가 많이 잘 사용되고 있다.



◆ Multimedia

위에서 말했듯이 통신 기술의 발달에 따라 멀티미디어 데이터가 많이 사용되고 있다. 여러 사람들은 멀티미디어를 여러 도메인으로 쪼개 관리했고, 각각의 조각들을 발전시킴으로써 전체적인 멀티미디어를 발달 시키고자 하였다. 이 때 발달한 여러 기능들은 RTP, SIP, 망 최적화 기술, QoS 등 여러가지 기술들이 있다.

이 때 모든 기술에서 공통적으로 중요한 기술은 얼마나 빨리 (delay X), 데이터 손실이 적게 (loss X)

크게 2가지를 가지고 service 의 quality를 측정하며 이를 위해 사용하는 flow기술이다.



Socket Programming

통신용 프로그래밍으로 Client와 Server 사이의 communication을 할 수 있게 해주는 일들을 Socket Programming을 통해 구현하는 통신 기술의 기반이 되는 코딩 방법이다.

시스템 프로그래밍과 약간의 차이가 있다. 프로그램과 OS간의 통신을 담당하는 시스템 프로그래밍과는 달리 멀리 떨어져 있는 장비와의 통신을 지원하는 프로그래밍 방법이 network programming이다.

즉, network layer의 기능이 OS에 들어가는 것이다. 이 기능을 라이브러리 화해서 call 할 수 있도록 해 놓았는데 AT&T 는 해당 라이브러리를 TLI, Bucklye는 Socket이라고 명명했고 현재 많이 쓰고 있는 라이브러리가 Socket이다.

Socket통신용 시스템 라이브러리를 호출해서 쓸 수 있게 끔 정의해 놓은 것 이다.

파일 I/O 하는 것과 거의 비슷하다. Open, f.read/write, close, socket, send, receive, close 가 거의 비슷해 파일 입출력과 거의 비슷하다.

참고로 소켓 프로그래밍을 하면서 나오는 키워드 중 client는 port 개수가 하나인 app을 의미하고, server는 port를 여러 개 쓰는 app 이라고 생각하면 된다.

소켓 프로그래밍에서는 다음과 같은 시스템 콜을 사용할 수 있다. 그리고 위 시스템 콜의 작동 방식은 오른쪽 그림과 같다.

 

 

'책장 > 네트워크' 카테고리의 다른 글

[통신5] Signal Encoding Techniques  (0) 2021.04.19
[통신4] Transmission Media  (0) 2021.04.19
[통신3] Data Transmission  (0) 2021.04.19
[통신1] 통신, 네트워크, The Internet  (0) 2021.04.17