'이론/컴퓨터통신'에 해당되는 글 4건

* 포워딩과 라우팅


포워딩 - 패킷이 라우터의 입력 링크에 도달했을 때 라우터는 그 패킷을 적절한 출력링크로 이동시켜야 한다.


라우팅 - 송신자가 수신자에게 패킷을 전송할 때 네트워크 계층은 패킷 경로를 결정해야 한다. 이러한 경로를 계산하는 알고리즘을 라우팅 알고리즘이라 한다.


포워딩은 라우터가 입력 링크 인터페이스에서 적당한 출력링크 인터페이스로 데이터그램을 전송하는 내부적인 동작을 말한다. 반면에, 라우팅은 네트워크 전반에 걸쳐 출발지에서 목적지까지 데이터그램의 종단간의 경로를 결정하는 것이다.


라우팅 알고리즘은 라우터 포워딩 테이블에 삽입되는 값을 결정한다.


패킷 스위치(링크 계층 스위치) - 링크 게층 프레임의 필드값에 근거하여 포워딩을 결정한다. 


라우터 - 네트워크 계층 필드값에 근거하여 포워딩을 결정한다.


* 가상회선과 데이터그램 네트워크 


데이터그램 네트워크(비연결형) - 데이터 그램 네트워크는 각 패킷의 전달 경로가 다를 수 있다. 이 때문에 목적지에 도착하는 패킷의 순서가 송신지에서 보낸 순서와 맞지 않을 수 있기 때문에, 목적지에서 패킷의 재조합이 필요하다. 송신지와 목적지 경로를 설정할 필요없이 그냥 목적지 주소만 넣어서 패킷을 보내면 된다. 또한 고정된 경로만을 이용하는 것이 아닌, 네트워크 상황에 따라 일부 경로에 장애가 생긴 경우 다른 경로를 사용하여 목적지까지 전송될 수 있다.


가상회선 네트워크(연결형) -  가상회선 네트워크는 송신지에서 목적지로 패킷을 보내기 전에 전달될 패킷이 이용할 경로를 미리 예약한다. 패킷을 전달하기 전에 경로를 설정해야 한다는 부담이 있지만 한번 경로가 설정되면 송신지에서 목적지로 전달되는 패킷들은 순서가 보장되어 전달되기 때문에 목적지에서 재조합 될 필요가 없다.


* 라우팅 기법의 분류


정적 라우팅 기법 - 정적 라우팅 기법은 입력된 라우팅 정보가 재입력을 하기 전까지 변하지 않고 고정된 값을 유지하는 라우팅 기법이다. 전체 네트워크에 대한 라우팅 정보를 관리자가 수동으로 입력해 준다. 만일 네트워크의 규모가 커져서 연결된 라워의 숫자가 늘어나게 되면 관리자가 입력해야 할 정보도 함께 늘어나게 되는 것이다.


동적 라우팅 기법 - 동적 라우팅 기법은 정적 라우팅 기법에서 라우팅 정보를 네트워크 관리자가 일일이 입력해야 하는 불편함을 해결한다. 라우팅 프로토콜은 라우터가 가지고 있는 라우팅 정보를 인접한 다른 라우터들과 자동으로 교환할 수 있게 해준다. 하나의 라우터의 라우팅 정보고 네트워크상의 모든 라우터들로 전파된다.


디폴트 라우팅 기법 - 임의의 라우터가 패킷을 수신하게 되면 라우팅 테이블 상 네트워크 주소를 검색하여 수신된 패킷을 어디로 보낼 것인가를 결정하게 된다. 이와 같은 라우터에 디폴트 라우터가 설정이 되어 있다면 라우팅 테이블에 등록되어 있지 않는 주소를 갖는 패킷들은 디폴트 라우터에서 지정된 경로로 전송된다.


* 영역에 따른 라우팅 프로토콜의 분류 


1. AS(자치시스템) 

  독자적인 관리체계와 동일한 운영정책을 가지는 네트워크 집합이다. 예) ISP


2. IGP

  하나의 AS내에서 라우팅 정보를 교환하는 데 사용되는 프로토콜이다.


3. EGP

  AS와 AS 간의 정보를 교환하는 데 사용되는 프로토콜이다.


IGP 에는 RIP, IGRP, OSPF 프로토콜이 있으며

EGP 에는 BGP가 잇다. 


* 라우팅 알고리즘 


- 거리벡터 알고리즘 - 각 라우터가 인접해 있는 라우터와 경로설정 정보를 교환하여 네트워크의 구성이나 장치 배치에 관한 모든 정보, 즉 네트워크 토폴로지에 관한 정보를 교환하는 구조를 말한다. 이때의 라우팅 메트릭에는  네트워크 지연시간, 대역폭, 신뢰성, 부하율등이 고려된다.


거리벡터 알고리즘은 비교적 간단해서 쉽게 설정할 수 있다. 그러나 네트워크 규모가 점점 커지게 되면 네트워크 정보에 관한 프로세스 처리나 통신량이 많아져서 네트워크에 부담이 가중된다. 거리 벡터 알고리즘은 기본적으로 인접 라우터가 어떤 정보를 가지고 있는 지 고려하지 않기 때문에 네트워크 토폴로지 변화에 대한 경로설정 정보의 재편성과 같은 사태에 대해 진단하지 못한다는 단점이 있다.또한,라우팅 테이블 전파속도가 느리며 RIP의 경우 최대 Hop Count15를 넘지 못하며, 라우팅 테이블에 대한 정보를 주고받을 때 네트워크 대역폭을 많이 소비하고, 대규모 네트워크에는 적당하지 않다.


라우팅 테이블에 변화가 생겼을 경우 이 변화된 내용을 다른 라우터가 인식하는데 까지 걸리는 시간을 컨버전스 타임(Convergence time)이라 한다.


- 링크상태 알고리즘 


