udp是一个简单的面向数据报的运输层协议:进程的每个输出操作都正好产生一个UDP数据报,并组装成一份发送的IP数据包。
这与面向流字符的协议不同,如TCP,应用程序产生的全体数据与真正发送的单个IP数据报可能没有什么联系
UDP不提供可靠性:它把应用程序传给IP层的数据发送出去,但是并不保证他们能到达目的地
应用程序必须关心IP数据报的长度。如果它超过网络的MTU,那么就要对IP数据报进行分片。
UDP检验和覆盖UDP首部和UDP数据
IP首部的校验和,它只覆盖IP的首部
UDP的校验和是可选的,而TCP的校验和是必须的
IP计算检验和和UDP计算检验和之间存在不同的地方。首先UDP数据报的长度可以为奇数字节,但是检验和算法是把若干个16bit字相加。解决方法是必要时在最后增加填充字节,这只是为了检验和的计算(也就是说,可能增加的填充字节不被传送)
UDP数据报和TCP段都包含一个12字节长的伪首部,它是为了计算检验和而设置的。伪首部包含IP首部一些自独胆。其目的是让UDP两次检查数据是否已经正确到达目的地(例如,IP没有接受地址不是本机的数据报,以及IP没有把应传给另一高层的数据报传给UDP)
IP把MTU与数据报长度进行比较。
如果需要则进行分片。分片可以发生在原始发送端主机上,也可以发生在中间路由器上。
把一份IP数据报分片以后,只有到达目的地才进行重新组装
重新组装由目的端的IP层来完成,其目的是使分片和重新组装过程对运输层(TCP和UDP)是透明的。
已经分片过得数据报有可能会再次进行分片。
三种IP地址:单播地址、广播地址和多播地址。
广播和多播仅应用于UDP,他们对需将报文同事传往多个接受者的应用来说十分重要。
TCP是一个面向连接的协议,它意味着分别运行于两主机(由IP地址确定)内的两进程(由端口号确定)间存在一条连接
有时一个主机要向网上的所有其他主机发送帧,这就是广播。通过ARP和RARP可以看到这一过程。
多播处于单播和广播之间:帧仅传送给属于多播组的多个主机。
域名系统是一种用于TCP/IP应用程序的分布式数据库,它提供主机名字和IP地址之间的转换及有关电子邮件的选录信息。
这里提到的分布式是指在Internet上的单个站点不能拥有所有的信息。
DNS提供了允许服务器和客户程序相互通信的协议。
对DNS的访问时通过一个地址解析器来完成的
解析器通常是应用程序的一部分。解析器并不像TCP/IP协议那样是操作系统的内核。
操作系统内核中的TCP/IP协议族对DNS一点都不知道
TFTP即简单文件传送协议,最初打算用于引导无盘系统(工作站或X终端)
和使用TCP的文件传送协议(FTP)不同,为了保持简单和短小,TFTP将使用UDP。
TFTP的代码(和它所需要的的UDP、IP和设备驱动程序)都能适合只读存储器。