사랑한다1234
2013. 6. 24. 10:19
회선교환, 메시지교환, 패킷교환 방식 |
|
|
가. 개요
o 교환이란 필요시 단말과 단말간에 통신로를 확보하여 통신망 전체의 효율화를 이루는 것. o 교환망에는 PSTN, PSDN, ISDN 등이 있음. o 교환방식에는 비저장방식인 회선교환 방식과 저장방식인 메시지 교환 방식, 패킷교환 방식이 있음. o 패킷교환 방식은 또 데이터 그램 방식과 가상회선 방식으로 나눌 수 있음.
나. 회선교환 방식
o 송수신 단말장치 간에 데이터를 전송 할 때마다 물리적인 통신경로를 설정하는 방식임. (물리적 연결 설정) o 음성전화망 (PSTN)이 대표적임 o 통화로 동작 방법에 따라 공간 분할/주파수 분할/시분할 방식이 있음.
다. 메시지 교한 방식
o Store and Forward 방식으로 데이터 흐름의 논리적 단위인 메시지를 교환하는 방식임. o 연결 설정이 불필요한 비동기식 교환방식으로 각 스테이션에서 파일형태로 저장 후, 다음 스테이션으로 보내주는 형태임.
라. 데이터 그램 (패킷 교환) 방식
o (물리적/ 논리적) 연결 설정과정이 없이 각각의 패킷을 독립적으로 취급하여 전송하는 방식임. o 패킷들의 도착순서가 목적지에서 각기 다를 수 있으므로 재조립 과정이 필요함
마. 가상회선 (패킷 교환) 방식
o 패킷이 전송되기 전에 송수신 단말기에 논리적인 통신경로를 먼저 설정하고 패킷을 그 경로에 따라 보내는 방식임.
o 많은 사용자 단말들이 하나의 통신 설비를 공유하고, 여러 개의 논리 채널로 통신하는 방식임.
바. 비교
교환방식 |
장점 |
단점 |
회선 교환 |
. 통신 밀도 높을 때 유리함. 실 시간 트랙픽 . 통신경로 설정이 매우 빠름. . 전송제어 절차 정보형식에 제약이 없음
|
. 속도차가 큰 경우나 전송 밀도차가 큰 경우 비효율성 . 접속 기간 동안 통신회선을 트랙픽에 무관 하게 독점 사용하게 됨
|
메시지 교환 |
. Bulk Data의 경우 회선의 전송 효율 증대함 . 비동기 전송이 가능하여 연결설정이 불필요함. . 다중 전달 및 우선 순위에 따른 처리 |
. 실시간 데이터 전송에 부적함 . 응답 시간이 느림 . 네크워크 지연 발생 |
데이터그램 방식 |
. 연결 설정 생략 . 패킷 전송시 충돌에 대한 융통성 . 한 노드 실패에 대한 다른 경로 구성 . 소수 패킷 전송에 유리 |
. 모든 패킷마다 수신측 주소 필요 . 통신망에서 흐름제어 기능 없음 . 각 교환기 (라우터)에서 착신주소 분석하여 통신경로 설정함 . 전송 지연 큼 |
가상회선 방식 |
. 경로 설정 (호처리) 기능 . 다수 패킷 전송에 유리함. . 고장시에 우회경로 재접속시도 함
|
. 미리 설정된 경로 사용하므로 전송도중 패킷 충돌 시 융통성 떨어짐 |
※ 패킷스위치 : 네트워크의 내부에 들어온 패킷을 빠르게 교환하여 다음 지점으로 보내는 역할을 수행 (고속의 메시지 교환장치)
(switch)