한 라우터가 목적지 네트워크로 가는 모든 경로에 대한 정보를 모두 가지고 있는 방식

- 라우터는 먼저 어디에 어떤 네트워크가 있는지, 그 네트워크로 갈려면 어떤 라우터를 통과해야 하는지에 대한 정보를 토폴로지 데이터베이스로 만든다.

SPF(Shotest Path First) : 라우터는 이렇게 만들어진 토폴로지 데이터베이스를 기초로 하여 어떤 경로로 가야 가장 빠른 길인지를 계산하는데 이때 사용하는 알고리즘이며, SPF TreeSPF의 계산의 결과물이다.

절차 : 라우터간의 정보를 취합하여 토폴로지 데이터베이스 생성->SPF 알고리즘을 이용해 가장 빠른 경로 계산

-> SPF 트리 생성->라우팅 테이블 생성

목적지 경로를 다 알고 있기 때문에 어떤 한 경로에 문제가 생기더라도 알아내는 시간이 훨신 짧다. 또한 주변의 라우터들과 라우팅 테이블을 주고 받을 때 변화가 있는 부분만 주고 받기 때문에 네트워크 트래픽 발생도 적다.

단점 : 각각의 라우터가 모든 경로에 대한 정보를 다 관리해야 하기에 메모리 소비가 심하고, SPF 계산등 연산할 일이 많기 때문에 CPU에 부담을 준다.

대규모 네트워크에 설치되는 고성능 라우터에 적합한 방식이다.

대표적인 링크 상태 알고리즘에는 OSPF(Open Shortest Path First)가 있다.


* 라우팅 프로토콜 구현 사례


- 역내 라우팅 프로토콜의 예(IGP)


RIP - 거리,벡터 라우팅 기법을 사용하는 가장 보편적인 프로토콜로, 라우터가 가지고 있는 모든 라우팅 정보를 다른 라우터에 주기적으로 전송한다. 그러나 이는 홉의 제한을 소규모나 중간규모의 네트워크에 적합하다.


OSPF - OSPF 라우팅 프로토콜은 최근에 주목받고 있는 경로설정 프로토콜이다. OSPF는 동일한 AS 내에서 사용되는 IGP이며, RIP의 문제점을 해결하기 위해 고안된 링크 상태 프로토콜이다. 


- 역외 라우팅 프로토콜의 예(EGP)


EGP - 경로제어 정보를 교환하는 두 IP 라우터가 서로 다른 두 AS에 속할 때 이를 역외환경이라 한다. 이와 같이 역외환경에서 라우터가 도착 가능성 정보를 다른 AS에 알리기 위해 사용하는 프로토콜이 EGP이다.




* OSPF 라우팅 프로토콜 


- OSPF의 라우팅 계위


OSPF에서는 RIP와 달리 라우팅 알고리즘을 적용하기 위한 계위구조를 취한다. 자치시스템은 공통적인 라우팅 정보를 공유하면서 하나의 관리 체제에 의해 관리되는 네트워크의 집합으로 정의된다. AS는 다시 여러 개의 서브네트워크로 나누어지고, 연속적인 네트워크 및 접속된 시스템들의 집합으로 구성된다. 하나의 AS내에서 서브네트워크을 연결해주는 네트워크를 '백본 네트워크'라고 한다. 


내부라우터 - 서브네트워크에 직접 접속한 라우터이며 백본 네트워크에 접속한 라우터도 이 범주에 속한다.


영역경게 라우터 - 서브네트워크와 백본 네트워크를 연결시켜주는 라우터


백본 라우터 - 백본 네트워크에 접속한 모든 라우터 


AS 경계라우터 - 다른 AS 속한 라우터와 경로 정보를 주고 받는 라우터









'이론 > 컴퓨터통신' 카테고리의 다른 글

Network Layer(L3)  (0) 2015.10.17
Transport Layer(L4)  (0) 2015.10.17
Application Layer(L7)  (0) 2015.10.14
컴퓨터 네트워크 개론  (0) 2015.10.13
블로그 이미지

종환 Revolutionist-JongHwan

github.com/alciakng 항상 겸손하자.

댓글을 달아 주세요

* 개요 


트랜스포트 계층 프로토콜은 서로 다른 호스트에서 동작하는 애플리케이션 프로세스들 간의 논리적 통신을 제공한다.


송신 측의 트랜스포트 계층은 송신 애플리케이션 프로세스로부터 수신한 메시지를 인터넷 용어로는 트랜스포트 계층 세그먼트인 트랜스포트 계층 패킷으로 변환한다. 이러한 변환은 애플리케이션 메시지를 트랜스포트 계층 세그먼트로 만들기 위해 작은 조각으로 분할하고, 각각의 조각에 트랜스포트 계층 헤더를 추가함으로써 수행된다. 그런 후에 트랜스포트 계층은 송신 종단 시스템에 있는 네트워크 계층으로 세그먼트를 전달하고 여기서 세그먼트가 네트워크 계층 패킷안에 캡슐화되어 목적지로 전달된다.


* 트랜스포트 계층과 네트워크 계층 사이의 관계 


트랜스포트 계층은 서로 다른 호스트에서 동작하는 프로세스들 사이의 논리적통신을 제공하지만, 네트워크 계층 프로토콜은 호스트들 사이의 논리적 통신을 제공한다. 미묘하지만 이러한 차이점은 중요하다. 


* 인터넷 트랜스포트 계층의 개요 


인터넷에서 트랜스포트 계층 패킷을 세그먼트로 일컫는다. 


인터넷, TCP/IP 네트워크는 애플리케이션 계층에게 두가지 구별되는 트랜스포트 계층 프로토콜들을 제공한다.



하나는 비연결형 서비스를 제공하는 UDP이고, 다른 하나는 애플리케이션에게 신뢰적이고 연결지향형 서비스를 제공하는 TCP이다.


