본문 바로가기

전체 글23

How Netflix tunes network kernel 먼저 넷플릭스는 우분투 리눅스를 바탕으로 한다. 넷플릭스에서 네트워크 부분에서 수정하는 것들은 아래와 같다. net.core.somaxconn = 1024 net.core.netdev_max_backlog = 5000 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.ipv4.tcp_wmem = 4096 12582912 16777216 net.ipv4.tcp_rmem = 4096 12582912 16777216 net.ipv4.tcp_max_syn_backlog = 8096 net.ipv4.tcp_slow_starter_after_idle = 0 net.ipv4.tcp_tw_reuse = 1 net.ipv4.ip_local_port_range .. 2019. 12. 12.
TCP/IP Congestion Control 1. Congestion이 발생하는 경우 그림처럼 두 노드가 1GB 링크를 통해 데이터를 전송하는데, 두 노드가 링크의 용량을 최대한으로 활용해서 데이터를 전송할 경우 중간 지점에서 데이터의 손실이 발생하는 것이다. TCP의 경우 전송하는 노드가 데이터의 손실을 감지하면 해당 데이터를 재전송하기 때문에, 위와 같은 경우 두 노드는 영원히 데이터를 전송하는 지옥에 빠질 것이다. 때문에 위와 같은 문제를 해결하기 위해서는 두 노드가 모두 데이터를 보내는 양을 조절해야하 하는데, 네트워크 상에서는 각 노드에게 얼마만큼의 데이터를 전송하라고 지시하는 중앙 노드가 없기에 이 문제를 해결하는게 쉽지는 않다. 한 가지 더 고려해야 할 점은, 노드가 자신이 사용하는 링크들의 용량을 알 수 없다는 것이다. 지금 내 노트.. 2019. 11. 21.
TCP / IP 흐름제어 ( flow control ) 1. Flow Control 모두가 알다시피 네트워크는 꽤 불안전하다. 여전히 데이터는 손실되기도 하고, 엉뚱한 데이터를 주고받기도 하며, 송신자와 수신자가 서로를 영원히 기다리는 현상이 발생하기도 한다. 그러나 이런 상황에서 우리 프로그래머들은 걱정하지 않는다. 이유는 TCP가 데이터를 확실하게 주고 받을 수 있도록 해주기 때문이다. 이때, TCP가 해주는 것 중 하나가 바로 Flow Control 이다. 이 기능의 개념은 이렇다. "데이터를 수신하는 노드가 전송하는 노드에게 현재 자신의 상태에 대한 정보를 보내주는 것이다." 2. What is the Problem? 지금 우리는 송신자의 데이터 전송 속도와 수신자의 데이터 처리 속도의 차이로 인한 문제에 집중해볼 것이다. 송신자의 데이터 전송 속도가.. 2019. 11. 14.
웹 브라우저에 URL을 입력하고 첫 화면이 출력되기까지 React 프레임워크를 활용하든, php를 활용하든 웹 페이지를 만들어본 경험이 있는 사람들은 많을 것입니다 때문에 첫 페이지가 출력된 이후의 과정에 대해서는 대부분 잘 설명할 수 있을 것입니다.(자신이 활용하는 도구에 한 해). 그런데, 웹페이지가 화면에 출력되기까지 어떤 과정을 거치는지는 잘 모를 수 있을 것 같습니다. 그래서 웹 브라우저에 URL을 입력하고 웹 페이지의 화면이 출력되기까지의 과정을 살펴볼까 합니다. (왜 학부에서 네트워크를 배우는지 깨닫게 되는 순간이었습니다.) 1. 일단, 웹 브라우저에 URL을 입력하고 Enter를 클릭합니다. 2. 그럼 바로 URL의 주소로 이동 웹 브라우저가 입력한 URL을 분석하며 일을 하기 시작합니다. (다음은 URL 구조입니다.) Scheme://:@:/.. 2019. 11. 7.
Javascript - 동기, 비동기에 대한 설명 javascript는 단일 쓰레드 기반 언어로 한 번에 한 가지 일만 처리할 수 있다. 때문에 이런 문제가 발생할 수 있다. 예를 들어, 이미지를 네트워크로부터 받아와 출력하는데 3초, 텍스트 출력에 1초가 걸린다. 그리고 1. 네트워크에서 이미지 받아오고 해당 이미지 출력 명령어 2. 텍스트 출력 명령어 와 같은 순서로 코드가 짜여져 있으면, 사용자는 빈 화면에서 이미지가 출력될 때까지 기다려야 한다. 즉, 사용자가 불편하다! 이렇게 I/O 작업이나 네트워크 작업(fetch와 같은 작업)과 같은 것을 수행하는 작업을 비동기함수라고 한다. 이런 비동기 함수는 WEB API가 처리한다. (처리한 결과를 event queue에 결과를 넘기고 event loop는 stack이 비었는지 계속 확인을 하다가 st.. 2019. 10. 29.
OSI 7 계층 - Network Layer 일단 이번 계층인 3 계층까지 왔으면, 기본 개념을 파악할 때는 반 정도 왔다고 본다. Network Layer 네트워크 계층은 IP 주소를 바탕으로 Router를 통해 데이터를 주고받는 것에 주로 관여한다. 한 마디로 정의하면 다음과 같다. Router을 통해 최적의 경로로 Data Packet을 전달하는 역할을 담당하는 계층이다. - 주요업무 1. 데이터 Router 경로를 제공 2. Transport Layer의 서비스 요청을 Data Link Layer에 전달 3. Connectionless!!!!!!!!!! 드디어 Connectionless 개념이 나왔다. UDP를 의미하는데, 이와 반대되는 Connection-Oriented에 해당하는 TCP는 Transport Layer에 적용된다. 머전 C.. 2019. 10. 24.
OSI 7계층 - Data Link Layer 이제 2층이다. 개인적으로 제일 복잡하다 생각하다고 생각하는 층 중 하나이다. (뭔가 알아야할게 많다.) 2. Data Link Layer 데이터 링크 계층에서는 이름처럼 데이터와 관련된 일을 처리한다. 이 계층의 핵심은 Data를 Frame으로 보낸다는 것과 Mac 주소, VLAN이 아닐까. 어쨌든 이 계층을 한 마디로 설명하자면 이렇다. 동일한 네트워크 세그먼트에서 두 장비 사이에 데이터 전송을 담당하는 계층 -주요업무 1.비트 오류 처리 2.상위 계층과 피지컬 계층 연결 3.Frame 단위로 데이터 전송 4.주로 소프트웨어로 구현되는데, 스위치 등에 임베디드 형태로 설치되는 경우가 많다. -Frame 구성 Header - Payload - SRC ( SRC도 중요함! 밑에서 설명, 아 물론 안 중요.. 2019. 10. 24.
OSI 7계층 - Physical Layer OSI 7 계층에 대해 알아보자. 먼저 OSI 7 계층은 네트워크를 7단계로 나누어 각 계층마다 서로 다른 임무를 책임지는 것이다. 각 계층은 자신이 할 일만 하면 되고, 다음 계층으로 데이터를 전송하고 자신의 위 계층과 아래 계층을 연결해주면 된다. 자 그럼 이제 1층에서부터 차근차근 올라가 보자. 1. Physical Layer 피지컬 레이어, 이름 참 직관적이게 잘 지었다. 이 계층에서는 물리적인 것을 다룬다. 간단하게 다음과 같이 기억하면 된다. 물리적 기기에서 물리적 특성과 기능을 설정하여 데이터를 전송하도록 하는 계층. -주요 업무 1.비트 처리 방식 결정 (예, 0~1v의 전기 신호는 '0'을 3~5v의 전기 신호는 '1'을 의미한다! 와 같이) 2.데이터 전송 속도 결정 3.데이터 전송 형.. 2019. 10. 24.
Delay in data transfer 한 노드에서 패킷을 라우터로 전달한 이후, 라우터 간에 패킷을 전달하면서 발생하는 delay를 확인해보자. 라우터 A => 라우터 B로 패킷을 전달할 때. Processing Delay : 패킷 해더를 분석해 목적지를 판단하고, 비트에 오류가 있는지 확인한다. 이 과정에서 발생하는 Delay. (부산으로 가는지, 광주로 가는지 목적지를 확인하고 가는 놈이 사람인지 동물인지 판단하는 느낌) Queuing Delay : 패킷이 라우터A에 도착해 Processing 과정을 진행한 이후 목적 라우터로 보내지기 위해 Queue에 들어가서 대기하는 데 걸리는 Delay. 만약, 먼저온 패킷이 없다면 여기서 발생하는 Delay는 0이 된다. ( 광주행 순간이동기를 타기 위해 줄 서서 기다리는 것과 같음, 먼저 온 사.. 2019. 10. 23.