关于TCP流模式与UDP数据报文模式区别
2014-08-29 16:08
211 查看
关于TCP流模式与UDP数据报文模式区别
分类: TCP/IP2011-05-10 14:25 95人阅读 评论(1) 收藏 举报
“TCP是一种流模式的协议,UDP是一种数据报模式的协议”,这句话相信大家对这句话已经耳熟能详~但是,“流模式”与“数据包模式”在编程的时候有什么区别呢?以下是我的理解,仅供参考! 1、TCP
打个比方比喻TCP,你家里有个蓄水池,你可以里面倒水,蓄水池上有个龙头,你可以通过龙头将水池里的水放出来,然后用各种各样的容器装(杯子、矿泉水瓶、锅碗瓢盆)接水。 上面的例子中,往水池里倒几次水和接几次水是没有必然联系的,也就是说你可以只倒一次水,然后分10次接完。另外,水池里的水接多少就会少多少;往里面倒多少水,就会增加多少水,但是不能超过水池的容量,多出的水会溢出。
结合TCP的概念,水池就好比接收缓存,倒水就相当于发送数据,接水就相当于读取数据。好比你通过TCP连接给另一端发送数据,你只调用了一次write,发送了100个字节,但是对方可以分10次收完,每次10个字节;你也可以调用10次write,每次10个字节,但是对方可以一次就收完。(假设数据都能到达)但是,你发送的数据量不能大于对方的接收缓存(流量控制),如果你硬是要发送过量数据,则对方的缓存满了就会把多出的数据丢弃。 这种情况是设置非阻塞I/O模型,会把内存耗尽,因为socket是存在内核中的。 2、UDP
UDP和TCP不同,发送端调用了几次write,接收端必须用相同次数的read读完。UPD是基于报文的,在接收的时候,每次最多只能读取一个报文,报文和报文是不会合并的,如果缓冲区小于报文长度,则多出的部分会被丢弃。也就说,如果不指定MSG_PEEK标志,每次读取操作将消耗一个报文。 3、为什么
其实,这种不同是由TCP和UDP的特性决定的。TCP是面向连接的,也就是说,在连接持续的过程中,socket中收到的数据都是由同一台主机发出的(劫持什么的不考虑),因此,知道保证数据是有序的到达就行了,至于每次读取多少数据自己看着办。
而UDP是无连接的协议,也就是说,只要知道接收端的IP和端口,且网络是可达的,任何主机都可以向接收端发送数据。这时候,如果一次能读取超过一个报文的数据,则会乱套。比如,主机A向发送了报文P1,主机B发送了报文P2,如果能够读取超过一个报文的数据,那么就会将P1和P2的数据合并在了一起,这样的数据是没有意义的。
帧(frame)是一种信息单位,它的起始点和目的点都是数据链路层。 数据包(packet)也是一种信息单位,它的起始和目的地是网络层。
数据报(datagram)通常是指起始点和目的地都使用无连接网络服务的的网络层的信息单元。
段(segment)通常是指起始点和目的地都是传输层的信息单元。
消息(message)是指起始点和目的地都在网络层以上(经常在应用层)的信息单元。 元素(cell)是一种固定长度的信息,它的起始点和目的地都是数据链路层。元素通常用于异步传输模式(ATM)和交换多兆位数据服务(SMDS)网络等交换环境。
数据单元(data unit)指许多信息单元。常用的数据单元有服务数据单元(SDU)、协议数据单元(PDU)。SDU是在同一机器上的两层之间传送信息。PDU是发送机器上每层的信息发送到接收机器上的相应层(同等层间交流用的)。
昨天晚上看了chinaitlab的那个ccna的录象,讲到了 流、帧、包、位的区别,看了还是不怎么太懂,今天用baidu搜索了一下,看到了一个比较不错的解释,我把他copy到这里: 数据帧(Frame):是一种信息单位,它的起始点和目的点都是数据链路层。 数据包(Packet):也是一种信息单位,它的起始和目的地是网络层。 数据报(Datagram):通常是指起始点和目的地都使用无连接网络服务的的网络层的信息单元。
段(Segment):通常是指起始点和目的地都是传输层的信息单元。
数据链路层的PDU叫做Frame(帧); 网络层的PDU叫做Packet(数据包); TCP的叫做Segment(数据段);
看了这个解释呢,就比较不错了,还有个比较不太清楚的东西就是流,那么流又是一个什么样的概念呢?看到关于封装和解封装的部分的时候,提到了分装是做了2个动作,一个切片,一个是加如控制信息,那么这个经过了切片后的那个东西叫什么呢?如果您看到文章,恳请您帮我解释一下,谢谢!
1234567890ABCDEFGHIJKLMNabcdefghijklmn!@#$%^&&*()_+.一三五七九贰肆陆扒拾,。青玉案元夕东风夜放花千树更吹落星如雨宝马雕车香满路凤箫声动玉壶光转一夜鱼龙舞蛾儿雪柳黄金缕笑语盈盈暗香去众里寻他千百度暮然回首那人却在灯火阑珊处
78份文档
笑翻神图
爆笑图片汇集
搞笑图片乐翻人
cs3简单制作动态搞笑图片
104份文档
2014年驾照交规
2014年1月1日起“驾照新规”出炉
科目三实际道路驾驶考试注意事项
驾考新题抢先版
66份文档
职场生存攻略
思维导图经典案例
Excel键盘快捷键
Photoshop的抠图技巧分析
发布评论
©2014 Baidu
使用百度前必读 | 文库协议
分享到:
QQ空间新浪微博微信
下载1 下载券
/2
分类: TCP/IP2011-05-10 14:25 95人阅读 评论(1) 收藏 举报
“TCP是一种流模式的协议,UDP是一种数据报模式的协议”,这句话相信大家对这句话已经耳熟能详~但是,“流模式”与“数据包模式”在编程的时候有什么区别呢?以下是我的理解,仅供参考! 1、TCP
打个比方比喻TCP,你家里有个蓄水池,你可以里面倒水,蓄水池上有个龙头,你可以通过龙头将水池里的水放出来,然后用各种各样的容器装(杯子、矿泉水瓶、锅碗瓢盆)接水。 上面的例子中,往水池里倒几次水和接几次水是没有必然联系的,也就是说你可以只倒一次水,然后分10次接完。另外,水池里的水接多少就会少多少;往里面倒多少水,就会增加多少水,但是不能超过水池的容量,多出的水会溢出。
结合TCP的概念,水池就好比接收缓存,倒水就相当于发送数据,接水就相当于读取数据。好比你通过TCP连接给另一端发送数据,你只调用了一次write,发送了100个字节,但是对方可以分10次收完,每次10个字节;你也可以调用10次write,每次10个字节,但是对方可以一次就收完。(假设数据都能到达)但是,你发送的数据量不能大于对方的接收缓存(流量控制),如果你硬是要发送过量数据,则对方的缓存满了就会把多出的数据丢弃。 这种情况是设置非阻塞I/O模型,会把内存耗尽,因为socket是存在内核中的。 2、UDP
UDP和TCP不同,发送端调用了几次write,接收端必须用相同次数的read读完。UPD是基于报文的,在接收的时候,每次最多只能读取一个报文,报文和报文是不会合并的,如果缓冲区小于报文长度,则多出的部分会被丢弃。也就说,如果不指定MSG_PEEK标志,每次读取操作将消耗一个报文。 3、为什么
其实,这种不同是由TCP和UDP的特性决定的。TCP是面向连接的,也就是说,在连接持续的过程中,socket中收到的数据都是由同一台主机发出的(劫持什么的不考虑),因此,知道保证数据是有序的到达就行了,至于每次读取多少数据自己看着办。
而UDP是无连接的协议,也就是说,只要知道接收端的IP和端口,且网络是可达的,任何主机都可以向接收端发送数据。这时候,如果一次能读取超过一个报文的数据,则会乱套。比如,主机A向发送了报文P1,主机B发送了报文P2,如果能够读取超过一个报文的数据,那么就会将P1和P2的数据合并在了一起,这样的数据是没有意义的。
帧(frame)是一种信息单位,它的起始点和目的点都是数据链路层。 数据包(packet)也是一种信息单位,它的起始和目的地是网络层。
数据报(datagram)通常是指起始点和目的地都使用无连接网络服务的的网络层的信息单元。
段(segment)通常是指起始点和目的地都是传输层的信息单元。
消息(message)是指起始点和目的地都在网络层以上(经常在应用层)的信息单元。 元素(cell)是一种固定长度的信息,它的起始点和目的地都是数据链路层。元素通常用于异步传输模式(ATM)和交换多兆位数据服务(SMDS)网络等交换环境。
数据单元(data unit)指许多信息单元。常用的数据单元有服务数据单元(SDU)、协议数据单元(PDU)。SDU是在同一机器上的两层之间传送信息。PDU是发送机器上每层的信息发送到接收机器上的相应层(同等层间交流用的)。
昨天晚上看了chinaitlab的那个ccna的录象,讲到了 流、帧、包、位的区别,看了还是不怎么太懂,今天用baidu搜索了一下,看到了一个比较不错的解释,我把他copy到这里: 数据帧(Frame):是一种信息单位,它的起始点和目的点都是数据链路层。 数据包(Packet):也是一种信息单位,它的起始和目的地是网络层。 数据报(Datagram):通常是指起始点和目的地都使用无连接网络服务的的网络层的信息单元。
段(Segment):通常是指起始点和目的地都是传输层的信息单元。
数据链路层的PDU叫做Frame(帧); 网络层的PDU叫做Packet(数据包); TCP的叫做Segment(数据段);
看了这个解释呢,就比较不错了,还有个比较不太清楚的东西就是流,那么流又是一个什么样的概念呢?看到关于封装和解封装的部分的时候,提到了分装是做了2个动作,一个切片,一个是加如控制信息,那么这个经过了切片后的那个东西叫什么呢?如果您看到文章,恳请您帮我解释一下,谢谢!
1234567890ABCDEFGHIJKLMNabcdefghijklmn!@#$%^&&*()_+.一三五七九贰肆陆扒拾,。青玉案元夕东风夜放花千树更吹落星如雨宝马雕车香满路凤箫声动玉壶光转一夜鱼龙舞蛾儿雪柳黄金缕笑语盈盈暗香去众里寻他千百度暮然回首那人却在灯火阑珊处
今日推荐
78份文档
笑翻神图
爆笑图片汇集
搞笑图片乐翻人
cs3简单制作动态搞笑图片
104份文档
2014年驾照交规
2014年1月1日起“驾照新规”出炉
科目三实际道路驾驶考试注意事项
驾考新题抢先版
66份文档
职场生存攻略
思维导图经典案例
Excel键盘快捷键
Photoshop的抠图技巧分析
您的评论
240发布评论
用户评价
暂无评论©2014 Baidu
使用百度前必读 | 文库协议
分享到:
QQ空间新浪微博微信
下载1 下载券
/2
相关文章推荐
- 关于TCP流模式与UDP数据报文模式区别
- 关于TCP流模式与UDP数据报文模式区别
- 关于TCP流模式与UDP数据报文模式区别
- 关于TCP流模式与UDP数据报文模式区别
- 关于TCP流模式与UDP数据报模式的区别
- 关于TCP流与UDP报文
- udp与tcp数据模式区别-用代码解释
- TCP流模式 与 UDP报文模式
- 关于相似设计模式之间的区别
- 数据访问模式 orm和cmp区别
- 关于数据访问模式(六)—— 资源管理模式的重要性
- 关于ContentProvider数据共享与其他共享方式区别的理解
- 关于添加索引视图后的数据存储区别
- 关于数据访问模式(五)—— Layers模式
- 关于Qt中Udp通信过程中的接收数据部分注意
- 关于文本模式和二进制模式对文件进行操作的区别
- TCP流模式与UDP数据报模式
- 由一个简单的客户端间TCP/UDP通信程序引发的关于设计模式的思考
- 使用UDP非连线式发送接收数据(聊天室模式)
- 使用UDP非连线式发送接收数据(聊天室模式)