데이터통신

데이터통신 2.2 TCP/IP 프로토콜 그룹

공부승식 2021. 3. 21. 00:54
728x90

TCP/IP는 현재의 인터넷에서 사용하는 프로토콜 그룹(여러 계층들에서 조직된 프로토콜 집합)이다. 그것은 상호작용하는 모듈로 이루어진 계층적 프로토콜인데, 각 모듈은 특정한 기능을 제공한다. 

계층적(hierarchical): 각 상위계층 프로토콜은 1계 이상의 하위 계층 프로토콜로부터 제공되는 서비스들의 지원을 받는다는 뜻.

 

2.2.1 계층적 구조

TCP/IP 프로토콜 그룹의 계층들이 어떻게 두 호스트 간의 통신에 관련되어 있는지 보여주기 위해 링크층 스위치를 갖는 3개의 LAN으로 이루어진 작은 인터넷 안의 그룹을 사용한다고 가정. 또한 이런 링크들이 하나의 라우터로 연결된다고 가정하자.

컴퓨터 A와 B가 통신을 한다고 가정하자. 그림에서 보듯이, 이 통신은 5개의 통신장비, 즉 발신지 호스트(컴퓨터A), 링크 1의 링크층 스위치, , 라우터, 링크 2의 링크층 스위치, 그리고 목적지 호스트(컴퓨터 B)를 갖는다. 

발신지- 링크1층스위치-라우터-링크2층스위치-목적지. 

각 장비는 인터넷 안에서의 역할에 따라 계층들과 관련된다. 

두 호스트들은 5개 계층 모두와 관련이 있다.

발신지 호스트 ->응용층에서 메시지를 생성하고 그것을 '아래 계층들에게 보냄'으로써 메시지가 물리적으로 목적지 호스트로 보내진다.

목적지 호스트 -> 물리층에서 통신을 '받고' 그것을 다른 계층들을 거쳐 응용층으로 전달한다.

라우터 -> 3개의 계층과 관련된다. 만약 라우터가 라우팅을 위해서만 이용된다면, 전송층과 응용층을 갖지 않는다. 비록 라우터가 항상 하나의 네트워크 층과 관련되지만, 라우터가 n개의 링크와 연결되어있다면, n개의 링크층, 물리층과 관련된다. 그 이유는 각각의 링크는 자신의 고유한 데이터 링크 또는 물리 프로토콜을 사용할 수 있기 때문이다. 예를들어, 교재 그림 2.5에서, 라우터가 3개의 링크와 연결되어있지만 발신지 A에서 목적지B로 전달되는 메시지는 2개의 링크와 연관되어 있다. 각각링크는 서로 다른 링크층과 물리층 프로토콜을 사용할 수 있다. 라우터는 한 프로토콜 쌍 기반의 링크 1로부터 패킷을 받아서, 다른 프로토콜 쌍을 사용하는 링크 2에게 패킷을 전해야한다. 

하지만 링크 내의 링크층 스위치는 단 2개(데이터 링크층, 물리층)과 관련된다. 위의 그림에 있는 각 스위치는 2개의 서로 다른 연결을 갖지만, 이 연결들은 같은 링크 안에 있어서 하나의 프로토콜 집합만 사용한다. 링크층 스위치는 라우터와는 달리 오직 하나의 데이터 링크층과 하나의 물리층과 관련된다는 것을 의미.  

 

2.2.2 TCP/IP 프로토콜 그룹의 계층

TCP/IP 프로토콜 그룹의 계층들의 기능과 역할에 대해 생각.(간단히)

각 계층의 역할에 대해 더 잘 이해하기 위해서는 계층간의 논리적 연결에 대해 생각해야 한다. 그림 2.6은 단순한 인터넷에서 논리적 연결의 모습을 보여준다. 

논리적 연결을 사용하는 것은 우리가 각 계층의 의무에 대해 생각하는 것을 쉽게 해준다. 그림에서 보여주듯이 응용층, 전송층, 네트워크 층의 의무는 종단-대-종단(end-to-end)이다. 하지만 

데이터링크층과 물리층의 의무는 홉-대-홉(hop - to- hop)이고, 여기서 홉은 호스트 또는 라우터를 뜻한다. 다시 말해서 최상위 세 계층의 의무를 갖는 영역은 인터넷(적용층,전송층,네트워크층), 그 아래 두 계층의 의무를 갖는 영역은 링크(데이터링크층, 물리층)이다. 

논리적 연결에 대해 생각해보기 위한 다른 방법은 각 계층에서 만들어지는 데이터 단위에 대해 생각 해보는 것이다. 

최상위 세 계층에서는 데이터 단위(패킷)가 라우터나 링크층 스위치에 의해 변하지 말아야한다. (연결 안되어있응게) 

그 아래 두 계층에서는 호스트에 의해 생성된 패킷이 링크층 스위치가 아닌 오직 라우터에서만 변한다. 

그림 2.7은 프로토콜 계층화에 대해 이전에 논의한 2번째 원칙을 보여준다.(양 계층에 있는 2개의 객체는 모두 동일해야함!)

