《TCP/IP详解》学习笔记二(8-12)

第八章 Traceroute

win里的命令是tracert ,在实现上和linux不同。

书中的实现介绍是linux的,通过发送TTL(生存周期)为i++的包,获得icmp的超时报文,来知道路途每个路由器的IP。

es5里发送TTL为i++的UDP报文,指向目标地址一个不可能的端口,当抵达目标地址后,会返回一个端口不可达的icmp差错报文。

抓包发现,(es5)发送LLT为2的udp报文并不是等待LLT为1的报文回来后再发送,而是一口气连续发送很多udp,抓包中,一直发送到LLT为6的报文才收到回来的icmp超时报文。每个数值发送3次。

win里与书上实现的不同,发送的是TTL为i++的ping报文,每个数值发送3次,只有上一个报文返回icmp超时或等待超时或抵达目的返回ping报文才发送下一个ping报文。

所以es5找到的每个数值下的路由都可能不一样,而win找到的相似比较多。

由于每个不同值的TTL是单独发送的,可能通过的路由并不相同,所以显示的结果的顺序未必真的连在一条线上。

返回的icmp超时报文的TTL都是255 。

-------------------------------------------------------------------------------

第九章第十章

没有环境抓包测试。

-------------------------------------------------------------------------------

第十一章 UDP

udp的校验中,增加了一个伪首部,这个伪首部只参与检验和,但是不会实际发送。

如果校验失败,这个UDP报文会和IP报文一样直接丢弃,不返回任何差错报文。

IP分片在第三章里有一些,这里说的更清楚些。

实际MTU是路途中的最小MTU,发片不一样在出口或在入口进行,可能发生在路途上的某个路由器上。

IP数据包分片后,一直到目的地才重新组装,如果有一个出错,则剩下的全部在实际应用中都没有用了。

(某些网络协议在每一跳的都会中心组装,不详是那些协议,存疑。)

已经分过片的IP包,也可能在路途里再次分包。

被分成多个IP数据包的IP报文,他们的每个IP分包里的16位标志是相同的。3位标志是:0X00剩余片,0X020第一片,0X04不分包。包的顺序看偏移量,第一个包的偏移量是0,偏移量计算的是UDP报文长度而不是UDP用户数据长度。

如果不分片,IP包长度还大于了MTU,则回返回一个ICMP的差错报文(需要进行分片但设置了不分片比特),利用这个差错可以推断出最小MTU

类似traceroute的方法,发送一个不分片且长度为出口MTU的报文,出现错误后,持续降低IP包长度。逐个接近结果。

测试出我的环境下以太网的MTU是1500字节。

我发送了一个包含1500个a的数据(即数据长度1500),分2片,第一片数据长度1472,第二片28。

第一片总长度1472+8(udp首部)+20(ip首部)+14(frame,2个mac)为1514,所以MTU为1500 。

如果不限制MTU,IP包最长就是65535,那么扣除20字节IP头和8字节UDP头,UDP最长的用户数据为65507字节。

如果UDP携带的数据长度大于1472,那么UDP报文就会被分派,前面的IP包总长度都是1500(20+1480),最后一个包为剩下的数据长度。
我在前面有个地方理解错误的,我以为如果一个UDP报文大于65507,会变成多个IP包发过去,实际上会丢弃超过最大长度的数据。
编码的时候数据长度太长了大于65507甚至对某些编译器不通过。

UDP的应用包括DNS,TFTP,BOOTP,SNMP ,广播和多播也可以转送UDP,但是不能送TCP。

-------------------------------------------------------------------------------

第十二章 广播与多播

广播会增加无关机器的处理负荷,比如广播一个UDP报文,所有的机器都会接受,只有到达了UDP层才会被抛弃。

但是并不会增加网络流量,因为其他机器通过掩码发现这个包自己应该接受处理,所以实际上只有一份,而不是转发给所有主机。但是如果相应了端口不可达的差错报文,就可能增加网络流量。

指向所有子网的IP广播地址128.1.255.255,我在公网上ping它,竟然有个192.1.102.1的主机返回了我了。

A发送给255的UDP报文,所有人都会收到(而不是每个人都发一份),编码发现,某个接受方B得到的UDP地址和端口都是A的,这样返回的报文就会发给A,但是由于A发送的对象是255,所以A在socket一层是收不到的B的报文,但是抓包会发现B给A回了报文的。

另外发现es5的权限设置的比win高,我在win上可以给广播UDP,但是同样的代码在es5上却失败了,告诉我权限限制,目前还不知道在哪里设置,存疑。

时间: 2024-10-13 02:57:57

《TCP/IP详解》学习笔记二(8-12)的相关文章

【转】TCP/IP详解学习笔记(二)

TCP/IP详解学习笔记(5)-IP选路,动态选路,和一些细节 1.静态IP选路 1.1.一个简单的路由表 选路是IP层最重要的一个功能之一.前面的部分已经简单的讲过路由器是通过何种规则来根据IP数据包的IP地址来选择路由.这里就不重复了.首先来看看一个简单的系统路由表. Destination     Gateway         Genmask         Flags Metric Ref    Use Iface192.168.11.0    *               255.

