找回密码
 立即注册
首页 业界区 业界 为什么说UDP是面向报文的,而TCP是面向字节流的? ...

为什么说UDP是面向报文的,而TCP是面向字节流的?

越蔓蔓 昨天 14:50
1.UDP(面向报文)
  1. 定义:UDP对于应用层交给他的数据始终保持原始报文的边界,既不拆分也不合并。
复制代码

  • 发送方:应用进程每次通过sendto系统调用UDP写入一个消息,UDP直接在这个前面加入一个UDP首部形成一个完整的UDP数据报,交给网络层就对应一个IP数据报。
  • 接收方:应用进程每次通过recvfrom系统调用读取数据时,要么得到一个完整的数据报,要么什么也得不到。
2.TCP(面向字节流)
  1. 定义:TCP将应用层于网络层之间数据交互抽象为一个连续的无结构的字节流,没有边界概念。
复制代码

  • 发送方:应用进程可以通过write或send系统调用多次写入任意长度的数据。TCP会将数据放入自己的缓冲区中,然后根据对方的接收窗口网络拥塞情况等因素决定怎么发送数据块,一次write数据可能被拆分为多个TCP段也有可能和后续的write段合并发送。
  • 接收方:接收到的TCP段会被去掉TCP首部按顺序放入缓冲区中,应用进程通过read或recv系统调用从缓冲区中读取数据,一次write的数据可能经过多次read才能读取完毕,一次read也可能读取多次write发送的数据。

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册