인터넷의 네트워크 계층 프로토콜은 '인터넷 프로토콜' 줄여서 IP라고 부른다. IP 서비스 모델은 호스트들 간에 논리적 통신을 제공하는 '최선형' 전달 서비스이다. 이것은 IP가 통신하는 호스트들 간에 세그먼트를 전달하기 위해서 최대한 노력하지만, 어떠한 보장도 하지 않는다는 것을 의미한다. 



 

 UDP

 TCP

 공통점

1. 종단 시스템 사이의 IP 전달 서비스를 종단 시스템에서 동작하는 두 프로세스 간의 전달서비스로 확장하는 것, 두 프로세스 간의 전달 서비스. 트랜스포트 계층 다중화 & 역다중화


2. 헤더에 오류 검출 필드를 포함함으로써 무결성 검사를 제공한다. 

 TCP의 추가적인 기능

 x

1. 신뢰적인 데이터전달


Flow Control, 순서번호, 확인응답, 타이머등을 사용해서 송신하는 프로세스로부터 수신하는 프로세스에게 데이터가 순서대로 정확하게 전달되도록 한다.


2. 혼잡제어(Congestion Control)


TCP연결이 과도한 양의 트래픽으로 통신하는 모든 호스트들 사이의 스위치와 링크를 폭주되게 하는 것을 방지하는 것이 TCP 혼잡제어이다. TCP는 혼잡한 네트워크 링크에서 각 TCP 연결이 링크의 대역폭을 공평하게 공유하여 통과하도록 해준다.



* 다중화와 역다중화 



네트워크 계층이 제공하는 호스트 대 호스트 전달 서비스에서 호스트에서 동작하는 애플리케이션에 대한 프로세스 대 프로세스 전달 서비스로 확장하는 것.


네트워크 어플리케이션의 한 부분으로서 프로세스가 소켓을 가지고 있다. 이를 통해 네트워크에서 프로세스로 데이터를 전달하며 또한 프로세스로 부터 네트워크로 데이터를 전달하는 출입구 역할을 한다. 그러므로 수신측 호스트의 트랜스포트 계층은 실제로 데이터를 직접 프로세스로 전달하지 않고, 중간에 매개자인 소켓에게 전달한다. 


이때, 트랜스포트 계층 세그먼트의 데이터를 올바른 소켓으로 전달하는 작업을 역다중화라고 한다. 출발지 호스트에서 소켓으로부터 데이터를 모으고, 이에 대한 세그먼트를 생성하기 위해서 각 데이터에 헤더 정보로 캡슐화하고 세그먼트들을 네트워크 계층으로 전달하는 작업을 다중화라고 한다.


호스트의 각 소켓은 포트번호를 할당받는다. 그리고 세그먼트가 호스트에 도착하면, 트랜스포트 계층은 세그먼트 안의 목적지 포트번호를 검사하고 상응하는 소켓으로 세그먼트를 보내게 된다. 그러면 세그먼트의 데이터는 소켓을 통해 해당되는 프로세스로 전달된다. 



다중화 역다중화 방식 

 UDP

TCP 

세그먼트 헤더 정보

출발지 포트번호, 목적지 포트번호, 길이, 체크섬

 출발지 포트번호, 목적지 포트번호, 출발지 IP 목적지 IP, 길이, 체크섬

동작

UDP 소켓 19157을 가진 호스트A의 프로세스가 호스트 B의 UDP 소켓 46428을 가진 프로세스에게 애플리케이션 데이터 전송.


각 포트번호와 길이, 체크섬을 포함하는 헤더를 가지는 세그먼트를 생성하고 네트워크 계층으로 전달한다. 네트워크 계층은 세그먼트를 IP데이터 그램으로 캡슐화하고 최선형 전달 서비스로 세그먼트를 수신호스토 전달한다. 수신호스트는 세그먼트 헤더의 목적지 포트번호를 검사하고 그 세그먼트를 포트 46428로 식별되는 소켓에 전달한다. 호스트 B에 여러 프로세스가 수행될 수 있다는 것에 유의.


UDP 소켓은 목적지 IP주소와 목적지 포트번호로 구성된 두요소로 된 집합에 의해 구별, 

 TCP 서버 어플리케이션은 TCP 클라이언트로 부터 연결설정 요청을 기다린다


연결 설정요청은 목적지 포트 번호와 TCP 헤더에 특별한 연결설정 비트를 가진 TCP 세그먼트에 지나지 않는다. 이 출발지 포트 번호는 클라이언트에 의해서 선택된 번호이다. 


서버 프로세스로 동작하는 컴퓨터의 호스트 운영체제가 목적지 포트를 포함하는 연결 요청 세그먼트를 수신하면 이 세그먼트를 포트너머로 연결수락을 기다리는 서버 프로세스로 보낸다.


서버는 연결요청 세그먼트의 다음과 같은 네 가지 값을 주목한다 (1) 출발지 포트넘버 (2) 출발지 IP주소 (3) 목적지 포트번호 (4) 목적지 IP주소, 새롭게 생선된 연결 소켓은 이들 네가지 값에 의해서 식별된다. 




* 신뢰성 있는 데이터 전송의 원리(rdt) 


신뢰적인 채널에서는 전송된 데이터가 손상되거나 손실되지 않고 순서대로 전달된다.


데이터 전송 프로토콜의 송신 측은 rdt_send() 호출에 의해서 위쪽으로부터 호출될 것이다. 수신 측에서는 상위 계층으로 전달될 데이터를 넘길 것이다.


rdt_rcv()는 패킷의 채널의 수신 측으로부터 도착했을 때 호출된다. rdt 프로토콜이 상위 계층에 데이터를 전달하려고 할 때 deliver_data()를 호출한다. 



* 완벽하게 신뢰적인 채널 상에서의 신뢰적인 데이터 전송 : rdt 1.0



