데이터 링크 계층에서 이더넷 규칙을 기반으로 데이터의 전송을 담당한다고 했다. 이 규칙에 따르면 같은 네트워크에 있는 컴퓨터로는 데이터를 전송하는데 문제가 없지만, 인터넷이나 다른 네트워크로 데이터를 전송할 수는 없다. 수많은 네트워크들이 얽히고 설킨 환경에서는 데이터 링크 계층의 기능만으론 다른 네트워크로 데이터를 전송하는데 한계가 있기 때문이다. 이 시점에서 네트워크 간의 통신을 가능하게 하는 것이 바로 네트워크 계층의 역할이다. 이 계층을 통해 다른 네트워크로 데이터를 전송하려면 라우터라는 네트워크 장비가 필요하다. 라우터는 데이터의 목적지가 정해지면 해당 목적지까지 어떤 경로로 가는 것이 좋은지 알려주는 일종의 내비게이션 역할이다. (스위치는 각 갈림길마다 있는 이정표같은 역할) 그러나 데이터를 보내려는 상대가 어디 있는지 모르면 라우터 역시 목적지까지의 경로를 알려줄 수 없다. 편지를 보낼때 받는 사람 주소를 모른다면 배송할 수 없는 것처럼 말이다. 즉 네트워크에서도 데이터를 보내려면 목적지 주소가 필요하다는 것이다! 이 때 이 주소는 데이터 링크 계층에서 다룬 MAC주소를 말하는 것이 아니다! 랜에서는 MAC주소만으로도 통신이 가능하지만 다른 네트워크로는 MAC주소만으로 보내기엔 무리가 있는데, 이 때 사용하는 것이 MAC주소가 아닌 네트워크를 식별하는 주소인 IP주소다.
IP주소는 어떤 네트워크의 어떤 컴퓨터인지 구분할 수 있도록 해주는 주소로 이 IP주소가 있다면 다른 네트워크에 있는 목적지를 정할 수 있다. 다만 목적지를 IP주소로 정했다고 바로 데이터를 보낼 수 있는 건 아니고, 목적지까지 가는 무수히 많은 길 중 어떤 경로로 보낼지도 결정해야 하고 이 작업을 라우팅이라고 한다. 이를 라우터가 하며, 라우터엔 라우팅 테이블이 있어 경로 정보를 등록하고 관리한다.
네트워크 계층에는 IP(Internet Protocol)이란 프로토콜이 있는데, 이 IP를 통해서 다른 네트워크의 컴퓨터로 데이터를 보낼 수 있다. 네트워크 계층에서 캡슐화할 때 붙이는 헤더가 IP헤더이며, 여기엔 출발지 IP주소와 도착지 IP주소를 비롯한 다양한 정보들이 들어간다. 데이터링크 계층에서 이더넷 헤더와 트레일러를 붙인 덩어리를 프레임이라고 부른 것처럼 네트워크 계층에선 이 IP헤더를 붙인 덩어리를 IP 패킷이라고 부른다.
IP주소는 네트워크ID를 통해 "어떤 네트워크"인지 나타내고, 호스트ID를 통해 "어떤 컴퓨터"인지 나타낸다.
0과 1만으로 이루어진 비트열을 전기 신호로 변환하고, 이것이 물리 계층을 통해 전달됨. 수신 측에선 전기 신호를 0과 1의 비트열 데이터로 복원.
컴퓨터는 네트워크를 통해 데이터를 송수신할 수 있도록 랜카드를 가지고 있음. 이를 통해 0과 1을(즉 비트열을) 전기 신호로 변환 가능.
암튼, 물리 계층은 컴퓨터와 네트워크 장비를 연결하고 이들간에 전송되는 데이터를 전기 신호로 바꿔주는 계층이다.
데이터링크계층에서 하는 일
랜에서 데이터를 정상적으로 주고 받으려면 데이터 링크 계층의 기술이 필요하다. 그 기술에 대해 알아보자.
데이터 링크 계층은 네트워크 장비 간에 신호를 주고받는 규칙을 정하는 계층이다. 이 규칙들 중 가장 많이 사용되는 것은 이더넷이며, 허브와 같은 장비에 연결된 컴퓨터와 데이터를 주고받을 때 이더넷을 사용한다. (허브는 약해진 전기신호를 다시 복원사쿄 전달받은 포트를 제외한 나머지 포트에 전기 신호를 전달하는 장치. 즉 허브는 일종의 경유지느낌인데, 경유지를 거쳐 목적지에만 딱 가야 하지만 경유지를 거치는 모든 집에 다 가게 되는 것임). 다만 허브 특성상 A입장에서는 B에만 보내고 싶지만 허브에서 갈 수 있는 다른 집들도 다 데이터가 보내지기 때문에, 목적지 정보를 추가해서 전송하여 목적지 이외의 컴퓨터들로 하여금 데이터를 받더라도 무시하도록 한다.
근데 이 허브에서 컴퓨터 여러 대가 동시에 데이터를 보낸다면 충돌이 일어날 수도 있는데, 이를 방지하기 위해 CSMA/CD라는 방법을 통해 데이터를 보내는 시점을 늦춘다. 즉 조절하는 것. 데이터를 보내려고 하는 케이블에 신호가 흐르고 있는지 확인한 다음, 흐르고 있지 않다면(즉 해당 통로를 누가 쓰고 있는 게 아니라면) 그 때 보내는 식이다. But..지금은 효율이 안 좋아서 CSMA/CD는 거의 안 쓴다고 함. 스위치라는 효율적인 장비가 생겼기 때문!
MAC주소?
랜카드는 비트열을 전기 신호로 변환한다고 앞서 설명했다. 이 랜카드에는 MAC주소라는 번호가 정해져 있는데, 이는 각 랜카드마다 고유하다 즉 전세계에서 유일한 번호로 정해진다. 내 랜카드의 번호가 001이면 지구상의 다른 랜카드 중에서 001이란 MAC주소를 갖는 랜카드는 없는 것이다.
데이터 송신 시 각 계층에서 헤더를 붙여 더 큰 덩어리로 만들어 다음 계층으로 보낸다고 했는데, 데이터 링크 계층에서는 헤더 말고도 트레일러를 붙인다고 했었다. 정확히 말하면 데이터 링크 계층에선 이더넷 헤더와 트레일러를 붙이는데, 이더넷 헤더는 목적지의 MAC주소와 출발지의 MAC주소 그리고 유형이라는 3가지 정보를 갖는다. 유형은 프로토콜 정보를 식별하는 번호라고 이해하면 됨. 트레일러는 FCS(Frame Check Sequence)라고도 부르며, 데이터 전송 도중 오류가 발생하는지 확인하는 용도로 쓴다. 암튼 뭐..이처럼 이더넷 헤더와 트레일러가 추가된 덩어리를 프레임이라고 부른다. 네트워크를 통해 이 프레임이 전송되는 것..! 더 구체적으론 물리 계층에서 이 프레임 비트열을 전기 신호로 바꾼 다음 네트워크를 통해 전송하는 것임. 참고로 아까 허브 구조에서 송신자는 데이터에 목적지 정보를 추가해서 목적지 이외의 다른 컴퓨터들로 하여금 데이터를 받더라고 무시하도록 한다고 했는데 이 때 목적지 정보가 목적지 MAC주소를 의미. 수신 계층에서는 물리 계층에서 전기 신호로 전송된 데이터를 비트열로 변환하고 데이터 링크 계층에서 이더넷 헤더와 트레일러를 분리한다.
스위치?
데이터 링크 계층에서 동작하는 장치이며 스위칭 허브라고도 부른다. 스위치 내부에는 MAC주소 테이블이란 것이 있는데, 이 테이블엔 스위치에 있는 포트 번호와 해당 포트에 연결된 컴퓨터들의 MAC주소가 등록된다. 아까 프레임 전송시 이더넷 헤더에 출발지의 MAC주소를 보낸다고 했는데, 이걸 보고 출발지 MAC주소를 그 포트와 함께 등록하는 식으로 MAC주소 테이블이 형성된다.
그러나 처음 데이터를 보내는 경우 출발지 MAC주소와 포트는 등록했지만, 도대체 어느 포트로 보내야 목적지 MAC 주소로 보내지는지 알 수 없을 수밖에 없다. 이 때는 뭐다? 일단 다 보내본다. 하나는 들어맞을 거니까..이렇게 일단 무지성으로 다 보내는 것을 플러딩(flooding)이라고 한다.
만약 목적지 MAC주소가 어느 포트번호가 매핑되는지에 대한 정보가 MAC주소 테이블에 있다면, 이를 참조해 다른 포트에는 안 보내고 그 포트에만 프레임을 보낸다. 이것이 허브와의 가장 큰 차이점이다. 허브는 일단 다 보내는데 목적지 MAC과 다른 MAC주소를 갖고 있으면 무시하도록 한 것이기 때문에 아무튼 다 보내진다는 단점이 있지만 스위치는 딱 필요한 데만 보내기 때문. 이를 MAC주소 필터링이라고 한다.
케이블에 데이터가 아무리 많이 전송되어도 충돌하지 않는 이유?
먼저 통신 방식은 두 개로 분류할 수 있다. 첫 째는 데이터의 송수신을 동시에 하는 전이중 통신 방식이고, 둘째는 회선 하나로 수신과 송신을 번갈아가며 하는 반이중 통신 방식이다. 컴퓨터 A, B를 직접 랜케이블로 연결한다면 전이중 통신 방식을 사용하게 되지만(즉 양측에서 동시에 데이터 송신 가능. A가 송신하는 케이블은 B에겐 수신케이블이고, A가 수신하는 케이블은 B에겐 송신케이블임) 허브는 송수신용 케이블이 나누어져 있지 않기 때문에 동시에 데이터를 보내면 충돌이 일어난다. 즉 이땐 회선 하나를 수신과 송신이 번갈아가며 사용하는 반이중 통신 방식이 사용된다.
B U T 스위치는 포트별로 수신통로와 송신통로가 별도로 있기 때문에, 전이중 통신 방식 즉 동시에 송수신이 가능하다.
암튼 다시 허브로 돌아와서, 반이중 방식으로 동시에 데이터를 전송하면 충돌이 나는데 이 충돌의 영향이 미치는 범위를 충돌 도메인이라고 한다. 허브는 연결되어 있는 컴퓨터 전체가 충돌 도메인이 된다. 스위치는 데이터를 동시에 송수신 가능한 전이중 통신 방식이므로 충돌이 일어나도 충돌 도메인의 범위가 훨씬 좁다. 내(A)가 C에게 송신하려는데 C가 이미 B로부터 뭔가 받고 있다면 나만 기다리면 되는 거고 D, E이런 애들은 상관 없는 거니까.
인터넷 : 전 세계를 아우르는 거대한 네트워크. 이를 통해 해외 웹 사이트도 볼 수 있는 것
네트워크 or 인터넷에서 데이터를 주고 받으려면 규칙이 필요하고 이 규칙엔 packet을 사용. 패킷은 컴퓨터 간에 데이터를 주고받을 때 네트워크를 통해 전송되는 데이터의 작은 조각을 말함. 큰 데이터가 있더라도 작게 나누어 보내는 게 원칙.
※ 큰 데이터를 나눠서 보내는 이유? : 그대로 보내면 그 데이터가 네트워크의 대역폭을 너무 많이 차지해 다른 패킷의 흐름을 막을 수도 있어서. 즉 도로의 너비에 비해 차가 너무 뚱뚱하면 막힌다는 것
따라서 목적지에서는 받은 패킷들을 다시 조립해 원래 데이터를 만드는 작업이 수반됨. 다만 순서대로 패킷이 도착하지도 않고 몇 개는 누락되기도 함. 때문에 송신 측에서 패킷에 순서대로 번호를 붙여 보내고, 수신 측에서는 번호 순대로 패킷들을 정렬해 조립함.
랜과 왠의 차이
랜 : 건물 안이나 특정 지역을 범위로 하는 네트워크
왠 : 지리적으로 넓은 범위에 구축된 네트워크. ISP(인터넷 서비스 제공자. KT, LG U plus 등)가 제공하는 서비스를 사용해 구축된 네트워크를 말한다. 랜과 랜을 왠을 통해 연결한다고 생각할 수 있다.
가정과 회사에서 구축하는 랜 구성은 다르다. 가정은 뭐 알다시피 공유기를 통해 컴퓨터 핸드폰 등을 연결한 뒤 공유기가 ISP와 연결되는 구조인 반면, 회사는 방금 설명한 것에 더불어 웹 서버 / 메일 서버 / DNS서버와 같은 다양한 서버를 아우르는 DMZ 네트워크 영역(외부에 공개하기 위한 네트워크)들로 구성된다. DMZ는 가정에서의 랜 구조와 ISP 중간에 위치하는 네트워크라 보면 된다.
네트워크에서도 문제없이 통신하려면 규칙이 필요하다. 이 규칙을 프로토콜이라고 한다. 데이터를 이런 형태로 가공하고, 데이터를 이렇게 보내고, 받는 곳에선 어떻게 하고 뭐 이런 규칙들을 하나하나 만들었고 이들을 아울러 프로토콜이라 하는 것.
OSI모델?
네트워크 기술의 기본이 되는 모델(표준)이다. 데이터의 송수신은 곧 컴퓨터로 데이터를 주고받는 것을 말하는데, 이 때 컴퓨터 내부에선 다음과 같이 일곱 개 계층으로 나누어 작업을 해야 한다는 모델이 OSI모델이다.
응용계층
표현계층
세션계층
전송계층
네트워크계층
데이터링크계층
물리계층
통신할 때 데이터는 맨 위 응용 계층부터 맨 아래 물리계층까지 순차적으로 전달된다. 각 계층의 역할은 다음과 같다.
응용계층 : 이메일 & 파일 전송, 웹 사이트 조회 등 애플리케이션에 대한 서비스 제공
표현 계층 : 문자 코드, 압축, 암호화 등의 데이터를 변환
세션계층 : 세션체결, 통신 방식을 결정
전송계층 : 신뢰할 수 있는 통신을 구현
네트워크계층 : 다른 네트워크와 통신하기 위한 경로 설정 및 논리 주소를 결정
데이터 링크 계층 : 네트워크 기기 간의 데이터 전송 및 물리 주소 결정
물리 계층 : 시스템 간의 물리적인 연결과 전기 신호를 변환 및 제어
참고 : 일반적으로 표현 / 세션 계층은 응용 계층에 포함하여 생각할 수 있음
송신 측에서는 상위계층 ~ 하위계층으로 데이터를 전달하고, 수신 계층에선 하위 계층 ~ 상위계층으로 데이터를 받는다. 각 계층은 독립적이어서 데이터가 전달되는 동안 다른 계층의 영향을 받지 않는다.
TCP/IP모델?
OSI의 7계층을 4계층으로 표현한 모델.
응용계층(응용 + 표현 + 세션)
전송계층
인터넷 계층(네트워크 계층)
네트워크 접속 계층(데이터링크 + 물리)
각각 계층엔 다양한 프로토콜(통신 규칙)이 있다. 데이터를 주고받는 것에 있어 어떤 계층들을 거치게 하기로 정해뒀고, 각 계층에서 정해진 규칙들을 따르도록 만들었다고 생각하면 됨.
데이터를 보낼 때, 상위계층 ~ 하위계층으로 데이터를 보낸다고 했다. 각 계층에서 데이터의 앞 부분에 필요한 정보를 붙여서 다음 계층으로 보내는데, 이때 붙이는 정보들을 헤더라고 한다. 헤더에는 데이터를 전달받을 상태에 대한 정보도 포함되어 있다. 이렇게 헤더를 붙여 나가는 것을 캡슐화라고 한다. 반대의 작업은 역캡슐화.
한 번 더 설명하자면, 응용계층에서 데이터에 헤더를 붙여 만든 덩어리를 전송계층으로 보내고, 전송에서도 헤더를 붙여 만든 더 커진 덩어리를 네트워크 계층으로 보내고..결국 마지막엔 물리 계층에선 이 커다란 덩어리를 전기신호로 수신측으로 보내는 것임. (데이터 링크 계층에선 헤더말고도 꼬리쪽에 트레일러를 따로 붙임)
end system들은 access ISP를 통해 인터넷에 연결된다. 이 access ISP들도 서로 연결된다면 어떤 end system들이던 간에 서로 packet을 교환할 수 있을 것이다.
이때, 수백만 개의 access ISP들을 어떻게 연결 즉 네트워크를 어떻게 구성할까?
1) 모든 access ISP들을 서로 연결
이런 구조를 마치 그물망 같다고 해서 "mesh 구조"라고 부른다. 당연한 얘기지만 비효율적인 방법.
2) 중간에 하나의 글로벌 ISP(global transit ISP) 놓기
일종의 중간 다리 역할을 해주는 ISP를 놓은 것이라 보면 된다. 모든 access ISP들이 global ISP를 통해 다른 access ISP로 가는 것이며, 이 때 global ISP엔 돈을 지불한다. 우리가 KT인터넷 같은 거 쓰면서 돈 내는 것처럼 말이다.
3) 여러 글로벌 ISP들이 생기고 이들을 이어줌
만약 중간 다리 역할을 해주는 글로벌 ISP가 하나라면 데이터가 한 곳에만 계속 모이니 동작을 제대로 하지 못 할 수도 있고, 그 글로벌 ISP가 지 맘대로 독점적으로 비용을 책정하면 서비스 이용에 큰 불편이 따른다. 그래서 많은 회사가 글로벌 ISP 서비스를 시작하였고 이들끼리 하나의 군집을 이루는 식으로 발전됐다.
그리고 이 ISP들 간에도 연결이 돼야 하는데, peering link를 통해 서로 우리 둘은 무료로 packet교환하자!라면서 서로 네트워크를 연결하게 됐다. 그리고 둘 뿐만이 아니라 다수의 ISP들이 서로 peering할 수 있는 만남의 장소로 IXP를 만들어 이를 통해 서로 간의 packet을 교환하게 됐다. 즉 IXP가 이 네트워크 계층 구조의 최상위에 있는 것이라 볼 수 있다.
4) regional net, content provider network의 등장
이후 글로벌 ISP뿐만 아니라 지역의 네트워크를 모아서 서비스해주는 regional net(지역 네트워크)도 등장하였다. 또한 구글이나 넷플릭스 등과 같은 회사에서 만든 content provider network라는 것도 생겨났다. 이 회사들은 자신들의 고유한 사설 네트워크를 구축하고 하위 ISP와 직접 peering하는 등의 방법으로 상위 계층 ISP를 우회하는 방식을 쓴다! 자신들의 데이터를 일반 네트워크를 통해 전달하게 되면 수많은 트래픽이 생기고, 이 때문에 굉장히 많은 비용을 청구받게 되니 만들게 된 것. 그래서 자체 네트워크를 통해 서비스하도록 하는 것이다.
전 세계 여러 컴퓨터를 하나로 연결하는 거대한 통신망을 의미하는 개념. 클라이언트와 서버로 구성되며 TCP/IP라는 기본 프로토콜을 통해 제공된다. 프로토콜에 대한 개념은 이후에 다루니 지금 당장은 패쓰.
이 인터넷을 구성요소 관점에서 보면 다음과 같다.
우선 인터넷을 구성하는 요소들은 hosts, communication links, packet switches가 있다. hosts는 우리가 쓰는 PC, 스마트폰, 노트북, 서버 컴퓨터 등의 수많은 장치를 표현하는 개념이며 네트워크의 끝단에 위치한다고 해서 end systems라고도 부른다. 웹 브라우저, 롤, PC카톡 등의 응용 프로그램들이 이 end systems에서 돌아간다. communication links는 이 end systems들을 유/무선으로 연결해주는 것으로 fiber(광섬유), copper(구리선) 등이 있다. 일종의 도로 역할을 해준다고 보면 되며, 각 link들은 저마다의 전송률(bandwidth라고도 부름)을 가진다. packet switches는 라우터나 스위치를 말하는 것으로 packet들(일종의 정보 패키지. 도로에서 실을 것을 싣고 목적지로 가는 트럭으로 이해하면 쉽다)을 전달하는 역할을 한다. 도로들을 달리다가 교차로를 만날 때, 어디로 가야 할지를 알려주는 역할이라 보면 됨.
각 End System들은 ISP( = Internet Service Provider)를 통해 인터넷에 접속한다. 이 ISP들을 라우터라 부르기도 하는 것이며, 우리 나라에서의 KT, SKT등 인터넷 서비스를 제공해주는 애들이라고 생각하면 된다. 이 ISP들은 regional ISP, global ISP처럼 계층 구조를 가진다.
packet을 트럭, comminication links를 도로, packet swiches를 교차로에 비유했다. end systems는 빌딩에 비유할 수 있다. 왜 빌딩인지 한번쯤 생각해보는 것이 중요하다. 빌딩에 여러 호실이 있는 것 때문에 빌딩이라 비유한 것이다. 내 컴퓨터에서도 브라우저를 여러 개 띄울 수 있고 PC카톡도 할 수 있고 롤도 할 수 있는데, 내 컴퓨터를 end system이라 하면 이 컴퓨터에 오는 트럭이 A브라우저로 갈지 B브라우저로 갈지 PC카톡으로 갈지 롤로 갈지 뭐 그런 상황들이 있다. 그래서 end system을 빌딩에 비유할 수 있는 것이다.
2. 프로토콜이란 무엇인가?
end system과 라우터 등이 서로 communication links를 통해 연결돼있는 것을 앞서 언급했다. 이들의 통신과정은 송신단과 수신단으로 구분된다. 프로토콜은 이때 이렇게 서로 연결된 애들 사이에서의 통신 방법을 의미한다. 사람이 의사를 전달하고 대화할 때도 어떤 형식과 절차가 있는 것처럼 얘네들 사이에서도 특정 형식과 절차가 있고, 이런 것을 프로토콜이라 부른다. 정리하자면 둘 이상의 통신 개체 간에 교환되는 메시지들의 순서와 형식, 그리고 메시지 교환 이후의 동작을 정의하는 것이 프로토콜이다.
3. 네트워크의 구조
1) network edge
네트워크 끝단(edge)에는 end systems = hosts들이 있으며, host는 request의 주체인 클라이언트와 response의 주체인 서버로 구분하기도 한다.
2) access networks
end system이 네트워크에 접근하기 위한 네트워크를 말한다. 한 end system으로부터 다른 먼 거리의 end system까지의 경로 상에 있는 첫 번째 라우터에 연결하는 네트워크를 말하는 것임. 쉽게 생각해 end systems들이 인터넷을 사용할 수 있도록 처음에 길을 터주는 놈이라 보면 됨. 랜선을 떠올리면 이해하기 쉽다. 유선으로 네트워크를 사용하려면 PC에 랜선을 꼽아서 사용해야 하니까..
3) network core
수많은 라우터들이 서로 그물처럼 얽혀있는 구조를 말하며 쉽게 말하면 서로 연결된 모든 라우터들을 말하는 개념
4. access networks 찍먹
일단 뭐 단순 가정집에서의 네트워크에서 access networks를 생각해보자. 다음처럼 3가지 종류가 있다.
1) DSL (Digital Subscriber Line)
: 집집마다 깔린 전화선을 사용하는 방식. 전화선의 voice신호와 컴퓨터의 data신호가 전화선을 통해 한꺼번에 전송되는데, 이들의 주파수를 분리함으로써 한꺼번에 보낸다. 이를 토대로 data신호는 ISP 라우터로, voice신호는 telephone network로 보낸다.
대부분 upstream(업로드 속도라고 생각하면 됨)보다 downstream(다운로드 속도라 생각하면 됨)이 더 빠르며 DSL도 마찬가지다. 이런 것을 비대칭적이다(asymmetric)고 함.
2) Cable network (HFC)
DSL이 전화선을 사용하던 것에 비해 cable network방식은 동축케이블을 사용하며 전화기 대신 TV가 연결된 것을 알 수 있고 cable medem을 쓴다. 한 가지 또 특징적인 것은 한 라인 상의(그림 에서 초록색 선) 여러 집의 케이블들이 동시에 연결되는 형태(즉 shared하다)라는 점. 참고로 DSL은 한 집과 다른 집에서 나오는 선들이 shared하지 않고 dedicated 즉 독립적이다. TV신호와 data신호의 구분, 그리고 다른 집에서의 신호와의 구분을 위해서 이 녀석도 서로 다른 주파수를 사용해 신호를 나르게 된다. 이 때 이렇게 전체 주파수 밴드를 세부적으로 쪼개서 각각의 주파수로 실어 나르는 것을 FDM( = frequency division multiplexing)이라 한다.
3) FTTH (fiber to the home)
사실 FTTx로 마지막 x에 뭐가 들어오든 된다는 건데 여기서는 home의 h가 들어간 거다. CO로부터 home까지 직접 광섬유 경로를 제공하는 방식. CO에서 하나의 광섬유(direct Fiber)를 제공한다.
5. core network 찍먹
앞서 말한 것처럼 서로 연결되어 있는 라우터들의 집합체를 말하는 개념으로, end system들 간의 데이터 교환을 돕는다. 즉 end system들을 연결해주는 중간역할을 하는 것이 core network.
어떤 end system으로부터 정보가 이동할 때 항상 라우터들 즉 같은 경로를 거치는가?라고 묻는다면 대답은 No다. routing altorithm에 따라 그 때 그 때 거치게 되는 경로가 다르다. 서울에서 부산으로 갈 때 항상 같은 길로만 가지 않고 도로 상황에 따라 다른 길로 가기도 하는 상황으로 이해할 수 있다.
아무튼 이 core network에서 데이터가 전송(forward로 표현하기도 함)되는 것인데 packet switching과 circuit switching으로 구분할 수 있다.
1) packet switching
store-and-forward 즉 '저장 후 전달 방식'을 쓴다. end system으로부터 A라우터를 거쳐 다른 end system으로 데이터를 보낼 때, 비트 단위로 쪼개서 보내게 된다. 이 때 A라우터에서 비트 단위로 받을 때마다 즉시 destination으로 보내는 게 아니라 다 받고 나면 error가 있나없아 확인하고 destination으로 보내게 된다. 10개로 쪼갰으면 10개 다 받은 다음에 보내겠다는 마인드..
참고로 이 과정에서 당연히 시간 즉 딜레이가 걸리게 된다. 그럼 얼마나 걸리느냐? L bit의 packet을 R이란 전송률(transmission rate)로 보낸다고 하면 L / R만큼의 시간이 걸린다. L비트 데이터를 R의 속도로 보내면 당연히 L / R의 시간이 걸린다..중딩 때 배운 거속시가 생각나는 부분.
근데 여기서 한 가지 생각해야 할 게 있다. 라우터의 버퍼에 데이터가 쌓이는 속도보다 라우터의 버퍼에 있는 데이터가 전송되는 속도가 더 빠르다면 뭐 좋겠지만..대부분 그렇지 않다. 대부분의 라우터는 전송가능한 속도보다 더 빠른 속도로 데이터들(즉 packet)들이 들어온다. queue형태로 쌓이게 되는데, 이 경우 당연히 queue가 넘치게 된다. 참고로 이 queue에서 packet들이 대기하는 상황을 queueing delay라고 한다. 암튼 이렇게 버퍼가 full이 되면..남는 것들은 버린다. 당황스럽다. 버린다고 한다. 난 최선을 다했지만 이 이상은 힘들다. 버린다 수고해라! 뭐 이런 게 다 있나 싶다. 근데 뭐 이게 현재 쓰이고 있는 정책?이라 한다..
2) circuit switching
end system간의 통신을 위해 경로상 필요한 자원인 link를 독점적으로 예약(reserve)하고 사용한다. 즉 언제든지 '정해진 경로'로 데이터를 보낼 수 있는 것이며 보장된 전송률로 데이터를 보내는 것이 가능한 방식. 아니 그럼 더 좋은 거 아닌가? 생각할 수 있지만 내 꺼라고 찜해놓은 거라 다른 애들은 이걸 못 쓴다..비효율적임.
뭐 이와 반대로 packet switching 방식은 전송률을 보장하진 않지만 on-demand방식으로 링크 사용하고 싶으면 요청하고 사용이 가능하다. 식당으로 치면 예약 그런 거 없이 먹고 싶을 때 올 수 있다는 말. 뭐 손님 많으면 웨이팅 하는거지..packet switching은 link를 공유하므로 효율적이지만 delay가 있을 수 있다는 말이 되겠다.