Java에서 DatagramPacket
을 사용하는 경우 byte[1024*1024]
버퍼가 있다고 가정합니다. 송수신 할 때 DatagramPacket에 전달하면 전체 메가 바이트를 읽을 때까지 Java가 DatagramPacket 블록에 대한 호출을 수신합니까?Java DatagramPacket (UDP) 최대 전송/recv 버퍼 크기
Java가 분할 할 것인지, 아니면 삭제되는 전체를 보내려고하는지 묻습니다.
일반적으로 크기 제한은 UDP 패킷의 경우 약 64KB이지만, Java API가 바이트 배열을 허용하기 때문에 궁금합니다. 최대 용량 인 경우 엄청난 크기가 삭제되거나 분할되어 다시 어셈블됩니다.
Java 호출에서 사용할 수있는 최대 데이터 페이로드는 어떤 API 호출에서 나옵니까? 나는 IPv6도 점보 프레임을 가지고 있다고 들었지만 UDP가 헤더 스펙을 정의했기 때문에 DatagramPacket (또는 DatagramSocket
)을 지원합니까?
실제로 네트워크를 통해 IPv4에 대해 보장되는 MTU는 68 바이트 - 호스트가 처리해야하는 최소값은 576입니다. 어느 쪽이든, 그러한 작은 MTU는 실제로 매우 특이합니다. – lxgr
패킷 크기가 64KB를 초과하면 다른 프로토콜을 사용하게됩니까? –
@PhaniRahul : 프로토콜이 분할을 투명하게 처리하고 데이터를 필요한만큼의 패킷으로 만들어 주신 것을 감사드립니다. 실용적인 프로토콜을 사용하면 패킷 크기가 커질 지 의심 스럽습니다. :) –