rdt의 송신측은 rdt_send 이벤트에 의해 상위 계층으로 부터 데이터를 받아들이고 데이터를 포함한 패킷을 생성한다. 그리고 패킷을 채널로 송신한다. 

수신측에서는 rdt는 rdt_rcv(packet) 이벤트에 의해 하위의 채널로 부터 패킷을 수신하고, 패킷으로부터(extract) 데이터를 추출한 후 데이터를 상위계층으로 전달한다 (deliver_data(data)) rdt_rcv(packet)는 하위 계층 프로토콜 프시저의 호출에 의해서 발생한다.


* 비트 오류가 있는 채널 상에서의 신뢰적 데이터 전송 rdt 2.0 


패킷 안의 비트들이 하위 채널에서 손상되는 모델이다. 


ACK, NAK 둘다사용한다. 재전송을 기반으로 하는 신뢰적인 데이터 전송 프로토콜은 ARQ(자동재전송요구) 프로토콜로 알려져 있다.


송신자 프로토콜은 수신자로부터 ACK 또는 NAK 패킷을 기다린다. ACK 패킷이 수신된다면 송신자는 가장 최근에 전송된 패킷이 정확하게 수신되었다는 것을 알게된다. 만약 NAK가 수신되면 프로토콜은 마지막 패킷을 재전송하고 재전송된 데이터 패킷에 대한 응답으로 수신자에 의해 응답되는 ACk, NAK를 기다린다.


ACK 또는 NAK를 기다리는 상태에 있을 때 application layer 로 부터 더이상의 데이터를 전달받을 수 없다는 것에 유의한다. 즉 rdt_send() 이벤트는 발생할 수 없다. 오직 송신자가 ACK를 수신하고 이 상태를 떠난 후에만 발생한다. 


이러한 행동 때문에 rdt2.0과 같은 프로토콜은 전송-후-대기(stop and wait) 프로토콜로 알려져있다.


rdt2.0은 ACK또는 NAK 패킷이 손상될 수 있다는 가능성을 고려하지 않았다.


* 순서번호를 반영하는 신뢰적인 데이터 전송 rdt 2.1 


rdt 2.1에서는 ack및 nak의 손실은 없고 손상은 있다.


순서가 바뀐 패킷이 수신되면 수신자는 이미 전에 수신한 패킷에 대한 긍정 확인 응답을 전송한다. 손상된 패킷이 수신되면 수신자는 부정 확인응답을 전송한다.


같은 패킷에 대해 2개의 ACK를 수신한 송신자는 수신자가 두 번 ACK한 패킷의 다음 패킷을 정확하게 수신하지 못했다는 것을 안다. 






* rdt 2.2 


rdt 2.2는 nak가 없고 ack에 순서번호를 포함한다. 


rdt 2.1과 rdt 2.2 사이의 미묘한 차이는 수신자가 반드시 ACK 메시지에 의해서 확인응답하는 패킷의 순서번호를 포함해야 한다는 것이다. 







* 비트 오류와 손실이 있는 채널 상에서의 신뢰적 데이터 전송 : rdt 3.0 


패킷 손실을 어떻게 검출? -> 타임아웃 


송신자가 어떤 패킷을 손실했다는 것을 확신하기 위해 얼마나 오랫동안 기다려야 할까? 송신자는 적어도 송신자와 수신자 사이의 왕복시간 지연에 수신 측에서 패킷을 처리하는 데 필요한 시간을 더한 만큼 기다린다.



'

이렇게 Stop&Wait 프로토콜 rdt 1.0, 2.0~2.2, 3.0을 다루어 보았다. 하지만 Stop&Wait 프로토콜의 문제점은 링크 이용률이 낮다는 것이다. 이러한 성능 문제대한 해결책은 전송 후 대기방법으로 동작하는 대신에 송신자에게 확인응답을 기다리지 않고 여러 패킷을 전송하도록 허용하는 것이다. 이것을 파이프라이닝 이라고 한다. 


파이프라이닝을 쓰는 프로토콜을 슬라이딩 윈도우 프로토콜이라하며 슬라이딩 윈도우 프로토콜에는 Go-Back-N과 Selective-AND-Repeat 방식이 있다. 




확인 응답이 안된 가장 오래된 패킷의 순서번호를 base로 정의하고 사용되지 않은 가장 작은 순서번호를 nextseqnum으로 정의한다면, 순서번호의 범위에서 4개의 간격을 식별한다.


[0,base-1] 에서 순서번호는 이미 전송되고 확인 응답이 된 패킷에 대응된다.

[base, nextseqnum-1]은 송신은 되었지만 아직 확인응답되지 않은 패킷에 대응된다.

[nextseqnum,base+N-1]은 상위 계층으로부터 데이터가 도착하면 바로 전송될 수 있는 패킷을 위하여 사용.

[base+N] 이상의 순서번호는 파이프라인에서 확인응답이 안 된 패킷의 확인응답이 도착될 때까지 사용될 수 없다. 


* 슬라이딩 윈도우 프로토콜 - Go-Back-N(N부터 반복)


상위로부터 호출 : rdt_send()가 어플리케이션 레이어로 부터 호출되면, 송신자는 첫째로 윈도우가 가득찼는지, 즉 N개의 아직 확인응답되지 않은 패킷이 있는지 확인한다. 만약 윈도우가 가득 차 있다면, 송신자는 윈도우가 가득 차 있다는 것을 가리키는 함축적인 의미로 단지 데이터를 상위 계층으로 반환한다. 상위 계층은 나중에 다시 시도할 것이다. 실제적인 구현에서 송신자는 이 데이터를 버퍼링한다.


ACK의 수신 : GBN 프로토콜에서 순서번호 n을 가진 패킷에 대한 확인응답은 누적확인 응답으로 인식된다.sliding 윈도우가 한꺼번에 한칸이상 밀려갈 수 있다. 프레임이 0,1,2 를 전송한 후 ack3가 온 경우 프레임 2까지 잘 전송된 것으로 판단하여 sliding window가 세간 이동.



타임아웃 이벤트 : GBN 프로토콜의 이름은 손실이 있거나 아주 긴 지연된 패킷이 있을 때의 송신자의 동작으로부터 유래되었다. 전송 후-대기 프로토콜에서와 같이, 타이머는 손실된 데이터 또는 손실된 확인응답 패킷으로부터 회복하는 데 사용된다. Go-Back-N에서의 타이머는 한개뿐이다. 만약 타임아웃이 발생한다면 송신자는 이전에 전송되었지만 아직 확인응답되지 않은 모든 패킷을 다시 송신한다. 예를들어 6번 프레임을 보냈는데 3번 프레임의 타이머가 만료된 경우 3,4,5,6을 다시 전송.


수신측 : 수신측의 슬라이딩 윈도우 크기는 1이다. 받고자 하는 프레임의 번호만 가리키고 있는다. 기다리고 있는 프레임의 번호에 해당하는 패킷이 아닌경우 패킷들을 버린다.



* 슬라이딩 윈도우 프로토콜 - Selective-and-Repeat



GBN은 패킷 하나의 오류 때문에 많은 패킷을 재전송하므로, 많은 패킷을 불필요하게 재전송하는 경우가 발생한다. 


- Timer는 각 프레임당 한개씩 동작한다. 


- 송신자와 수신자의 윈도우 사이즈가 동일하다.(수신자의 윈도우 사이즈가 1이 아니다)


-중요한건 수신자가 sliding window 범위 안의 프레임이 순서가 뒤바뀌어 온경우 버리지 않고 저장하고 ack를 보낸다.


- 송신자는 타임 아웃이 발생한 패킷에 대해서만 다시 보낸다. 









 








































'이론 > 컴퓨터통신' 카테고리의 다른 글

Network Layer(L3)  (0) 2015.10.17
Transport Layer(L4)  (0) 2015.10.17
Application Layer(L7)  (0) 2015.10.14
컴퓨터 네트워크 개론  (0) 2015.10.13
블로그 이미지

종환 Revolutionist-JongHwan

github.com/alciakng 항상 겸손하자.

댓글을 달아 주세요

* 애플리케이션 구조(개발자가 직접 설계)

 

 애플리케이션 개발자 관점에서 네트워크 구조는 고정되어 있고 애플리케이션에 특정 서비스 집합을 제공한다. 애플리케이션 구조는 애플리케이션 개발자에 의해 설계되고 애플리케이션이 다양한 종단 시스템에서 어떻게 조직되어야 하는지를 지시한다. 애플리케이션 구조 선택에 있어서 애플리케이션 개발자는 현대 네트워크 애플리케이션에 사용되는 두가지 우수한 구조, (클라이언트/서버) 구조 혹은 P2P 구조 중의 하나로 작성할 것이다.

 

클라이언트/서버 구조  - 항상 켜져있는 호스트를 서버라고 부르며, 서버는 클라이언트라는 다른 많은 호스트의 요청을 받는다.

 

P2P 구조 - 애플리케이션은 피어라는 간헐적으로 연결된 호스트 쌍이 서로 직접 통신하도록 한다. 피어는 서비스 제공자가 소유하지 않고, 사용자들이 제어하는 데스크톱과 랩톱이 소유한다. 특정 서버를 통하지 않고 피어가 직접통신하므로 이를 P2P(피어투피어)라고 한다.

 

P2P구조의 가장 주목할 만한 특성 중의 하나는 자가확장성이 있다는 것이다. 예를들어, P2P 파일 공유 애플리케이션에서 비록 각 피어들이 파일을 요구함으로써 작업 부하를 만들어 내지만 각 피어들은 또한 파일을 다른 피어들에게 분배함으로써 그 시스템에 서비스 능력을 추가한다.

 

* 애플리케이션이 이용 가능한 트랜스포트 서비스

 

 어플리케이션의 요구에 가장 적합한 서비스를 제공하는 전송 프로토콜을 선택해야한다.

 

고려사항 : 신뢰적 데이터 전송, 처리량(두 프로세스간의 비트를 전달할 수 있는 비율), 시간, 보안

 

* 인터넷 전송 프로토콜이 제공하는 서비스

 

 인터넷은 2개의 전송 프로토콜 UDP와 TCP를 제공한다.

 

TCP와 UDP는 트랜스포트 계층을 설명할때 자세히 다룬다.

 

 

* 어플리케이션 계층 프로토콜

 

어플리케이션 계층 프로토콜은 다른 종단 시스템에서 실행되는 애플리케이션의 프로세스가 서로 메시지를 보내는 방법을 정의한다.

 

1) HTTP(HyperText Transfer Protocol)

 

하이퍼텍스트(Hypertext, 문화어: 초본문, 하이퍼본문)는 참조(하이퍼링크)를 통해 독자가 한 문서에서 다른 문서로 즉시 접근할 수 있는 텍스트이다.

기존의 문서가 순차적이면서 서열형 구조라면, 하이퍼텍스트는 링크에 따라 그 차례가 바뀌는 임의적이면서 나열형인 구조를 가진다

 

WWW 상에서 정보를 주고받을 수 있는 프로토콜이다. 주로 HTML 문서를 주고받는 데에 쓰인다. TCP를 사용하며, 80번 포트를 사용한다.

 

HTTP 서버는 클라이언트에 대한 정보를 유지하지 않으므로, HTTP를 비상태 프로토콜이라고 한다.

 

HTTP 메시지 포맷

 

요청라인 : 방식필드, URL필드, HTTP버전 필드

 

헤더라인 : HOST, Connection(지속연결, 비지속연결 설정), User-agent(브라우저), Accept Language

 

웹에서의 사용자와 서버간의 상호 작용 - 쿠키

 

쿠기 - 처음으로 사이트에 접속 요청이 들어오면 그 서버는 유일한 식별번호를 만들고 이 식별번호로 인덱스되는 백엔드 데이터베이스 안에 엔트리를 만든다.

 

Set - cookie : 1678

 

그후 계속 그 사이트를 살펴봄에따라 그녀의 브라우저는 쿠키파일을 참조하고 이 사이트에 대한 그녀의 식별번호를 발췌하고 HTTP 요청에 식별번호를 포함하는 쿠키 헤더파일을 넣는다.  이러한 방식으로 사이트 서버는 사용자의 활동을 추적한다.

 

2) SMTP

 

인터넷에서 이메일을 보내기 위해 사용되는 프로토콜이다. 사용하는 TCP 포트 번호는 25번이다.

 

1)송신자는 메시지를 작성하고 사용자 에이전트에게 메시지를 보내라고 명령한다.

 

2) 사용자 에이전트는 메시지를 메일 서버로 보내고 메시지 큐에 놓인다

 

3) 송신자 메일 서버에서 동작하는 SMTP 클라이언트 측은 메시지 큐에 있는 메시지를 본다. 수신자의 메일서버에서 수행되고 있는 SMTP 서버에게 TCP연결 설정

 

4) 3-way HandShaking 이후에 SMTP 클라이언트는 송신자의 메시지를 TCP연결로 보낸다.

 

5) 수신자의 메일서버 에서 SMTP 서버측은 메시지를 수신하고 메일박스에 놓는다.

 

5) 수신자는 편한시간에 사용자 에이전트를 가동하여 메시지를 읽는다.

 

HTTP는 풀 프로토콜이다(사용자 요청시 서버로부터 정보를 가져오기위해 HTTP사용) SMTP는 푸시 프로토콜(송신자가 먼저 TCP를 통해 메일서버로 보냄)이다.

 

 

3) DNS

 

사람은 좀 더 기억하기 쉬운 호스트 네임 식별자를 좋아하지만 라우터는 고정 길이의 계층구조를 가진 IP 주소를 선호합니다. 이러한 선호차이를 절충하기 위해 호스트 네임을 IP주소로 변환해 주는 서비스인 DNS가 존재한다.

 

4) FTP(File Transfer Protocol)

 

TCP연결을 통해 원격호스트의 호스트네임을 제공하여 로컬 호스트에 있는 FTP 클라이언트 프로세스가 원격호스트에 있는 FTP와 연결하게 한다.

 

HTTP 와 다른 점은 두 TCP연결, 제어연결과 데이터연결을 동시에 사용한다는 것이다.

 

여기서 제어연결은  두 호스트 간에 사용자 계정 및 비밀번호와 같은 정보를 보내는데 사용된다.

 

FTP가 별도의 제어 연결을 사용하므로 FTP는 제어 정보를 아웃밴드로 보낸다고 표현한다. HTTP는 TCP연결로 요청과 응답 헤더라인을 보낸다. 즉 제어종보를 인밴드로 보낸다 .

 

 

또한 FTP 서버는 세션을 통해 사용자에 대한 상태를 유지해야 한다. 반면 HTTP는 비상태유지 애플리케이션이다.

 

 

 

 

 

 

 

 

 

 

'이론 > 컴퓨터통신' 카테고리의 다른 글

Network Layer(L3)  (0) 2015.10.17
Transport Layer(L4)  (0) 2015.10.17
Application Layer(L7)  (0) 2015.10.14
컴퓨터 네트워크 개론  (0) 2015.10.13
블로그 이미지

종환 Revolutionist-JongHwan

github.com/alciakng 항상 겸손하자.

댓글을 달아 주세요

* 컴퓨터네트워크


컴퓨터 네트워크라는 용어는 인터넷에 연결되는 많은 비전통적인 장치들로 인해 진부한 것처럼 느껴지기 시작하고 있다.

인터넷 용어로, 이들 모든 장치는 호스토 혹은 종단 시스템이라고 부른다.


종단 시스템은 통신 링크패킷스위치의 네트워크로 연결된다.

이때 각각 링크들은 다양한 전송률을 이용하여 데이터를 전송하며 전송률은 bps(bit per seconds)를 사용한다.


송신 종단 시스템은 그 데이터를 세그먼트로 나누고 각 세크먼트에 헤더를 붙인다.

이렇게 만들어진 정보 패키지는 패킷이라고 한다.

패킷은 목적지 종단 시스템으로 네트워크를 통해 보내지고 목적지에서 원래의 데이터로 다시 조립된다.


패킷 교환기(스위치)는 입력 통신 링크의 하나로 도착하는 패킷을 받아서 출력 통신 링크의 하나로 그 패킷을 전달한다.


패킷 스위치는 라우터링크계층 스위치가 있다.


패킷이 송신 종단 시스템에서 수신 종단 시스템에 도달하는 동안 거쳐 온 일련의 통신링크와 패킷 스위치들을 네트워크상의 라우트 혹은 경로라고 한다.


종단 시스템은 ISP를 통해서 인터넷에 접속하는데, 지역 케이블 혹은 전화 회사와 같은 가정 ISP, 법인 ISP, 대학 ISP, 더 나아가 공항,호텔,커피숍,기타 공공 장소 등에서 와이파이 접근을 제공하는 ISP를 포함한다 각 ISP는 패킷 스위치와 통신링크로 이루어진 네트워크다.

인터넷은 종단 시스템을 서로 연결하는 것이므로 종단 시스템에 접속을 제공하는 ISP들도 서로 연결되어야만 한다.