※ 라우터 [router] , 패킷스위치의 일종
서로 다른 네트워크를 중계해주는 장치. 보내지는 송신정보에서 수신처 주소를 읽어 가장 적절한 통신통로를 지정하고, 다른 통신망으로 전송하는 장치를 말한다. 유지보수가 용이하고, 대규모 통신망을 쉽게 구성할 수 있으며, 다양한 경로를 따라 통신량을 분산시킬 수 있다.서로 다른 네트워크를 연결하여 정보를 주고 받을 때, 송신정보(패킷:packet)에 담긴 수신처의 주소를 읽고 가장 적절한 통신통로를 이용하여 다른 통신망으로 전송하는 장치이다. 예를 들어 서로 다른 근거리통신망(랜;LAN)을 중계하거나 근거리통신망을 광역통신망(WAN)에 연결할 때 주로 사용한다. 인터넷을 접속할 때는 반드시 필요한 장비로서, 서로 다른 프로토콜로 운영하는 통신망에서 정보를 전송하기 위해 경로를 설정하는 역할을 제공하는 핵심적인 통신장비이다.
★ 라우터들은 경합이 발생한 경우에 때로는 자신에 도착한 패킷을 임시로 저장할 필요가 있으며 저장된 패킷들은 이후 각각의
다음 경유 지점으로 보내지게 된다. 따라서 라우터 내부는 패킷 저장을 위한 버퍼들을 유지할 필요가 있으며 이경우 패킷 교환이
저장-후- 전달(store-and-forward)의 형태를 따르게 된다.
|
★ 스위치(라우터)가 수용할수 있는 메모리(버퍼)를 초과하면 패킷을 폐기하거나 routing한다.
routing 알고리즘의 특징 |
☞ routing : 현 스위치에서 목적지를 찾을수없거나 현 스위치가 혼잡할 경우
다른 스위치로 우회시킴(경로 재지정)
☞ routing 하다가 어느정도 우회시켜도 전송되지 않으면 패킷을 폐기시킴
☞ 패킷을 폐기할때는 패킷 송신지에 패킷을 폐기했다는 신호를 보내줌
☞ TCP : 패킷 폐기 신호를 받으면 그 패킷을 다시 재 전송함.
(주로 파일전송할때, 바이트스트림=>신뢰성있음 )
UDP : 패킷 폐기 신호를 받아도 재전송 안함.
(주로 멀티미디어 볼때, 스트리밍 서비스, 데이터그램=>속도빠름)
※ TTL(Time To Live) : 패킷이 살아있는 시간
※ 슬라이딩 윈도우 : 상황에 따라 보내는 패킷수가 조절됨.
여기서 윈도우는 한번에 보내는 패킷수를 말한다.
|

|
※ 계층별 패킷가공 및 전달 |
 |
※ 종단 시스템과 라우터의 역할차이(라우터는 L1 L2의 위치만 확인한다.) |

※ L2 switching : L2정보를 가지고 전송할곳을 찾아감
|
|
☞ gcc 컴파일 옵션
라이브러리가 추가 되었을때 : gcc -o pcap pcap.c -lpcap
라이브러리가 추가되었음 추가된 라이브러리
☞ Ethernet : LAN의 한 종류
MTU (Maximum Transmission Unit) |
최대 전송 단위 MTU[엠티유]는 TCP/IP 네트웍 등과 같이 패킷 또는 프레임 기반의 네트웍에서
전송될 수 있는 최대크기의 패킷 또는 프레임을 가리키며, 대개 옥텟을 단위로 사용한다.
※ 이더넷의 표준 MTU 값 1500 옥텟
※ 옥텟(octet)통합적으로 운용되는 2진 디짓군. 8비트를 한 묶음으로 계산하는 경우 바이트와 같은 의미를 갖는다.
ITU-T에서는 바이트란 용어 대신 옥텟이란 표현을 사용한다. |
|
pcap.c (미완성 소스) |
#include <stdio.h> #include <pcap/pcap.h> // /usr/include/pcap 안에 있음. // wow linux는 pcap 라이브러리 깔려있음. // pcap ( packet capture library ) : 네트워크장치에서 패킷정보를 추출할수 있음
int main() {
char errbuf[PCAP_ERRBUF_SIZE]; // 에러메시지를 담는 버퍼, 크기 256바이트 char *cpNIC_Name; //NIC : Network Interface Card pcap_t *stDes; //Des : description cpNIC_Name = pcap_lookupdev(errbuf); // 현재 사용중인 랜카드(네트워크 장치)를 찾아줌 // 에러시 Null 반환함
if(0 == cpNIC_Name) //에러나면 에러메시지 출력하고 종료 { printf("lookupdev Error : %s\n", errbuf); return 0; } printf("NIC_Name : %s\n", cpNIC_Name); // 네트워크장치이름 출력
stDes = pcap_open_live(cpNIC_Name, 1500, 1, 0, errbuf); // pcap_t *pcap_open_live(char *device, int snaplen, int promisc, int to_ms, char *ebuf) // 첫번째 인자는 장치이름
// 두번째 인자 MTU(최대전송단위) : 1500 바이트로 설정 // 세번째 인자는 promiscuous 이것저것 되는 대로의[잡다하게 모은]
0 : 나에게 전송되는 패킷만 받음, 1 : 모든(잡다하게) 패킷을 건져올림
// 네번째 인자는 open_live는 블로킹 함수 이므로 패킷을 건져올릴때 까지 대기하는 시간, 0:무한대기 // 에러시 Null 반환함 if(0 == stDes) //에러나면 에러메시지 출력하고 종료 { printf("open_live Error : %s\n", errbuf); return 0; } pcap_close(stDes); return 0;
}
|
vi Tip
메모장이나 윈도우에서 타이핑된 소스파일을 리눅스 소스에 붙이면 ^M 포함되어있는데 소스에 포함된 ^M을
모두 없애는 방법은 :%s/^M//g
여기서 ^M은 ctrl+v+m 이다.
|