TCP/IP详解学习笔记

TCP/IP详解学习笔记(1)-基本概念 TCP/IP详解学习笔记(2)-数据链路层 TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议 TCP/IP详解学习笔记(4)-ICMP协议,ping和Traceroute TCP/IP详解学习笔记(5)-IP选路,动态选路,和一些细节 TCP/IP详解学习笔记(6)-UDP协议 TCP/IP详解学习笔记(7)-广播和多播,IGMP协议 TCP/IP详解学习笔记(8)-DNS域名系统 TCP/IP详解学习笔记(9)-TCP协议概述 TCP

TCP/IP详解学习笔记 这位仁兄写得太好了.(转载)

TCP/IP详解学习笔记   这位仁兄写得太好了 TCP/IP详解学习笔记   这位仁兄写得太好了. http://blog.csdn.net/goodboy1881/category/204448.aspx TCP/IP详解学习笔记(13)-TCP坚持定时器,TCP保活定时器 TCP/IP详解学习笔记(12)-TCP的超时与重传TCP/IP详解学习笔记(11)-TCP交互数据流,成块数据流 TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着

TCP/IP详解学习笔记(一) 概述

生活中有舒适区,借口成为懒惰的护身符,学习也有舒适区,逃避便是阻止进步的最大障碍. 经过半年多嵌入式方面的工作和学习,我提高了很多,但同时我也对自己所面临的问题逐渐清晰: 1. 偏于实践,理论基础不牢固 2. 对算法,数据结构认知太浅 3. 对界面程序以及GUI相关学习比较排斥 我也一直主观上逃避对这些知识的学习,这也是为什么我写的内容都是以实践为主了.从本系列开始,我尝试离开大脑的舒适区,巩固自己理论相关的知识. TCP/IP作为整个现代互联网社会的基础,有着至关重要的作用,因此学习掌握协议栈

TCP/IP详解学习笔记(1)

这里是<TCP/IP详解>卷一的一些笔记以及自己对书中的理解,我会结合抓包软件Wireshark来分析,但由于条件有限,无法模拟出书中作者的网络,只能简单的分析,如果发现错误,请帮忙指正.   首先我们讲什么是TCP/IP协议: 两台主机要通信必须遵循相同的规范,对互相发送的报文要知道该如何处理,就像发送XML和JSON数据一样,他们需要按照预先规定的格式组织进行发送,而接收端也要按照这种格式来解读.网络通信协议做的就是这个,而tcp/ip就是协议中用的最广泛的一种. TCP/IP的分层使得协

TCP/IP详解学习笔记(9)-TCP协议概述

终于看到了TCP协议,这是TCP/IP详解里面最重要也是最精彩的部分,要花大力气来读.前面的TFTP和BOOTP都是一些简单的协议,就不写笔记了,写起来也没啥东西. TCP和UDP处在同一层---运输层,但是TCP和UDP最不同的地方是,TCP提供了一种可靠的数据传输服务,TCP是面向连接的,也就是说,利用TCP通信的两台主机首先要经历一个"拨打电话"的过程,等到通信准备结束才开始传输数据,最后结束通话.所以TCP要比UDP可靠的多,UDP是把数据直接发出去,而不管对方是不是在收信,就

TCP/IP详解学习笔记(5)-IP选路,动态选路,和一些细节

1.静态IP选路 1.1.一个简单的路由表 选路是IP层最重要的一个功能之一.前面的部分已经简单的讲过路由器是通过何种规则来根据IP数据包的IP地址来选择路由.这里就不重复了.首先来看看一个简单的系统路由表. 对于一个给定的路由器,可以打印出五种不同的flag. 1.         U表明该路由可用. 2.         G表明该路由是到一个网关.如果没有这个标志,说明和Destination是直连的,而相应的Gateway应该直接给出Destination的地址. 3.         H

TCP/IP详解学习笔记——数据链路层(1)

一  概述 在整个TCP/IP协议簇中,数据链路层的作用是发送和接收IP层数据,它也用来发送其他协议的数据,这些协议往往是IP层的辅助协议,比如ARP协议等.数据链路层有很多不同的种类,最常见的是以太网(Ethernet)和Wi-Fi.我以为,数据链路层就是局域网,网内的节点之间的通信是不需要经过更高层的协议的,比如IP层等.但是由于该层种类比较多比较杂,所以涉及到的协议也是比较多的. 二 以太网和IEEE 802 LAN/MAN标准 先让我们对以太网有个感性的认识.通常认为,以太网就是一些能上

TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议

转http://blog.csdn.net/goodboy1881/article/details/668556 —————————————————————————————————————————————————————— 把这三个协议放到一起学习是因为这三个协议处于同一层,ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP得到要传输的数据信息. 1.IP协议 IP协议是TCP/IP协议的核心,所有的TCP,UD

TCP/IP详解学习笔记(1)-基本概念

转自:http://blog.csdn.net/goodboy1881/article/details/665041 ———————————————————————————————————————————————— 为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样.计算机使用者意识到,计算机只是单兵作战并不会发挥太大的作用.只有把它们联合起来,电