2014-02-11 3 views
1

나는 boost :: asio를 사용하여 비동기 C++ TCP 네트워크 클라이언트/서버를 작성하고 있는데, 사용 환경에 따라 둘 다 견고해야한다. 저의 가장 큰 관심사는 연결이 잘못 되었기 때문에 과거에는 문제를 찾기가 어려웠습니다.TCP 연결을 손상시키는 좋은 방법

앱을 작성할 때 일반적으로 연결 상태가 양호하거나 우수합니다. 필요한 것은 패킷 손실, 손상, 대기 시간 급상승 및 기타 문제로 모든 종류의 불량 연결을 시뮬레이트하는 좋은 방법을 찾는 것입니다.

내가 할 수있는 드라이버 나 소프트웨어가 있습니까?

+0

Mac OS X에는 네트워크 대기 시간, 속도 및 패킷 손실을 설정할 수있는 미리보기가 있습니다. iOS에도 동일하게 적용됩니다. 다른 플랫폼에 대해 모르십시오. 자세한 내용은 다음을 참조하십시오. http://nshipster.com/network-link-conditioner/ –

+0

이것은 쓸모없는 노력입니다. TCP는 악성 코드 (_micious_)가 아닌 손상을 감지하는 체크섬을 수행합니다. 또한, 패킷 손실 및 증가 지연에 영향을 미치는 수단을 많이 사용하지 않고 투명하게 처리합니다. 사실, 그런 종류의 물건을 시뮬레이션하는 것은 꽤 쓸모가 없습니다. – Damon

+0

recv-call 당 단 1 바이트 만 수신하는 것이 더 좋습니다. – pindumb

답변

2

몇 가지 상용 제품이 있습니다. 일부는 좋지 않습니다. 그것들은 분명히 매우 플랫폼에 특화되어 있으며 여러분이 선택한 플랫폼에 대해 아무 것도 말하지 않습니다. 당신이 지적하는 종류의 문제는 OS 레벨, 부스트/C++는 그런 것과 관련이 없습니다.

손상의 경우 트래픽에 암호로 서명하지 않는 한 실제로는 소유권을 주장 할 수 없습니다.

+0

응용 프로그램은 Linux와 Windows 모두에서 작동해야합니다. 당신이 염두에두고있는 솔루션의 이름을 붙일 수 있습니까? –

+0

[netlimiter] (http://netlimiter.com/), [dummynet] (http://info.iet.unipi.it/~luigi/dummynet/) –

2

TCP는 상당히 견고합니다. 이미 패킷 손실, 손상 (임의 비트 플립, 공격이 아님) 및 조절을 담당합니다. 응용 프로그램에서 처리 할 수있는 유일한 기능은 대기 시간 급증과 연결 끊김입니다.

당신은 방법을 읽거나 임의의 시점에 연결을 임의적으로 지연시킴으로써 상당히 좋은 마일리지를 얻을 수 있습니다.

그러나 가장 좋은 방법은 앱에 대한 최악의 시나리오를 생각하고 그 중 몇 가지를 테스트하는 것입니다.

관련 문제