종단 시스템, 패킷 스위치, 인터넷의 다른 구성요소는 인터넷에서 정보 송수신을 제어하는 여러 프로토콜을 수행한다. TCP IP는 인터넷에서 가장 중요한 프로토콜이다. IP 프로토콜은 라우터와 종단 시스템 사이에서 송수신되는 패킷 포맷을 기술한다. 


인터넷 표준은 IETF에서 개발하며, IETF 표준문서를 RFC라고 한다..


* 프로토콜


프로토콜은 둘 이상의 통신 개체 간에 교환되는 메시지 포맷과 순서 뿐 아니라, 메시지의 송수신과 다른 이벤트에 따른 행동들을 정의한다.


* 접속 네트워크


종단 시스템을 그 종단 시스템으로부터 다른 먼 거리의 종단 시스템까지의 경로상에 있는 첫 번째 라우터에 연결하는 네트워크


접속네트워크 - 가정접속 


DSL(digital subscriber line)


일반적으로 가정은 지역전화회사로 부터 DSL 인터넷 접속 서비스를 받는다. 고객의 DSL 모뎀은 지역전화회사의 DSLAM과 데이터를 교환하기 위해 기존 전화회선을 이용한다. 가정의 DSL모뎀은 디지털 데이터를 받아서 전화선을 통해 CO로 전송하기 위해 고주파 신호로 변환한다. 여러 가정으로부터의 아날로그 신호는 DSLAM에서 디지털 포맷으로 다시 변환.


DSL과 케이블 네트워크가 현재 광대역 접속의 90% 이상을 제공하지만 미래기술은 FTTH의 구축이다. 지역전화회사로 부터 가정까지 직접 광섬유 경로를 제공하는 것이다. FTTH는 Gbps범위의 인터넷 접속속도를 제공할 수 있다.


접속네트워크 - 기업접속 


기업과 대학 캠퍼스 점진적으로 가정환경에서 LAN은 일반적으로 종단 시스템을 가장자리 라우터에 연결하기 위해 사용한다. 여러 유형의 LAN 기술이 있지만 이더넷 기술이 기업, 대학, 홈네트워크에서 가장 널리 사용되는 접속기술이다.


이더넷 스위치에 상호연결된 네트워크는 다시 더 큰 인터넷으로 연결된다.


접속네트워크 - 무선접속


IEEE 802.11 WIFI


3G, LTE, 5G..



* 물리 매체


꼬임쌍선 - 가장 싸고 가장 많이 이용하는 전송 매체가 꼬임쌍선이다. 두개의 절연 구리선이 나선 형태로 배열된다.


동축케이블 - 2개의 구리선이 평행하지 않고 동심원을 이룬다. 꼬임쌍선보다 더 높은 데이터 전송률을 얻을 수 있다.


광섬유 - 빛의 파동을 전하는 가늘고 유연한 매체, 도청 힘듬


지상 라디오 채널 - 전자기 스펙트럼으로 신호를 전달한다.


위성 라디오 채널 - 통신에는 두 가지의 위성, 정지 위성과 저궤도 위성이 이용된다. 위성 3개면 지구 커버


저궤도 위성은 달이 지구를 돌듯이 회전하며 지상국 뿐만 아니라 서로 통신가능.


* 패킷 교환 


송신 시스템에서 목적지 종단 시스템으로 메시지를 보내기 위해 송신 시스템은 긴 메시지를 패킷이라고 알려진 작은 데이터 덩어리로 분할 한다.

송신 측과 수신 측 사이에서 각 패킷은 통신 링크와 패킷 스위치를 거치게 된다. 패킷은 링크의 최대 전송속도와 같은 속도로 각각의 통신 링크상에서 전송된다.


대부분의 패킷 스위치는 저장 후 전달 전송 방식을 이용한다.


소스로부터 목적지 노드까지 N개의 링크로 구성되고, 각각은 R 전송속도를 갖는 경로를 통해 하나의 패킷을 전송하는 일반적인 경우를 고려해 보자


d(종단간 지연) = N*(L/R)


- 큐잉 지연과 패킷 손실


각 링크에 대해 패킷 스위치는 출력버퍼를 갖고 있으며, 그 링크로 송신하려고 하는 패킷을 저장하고 있다. 출력버퍼는 패킷 스위칭에서 중요한 역할을 한다.

도착하는 패킷이 한 링크로 전송될 필요가 있는데 그 링크가 다른 패킷을 전송하고 있다면, 도착하는 패킷은 출력버퍼에서 대기해야 한다. 큐잉지연을 겪게 된다.

패킷은 버퍼가 전송을 위해 대기 중인 다른 패킷들로 꽉차있는 경우를 당할 수 있다. 패킷손실이 발생한다.


- 전달 테이블과 라우팅 프로토콜


라우터는 어떻게 그 패킷을 어느 링크로 전달해야 하는지를 결정하는가? 패킷 전달은 실제 여러 다른 유형의 컴퓨터 네트워크에서 다른 방식으로 실행된다. 


라우터는 목적지 주소를 라우터의 출력 링크로 맵핑하는 전달 테이블을 갖고있다. 패킷이 라우터에 도착하면, 라우터는 올바른 출력 링크를 찾기 위해 주소를 조사하고 이 목적지 주소를 이용하여 전달 테이블을 검색한다. 그런 후에 라우터는 그 패킷을 출력 링크로 보낸다.


* 회선 교환


링크와 스위치의 네트워크를 통해 데이터를 이동시키는 방식에는 회션교환과 패킷 교환이라는 두 가지 기본 방식이 있다.


회선 교환 네트워크에서 종단 시스템 간에 통신을 제공하기 위해 경로상에 필요한 자원은 통신 세션 동안에 예약된다. 패킷 교환네트워크에서는 이들 자원을 예약하지 않는다. 송신자와 수신자 간의 경로에 있는 스위치들이 해당 연결 상태를 유지해야 하는 연결이다. 전기통신 용어로 이 연결을 회선이라고 한다.


