udp中写一个长度为0的数据报是可行的,这导致一个包含IP头部、udp头部和没有数据的IP数据报。这也意味着对于数据报协议,recvfrom返回0值也是可行的:它不表示对方已经关闭了连接,这与tcp套接口上read返回0值的情况不同。由于udp是无连接的这就没有诸如关闭连接之类的事情。
tcp客户端在调用connect时内核给套接口分配一个临时端口, udp客户端是在首次调用sendto时分配。 tcp和udp客户都可以提前给套接口bind,但一般只有服务器会这样做。
一般来说tcp服务器是并发的而udp服务器是迭代的。
具体来说tcp服务器用accept调用为每一个连接客户创建一个相应的套接字,组成一个唯一四元组,这标志着一条连接。而udp服务器一般只用一个套接字和所有客户端通信,所以说它是迭代的。
对于套接字来说每个套接字都对应有读写缓存。
见图示: