나의 길
네트워크(1) - 개요 본문
개발을 하며 말 그대로 컴퓨터에 대한 지식이 부족했지만 부끄럽게도 나중에 본다는 생각으로 접어 놓은 것들이 많습니다.
시간적으로 여유가 있지는 않지만 이제는 하지 않으면 영원히 하지 않을 것 같은 생각이 들어 조금씩 시간을 할애하여 공부를 해보려 합니다. (유튜브에서 시청한 2022 인프콘에서 영한님이 목표와 시스템을 만들며 살아간다고 얘기해 주신 게 맘에 와닿아서 실천!)
이 글에서는 저처럼 아예 모르는 사람들을 위해 지식을 정리해 보겠습니다.(나에게 필요한 것 위주!, 공부한 내용을 바탕으로 글을 구성하다 보니 부족한 설명과 틀린 부분이 있으면 댓글로 남겨주시면 정말 감사드리겠습니다!)

위의 그림은 네트워크의 구성입니다. 네트워크는 매우 간단하게 라우터끼리의 연결(network core)과 라우터와 end System(대표적으로 server, client)의 연결(nework edge)로 구분되고, 라우터가 데이터를 전달하는 방식은 ciruit switching(CS), packet switching(PS) 방법이 있습니다.
현재는 PS방식이 널리 보급되어 있다고 합니다. PS 방식은 인원 제한의 개념이 없는 거나 다름없어 우리가 사용하는 인터넷이 이렇게 되어 있습니다. 그 이유는 실제 인터넷을 사용하더라도 데이터를 요청하는 것은 일부분입니다. 예를 들어 정상적인 경우라면 client가 뉴스를 시청하기 위해 뉴스를 클릭하면 기사가 뜨고 기사의 내용을 읽는 것에 더 많은 시간을 할애할 것입니다. 그리고 많은 사용자들이 동시에 그 뉴스를 클릭하거나 광클을 하는 경우도 드물기 때문에 PS방식이 널리 보급되어 있다고 생각합니다.
밑의 그림은 네트워크의 계층도입니다. 가장 밑에 있는 것이 하위 계층이고, 상위 계층은 하위 계층의 서비스를 이용합니다. 이용한다는 것은 상위 계층이 하위 계층에게 바라는 점이 있다고 생각해도 무방할 것입니다. 라우터는 network Layer 까지만 존재하고, client와 server는 모든 계층이 다 존재합니다.(+이유는 라우터는 그위의 계층이 필요 없기 때문입니다.)

Application 계층의 대표적인 예는 HTTP, FTP 등이고, Transport 계층의 대표적인 예는 TCP, UDP, Network 계층의 대표적인 예는 IP, Link 계층의 대표적인 예는 Wifi, LTE/3G, 이더넷 등이 있습니다. 각 계층의 대표적인 것들을 보면 다 P로 끝나는 것을 알 수 있습니다. Protocol로 요청과 응답을 할 때마다 서로 다른 형식으로 소통하게 되면 효율성이 떨어져 이렇게 많은 규약들이 생긴 것 같습니다.
저에게 익숙한 Application(이하 App) 계층과 Transport 계층(이하 Tr)을 살펴보겠습니다. 저처럼 웹 개발을 경험하신 분들은 익숙하신 용어들이 있으실 것 같습니다.
먼저 Tr의 TCP와 UDP는 socket을 이용한 개발을 할 때 한 번쯤은 본 적이 있으실 겁니다. 먼저 대표적인 특징으로 TCP는 신뢰성이 있고, 보내는 데이터의 순서를 지켜주고, 받는 사람의 능력에 맞춰 보내고, 네트워크의 상황에 따라 통신합니다. 반대로 UDP는 연결이 없고, 위에 고려사항을 대부분 고려하지 않습니다.
그럼 왜 UDP를 사용할까라는 생각을 했습니다. TCP는 많은 것들을 체크하기 때문에 상대적으로 속도가 느리고, 실시간 처리처럼 데이터가 몇 개 유실되더라도 큰 이슈가 되지 않거나, 비용 절감을 이유로 사용한다는 답을 해주셨습니다. 이외에도 제가 알지 못하는 많은 이유들이 있을 거라고 생각합니다. 세상에 아무 이유 없이 존재하는 것은 없을 것 같거든요.
App에서 가장 친숙한 HTTP(Hyper Text Transfer Protocol)는 간단히 생각하면 client와 server의 요청/응답 형태입니다. 특징은 TCP를 사용하고 상태를 기억하지 않는다는 것입니다. HTTP가 TCP를 이용하는 방법은 2가지로 나뉩니다. 요청과 응답 후 TCP 커넥션을 끊으면 non-persistent, 커넥션을 유지하면 persistent 방식, 현재 웹은 persistent이 주로 사용됩니다. App은 OS에서 제공하는 인터페이스만 사용 가능합니다. 여기서 위에 나온 socket을 함께 말하자면 socket은 OS에서 제공하는 API입니다.

위의 그림은 TCP 방식으로 socket 프로그래밍을 할 경우 큰 그림을 나타내는 본 것입니다. TCP 방식의 특징처럼 6번 연결을 하고 요청과 응답을 주고받고 client가 close를 하면 서버도 close를 하는 방식입니다.(+ 교수님께서 이 강의 때 저 강의를 수강하시는 분들께 과제를 내주시더라고요 저도 시간이 나면 저와의 약속으로 c언어로는 못하지만 java로 구현해 보겠습니다!)
이번 포스팅은 네트워크의 구성과 계층에 대한 포괄적인 이해와 간단하게 App 계층과 Tr 계층 그리고 socket을 통한 예로 TCP의 방식을 간단하게 알아보았습니다. 다음에는 각 계층과 그 계층에 전송 단위는 어떻게 구성되어 있는지 알아보도록 하겠습니다!
이 내용은 kocw의 이석복 교수님의 네트워크 강의를 듣고 공부한 내용입니다.
컴퓨터네트워크
인터넷을 동작시키는 컴퓨터네트워크 프로토폴을 학습한다.
www.kocw.net
'CS(Computer Science) > 네트워크' 카테고리의 다른 글
HTTP! (0) | 2024.02.18 |
---|---|
네트워크(3) - TCP (2) | 2023.04.23 |
네트워크(2) - Application, Transport Layer (0) | 2023.03.26 |