dev-writeup-2024 / january

개발 1일 1글 스터디
2 stars 0 forks source link

[01-09] 네트워크 기초 (TCP/IP 5계층 부터 프로토콜 까지) #40

Open Kjm04175 opened 9 months ago

Kjm04175 commented 9 months ago

TCP/IP 5계층

서론

1월 8일 글의 마지막에서 언급한 대로, 본디 오늘은 컴퓨터 비전에 대한 내용을 다루려 했습니다. 하지만 도통 무엇을 다루어야 할지 주제를 잡을 수가 없더군요. 이미 저희 글쓰기 파티에서 transformer, diffusion, multimodal을 다루었다 보니, 최신 핫 한 주제가 남아나지를 않습니다.

그래서 면접 준비도 하며 시간 벌이도 하는 겸 CS의 일익을 담당하고 있는 네트워크를 끌고 와 보았습니다. 아마 다루는 내용은 교과서에 나오는 원론적인 이야기가 되지 않을까 싶습니다. 대신, 인터넷의 글을 그대로 베껴 쓰기 보다는 곱씹어본 후 제 말로 바꾸고 유머를 첨가해 읽기 쉽게 만드는 것을 목표로 하고 있습니다.

아마 4~5회 차에 걸친 시리즈가 되지 않을까 싶은데, 바로 시작해보도록 하겠습니다.

TCP/IP 5계층

image

TCP/IP 5 계층을 좀 크게 한번 그려봤습니다. 바로 레이어 설명으로 들어가기 전, 데이터를 다루는 중요한 용어 3가지를 알아보고 갑시다.

  1. 세그먼트 : 데이터의 실질적인 전송을 위해 적절한 크기로 분할한 조각
  2. 패킷: 전송을 위해 분할된 세그먼트에 목적지까지 전달을 위해 source ip, destination ip를 붙인 메세지
  3. 프레임: 최종적으로 데이터를 전송하기 전 MAC adress를 넣은 메세지

이제 각 레이어들이 무슨 역할을 수행하는지 기능 적으로 한번 알아봅시다.

  1. Phycical layer : 장치와 장치의 물리적인 연결. 데이터 포맷이 없다.
  2. Link layer : 데이터를 프레임화 하고, 에러 제어, 흐름 제어, 접근 제어 등을 수행
  3. Network layer : 데이터에 헤더를 붙이고 쪼개고 라우팅을 수행
  4. Transport layer : 프로세스에 대한 목표 지정, 메시지를 세그먼트화, 분할
  5. Application layer : 응용프로그램 레벨에서 정보 교환을 수행

전송 계층에서 데이터를 세그먼트화 하고, 네트워크 레이어에서 패킷화를 진행하며, 링크 레이어에서 프레임화를 수행합니다.

이 과정을 빈고의 택배 발송 / 수신과 함께 살펴봅시다. [이미지 작성 중]

TCP/IP 5 계층 vs OSI 7 계층

네트워크에는 다양한 계층 종류가 있습니다. 어플리케이션이나 네트워크 이런 레이어 종류를 말하는 것이 아니라 OSI 7 계층, TCP/IP 5계층, TCP/IP4 계층 같은 레이어를 나누는 기준 자체가 여럿 있다는 의미입니다.

image

이걸 다 외워야 하는 걸까요? 전 죽어도 못 외울 것 같습니다.

저는 그레이트한 변화가 발생하는 hello world와 byebye world를 기억하는 것 보다 코딱지만큼 바뀌는 hello world와 hello wrold의 차이를 기억하는 것이 더 힘들거든요.

저는 네트워크 수업을 들을 때 TCP/IP 5계층 으로 배웠는데, 당시 교수님은 '어차피 부르는 이름만 다를 뿐 안의 의미는 다 같다. 면접에서 면접관이 OSI 7 계층에 대해 물어본다면, TCP/IP 5계층으로 배웠습니다~로 빌드업 해라!' 라고 하셨습니다.

이럴거라면 이름을 왜 다르게 지어 놨을까요?

하지만 자료 조사 중 알게 된 것인데, OSI 7 계층과 TCP/IP 5 계층은 엄연히 다른 것이라 합니다. 두 분류 방식은 계층에 존재하는 프로토콜의 특징들이 다르게 나타내기 때문에 직접적인 비교를 수행해서는 안된다 말하고 있습니다. 대개 SSL이나 TLS를 다루는 구시대 인터넷을 다룰 때 OSI 계층이 더 잘 들어맞고, 인터넷을 설명할 때는 TCP/IP 5 계층이 더 잘 들어맞는다 합니다.

TCP / IP 5 계층의 프로토콜

프로토콜이란?

프로토콜이란 컴퓨터, 전자기기 간의 원활한 통신을 위해 지키기로 한 규약으로 신호 처리, 암호, 인증, 주소 등을 의미합니다. 일종의 컴퓨터의 언어 체계라고 보아도 될 것 같습니다. 프로토콜이라 부르면 굉장히 전문적으로 보이고 어려워 보이지만, 프로토콜은 단순한 약속일 뿐입니다.

대충 예를 들어보죠.

자! 강아지들을 기르고 있다고 생각해봅시다. 저는 강아지에게 밥을 줄 때마다 굿 모닝 벨 알람을 울리고 있습니다. 이제 강아지들은 굿 모닝 알람을 들을 때마다 밥을 달라고 후다닥 달려옵니다. 벨만 울리고 밥을 안주면 물어 뜯기겠죠. [벨을 울리면] - [밥을 준다] 라는 일종의 통신 규약이 형성되어 있기 때문입니다.

[차선 양보를 해주면] - [깜빡이를 켠다] 역시 일종의 Driver-Protocol의 일종이겠죠.

대표적인 프로토콜

프로토콜의 종류는 정말 많습니다. 전부 살펴볼 수는 없으니, 등장 빈도가 높은 몇 가지 프로토콜을 살펴봅시다.

이 프로토콜들에 대한 내용은 향후 따로 하나하나 다루어보도록 하겠습니다.

결론

네트워크에 대한 내용을 하나하나 정리하고 있다 보니, 생각보다 정리할 내용이 많았습니다. 글 쓰기 전에도 혼자 선행 좀 해보고 글로 정리해 나가겠습니다.

neolgu commented 9 months ago

[차선 양보를 해주면] - [깜빡이를 켠다] 가 아니라 비상등을 켠다가 맞는 말이에요. 이래서 카트라이더 L3 라이센스 밖에 없는 애들은......

steammando commented 9 months ago

안녕 왈도!

snaag commented 9 months ago

오 취업하자마자 싸악 까먹어버린 네트워크네요!!!! 많은 도움이 되었습니다 👍🏻