UDP 用户数据报协议、DNS 域名系统

时间:2022-09-03 21:52:20
OSI 七层协议
1)应用层:直接为用户的应用进程提供服务
2)传输层:两个主机进程之间的通信提供服务
     a)TCP:面向连接的,数据传输的单位是报文段,能够提供可靠的交付
     b)UDP:无连接的,数据传输的单位是用户数据报,只能提供“尽最大努力交付”
3)网络层:“分组”和“数据报”
4)数据链路层:数据链路层将网络层交下来的IP数据报组装成帧和必要的控制信息
5)物理层:传输的是比特流




ICMP差错报告报文有五种:
1)终点不可达:当路由器或主机不能交付数据报时就向远点发送终点不可达报文
2)源点抑制:当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,是源点知道应当把数据报的发送速率放慢。
3)时间超过:当路由器收到生存时间为零的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。
4)参数问题:当路由器或目的主机收到的数据报的首部中的字段的值不正确时,就丢弃该数据报。
5)改变路由(重定向):路由器将改变路由报文发送给主机,让主机知道下次应该将数据报发送给另外的路由器。




UDP 用户数据报协议

UDP端口号表示发送进程和接收进程。UDP长度字段指的是UDP首部和UDP数据的字节长度。该字段的长度最小值为8(首部长度为8,数据长度为0)


UDP检验和
UDP的检验和是可选的,而TCP的检验和是必须的。
如果发送端没有计算检验和而接收端检测到检验和有差错,那么UDP数据报就要被悄悄地丢弃。不产生任何报文。
不是所有的IP数据报都是UDP或TCP数据,因为ICMP也用IP数据报
源UDP端口号可以不固定。
在计算检验和之前,会现在UDP用户数据报之前添加12个字节的伪首部,之所以叫伪首部,是因为它仅仅用来计算检验和,而不向下传递,也不向上递交。
UDP计算检验和的方法和计算IP数据报首部检验和的方法相似。不同的是:IP数据报的检验和只检验IP数据报的首部,但UDP的检验和是把首部和数据部分一起检验。


IP分片
把IP数据报分片后,只有到达目的地才能进行重新重组(它们要求在下一站就进行重新组装,而不是最终的目的地)
已经分片过的数据报有可能继续分片。
尽管IP分片过程看起来是透明的,但有一点让人不想使用它:即使丢失一篇数据也要重传整个数据报。在分片时,除了最后一片外,其他每一片中的数据部分(除IP首部外的其余部分)必须是8字节的整数倍。
IP数据报是指IP层端到端的传输单元(在分片之前和重新 组装之后);分组是指在IP层和链路层之间传送的数据单元。一个分组可以是完整的IP数据报也可以是IP数据报的一个分片



ICMP不可达差错
发生ICMP不可达差错的一种情况是,当路由器收到一份需要分片的数据报,而在IP首部又设置了部分片(DF)的标志。


ICMP源站抑制差错
当一个系统接受数据报的速度比其处理速度快时,可能产生这个错误。


复用和分用
复用:指的是在发送方不同的应用进程都可以使用同一个运输层协议传送数据。

分用:指的是接收方的传输层在剥去报文的首部后能够把这些数据正确交付到目的应用进程。


11.1
IEEE 802比以太网封装多了8个字节,所以引起分片的最小长度为:1473-8=1465字节

UDP 用户数据报协议、DNS 域名系统


11.3
冒号和@之间的数字(1480)是除去IP首部外的片长。冒号前面的IP首部的标志字段
第一片1480@0+
第二片1480@1480+
第三片1480@2960+
第四片1480@4440+
第五片1480@5920+
第六片800@8200+








DNS 域名系统


从应用的角度上看,对DNS的访问时通过一个地址解析器来完成的。在unix主机中,该解析器主要通过两个函数gethostbyname和gethostbyaddr来访问的。前者接收主机名字返回IP地址,而后者接收IP地址来寻找主机名字。


DNS系统是一个分布式的数据库,当一个数据库发现自己并没有某查询所需要的数据的时候,它将把查询转发出去,而转发的目的地通常是根服务器,根服 务器从上至下层层转发查询,直到找到目标为止。DNS还有一个特点就是使用高速缓存,DNS把查询过的数据缓存在某处,以便于下次查询时使用。


一个独立管理的DNS子树称为一个区域(zone),一个常见的区域是一个二级域,如noao.edu.一个名字服务器负责一个或多个区域。一个区域的管理者必须为该区域提供一个主名字服务器和至少一个辅助名字服务器。主、辅名字服务器必须是独立和冗余的,以便当某个名字服务器发生故障时不会影响该区域的名字服务。
主、辅名字服务器的主要区别在于主名字服务器从磁盘文件中调入该区域的所有信息,而辅名字服务器则从主服务器调入所有信息。




指针查询:反向查询


即给定一个IP地址,返回改地址对应的域名。DNS采取了另一种方法,使用另一棵子树来维护IP-〉域名的对应表。这个子树的根节点是in-addr.arpa,而一个IP 例如192.168.11.2)所具有的 DNS地址就是 2.11.168.192.in-addr.arpa(ip倒置)。在DNS系统里面,一个反向地址对应一个PTR纪录(对应A纪录),所以反向查询又叫 做指针(PTR)查询。




DNS服务器高速缓存
高速缓存服务器,其将所有的查询都转交到根服务器去,然后得到结果并放在本地的缓冲区,以加快查询速度。


用UDP还是TCP
DNS服务器支持TCP和UDP两种协议的查询方式,而且端口都是53。而大多数的查询都是UDP查询的,一般需要TCP查询的有两种情况:


1、当查询数据多大以至于产生了数据截断(TC标志为1),它就意味着响应的长度超过了512字节,而仅仅返回前512字节。这时, 需要利用TCP的分片能力来进行数据重发(看TCP的相关章节)。
2、当主(master)服务器和辅(slave)服务器之间通信, 辅服务器要拿到主服务器的信息的时候