이번 시간에는 TCP/IP 계층을 살펴본 다음 구체적인 통신 원리를 알아보도록 하겠습니다.
이것은 네트워크 분석, 네트워크 해킹 등을 공부하는 데에 도움이 되니 알아두시는 것이 좋습니다.
포스팅을 진행하다가 설명이 너무 길어져서 Sender편, Receiver편으로 나누었습니다.
이번 시간에는 Sender를 살펴볼 것입니다.
위의 사진이 바로 'TCP/IP 계층' 입니다.
다 같이 동일한 규약을 세워야 원활하게 네트워크 통신을 할 수 있습니다.
이를 위해 세워놓은 것이 바로 'TCP/IP 계층' 입니다.
한 나라의 사람들이 다 같이 소통할 수 있도록 모국어를 한 가지로 정해놓는 것과 다름없죠.
그렇다면, 각 계층의 역할은 어떻게 되는지 살펴보겠습니다.
응용 계층: 네트워크 애플리케이션(메시지)을 지원하고 담당합니다.
전송 계층: 프로세스 간의 통신을 담당하고 전송 과정에서 발생하는 오류를 제어합니다.
네트워크 계층: 목적지까지 전체적인 전송 경로를 계획합니다. 이것을 라우팅(Routing)이라고 합니다.
데이터 링크 계층: 이웃한 Node(라우터, 스위치 등) 중 어느 곳으로 데이터를 전송할 지 결정합니다.
물리 계층: 데이터를 본격적으로 전송합니다.
위와 같이 정리해놓으면 대략적으로 이해는 되나, 통신이 어떻게 이루어지는지 정확히 알아보기 어렵습니다 ㅠㅠ
그래서, TCP/IP 계층을 이용한 구체적인 통신원리를 알아볼 것입니다.
데이터를 전송하는 Sender 입니다.
각 계층에서 메시지를 캡슐화한 다음 최종적으로 전송하는 것인데요.
본격적으로, 위에서 언급한 각 계층의 역할을 가지고 구체적인 전송 원리를 살펴보겠습니다.
※ 설명에는 네트워크 관련 용어들이 포함되어 있습니다. 네트워크 관련 용어들을 모르신다면 바로 아래의 링크에서 개념을 이해한 후 다시 돌아와서 읽어보시기 바랍니다.
각 계층에서 수행하는 역할을 가지고 전송 원리를 설명하자면 아래와 같습니다.
Step 1.
응용 계층이 Data(메시지)를 갖고 있습니다. 하위의 전송 계층으로 내려보냅니다.
Step 2.
Data는 전송되는 중 손실이 발생할 수 있습니다. 이러한 손실을 최대한 방지하기 위해 덧붙이는 것이 있는데, 이것을 'checksum' 이라고 합니다.
전송 계층은 '포트번호'와 checksum을 메시지에 덧붙입니다. 이렇게 합쳐진 객체가 'Segment' 입니다. Data를 여러 개의 Segment로 나눈 다음 네트워크 계층으로 내려보내는 것입니다.
Step 3.
상대방한테 메시지를 보내기 전에 항상 전송 경로를 계획해놓습니다. 이것을 '라우팅(Routing)' 이라고 합니다.
네트워크 계층은 상대방의 'IP주소'를 덧붙이고 라우팅을 합니다. 이렇게 합쳐진 객체가 'Packet' 또는 'Datagram' 입니다. Segment를 Packet 또는 Datagram으로 나눈 다음 데이터 링크 계층으로 내려보내는 것입니다.
Step 4.
IP주소만 가지고는 실제로 데이터를 전송할 링크를 파악할 수 없습니다. 이것을 파악하려면 'MAC주소'가 필요합니다. IP주소를 가지고 MAC주소를 알아내는 프로토콜이 존재하는데, 이것을 'ARP' 라고 합니다.
데이터 링크 계층은 ARP를 이용해 IP주소를 가지고 MAC주소를 알아냅니다. Packet들을 Frame 단위로 그룹핑한 다음 물리 계층으로 내려보내는 것입니다.
Step 5.
물리 계층은 한 Frame씩 링크를 통해 상대방한테 전송합니다.
메시지의 변동을 짧게 요약하자면 아래와 같습니다.
Data → Segment → Packet(Datagram) → Frame
위의 설명을 이해하기 힘들어하시는 분이 계실 것 같아 비유도 준비해보았습니다.
통신 원리를 실제 상황으로 비유해보겠습니다.
왼쪽에 있는 캐릭터가 '치카' 이고, 오른쪽에 있는 캐릭터가 '요우' 입니다.
치카가 요우의 집까지 귤을 보내주는 상황이라고 가정하겠습니다.
Sender편 강의인 만큼, 치카 측에서만 살펴보겠습니다.
치카는 요우한테 귤을 보내주려고 합니다. 그러나, 거리가 너무 멀어서 차를 타고 요우네 집까지 가야 됩니다.
먼저, 요우한테 보낼 귤을 준비하고 박스에 담습니다. (응용 계층)
요우는 방 안에서 직접 귤을 받기를 원하기 때문에, 요우의 방 번호를 박스에 붙입니다. 그리고 실제로 전송할 귤의 갯수를 써서 박스에 붙입니다. (전송 계층)
요우한테 찾아가려면 당연히 요우네 집 주소가 필요하겠지요?? 요우네 집 주소 또한 박스에 붙입니다. 그리고 요우한테 귤을 배송할 방법을 어림짐작으로 계획해놓습니다. (네트워크 계층)
박스를 잘 포장해서 트럭에 실었고, 이제 치카는 트럭을 조종해서 요우네 집까지 가야됩니다. 그러나, 요우네 집 주소랑 대략적인 배송 방법은 알고 있지만, 정확히 요우네 집까지 어떻게 가야되는지는 전혀 모릅니다. 이를 알아내기 위해, 네비게이션에 요우네 집 주소를 입력해서 구체적인 이동 경로를 알아냅니다. (데이터 링크 계층)
알아낸 배송 경로를 향해 트럭을 조종해서 요우네 집으로 출발합니다. (물리 계층)
이 스토리를 잘 이해하셨다면 TCP/IP 계층과 전송 원리를 이해한 것이나 다름없다고 생각합니다.
TCP/IP 계층 Sender편은 여기서 마치도록 하겠습니다.
다음 시간에는, Receiver편을 살펴보도록 하겠습니다.
'IT강의 > 데이터통신' 카테고리의 다른 글
VPN 우회의 원리 (3) | 2020.12.26 |
---|---|
TCP/IP 계층 및 통신 원리 - Receiver편 (0) | 2020.12.26 |
소켓 프로그래밍 기초 실습 - UDP편 (0) | 2020.12.26 |
소켓 프로그래밍 기초 실습 - TCP편 (0) | 2020.12.26 |
소켓 프로그래밍의 개념 및 용어 정리 (0) | 2020.12.26 |