주어진 전송속도가 송신자 - 수신자 연결을 위해 예약되므로 송신자는 수신자에게 보장된 일정 전송률로 데이터를 보낼 수 있다.


- 회선 교환 네트워크에서의 다중화


링크 내 한 회선은 주파수분할 다중화 혹은 시분할 다중화로 구현된다.


FDM의 경우에는 주파수 영역이 4개 대역으로 분할되었고  1/4 대역폭을 갖는다.

TDM의 경우에는 시간 영역이 시간 프레임으로 분할되고 각 프레임은 4개 시간 슬롯을 갖는다 TDM 회선의 전송률은 한 슬롯 안에 비트수에 프레임 전송률을 곱한 것과 같다. 



- 패킷 교환대 회선 교환


(1) 패킷 교환이 회선 교환보다 전송 용량의 공유에서 더 효율적이다

(2) 패킷 교환이 더 간단하고, 효율적이며, 회선교환보다 구현 비용이 적다.



* 네트워크의 네트워크 


종단 사용자들과 컨텐츠 제공자들을 접속 ISP로 연결하는 것은 인터넷을 구성하는 수십억 개의 종단 시스템을 연결하는 퍼즐의 해결방법 중 극히 일부분에 해당된다.. 이 퍼즐을 완전히 풀기 위해서는 접속 ISP들이 서로 연결되어야만 한다. 


접속 ISP -  지역 ISP - 글로벌 ISP (네트워크의 네트워크)



* 패킷 교환 네트워크에서의 지연, 손실과 처리율




- 처리지연


패킷 헤더를 조사하고 그 패킷을 어디로 보낼지를 결정하는 시간이 처리지연이다. 


- 큐잉 지연


큐에서 링크로 전송되기를 기다리면서 큐잉 지연을 겪는다.


- 전송 지연


패킷의 길이를 L비트로, 라우터 A에서 라우터 B까지 링크의 전송률은 Rbps로 나타내자. R은 라우터B로 가는 링크의 전송률에 의해 결정된다.


전송지연은 L/R이다. 이것은 패킷의 모든 비트를 링크로 밀어내는 데 필요한 시간이다.


- 전파지연


링크의 처음부터 라우터 B까지의 전파에 필요한 시간이 전파 지연이다.


전송 지연과 전파 지연 비교


진송지연은 라우터가 패킷을 내보내는 데 필요한 시간이다. 반면, 전파 지연은 비트가 한 라우터에서 다음 라우터로 전파되는 데 걸리는 시간이다(두 라우터 사이의 거리에 대한 함수이며 피킷 길이나 링크 전송률과는 관계가 없다)


* 큐잉지연과 패킷손실


언제 큐잉 지연이 크고, 언제 미미한가? 이것에 대한 답변은 트래피이 큐에 도착하는 비율, 링크의 전송률, 도착하는 트래픽의 특성, 즉 그 트래픽이 주기에 맞춰서 또는 버스트하게 도착하느냐에 의해 주로 결정된다.


패킷손실


큐 용량이 유한하므로 트래픽 강도가 1에 접근함에 따라 패킷 지연이 실제로 무한대가 되진 않는다. 패킷을 저장할 수 없는 경우에 라우터는 그 패킷을 버린다. 즉, 그 패킷을 잃어버리게 된다(lost).



* OSI 7계층 


어플리케이션 계층(L7) - HTTP, SMTP, FTP 프로토콜


사용자가 네트워크에 직접 접근할 수 있도록 해주는 계층이다.

전자우편, 파일전송, 데이터베이스 관리등의 서비스를 제공한다.

HTTP, SMTP, FTP 등이 있다.


Presentation Layer(L6) - 표현계층


운영체계의 한 부분으로 입력또는 출력되는 데이터를 하나의 표현형태로 변환한다.


Session Layer(L5) - 세션계층


통신세션을 구성하는 계층으로 포트연결이라고 할 수 있다.


Transport Layer(L4) - 전송계층


종단과 종단간의 제어와 에러를 관리한다.

패킷들의 전송이 유효한지 확인하고 실패한 패킷은 다시 보내는 등의 신뢰성 있는 통신을 보장하며, 머리말에는 세그먼트가 포함된다.

대표적인 프로토콜은 TCP이다.


예) TCP, UDP


Network Layer(L3) - 네트워크 계층


패킷을 발신지로 부터 목적지로 전달할 책임을 갖는다(라우팅 할 책임).

2계층은 노드대 노드 전달을 감독하는 것이고 3계층은 각 패킷이 시작지점에서 최종 목적지까지 성공적이고 효과적으로 전달되도록 하며,

대표적인 프로토콜은 IP이다.


예) IP


DataLink Layer(L2) - 데이터링크 계층


오류없이 한 장치에서 다른 장치로 프레임을 전달하는 역할 

스위치 같은 경우 MAC 주소를 이용하여 정확한 장치로 정보 전달. 

3계층에서 정보를 받아 주소와 제어정보를 헤더와 테일에 추가.


예) IEEE 802.2(LLC), IEEE802.3(CSMA/CD), IEEE 802.5(Token Ring)


Physical Layer(L1) - 물리계층


물리적 매체(통신 케이블)을 통해 비트의 흐름을 전송하는 계층, 단지 데이터의 전달만을 할 뿐이다. 


예) 케이블, 리피터, 허브, 동축케이블, 꼬임쌍선, 광섬유









'이론 > 컴퓨터통신' 카테고리의 다른 글

Network Layer(L3)  (0) 2015.10.17
Transport Layer(L4)  (0) 2015.10.17
Application Layer(L7)  (0) 2015.10.14
컴퓨터 네트워크 개론  (0) 2015.10.13
블로그 이미지

종환 Revolutionist-JongHwan

github.com/alciakng 항상 겸손하자.

댓글을 달아 주세요