一、tcp:
1、tcp每个套接字都有一个缓冲区,当应用进程调用write时便把应用层的数据写入套接字的缓冲区
2、如果套接字的缓冲区容不下应用层的数据,则write阻塞。write返回只表示将数据写到了套接口缓冲区,并不表示发送出去
3、套接字的缓冲区里的数据需收到接收方的确认消息(ack)才会删除缓冲区里的数据
二、udp:
1、udp是不可靠的,因此无需缓冲区保存应用层传过来的数据。只是将数据拷贝到内核的缓冲区,链路层发送出去以后就将拷贝丢弃
2、udp只有一个缓冲区大小的概念,如果应用层发送一个大于缓冲区大小的数据,则返回EMSGSIZE错误
3、从udp的write成功返回表示已成功将数据报或所有片段