목록CS 지식/네트워크 (18)
개발놀이터
우리가 파일을 다운로드 하는 경우는 정말 흔하게 일어나죠. 그 중에서 이번 포스팅에선 TCP프로토콜을 이용해서 파일을 다운로드 하는 경우에 패킷이 어떤 흐름으로 이동하는지에 대해서 공부해보고 정리해봤습니다! 패킷 한 조각의 모험, 바로 시작해보겠습니다! 패킷의 여행보통 대부분의 네트워크는 TCP/IP 프로토콜을 이용하는 것으로 알고 있습니다. 때문에 이번 포스팅에서도 TCP프로토콜에 한정하여 이야기해보도록 하겠습니다. 서버는 우리 컴퓨터와 네트워크로 연결하기 위해 TCP/IP 프로토콜을 사용합니다. 서버는 TCP연결을 위해 소켓을 여는데 이 소켓은 유닉스 체계에서 파일로 이루어져 있습니다. 파일을 들고 있는 서버는 웹 서버라고 한다면 이 웹 서버는 프로세스 위에서 동작합니다. 즉, 추상화 해보면 프로..
오늘은 WebRTC와 미디어서버에 대해서 알아보도록 하겠습니다. 회사에서 미디어서버를 도입하여 공부하는김에 포스팅까지 해보려고합니다. 우선 WebRTC에 대해서 설명하고 넘어가야겠죠? WebRTC WebRTC를 설명하기 전에 TCP와 UDP에 차이에 대해서 짚고 넘어가도록 하겠습니다. 취준생 단골 질문이기도 한 TCP와 UDP에 차이는 조금만 깊이있게 공부하면 머리가 어지러워지는 상황에 봉착합니다. 제가 TCP의 흐름제어와 혼잡제어에 대해서 올린 포스팅도 있으니 한번 참고해주세요! https://coding-review.tistory.com/466 네트워크 흐름제어와 혼잡제어 (Flow Control, Congestion Control) 우리가 흔히 말하는 네트워크 통신은 TCP 3way handshak..
우리가 흔히 말하는 네트워크 통신은 TCP 3way handshaking에 의해 일어납니다. 그리고 TCP에 대해 조금 공부해보신 분들은 UDP와의 차이도 말할 수 있죠. UDP와 다르게 TCP는 전이중 방식과 점대점 방식 그리고 흐름제어와 혼잡제어를 통해 높은 신뢰성을 줄 수 있다고 말이죠. 잠시 설명하자면 전이중 방식은 전송이 양방향으로 이어진다는 뜻이고 점대점 방식은 각 연결점이 종단점을 가진다는 것입니다. 하지만 흐름제어와 혼잡제어는 그냥 외우기만해서 잘 모르더라구요. 이 부분에 대해서 본격적으로 공부해봤습니다. 흐름 제어 흐름 제어는 송신자와 수신자 사이에 버퍼(데이터를 받을 수 있는 용량)를 관리하기 위해 나온 방법론입니다. 만약 송신자가 수신자에게 엄청나게 큰 데이터를 넘겨준다고 생각해봅시다..
이번 포스팅에서는 TCP 3 way handshaking에 대해서 알아보도록 하겠습니다. TCP 3 way handshake는 두개의 장치가 연결을 수립하고 해제하는 단계인데요. 이렇게 통신 하는 것이 통신에대한 신뢰성이 올라가기 때문입니다. 이름이 handshake인 이유는 두 사람이 지인으로 발전하게 되는 첫 단계가 악수이기 때문이지 않을까 하는 개인적인 생각입니다. 그럼 시작해보죠! TCP 3 way handshake 3 way handshake는 서버와 클라이언트가 연결하는 TCP / IP 네트워크 매커니즘입니다. 실제 데이터가 오가기 전에 클라이언트와 서버가 Synchronization과 Acknowledgment 패킷을 주고받는 과정이라고 생각하시면 됩니다. TCP Segment 구조 모든 T..
이번 포스팅에서는 검색창에 google.com 을 입력했을 때 내부적으로 어떤 일이 벌어지는지 알아보도록 하겠습니다. 이 내용이 면접 단골질문이라고 하더라고요. 알아두시면 잘 써먹을 수 있을 것 같습니다. 특히 OSI 7계층 / TCP 4계층과 엮어서 잘 물어본다고하니 해당 개념에 대해서도 잘 알아두시면 좋을 것 같습니다. OSI 7계층에 대해서는 아래의 링크에서 확인해보세요! https://coding-review.tistory.com/298 OSI 7 계층, TCP / IP 4 계층 네트워크를 공부할 때 OSI 7계층이나 TCP 4계층에 대해서 들어본적이 있을겁니다. 우리는 이번 포스팅에서 OSI 7계층, TCP 4계층이 무엇인지, 이 둘의 차이는 무엇인지, 이 계층을 알면 뭐가 좋은지에 coding..
인터넷에 있는 모든 것들은 프로토콜에 의하여 컨트롤됩니다. 프로토콜이란 인터넷을 통해 모든 데이터가 운반될 때 직접, 혹은 간접적으로 따라야 하는 규약이나 가이드라인이죠. 이 네트워크 프로토콜에도 두가지 프로토콜이 대표적인데, 바로 이번 포스팅에서 알아볼 Stateless, Stateful 프로토콜입니다. 이 둘을 프로토콜 혹은 아키텍처라고도 부르는데요. 아키텍처는 말이 어렵지만 그냥 방법론이라고 생각하시면 됩니다. 즉, Stateless, Stateful을 구현할 수 있는 다양한 방법이 있다는 얘기이죠. 이번 포스팅에선 그런 방법론적인 얘기보다는 Stateless, Stateful이 각각 무엇인지, 그리고 이 둘의 차이는 무엇인지에 대해서 알아볼까합니다. Stateful Architecture Stat..
이번 포스팅에서는 로드 밸런싱에 대해서 알아볼 예정입니다. 로드 밸런싱이란 쉽게 말해서 트래픽을 분산 처리 해주는 시스템인데요. 이름 그대로 짐 (Load) 을 나눠주는 (Balancing) 시스템이죠. 요즘 IT 대기업을 필두로 엄청난 트래픽이 유발되고 있죠? 점심시간에 폭주하는 트래픽을 감당해야 하는 배달의 민족이나 명절 때 엄청난 트래픽을 감당해야 하는 쿠팡까지 로드 밸런싱을 사용하지 않는 기업은 없을 것 같은데요. 우리는 이번 포스팅에서 로드 밸런싱이 무엇인지, 로드 밸런싱을 구현한 알고리즘은 뭐가 있는지, 로드 밸런싱에는 어떤 것들이 있는지에 대해서 알아보도록 하겠습니다. 로드 밸런싱 (Load Balancing)로드 밸런싱은 둘 이상의 컴퓨터 사이에서 작업을 분산시켜주는 작업을 뜻합니다..
이번 포스팅에선 동기화 프로그래밍, 비동기화 프로그래밍에 대해서 알아보도록 하겠습니다. 동기화 프로그래밍과 비동기화 프로그래밍은 네트워크 공부를 하다보면 쉽게 접할 수 있는 주제입니다. 그만큼 중요한 주제이기도 하죠. 이번 포스팅에선 동기화, 비동기화 프로그래밍이 무엇인지, 둘의 차이는 무엇인지, 둘의 장단점은 무엇인지, 둘의 사용처는 어디인지에 대해서 자세히 알아보도록 하겠습니다. 동기화, 비동기화의 특징 동기화 동기는 Synchronous 줄여서는 sync라고도 부릅니다. 동기는 Blocking Architecture라고도 불리고 반응형 시스템을 위한 프로그래밍을 할 때 사용하면 좋습니다. 동기는 굉장히 엄격한 순서를 가지고 동작하는데 request한번 response한번 이렇게 한 세트로 동작하는데..
네트워크를 공부할 때 OSI 7계층이나 TCP 4계층에 대해서 들어본적이 있을겁니다. 우리는 이번 포스팅에서 OSI 7계층, TCP 4계층이 무엇인지, 이 둘의 차이는 무엇인지, 이 계층을 알면 뭐가 좋은지에 대해서 알아보도록 하겠습니다. 우선 포스팅에 들어가기 앞서 OSI 7계층과 TCP 4계층은 크게 다르지 않다는 것을 말씀드리고 시작해보겠습니다. OSI 7계층 OSI 7계층과 TCP 4계층을 그림으로 나타내면 다음과 같습니다. 우선 OSI 7계층이 뭔지 알아야겠죠? OSI는 Open System Interconnection의 약자입니다. 이름만 봐도 대충 어떤 느낌인지 알것 같습니다. OSI 모델은 컴퓨터 시스템이 네트워크위에서 의사소통을 위해 사용되는 일곱개의 층입니다. 즉 OSI 7계층은 네트워..
우리는 이전 시간 RESTful API에 대해서 알아봤습니다. 그리고 크리티컬한 단점인 유연하지 못하다는 특징에 대해서도 잠깐 알아봤죠. RESTful이 유연하지 못하다는 것은 앞서 설명했듯이 요구사항이 계속 추가될 때마다 새로운 API를 만들어야 한다는 것도 있지만 Over Fetching, Under Fetching 이 두가지 문제도 큰 문제 중 하나입니다. 이번 포스팅에서는 RESTful API가 가진 한계에 대해 자세히 알아보고 그 대안책으로 나온 GraphQL에 대해 자세히 알아보도록 하겠습니다. RESTful API의 한계 REST API의 한계는 너무 명확합니다. 요구사항이 추가될 때마다 새로운 API를 만들어야 하기 때문에 유지보수가 장난아니게 힘들다는 점이 크리티컬했죠. REST API는..