쉽게 이해하는 TCP/IP(1) - 송신자 편

오서영·2022년 3월 25일
0
post-thumbnail

내가 이해한 내용을 바탕으로 정리한 글이기 때문에 내용 상 오류가 있을 수 있음을 미리 밝힌다.

시리즈 "쉽게 이해하는 TCP/IP"에 대해

본격적으로 글을 작성하기에 앞서, 해당 시리즈의 목적을 간략히 소개하려고 한다. 시리즈 "쉽게 이해하는 TCP/IP"는 TCP/IP 프로토콜 과정을 크게 세 단계로 나누어 설명한다. 송신자 편, 송신자에서 수신자로 이동하는 과정, 수신자 편 이렇게 세 단계를 순서대로 다룬다. 단계별로 각각 글을 써서 하나의 시리즈로 묶은 것이다.

🏷️이 글의 목표

우선 아래의 그림을 먼저 보자.

(이미지 출처 : https://jhnyang.tistory.com/403?category=947031)

송신자는 Host H1으로, 수신자 Host H2에게 데이터를 전송하려 한다. 이때 Router R2~R4를 거쳐 데이터를 보내고 있다. 해당 글에서는 Host H1의 행동, 즉 송신자가 데이터를 보내기 위해 거치는 과정을 정리하려 한다.

🏷️송신자의 목적

송신자는 수신자에게 데이터를 보내고 싶어한다. 이것이 어떤 상황인지 구체적인 예시를 하나 들어보겠다.

발신 주소, 다른 말로 송신자는 내가 쓰고 있는 컴퓨터이고, 나는 이 컴퓨터의 인터넷에 접속하여 '수박'라는 단어를 구글링하고 싶다고 가정하자. 내가 해당 단어를 구글 홈페이지에서 검색하면, 구글은 구글 서버에서 관련된 내용을 찾아 내 컴퓨터에 보여준다. 이때 구글 서버가 바로 목적 주소이자 수신자가 된다고 볼 수 있다. 즉 구글 서버에게 '수박'라는 단어와 관련된 내용을 내 컴퓨터에 띄우라고 요청하는 내용이 바로 보내는 데이터가 될 것이다.

🏷️송신자의 소포 싸기

방식

송신자는 데이터를 보내는 것을 택배를 부치는 것처럼 생각하자. 이때 쉽게 생각해 택배 안에 택배를 넣는 형식으로 보내게 된다. 이를 자세히 살펴보자.

위의 이미지는 마트료시카로, 몸체 안에 더 작은 사이즈의 인형이 들어가는 형태를 여러 번 반복하는 러시아 전통 인형이다. 상자 속에 상자를 계속 넣는 방식인데, 송신자가 데이터를 보낼 때도 같은 방식을 사용한다.

구성

총 4개의 택배로 구성된다. 안쪽부터 애플리케이션 계층, 전송 계층, 네트워크 계층, 네트워크 인터페이스 계층의 택배를 순서대로 넣는다. 당연히 안쪽에 들어가는 택배 상자를 가장 먼저 넣을 것이고, 그 위에 더 큰 상자를 넣는 방식으로 택배를 부치게 된다.

그나저나 택배를 4개씩이나 쌓아서 보내는 이유가 무엇일까? 각각의 역할이 모두 다르기 때문이다. 하나씩 자세히 살펴보자.

📌애플리케이션 계층


사용자에게 직접적으로 보여지는 곳으로, 사용자에게 편리한 인터페이스를 제공한다. 예를 들어 웹 브라우저를 실행하거나 메일 전송 프로그램 등이 애플리케이션 계층이 지원하는 응용 서비스이다. 앞에서 언급한 예시에서 살펴보면, '수박'이라는 단어를 검색한 화면에 대한 요청이 바로 이 택배 내용이 될 것이다.

📌전송 계층

TCP


전송 계층의 핵심 요소가 바로 TCP이다. TCP는 택배로 보낸 물품들이 빠진 것 없이 잘 도착했는지 확인하고, 같이 오지 않고 따로따로 온 물품들은 다시 순서대로 배치하여 수신자에게 보여주는 역할을 한다.

TCP의 송신 시작

TCP는 송신을 시작하며, 수신자에게 자신이 이제 택배를 보낼 것이라고 이야기한다. 그 과정을 살펴보자.

(1) 요청(Synchronize)

송신자가 SYN 패킷을 보내며 수신자에게 "나 택배 보내도 돼?"라고 묻는 과정으로, 통신에 대한 요청을 보낸다.

(2) 요청 승인(Synchronize + Acknowledge)

수신자가 이에 SYN 패킷을 보내며 "택배 보내도 돼. 나도 너의 택배를 받을 준비를 마쳤어."라고 대답하는 과정이다. 또한 ACK 패킷을 보내며 "아 참, 너의 SYN 패킷은 잘 받았어."라고 대답한다.

(3) 확인(Acknowledge)

송신자도 다시 ACK 패킷을 보내며 "나도 너의 패킷들을 잘 확인했어."라고 대답한다.

📌네트워크 계층

IP


네트워크 계층의 핵심 요소가 바로 IP이다. IP는 택배를 목적지에 가능한 빨리, 정확하게 보내는 것을 목표로 한다.

❗TCP와 IP는 상호 보완적이다

이렇듯 TCP는 IP의 약점을 보완해준다. IP가 일단 택배를 빠르고 정확하게 보내는 것만 신경을 쓰다보니, 가다가 누락된 물품이 있는지, 손상이 났는지 등은 확인하지 않는다. 이러한 경우에 빠진 물품은 다시 요청하고, 손상이 난 물품은 교환을 받는 등의 역할을 해주는 것이 TCP인 것이다.

📌네트워크 인터페이스 계층


네트워크 인터페이스 계층에서는 실제로 택배가 이동하게 된다. 이때 택배는 이 건물, 저 건물을 경유해서 가다가 목적지에 다다르면 멈추게 된다. 이러한 네트워크 기기 간의 데이터의 이동을 실질적으로 담당하는 계층이 이곳인 것이다.

🏷️헤더의 역할


여기까지 택배 4개를 부친다는 걸 살펴봤다. 그런데 각 택배가 무슨 내용의 택배인지 수신자 측에서 어떻게 알 수 있을까? 바로 헤더를 통해서이다.
헤더는 택배 위에 붙어 정보가 적혀있는 스티커처럼, 수신자가 그 내용을 보고 어떤 행동을 해야하는지 지시해준다. 그리고 이 스티커에 각 계층에 대한 정보들이 포함되어 있다.

🏷️글을 마무리하며

이번 글에서는 발신자가 데이터라는 택배를 수신자에게 보내기 위해 어떤 순서로, 어떤 내용의 택배를 싸는지 알아보았다. 다음 글에서는 택배가 수신자에게 보내지기까지 어떤 과정을 거치는지 알아본다.

profile
개발과 보안에 관심 있는 대학생입니다😎

0개의 댓글