나는 알고있는 두 가지 다른 TCP 메시지 프레이밍 방법의 장점과 단점을보고 있습니다.메시지 프레이밍 방법의 장단점 .NET에서
- 구분 : TCP 스트림은 구분 기호 바이트를 사용하여 고정 길이가 아닌 메시지로 분리됩니다. 데이터를 전송할 때 루틴은 메시지 프레임의 안전한 전송을 보장하기 위해 분리 문자에 대한 메시지 데이터를 점검하고이를 제거해야합니다. 데이터를 수신 할 때 루틴은 프레임을 메시지로 분리하기 위해 분리 문자 바이트를 찾는 스트림을 읽어야합니다.
EG : 사용자 [이름] \ nPassword [비밀] \ n
- 길이 프리픽스 다음 TCP 스트림은 소정의 크기의 메시지로 고장의 프리픽스를 사용하여 상태 4 바이트라고 메세지의 길이 데이터를 수신 할 때 루틴은 먼저 메시지 프레임의 길이를 결정하기 위해 접두어를 읽습니다. 데이터를 전송할 때 루틴은 전송하기 전에 메시지에 길이 접두어를 추가해야합니다.
는 EG : [MessageLength] 사용자 [이름] [MessageLength] 비밀번호 [비밀번호] 이러한 방법의
모두 크기가 다양 바이트의 스트림을 포함 할 수있는 메시지 프레임의 전송이 해석 될 수 있습니다. 상위 레벨 메시지 구조 또는 프로토콜은 관련이 없습니다.
그래서 저는 확장 성 및 성능 효율성에 중점을 둡니다. 벤치 마크 테스트를 실행해야 메시지 처리가 필요없이 가장 효율적인 처리량을 얻을 수있는 방법을 확인할 수 있습니다.
현재의 생각은 어떤 전문가도 아닙니다.
구분 된 메시지 프레임은 스트림의 각 바이트가 메시지 프레임 구분 기호가 있는지 확인해야하므로 수신 루틴 동안 효율성이 떨어집니다. 길이 - 접두사가 붙은 메시지 프레임은 항상 접두사 바이트를 읽고 나머지 메시지 프레임 스트림은 전체 메시지 프레임이 수신 될 때까지 처리하지 않고 곧바로 버퍼로 이동합니다.
길이 - 접두사가 붙은 메시지 프레임은 메시지 자체 앞에 전송되는 메시지 접두사로 보내기 루틴 중에 효율성이 떨어집니다. 내가 포함 할 수있다 생각할 수
다른 요인 : 작은 메시지 프레임의
- 많은 더 많은 패킷이 길이 - 접두사 구조 전송되는 초래할 것이다.
- 각 바이트가 구분 기호를 검사하기 위해 읽히지 않기 때문에 더 큰 메시지 프레임이 훨씬 효율적으로 길이 - 접두사 구조로 처리됩니다.
이 주제에 걸쳐 모든 빛이 좋지 않을까. TCP에 대한 메시지 프레임 구조의 차이점에 대해 좋은 자료를 찾는 것은 매우 어렵습니다.
TCP/IP의 다른 부분 인 IP를 발명하려고합니다. 이것은 효과가 없을 것입니다. 이미 있습니다. 직접 영향을 줄 수도없고 도움이 필요하지도 않습니다. TCP는 * 스트림 *입니다. 조각으로 나누면 매우 비효율적입니다. 옵션 2만이 자격이 있습니다. –
패킷으로 TCP 스트림을 통해 데이터를 전송하기 위해 구현해야하는 메시지 프레임에 대해 이야기하고 있습니다. 나는 아무 것도 발명하려고하지 않는다. 구현할 프레임의 장점과 단점에 대해 토론하려고합니다. EG. "USER [Username] \ n"과 같은 구분 된 메시지 프레임 : "\ n"은 구분 기호이므로 구분 된 메시지 프레임입니다. –