비록 네트워크 층에서의 논리적 연결이 두 호스트 사이에 존재할지라도, 두 홉사이에 동일한 객체가 존재한다. 왜냐하면 라우터는 층으로부터 받은 패킷을 단편화 한 후 받은 양보다 더 많은 패킷을 전송할지도 모르기 때문이다. 두 홉사이의 링크가 그 객체를 변화시키지 않는다.

 

2.3.3 각 계층에 대한 설명.

각 계층은 물리층,데이터링크층, 네트워크층, 전송층, 적용층 5개가 있다.

물리층

프레임의 각 비트들을 링크 건너편으로 전달할 책임이 있다. 

TCP/IP프로토콜에서 가장 낮은 계층이긴 하지만 또 다른 숨겨진 계층인 전송매체가 물리층 아래에 존재하기 때문에, 물리층에서의 두 장치 사이의 통신은 여전히 논리적 통신이다. 두 장치는 전송매체에 의해 연결된다. 여기서 전송매체가 비트들을 전송하는 것이 아니라 전기 또는 광학 신호들을 전송한다는 것을 알아야 한다. (전송매체는 전기, 광학신호를 전송) 

데이터 링크층으로부터 받은 프레임의 비트들은 변환대고 전송 매체를 통해 전송되지만, 두 장치에서 두 물리층 사이의 논리적 단위가 하나의 비트라는 것을 생각할 수 있다.(물리층 사이의 논리적 단위 = 비트) 비트를 신호로 변형시키는 여러 개의 프로토콜이 존재한다.  추후논의하자.

 

데이터 링크층

지금까지 인터넷이 라우터들에 의해 연결된 여러 개의 링크들(LAN,WAN)으로 구성되어 있다는 것을 보았다. 데이터그램(datagram)(패킷교환에서 각각 독립적으로 취급되는 패킷) 이 호스트로부터 목적지까지 전달될 수 있는 중첩되는 여러개의 링크 쌍이 존재할 수 있으며 라우터들은 최상의 링크를 선택할 책임이 있다. 그러나 일단 전송할 다음 링크가 라우터에 의해 결정되면, 데이터 링크층은 데이터그램을 받아 해당 링크로 전송할 책임이 있다. 

그 링크는 링크층 스위치를 가진 유선랜, 무선랜, 유선웬, 무선웬이 될 수 있다. 

또한 링크 유형마다 다른 프로토콜을 가질 수 있다. 각각의 상황에서 데이터 링크층은 그 링크를 통해 패킷을 이동시킬 책임이 있다.

TCP/IP가 데이터 링크층을 위해 어떤 특정 프로토콜을 정의하지는 않는다. (프로토콜 정의x) TCP/IP는 '모든'표준과 적절한 프로토콜을 지원한다.  데이터그램을 받을 수 있고 그것을 링크를 통해 운반할 수 있다면 어떤 프로토콜이라도 네트워크층을 위해서는 충분하다. 데이터링크층은 데이터그램을 받아서 프레임이라고 하는 패킷으로 캡슐화한다. 각 링크층 프로토콜은 각각 다른 서비스를 제공할 수도 있다. 어떤 링크층 프로토콜은 완벽한 오류 탐지와 교정을 제공하고, 또 어떤 프로토콜은 오직 오류 교정만을 제공한다. 

 

네트워크층

 

네트워크층은 발신지 컴퓨터와 목적지 컴퓨터 사이의 연결을 생성하기 위한 책임을 가진다.( 발신지, 목적지 연결생성= 네트워크!) 

네트워크 층은 호스트-대-호스트(host-to-host)연결을 갖는다. 

그러나 발신지-목적지는 여러 라우터들이 존재할 수 있기 때문에 라우터가 최선의 경로를 선택할 책임을 가짐. 

네트워크층은 호스트-대-호스트 통신과 가능한 경로들을 통해 패킷을 라우팅해야한다.

왜 네트워크 층이 필요한가? 라우팅 책임을 전송층에 넣고 이 계층을 없앨 수도 있었다.

첫째 이유는 다른 계층들 사이의 작업의 분리이고, 

두번째 이유는 라우터들은 응용층과 전송층을 필요로 하지 않는다는 것이다 .-> 작업의 분리는 우리가 라우터 상에서 더 적은 프로토콜을 사용할 수 있게 해준다. 

 

인터넷에서 네트워크층은 주요한 프로토콜로서 네트워크층에서 데이터그램이라는 패킷의 형식을 정의하는 인터넷 프로토콜(IP)을 포함한다. IP는 또한 이 계층에서 사용되는 주소의 구조와 형식을 정의한다.(IP는 네트워크층 주소의 구조와 형식을 정의) 

IP는 또한 패킷을 발신지로부터 목적지까지 라우팅할 책임이 있으며 이는 해당 경로에 있는 다음 라우터에 데이터그램을 포워딩하는 각 라우터에 의해 수행된다. 

