当前位置:  技术问答>linux和unix

tcp和udp的区别

    来源: 互联网  发布时间:2016-08-11

    本文导语:  今天看《unix网络编程》有段话不是很理解 每个udp数据报都有一定的长度,我们认为一个数据包就是一个记录。如果数据报最终正确到达目的地(即分组到达目的地且校验和正确),那么数据报的长度将传递给接收方...

今天看《unix网络编程》有段话不是很理解

每个udp数据报都有一定的长度,我们认为一个数据包就是一个记录。如果数据报最终正确到达目的地(即分组到达目的地且校验和正确),那么数据报的长度将传递给接收方的应用进程。我们提到了一字节流协议,无记录边界,这与udp不同。


1.udp数据包有一定的长度。难道tcp数据包没有一定的长度吗?

2.一个数据包一个记录,这个里面“记录”怎么理解?

3.数据报的长度传递个接收方的应用进程,怎么将长度传递个应用进程?

4.无记录边界是什么?

望大家多多帮忙。

|
事实上你不能write成功的。

A UDP socket has a send buffer size (which we can change with the SO_SNDBUF socket option), but this is simply an upper limit on the maximum-sized UDP datagram that can be written to the socket. If an application writes a datagram larger than the socket send buffer size, EMSGSIZE is returned. 

|
有个很形象的比喻。
如果把TCP/UDP传送的数据比喻成水,
TCP传输数据就好像水通过自来水管送到各家各户。
UDP传输数据就好像送水师傅送桶装水。

|
tcp也有长度啊
数据包里有记录数据的一些东西吧
数据包中不是有相应的位来记录长度的么
最后一个不清楚

|

不错,就是这个理

|
我自己的理解

TCP好像打电话,要拨号、接听建立好连接,语音在线路上是连续的(TCP流),人们用自然语言语法去区分消息边界(应用层)。

UDP好像寄包裹,事先不需要建立连接,一个包裹要打包(UDP包),而且它很有可能丢失(不可靠)。

|
用形象的东西来理解抽象的东西是再好不过的学习方法了。

TCP没有消息边界,也可以理解成TCP流是可以分割的。而UDP是不可分割的,你给别人寄东西,肯定不会打破成若干份发过去了,而TCP是可以的。注意UNP里有这样一个例子:

With a byte-stream protocol, these 26 bytes can be returned in numerous ways: a single TCP segment containing all 26 bytes of data, in 26 TCP segments each containing 1 byte of data, or any other combination that totals to 26 bytes. 

    
 
 

您可能感兴趣的文章:

  • http走的是tcp还是udp?ssh是tcp还是udp?
  • tcp和udp套接字有何不同?在什么情况下用tcp什么情况下用udp????
  • udp包大于1500字节网络传输会分包吗?udp tcp多大的包比较合适?
  • TCP与UDP通信问题!
  • udp服务器和TCP服务器的问题
  • UDP-TCP Bridge
  • 载断TCP UDP连接
  • 哪里可以找到linux下的TCP/UDP/IP编程教程和例子?
  • UDP和TCP带宽竞争处理问题
  • 假如已经以UDP方式监听8000端口,还能以TCP方式监听8000吗?
  • udp/tcp通信?
  • IP,UDP,TCP的校验和计算
  • 选择TCP还是UDP?
  • 发布一个BOOST/ASIO 服务器的模型,支持UDT/TCP/UDP 大家去GOOGLE技术社区看,我置顶了。
  • 请问NAT(or iptables)可以将一个传进来的TCP包转换成UDP并将其重定向到另外的目的地址吗?
  • PING是用TCP,还是用UDP来实现的?或是采用其它协议实现的?
  • udp socket和tcp的有什么冲突吗?
  • 急,请教一个将TCP数据包修改为UDP包的问题,高手请进!
  • 内核是不会把tcp/udp报文传递给raw socket??
  • 请问用那个命令可以实时看到当前的网络状态。如:TCP,UDP,防火墙的情况。
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.net接口socketoptions的类成员方法: tcp_nodelay定义及介绍
  • 100分求《嵌入式系统Web服务器—TCP/IP Lean》或《TCP/IP Lean Web Servers for Embedded Systems 》
  • Linux内核中影响tcp三次握手的一些协议配置
  • tcp_prequeue_process怎么调用了tcp_v4_do_rcv的??求解??在tcp_recvmsg调用的
  • TCP协议报头字段详解及报头图
  • 请问怎么知道每个TCP连接所属哪个进程??还有怎么样断开系统中任意一个TCP连接?
  • 对TCP协议状态及状态转换理解
  • 求助!!!linux tcp发送 xp tcp接收 出现的问题
  • TCP协议四次断连过程介绍及Linux内核协议栈中相关设置项
  • 高分求救:SOL_SOCKET,SO_RCVTIMO,SO_SNDTIMEO,IPPOTO_TCP,TCP_NODELAY这些是在哪个头文件定义的呢?
  • TCP协议三次握手过程详解
  • 请问RST在什么情况下发送?? 使用TCP socket编程的话是否会引起这种TCP包的发送?
  • TCP/IP协议族介绍及TCP/IP协议族中各协议对应的RFC编号
  • netfilter里如何获得TCP包的数据?
  • TCP_NODDELAY的问题
  • linux内核tcp重组的函数?
  • 转发 TCP/IP 连接 prtunnel
  • tcp的分节表示什么?
  • 如何在Linux系统上运行T/TCP程序
  • 控制在网络上传输TCP数据包的大小的问题
  • SCO Openserver 5 TCP/IP


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3