이번에 먼저 다룰 부분은 switched network입니다.
switched network는 여러 개의 라우터, 이 길라잡이하는 라우터를 거쳐가야하는데 중간마다 길을 찾아서 길들이 중간에 스위치가 된다, 경로가 바뀐다는 뜻으로, 경로가 바뀌는게 아니라 길을 찾아갈 때 여기서 이쪽으로 가던 이쪽으로 가던 길이 스위치가 되죠(위 그림처럼 갈 수 있는 길이 많아서 그것을 결정해야 된다 라는 뜻입니다). 길이 스위치가 됩니다. 그래서 switched network이라고 하는 거고요. 스위치는 보통 라우터가 합니다.
그런데 스위치에다가 cisco라는 회사가 이런 기능을 추가해서 조금 더 복잡해졌습니다. (이 말은 그냥 흘러들으셔도 됩니다.)
Switched communication network가 뭐냐하면 source에서 destination까지 여러 개의 라우터를 거쳐서 경로를 배달하는 네트워크를 우리가 switched communication network라 부르고 여기있는 node들은 다 라우터로 보면됩니다.
그래서 network가 switched는 즉 forwarded입니다, 경로에 따라서 한 개를 택해서 forwarded이다 그니까 앞으로 나간다. 그런 뜻이고 여러가지의 node와 connection들이 묶여서 만든 것을 네트워크라 부르고 더 자세히 말씀을 드리면 communication network라고 부릅니다.
2가지 switching technology가 있습니다. 하나는 circuit switching이구요. 두번째는 packet switching입니다. Circuit switching은 Switching node가 경로가 사전에 고정이 되있습니다. 하지만 그리고 얘는 고정이 되있고 남들과 공유를 하지 않습니다. 반면에 packet switching은 공유도 하고 경로가 고정되어 있지 입니다. 그래서 circuit switching은 전화, 옛날에 일반 전화, 전화에서 쓰는 방식이고 packet switching은 인터넷을 쓰는 방식입니다. 전화는 1900년도 초에 나왔고 인터넷은 1970년대에 생긴거니까 circuit switching이 먼저 나왔고 그 이후에 packet switching이 등장을 하게 되었습니다.
조금 더 자세히 살펴보겠습니다. Circuit switch는 decicated라는 특성을 가지고 있습니다. 남들과 공유하지 않는 path가 있습니다. 우리가 전화를 걸면 대기중 신호음이 들리게 되는데 이 시간동안 길을 뚫는 것입니다. 길을 뚫어서 사전에 미리 경로를 만들어 놓고 걔를 dedicate으로 놓습니다. Path는 Data를 전송하기 전에 established합니다, 경로를 만들고 그 다음에 must have switching capacity입니다(대충 연결되는 선/버스가 있어야한다는 뜻). 그 다음에 must have intelligence입니다. 라우팅하게 되서 사람이 하든 아니면 기계가 하던 해서 전송을 하게 되는게 circuit switching입니다.
그래서 다시 정리를 하자면 첫번째 dedicate입니다. 아무도와 공유하지 않습니다. 내가 사용하고 있는데 남들이 또 그걸 사용하고 있다 그래서 그 경로에 더 이상 여유가 없다, 예를 들어서 통화중에 그렇게 된다면 전화가 이뤄지지 않습니다. 그 다음에 두번째로 사전에 미리 경로를 만들어야 된다. 경로가 사전에 만들어져 있기 때문에 fixed입니다. 이렇게 됐는데 그러다 보니까 이게 전화가 1차, 2차 세계대전때 아주 훌륭한 통신 도구로 사용하다가 미국하고 소련 서로 냉전시대가 있었습니다. 그러다보니까 미국에서 보니까 이 통신에 있는 통신체제가 전화선이 어느 한곳에 모여요. 서쪽과 동쪽이 한곳에 모이다 보니까 만일에 소련이 그 한곳에 모인곳을 폭파하면 어떻게 되요? 이 미국내의 군사시설이 통신이 안되는 거에요. 왜그런 거에요? 경로가 고정이 되야되기 때문에 그런거죠. 근데 그 모든 고정 경로가 한곳을 지나가다 보니까 통신에 아주 큰 문제가 생기는 거에요. 그럼 어떻해요? 경로를 사전에 만들지 말고 그때 그때 경로를 바꿔가자 그래서 만일 내가 가는 경로가 원래 경로가 있었는데 그 경로에 문제가 생기면 어떻해요? 다른 경로를 통해서 돌아갈 수 있게 해주는게 packet switching이고 그게 이제 1970년도에 미국에서 이제 만든 기술이고 인터넷에 표시가 되었습니다.
Circuit Switching의 단점은 inefficient합니다. 전화하게 되면 있죠 내가 거의 듣고 있잖아요. 거의 대부분이 듣고 있거나, 거의… 통신의 resource는 네트워크 resource는 거의 휴무 상태입니다. 그럼에도 불구하고 남들과 동의하지 않고 혼자 독차지하는게 inefficient합니다. 그리고 Connection setup하는데 시간이 걸려요. 시간이 오래 걸리긴하지만 한번 연결되면 transfer는, 전송은 아주 효율적입니다. 이건 약간 TMI인데 010-1234-5678이 전화번호라고 치면 전화번호는 앞에 번호를 보고서 이게 어떤 지역, 이게 도, 시 그 다음에 번호 기준이 되어서 수직적인 구조로 이루어져있습니다. 이걸 설명 드리는 것은 네트워크도 굉장히 많은 부분이 이런 수직구조로 나타내고 있어서 일종의 예고로 설명을 드렸습니다.
그 다음에 packet switching입니다.
circuit switching는 주로 voice, 주로 인제 전화, 목소리 통신에 사용됩니다. Circuit Switching은 Resource가 dedicate되어 있습니다. 하지만 대부분의 통신은 idle, 휴무입니다. 통신되지 않고요. 그래서 아주 비효율적인것입니다. 그 다음에 통신자와 수신자가 둘이 모두 같은 속도여야 합니다. 하지만 LAN과 LAN 사이의 속도가 같지 않을 수가 있죠. 그래서 packet switching은 share합니다. 공유하고 사전에 만들지 않습니다. 사전에 만들지 않고 그래서 하나의 link가 서로 다른 packet을 동시에 왔다갔다 하고 서로 다른 소스하고 서로 다른 destination의 packet들이 왔다갔다 하면서 지나갈 수 있습니다.
그래서 얘의 장단점은 packet switching은 데이터를 여러 개의 패킷으로 나눕니다. 패킷에는 길이가 있습니다. 보통 이더넷은 고정은 아니지만 최대 1500byte입니다. 그래서 보통 패킷의 자리가 보통 1000bytes인데, 이더넷은 1500바이트입니다. 이건 네트워크의 미디움에 따라서 다른데요, 무선랜은 조금 더 작습니다, 작고요. 이더넷은 유선이기 때문에 조금 더 깁니다. 블루투스도 또 다른 길이가 있고요, 다 프로토콜마다 서로 다른 패킷 길이를 가지고 있습니다. 그래서 이 데이터를 자릅니다. 그래서 자른 다음에. 각각의 패킷마다 필요한 정보들을 담습니다. 필요한 정보는 뒤에 자세히 배우겠지만 source ip, destination ip...뭐 이런것을 넣습니다.
그래서 switching mode합니다. store-and-forward가 뭐냐면 패킷을 다 받고 그 다음에 전체 패킷이 도착을 하면 얘를 스위치합니다, 에러도 보고 뭐 여러가지 체크한 다음에 그 다음에 이제 스위칭 하는게 store-and-forward 방식입니다.
Cut-through방식도 있습니다. 얘는 뭐냐하면 패킷이 1500바이트가 다 안오더라도 이 필요한 정보는 패킷의 앞단에 있습니다. 정확하게 헤더에 해당 정보들이 들어가있습니다. 그러니까 앞에 헤더를 조금만 보면 어디로 가는지 알수가 있습니다, 소스나 destination 주소들이 다 헤더에 있기 때문입니다. 그래서 cut-through방식은 헤더안에 있는 주소만 보고 나면 속도를 줄이기 위해서 destination을 본 다음에 바로 스위치를 해주고 시작합니다.
그래서 얘의 장단점은 line을 효과적으로 사용할 수 있습니다. 왜? 공유하기 때문에. 속도가 달라도 data rate을 변경할 수가 있습니다. 그 다음에 패킷은 네트워크가 바쁘더라도 패킷을 전송 할 수가 있고요, 그 다음에 priority를 사용할 수가 있습니다. 우선순위를 둘수가 있습니다. 또 에러에 reslinent합니다. 만일에 어떤 경로가 물리적으로 폭파가 되더라도 다른 곳으로 돌아서 갈수 있습니다. 이게 바로 packet switching입니다.
그래서 본격적으로 packet switched network에 대해서 조금 자세히 설명드리고 circuit switching은 사용하지 않기 때문에 옛날에 그런게 있었다 라고만 이해하시면 되겠습니다.
Packet switching은 이렇게 되있습니다. 총 5개의 layer가 있습니다. physical, data link, network, transport, application 이렇게 5개의 layer가 있습니다. 각 layer는 독립된 영역으로서 data를 통수신하는데 필요한 일을 구분하여서 나누게 되었습니다.
Physical은 analog signal을 만들어서 data를 실제로 보냅니다.
Data link는 LAN, local area에서 전송하게 됩니다. 실제로 MAC address가 여기 사용이 됩니다.
3계층은 라우터입니다. 라우팅 기능, ip가 여기 속합니다.
4계층은 transport입니다. transport니까 4계층부터는 End-to-end로 갑니다. 중간이 없습니다, 라우터에는 4계층 기능이 없습니다. 그래서 transport는 패킷 에러, 에러 같은 것들을 담당합니다.
Application은 이제 말 그대로 application이고, FTP, HTTP, email이런 것들입니다. 이런것들이 5계층에서 사용하게 됩니다.
전송은 물리적으로 이동하는 거는 2계층에서 이동을 합니다. 이전 글에서 이를 broadcast한다 그랬습니다.
1, 2계층은 디지털을 아날로그 바꿔주는 역할을 합니다. 전송을 할려면 실제로 이게 빛의 속도로 날라가야 되기 때문에 그렇습니다. 그럼 3계층에서는 길을 찾아주는 역할을 합니다. 라우터가 길을 찾아주는 역할을 하는데 라우터안에는 cpu가 있어서 길을 찾아주고 보내주는 역할을 할 수가 있습니다.
그리고 4계층과 5계층은 중간에 있는 intermediate router는 신경 안쓰고 end-to-end로 송신자와 수신자만 통신하는게 4, 5계층입니다.
위의 그림을 보면 이는 하나의 LAN입니다. 하나의 LAN에는 여러 개 단말이 있을 수 있습니다. 위 그림에서 A에서부터 F로 갈려고 합니다. 처음에는 당연히 B로 가겠죠. B는 라우터이니까 길라잡이를 할 수 있습니다. 길이 두갈래가 있는데 F는 아래에 있으니까 라우터가 아래쪽으로 보내라고 길라잡이를 해서 E로 갑니다. 그리고 E에서 F로 가겠습니다. 이 길라잡이는 3계층에서 하지만 실제 전송은 2계층에서 합니다.
transport layer는 4계층이고 end-to-end입니다. 중간에 라우터들은 관여하지 않습니다. 3계층에서는 에러를 감지만 하고 에러가 발생해도 아무것도 처리하지 않기 때문에 에러를 처리하는 것은 4계층에서 합니다. 그래서 만일에 에러를 복구하고 싶지 않은 그런 서비스가 있으면 unreliable을 쓰고 복구하고 싶은 서비스를 쓰면 reliable를 쓰면 됩니다. 선택할 수가 있어요.
UDP를 쓰는 voice server IP, 인터넷을 통신하는거 패킷을 잃어버려도 별 상관이 없습니다, 속도가 중요하니깐 unreliable한 UDP를 씁니다. 하지만 http, 그림 같은것, 패킷에 에러가 생기면 그림이 보여지지 않습니다, 그래서 얘는 reliable한 TCP를 씁니다. 그래서 선택의 여지가 있습니다. Udp를 쓸수도 있고 TCP를 쓸수도 있습니다.
Datagram은 network layer에서 unreliable한 서비스를 우리가 datagram이라고 합니다. 그리고 이게 바로 IP입니다. 이전에 계속 언급했던 IP가 실제로 네트워크내의 프로토콜이고 얘가 datagram입니다. Datagram은 unreliable합니다. Connectionless가 뭐냐. Connection을 맺지 않는겁니다. 연결을 왜 하냐? 송신자가 있고 수신자가 있는 데 근데 서로 연결이 안되있는 상황, 예를 들어서 destination가 꺼져있어요. 꺼져 있으면 보내면 안되는데 연결을 안맺은 상태에서 그냥 보내요. 근데 전화는 어때요? 전화는 상대방이 지금 전화 꺼놨는데 전화 꺼졌다고 얘기가 나오죠. 얘는 connection을 미리 맺는다고 말씀드렸죠. Circuit switch는 어떻게한다고 했어요. Circuit switch는 전화를 미리 before, in advance로 한다고 그랬죠. 얘는 사전에 미리 connection을 맺습니다. 왜? 그게 바로 뭐냐면 reliable하기 때문에 그랬습니다. 전화선은. 하지만 IP는 datagram은 connection을 맺지 않습니다. 그냥 보내요. 상대방이 꺼져 있을 수 있어요. 상대방이 없을 수도 있어요. 그래도 보내요. 에러가 나겠죠. 그럼 그 다음에 후처리합니다. 그래서 connection없습니다. 모든 패킷은 다 독립적이구요. 그 다음에 패킷은 다 any practical route 아무경로를 따라갈 수가 있습니다. 그 다음에 unreliable하기 때문에 패킷의 도착하는 순서가 변경될수도 있어요. 패킷을 요청하는 순서가, unreliable하기 때문에. 패킷이 잃어버릴 수도 있어요. 그 다음에 아까도 얘기했듯이 헤더에 이 주소정보가 들어가 있습니다. 이걸 보고 가는 겁니다. 그러면 바뀌거나 missing은 누가 바꾸는 거냐. 아까도 말씀드렸듯이 4계층에서 합니다. 4계층에서 패킷을 잊어버렸거나 순서를 바꾸는 것은 4계층에서 합니다. flexible해요, 라우팅이 중간에 경로에 문제가 생기더라도 얘는 유연하게 중간에 가던길에 라우터에 문제가 생기면 얘는 길을 찾아서 갑니다.
그림을 보시면 1,2,3 패킷 3개인데. 다 1번과 2번은 같은 경로, 3번은 다른 경로를 갈 수 있어요. 그러다 보니 3이 1,2보다 빨리 도착 할 수 있어요. 혹은 중간에 3번이 잊어버릴 수 있습니다. 하지만 datagram이기 때문에 ip는 신경쓰지 않습니다. 재전송하지 않습니다. 그냥 보내고 잊어버립니다.
이해가 안되시면 댓글 남겨주세요! 수업을 추려서 정리한것이여서 생략된 부분이 많습니다!
'컴퓨터네트워크개론' 카테고리의 다른 글
[컴퓨터네트워크개론 master] 3. ip address(1) (1) | 2022.11.03 |
---|---|
[컴퓨터네트워크개론 master] 1-2. 네트워크 모델(보충) (0) | 2022.10.08 |
[컴퓨터네트워크개론 master] 1-1. 네트워크 모델 (0) | 2022.09.28 |
[컴퓨터네트워크개론 master] 제발 이번엔... (0) | 2022.09.27 |
[컴퓨터네트워크] TCP Congestion Control (0) | 2022.05.24 |
댓글