IP는 흐름제어, 오류제어, 혼잡 제어 서비스들을 제공하지 않는 비 연결형(connectionless)프로토콜이다. 만약 하나의 응용이 이들 서비스를 필요로 한다면, 그 응용은 오직 전송층 프로토콜을 통해 중계해야 한다는 것이다. 네트워크층은 또한 일-대-일(unicast, one-to-one)과 일-대-다 (multicast, one-to-many) 라우팅 프로토콜을 포함한다. 비록 라우팅 프로토콜이 라우팅에 참여하는 것은 아니지만 (라우팅 프로토콜은 IP의 책임) 라우팅 프로세스를 수행하는 라우터들을 돕기 위해 포워딩 테이블들을 생성한다. 

  네트워크층은 IP의 전달과 라우팅 작업들을 도와주는 보조 프로토콜을 가지고 있다. 

인터넷 제어 메시지 프로토콜(ICMP Internet Control Message Protocol) = IP가 패킷을 라우팅할때 생기는 문제들을 보고!

인터넷 그룹 관리 프로토콜(IGMP, Internet Group Management Protocol) = IP가 1대-다 라우팅을 수행하도록 도와주는 또 다른 프로토콜(multicasting을 돕는다)

동적 호스트 설정 프로토콜(DHCP, Dynamic Host Configuration Protocol) = IP가 호스트를 위한 네트워크층 주소를 획득할 수 있게 해준다.

주소 변환 프로토콜(ARP, Address Resolution Protocol) =IP를 도와 네트워크층 주소가 주어졌을 때 호스트나 라우터의 링크층 주소를 찾아주는 프로토콜

 

 

전송층(transport layer)

전송층의 논리적 연결도 응용층처럼 end-to-end이다. 

(end-to-end와 host-to-host의 차이: 거의 없다고 보면 됨)

발신지 호스트의 전송층은 응용층으로부터 메시지를 받아 전송층 패킷으로 캡슐화 한 후 (다른 프로토콜에서는 segment or datagram이라고 불림), 목적지 호스트의 전송층에 논리적 연결(가상)을 통해 전송한다. 

즉 전송층은 Application의 메시지를 받거나, 목적지에서  대응하는 Application에 메시지를 주는 일 즉, 응용층에 서비스를 제공한다.

-> 응용층에 서비스를 제공하기 위한 책임이 있다.

이미 종단-대-종단의 응용층이 있는데 왜 종댄-대 종단 전송층이 필요한가? 

아까 이야기 했던 것 처럼 작업과 역할의 분리. 전송층은 응용층으로부터 독립적이어야 한다. 

전송층은 하나 이상의 프로토콜을 가지고 있다. 이것은 각 application이 그것의 요구사항에 가장 부합하는 프로토콜을 사용할 수 있다는 것을 의미한다. 

 

여러개의 전송층 프로토콜

전송제어 프로토콜(TCP, Transmission Control Protocol) : 데이터를 전송하기 전에 두 호스트의 전송층 사이에 논리적 연결을 설정하는 연결지향 프로토콜이다. 이 프로토콜은 바이트들의 스트림 전송을 위해 두 TCP사이에서 논리적인 파이프를 생성한다. 

TCP는 흐름제어(목적지가 전송되는 데이터의 양을 감당할 수 없는 경우를 방지하기 위해 발신지와 목적지의 데이터 송신율, 수신율을 맞춘다.) 

오류제어(오류없이 목적지에 세그먼트들이 도달하고 훼손된 거 없이 재전송을 할 수 있게)

혼잡제어(네트워크 혼잡으로 인한 세그먼트 손실 줄이기)

 

사용자 데이터그램 프로토콜(UDP , User Datagram PRotocol) 처음에 논리적 연결을 설립하지 않고 사용자 데이터 그램을 전송하는 비연결형 프로토콜. 각 사용자 데이터그램은 이전이나 다음 데이터그램과 상관없는 독립적인 ㅎㅏ나의 개체이다. 흐름제어, 오류제어 등을 제공하지않는 간단한 프로토콜.

 

응용층

 

두 계층사이의 논리적 연결은 end-to-end이다. 두 응용층은 두 계층사이에 마치 다리라도 존재하는 것처럼 서로 메시지들을 교환한다. 그러나 우리는 그 통신이 모든 계층을 통과해서 이루어졌다는 사실을 알아야한다. 

응용층의 통신은 프로세스 두개 사이에서 함. 통신을 위해 하나의 프로세스는 다른 프로세스에 요청 메시지를 전송하고 응답 메시지를 수신한다.  프로세스간 통신(process-to-process)를 지원한다 응용층은. 

인터넷의 응용층은 미리 정의된 많은 프로토콜들을 포함한다. 그러나 사용자 또한 두 호스트에서 동작하는 한쌍의 프로세스를 만드는것이 가능하다. 다양한 프로토콜이 있다. 배우진 않았다. 강의에서

 

 

'데이터통신' 카테고리의 다른 글

3.1 데이터와 신호  (0) 2021.03.27
데이터통신 2.2.4 캡슐화와 역캡슐화  (0) 2021.03.21
데이터통신 2.1 프로토콜 계층화  (0) 2021.03.19
데이터 통신 3강  (0) 2021.03.14
데이터통신 2강  (0) 2021.03.09