采用 TCP 协议进行数据传输是不会造成 IP 分片的,因为一旦 TCP 数据超过了 MSS,则在传输层会对 TCP 数据包进行分段,自然到了 IP 层的数据报肯定不会超过 MTU,所以就不用分片了。而对于 UDP 数据报,如果 UDP 组成的 IP 数据报长度超过了 MTU,那么 IP 数据报显然就要进行分片,因为 UDP 不能像 TCP 一样自己进行分段。传输层中的 TCP 会分段,网络层中的 IP 会分片。IP 层的分片更多的是为运输层的 UDP 服务的,由于 TCP 自己会避免 IP 的分片,所以使...
分类:
其他好文 时间:
2014-11-27 20:33:49
阅读次数:
265
Java网络编程提供了两种协议:TCP(传输控制协议)和UDP(数据报协议)。TCP(Transmission Control Protocol)是一种可靠的传输协议,传输时会采用“三次握手”端的方式建立连接,以保证数据的可靠性和安全性;而UDP(User Datagram Protocol)协议是一种不可靠的传输协议,发送的数据不一定能够接受的到,网上的聊天是工具一般采用的此协议。下面将详细的接受TCP和UDP的使用以及相应的编码。
一、TCP网络通信
二、UDP网络通信...
分类:
编程语言 时间:
2014-11-25 16:32:22
阅读次数:
235
UDP是一个简单的面向数据报的运输层协议:进程的每个输出操作通常会产生一个UDP数据报,并组装成一份待发送的IP数据报。这与面向流的协议不同,如TCP,应用程序产生的数据与真正发送的单个IP数据报并不存在直接的关联。
相关的协议参考tcp/ip协议学习笔记(7)UDP用户数据报协议
UDP输入和输出以及轻量级UDP涉及以下文件:
include/net/udplite.h 定义轻量级UDP专...
分类:
其他好文 时间:
2014-11-23 11:49:52
阅读次数:
158
QUdpSocket提供了UDP套接字API,用来接收和发送UDP数据报。
QUdpSocket类最通用的使用方式是:用bind()函数绑定一个IP地址和端口Port,然后调用writeDatagram()和readDatagram()函数传输数据。如果要使用QIODevice中的read(), readLine(), write()等函数,必须首先调用connectToHost()函数,直接建立一个和对方的连接。...
分类:
其他好文 时间:
2014-08-18 13:08:12
阅读次数:
560
“TCP是一种流模式的协议,UDP是一种数据报模式的协议”,这句话相信大家对这句话已经耳熟能详~但是,“流模式”与“数据包模式”在编程的时候有什么区别呢?以下是我的理解,仅供参考!
1、TCP
打个比方比喻TCP,你家里有个蓄水池,你可以里面倒水,蓄水池上有个龙头,你可以通过龙头将水池里的水放出来,然后用各种各样的容器装(杯子、矿泉水瓶、锅碗瓢盆)接水。
上面的例子中,往水池里倒...
分类:
其他好文 时间:
2014-08-10 10:25:00
阅读次数:
196
java中DatagramPacket表示存放数据的数据报,DatagramSocket表示接受或发送数据报的套接字。这两个类所有构成的网络链接是基于UDP协议的。import java.net.DatagramPacket;import java.net.DatagramSocket;import...
分类:
编程语言 时间:
2014-07-28 21:19:54
阅读次数:
377
本文只是对TCP协议做个简要的介绍。
TCP协议,即传输控制协议,与UDP协议同处于传输层,同样使用相同的网络层,但TCP提供了一种可靠的、面向连接的数据传输服务,它会在两个使用TCP的应用之间建立一个TCP连接,在该连接上进行数据的传输。
TCP通过以下方式提供可靠性:
1、应用程序被分割成TCP认为最合适发送的数据块。这点与UDP完全不同,应用程序产生的UDP数据报长度将保持不变,加上IP首部后,才会进行IP分片。
2、当TCP发出一个报文段后,它会启动一个定时器,等待目...
分类:
其他好文 时间:
2014-06-22 21:24:20
阅读次数:
180
首先对文件按内容分块(有块大小的约束),然后对于每个chunk构造单独的一个UDP 数据报进行传输,在应用层的开始是自定义的包头,有块号,块长度,块指纹等元数据信息,这些信息便于接收端能够按序正确接收。
/*--vonzhou
---this project is to upload file after chunking using
rabin fingerprint, h...
分类:
其他好文 时间:
2014-06-18 12:27:16
阅读次数:
171
当一个到达的UDP数据报超过应用程序提供的缓冲区容量时,recvmsg在其 msghdr结构的msg_flags成员上设置MSG_TRUNC标志。
所有支持msghdr结构及其msg_flags成员的实现都提供这种通知。但并非所有实现都以同一种方式处理超过预期长度的UDP数据报
存在三种情况:
1.丢弃超出部分的字节并向应用进程返回MSG_TRUNC标志,调用recvmsg可以接收这个标志
...
分类:
其他好文 时间:
2014-06-18 00:31:02
阅读次数:
368
UDP是一个简单的面向数据报的运输层协议:进程的每个输出操作都会产生一个UDP数据报,并组装成一份待发送的IP数据报,这与面向字符流的协议不同,如TCP,应用程序产生的全体数据与真正发送的单个IP数据报可能没有什么联系(主要是在传输层就进行分段了,因此不会受IP分片的影响)。
UDP的首部一共8个字节,很简单,可以参考书上,这里也不再详说。
UDP的校验和
至于UDP的校验和,这里注意下区别就好了,UDP对首部和数据部分都进行校验,而IP首部的校验和仅对IP的首部进行校验,顺带提下T...
分类:
其他好文 时间:
2014-06-15 18:14:30
阅读次数:
166