본문 바로가기

분류 전체보기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.