어떻게 큰 데이터를 조각으로, 패킷
큰 사진 한 장을 멀리 보내려 한다. 통째로 한 번에 보내면 좋겠지만, 길이 좁아서 그렇게는 갈 수 없어요. 그래서 사진을 작은 조각으로 쪼개서 보낸다. 이 조각 하나하나를 패킷이라고 부른다.
한 번에는 못 보낸다
사진이나 영상, 커다란 파일 같은 큰 데이터가 하나 있다고 하자. 이것을 통째로 한 번에 보내고 싶다.
하지만 데이터가 지나갈 길은 좁아서 큰 덩어리가 들어가지 않는다. 통째로는 출발조차 못 하는 셈이에요.
통째로 보내기를 누르면 큰 데이터 덩어리가 좁은 길로 들어가려다 입구에서 막힌다. 길이 좁아서 한 덩어리로는 갈 수 없어요.
통째로 밀어 넣으려 했더니 길 입구에서 막혔다. 덩어리가 너무 커서 좁은 길에 들어가지 못한 것이다.
실제 인터넷의 길도 마찬가지다. 한 번에 보낼 수 있는 크기가 정해져 있어서 그보다 큰 데이터는 그대로 실을 수 없어요.
그러니 방법은 하나다. 작게 쪼개는 것이다.
작은 조각으로 쪼갠다
큰 덩어리를 여러 개의 작은 조각으로 나눈다. 조각 하나하나는 좁은 길에 쏙 들어가는 크기다.
이 작은 조각을 패킷이라고 불러요. 긴 편지를 여러 봉투에 나눠 담는 것과 비슷하다.
이제 조각들은 길을 떠날 수 있다.
데이터 덩어리를 누를 때마다 작은 패킷이 하나씩 떨어져 나온다. 네 조각으로 다 나뉘면 모두 좁은 길에 들어갈 수 있어요.
큰 덩어리가 여러 조각이 되었다. 이제 조각마다 좁은 길에 하나씩 들어갈 수 있다.
그런데 문제가 생긴다. 조각들이 서로 똑같이 생겨서 어느 것이 몇 번째인지, 어디로 가야 하는지 알 수 없어요.
그래서 조각마다 표시가 필요하다.
조각마다 꼬리표를 붙인다
조각마다 꼬리표를 붙이고 거기에 두 가지를 적는다. 하나는 몇 번째 조각인지 알려 주는 번호이고, 다른 하나는 이 조각이 가야 할 주소다.
번호와 주소만 있으면 조각이 따로 떠돌아도 제자리를 찾을 수 있어요. 실제 꼬리표에는 보낸 쪽의 주소도 함께 적혀 있어서, 받은 쪽이 답을 돌려보낼 수도 있다.
패킷을 하나씩 누르면 번호와 받는 주소가 적힌 꼬리표가 붙는다. 네 조각 모두에 꼬리표가 붙으면 떠날 준비가 끝나요.
이제 조각마다 번호와 주소가 적혔고, 조각들은 길을 떠난다. 그런데 꼭 같은 길로 나란히 갈 필요는 없다.
한 길이 막히면 조각은 다른 길로 돌아간다. 그래서 조각들이 뒤죽박죽 순서로 도착하기도 해요.
도착하면 다시 합친다
조각이 다 도착했지만 순서가 엉켜 있다. 3번이 먼저 오고 1번이 나중에 왔을 수도 있다.
걱정할 필요는 없어요. 조각마다 번호가 적혀 있기 때문이다. 번호 순서대로 나란히 놓으면 흩어진 조각이 다시 원래 데이터가 된다.
흩어져 도착한 패킷을 번호 순서(1, 2, 3, 4)대로 누르면 조각이 차례로 합쳐져 원래 데이터로 돌아와요. 순서를 틀리면 지금 눌러야 할 번호를 알려 준다.
번호 순서대로 합치자 원래 데이터가 돌아왔다. 쪼개졌던 사진이 다시 한 장이 된 것이다.
받는 쪽은 조각이 따로따로 왔다는 것을 눈치채지도 못하고, 완성된 사진을 볼 뿐이에요. 이것이 패킷이 일하는 방식이다.
정리
한 줄로 모으면 이렇다. 큰 데이터는 한 번에 보낼 수 없어서 작은 패킷으로 쪼갠다. 조각마다 번호와 주소를 적은 꼬리표를 붙인다.
조각은 따로 가도 되니 길이 막히면 돌아갈 수 있고, 도착하면 번호 순서대로 합친다. 쪼개고, 꼬리표를 붙이고, 합치기. 그것이 패킷이에요.
버튼을 누를 때마다 핵심이 하나씩 나타난다. (쪼개기 → 꼬리표(번호+주소) → 따로 보내기 → 번호 순 합치기) 네 가지가 다 나오면 정리가 끝나요.
이제 패킷이 무엇인지 알았다. 큰 데이터도 조각으로 나누면 좁은 길로 멀리 보낼 수 있다.
그런데 꼬리표에 적는 주소는 대체 어떻게 생겼을까? 수많은 컴퓨터 가운데 딱 한 곳을 어떻게 가리킬까?
다음 레슨에서는 컴퓨터마다 붙는 그 주소를 다뤄요.