개요클라이언트와 서버 간 통신 과정에서, 어떠한 이유로든 둘 중 하나가 제 기능을 할 수 없게 되는 일이 종종 발생한다. 그러나 한 쪽의 무응답으로 인해 다른 한 쪽이 영영 응답을 대기할 수는 없는 노릇이다.이러한 난감한 상황을 해결하기 위해 존재하는 설정이 바로 타임아웃(Timeout)이다. 이 타임아웃 값을 잘 설정하면 클라이언트와 서버가 불필요하게 시간과 리소스를 낭비하는 것을 상당히 개선할 수 있다.오늘은 웹 서비스를 제공하기 위한 TCP/HTTP 통신 과정에서 주로 발생하는 타임아웃에는 어떤 것들이 있는지 알아보고, 이들을 어떻게 잘 다룰 수 있는지를 클라이언트와 서버 각각의 시점으로 확인해보는 시간을 가지고자 한다.오늘 알아볼 타임아웃의 주제는 아래와 같다.Connection TimeoutRe..
사이트에 연결할 수 없음 (DNS_PROBE_FINISIHED_NXDOMAIN)최근에 하나의 애플리케이션 서버를 구축하고 배포한 뒤 당당하게 도메인으로 접속했는데 아래 화면을 만난 적이 있다. 해당 화면은 잘못된 사이트에 접속하면 쉽게 만나볼 수 있는 화면이다.그렇다면 이 화면이 보여지는 이유는 뭘까? 하단의 오류명이 DNS로 시작하는 것을 보아하니, DNS와 관련이 있어 보인다.그래서 우선은, 브라우저의 URL 입력창에 접근하고자 하는 URL을 입력했을 때 무슨 일이 일어나는지를 먼저 되짚어봤다.브라우저는 먼저 URL을 분석하여 URL로부터 도메인을 추출한다.(https://admin.devpanpan.com → admin.devpanpan.com)도메인으로부터 IP 주소를 얻어내기 위해 DNS 서버에..
IP 주소는 A부터 E까지 총 5개의 클래스로 구성된다. 다섯 가지 클래스는 다음과 같이 구성된다. 위 그림을 통해 알 수 있는 한 가지 사실은 IP를 나타내기 위해 사용되는 비트의 수가 다르다는 것이다. IP를 나타내기 위한 비트를 제외한 비트는 모두 호스트를 할당하는 비트로 사용된다. 즉, 클래스별로 할당 가능한 호스트의 수가 다르며, A클래스가 가장 많고 C 클래스로 갈수록 줄어든다. 일반적으로 클래스 A는 대규모 네트워크에, 클래스 B는 중간 규모의 네트워크에, 클래스 C는 소규모 네트워크에 사용된다. D와 E는 멀티캐스트, 연구 등에 사용되기 위한 클래스이지만 잘 사용되지 않는다고 한다. 또한, IP는 사설 IP와 공인 IP로 나뉜다. 사설 IP는 특정 네트워크 내에서 사용하는 상대적인 주소라면..
▶ 왜 계층화를 이용하는가? * 복잡한 시스템을 다루기 위함. * 명시적 구조는 복잡한 시스템 조각 간 식별과 관계 정의를 도움 * 모듈화는 시스템의 유지보수를 쉽게 함 ▶ ISO/OSI reference model * network edge간 통신을 위해 ISO 회사가 만든 OSI 7계층 * 계층을 거치며 데이터는 Encapsulation(캡슐화)되고, Decapsulation(캡슐화의 역과정)된다. * Encapsulation은 헤더를 붙이는 과정, Decapsulation은 헤더를 해석하는(제거하는) 과정이다. * 각 계층마다 데이터는 우측의 명칭대로 불린다. * 애플리케이션 계층 : 네트워크 애플리케이션의 이용을 돕는다. FTP, SMTP, HTTP 등이 있다. source data → mes..
▶ 손실(loss)과 딜레이(delay)는 어떻게 발생하는가? * 라우터 버퍼에서의 패킷 지연 * transmission delay, queueing delay, 버퍼 부족으로 인한 packets dropped loss ▶ 네 가지의 패킷 지연(packet delay) * (노드)처리 지연((nodal) processing delay) : 패킷을 어떤 output link로 보낼지 결정하는 시간 * 큐잉 지연(queueing delay) : transmission을 기다리는 시간. 라우터의 혼잡도에 의존 * 전송 지연(transmission delay) : 패킷을 전송하는 데에 걸리는 시간. L/R * 전파 지연(propagation delay) : physical link의 시작점에서 도착 지점..
▶ 네트워크 코어(Network core) * 네트워크 코어(network core): 상호 연결된 라우터들의 망 * 패킷 교환(packet-switching): Packet의 input과 알맞은 output을 연결 ▶ 패킷 교환(packet-switching) * 패킷 교환은 저장 후 전달(store-and-forward) 방식으로 이루어진다. * 패킷 교환은 store-and-forward(전체 패킷을 받아야만 출력 링크로 패킷 전송 가능) 방식으로 이루어짐 * 따라서 N개의 라우터가 있고, L bits가 담긴 패킷을 R의 속도로 전송하고자 한다면 transmission delay는(N+1)(L/R)이 된다. * 큐잉 지연(queueing delay): 패킷이 도착했을 때 해당 링크가 다른 패..