TCP Net.Sockets.Socket Black Hole
I have a black hole router between a client and a server. I am trying to send a large packet (32k) and the client never receives the packet.
I tried setting the Socket.SendBufferSize = 512 to try and force separation before sending the packet. I've set DontFragment = False.
What other steps can I take to try and force it through the black hole router?
TCP has no concept of packets. It is a stream protocol, and any data you send will be automatically split into multiple packets (internally) before transmission if necessary. It is also a reliable protocol; any data that you send is guaranteed to reach the recipient as long as the connection is up.
If the client is never receiving the data then it's either not going through at all or your client is broken.
If the client is never receiving the data then it's either not going through at all or your client is broken.
Well, I try to send this data... I see it on the server being "sent"... on the client, it is never received. The event for the socket receiving data is never fired for the data sent. However, later on, additional "sends" that are smaller and they are received just fine.
Edit: This code works perfectly from one client to a server that uses a route without the black hole router. This code does not work when the client goes to a server that must use a route containing a black hole router.
Edit: This code works perfectly from one client to a server that uses a route without the black hole router. This code does not work when the client goes to a server that must use a route containing a black hole router.
Quote:Original post by Ra
TCP has no concept of packets. It is a stream protocol, and any data you send will be automatically split into multiple packets (internally) before transmission if necessary. It is also a reliable protocol; any data that you send is guaranteed to reach the recipient as long as the connection is up.
If the client is never receiving the data then it's either not going through at all or your client is broken.
It still sends data as packets, they are just transparent for user API.
The problem with black hole routers happens when TCP uses MTU to size the packets, and these packets are larger than some router's MTU.
These problems are slightly simpler to solve with UDP protocol, where each connection can use differently sized packets. For TCP, there's usually a global MTU setting.
Quote:What other steps can I take to try and force it through the black hole router?
I don't have details handy, client might try reducing their TCP MTU. You could try reducing server's, but it will affect all connections, and may reduce throughput.
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement