본문 바로가기

CS/네트워크

[Network] 프로토콜 계층(1)

반응형

이번 글은 네트워크 구조에 대해 정리해 보려고 합니다. 웹에 대해 공부를 하다 보면 TCP/IP라는 용어가 자주 등장해 그 용어 대해 이해하려고 하면 선수 지식들이 많다 보니 이번 글을 통해 초석을 다지려고 합니다. 글을 읽다가 이해가 되지 않는다거나 틀린 부분이 있다면 댓글로 알려 주시면 감사하겠습니다. (이 글은 컴퓨터 네트워크 하향식 접근방법 제8판을 참고하여 작성하였습니다.)

 

프로토콜이란?

네트워크는 프로토콜이 매우 중요합니다. 프로토콜이 무엇인지에 대해 이해를 돕기 위해 아래의 이미지를 보겠습니다.

프로토콜 이미지 (출처 : https://medium.com/@ComNetworks2014/computer-network-protocol-88280c5bccdf)

왼쪽의 이미지는 두 사람이 대화를 나누고 있습니다. 대화의 내용은 다음과 같습니다. 

  1. 여자 : Hi 
  2. 남자 : Hi
  3. 여자 : Got the time?
  4. 남자 : 2:00!

매우 익숙한 대화의 내용에서는 우리는 대화 사이에 담겨 있는 약속을 추측할 수 있습니다.

  • "안녕"이라고 인사를 했을 때 "안녕"이라는 답이 온다면 상대방은 대화할 준비가 되어 있고 몇 시 인지 물어봐도 되겠구나!

 

만약 여자의 "안녕"에 대해 남자가 "귀찮게 하지 마, 영어를 못해요" 등 대화에 부정적인 신호를 보냈다면 여자는 현재 시각을 묻는 질문을 하지 못했을 겁니다. (사람들 간의 대화에는 암묵적인 룰이 존재한다고 볼 수 있겠네요!)

 

이 대화를 네트워크 관점에서 재해석 해보겠습니다. 

  1. A 컴퓨터 : 내가 너에게 요청을 보내도 되겠니? = TCP Connection request
  2. B 컴퓨터 : 응 나한테 요청 보내도돼! = TCP Connection response
  3. A 컴퓨터 : (request) https://www.google.com
  4. B 컴퓨터 : (response) file

네트워크에 연결된 컴퓨터들 간에도 데이터를 주고받을 때 송신 측 컴퓨터가 보내도 되는지를 먼저 확인 요청 보내고 수신 측 컴퓨터가 보내도 된다는 응답을 보냈을 때 그때 송신 측 컴퓨터가 요청을 보낼 수 있게 됩니다.(사람의 대화와 매우 유사한 관계가 있네요!)

 

정리하자면 프로토콜이란 송수신측 컴퓨터들 간의 데이터를 전송하는 데 있어서 일련의 약속입니다. 이 약속을 통해 특정 상황이 발생했을때 행동들을 미리 규정하고 그대로 행동하게 되는 것입니다.


네트워크의 구조

네트워크의 구조는 아래의 이미지처럼 매우 복잡한 구조를 가지고 있습니다.  프로토콜 계층에 대한 이해를 위해 네트워크의 구조에 대해 간단히 정리하고자 합니다. 

네트워크 이미지(출처:https://tails5555.github.io/network-concept)

먼저 UserA, UserB, Internet Service, IP Phone 등 네트워크의 마지막에 위치한 인터넷에 연결된(네트워크 가능 기기들)을 호스트(Host) 또는 종단 시스템(end system)이라고 부릅니다. 우리가 Java, Python등으로 애플리케이션을 개발하는 것들은 모두 종단 시스템이라고 볼 수 있습니다. 

 

다음으로 파란색으로 보이는 동그라미들은 패킷 스위칭이라고 하며 라우팅(길찾기)을 담당합니다. 이 패킷 스위칭이 필요한 이유를 설명하기 위해 패킷 스위칭이 없이 네트워크를 설계한다고 가정하겠습니다. 이 상황에서 호스트들은 데이터를 송수신하기 위해 링크(패킷 = 데이터 이 전달되는 연결통로 라고 생각하시면 됩니다.)를 직접 연결해야 합니다. 만약 호스트의 수가 1억 개 있다고 가정한다면, 링크로 직접 연결하는 상황은 매우 비효율적이며 경제적이지 못합니다(네트워크의 핵심은 경제성에 있습니다.) 때문에 링크를 직접 연결하는 것이 아닌 패킷 스위치를 통해 호스트들 간의 연결을 라우팅 하도록 네트워크를 설계하는 것이 훨씬 경제적입니다. 

 

다음 글에서 프로토콜 계층에 대한 핵심 내용을 다루도록 하겠습니다. 

반응형

'CS > 네트워크' 카테고리의 다른 글

[Network] 프로토콜 계층(2)  (0) 2022.10.09
HTTP 상태 코드  (0) 2022.08.25
HTTP/1.1 과 HTTP/2 의 차이점  (0) 2022.03.06
GET 과 POST의 차이  (2) 2022.01.13
IP, Gateway,Subnet 이란?  (0) 2022.01.04