欢迎来到天天文库
浏览记录
ID:50338117
大小:64.50 KB
页数:4页
时间:2020-03-08
《tcpip协议详解卷1学习笔记-ip校验和与icmp协议.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、TCP/IP协议详解卷1学习笔记-IP校验和与ICMP协议I卩数据报的检验和:为了计算一份数据报的IP检验和,首先把检验和字段置为0。然后,对首部中每个16bit进行二进制反码求和(整个首部看成是由一屮16bit的字组成),结果存在检验和字段中。当收到一份IP数据报后,同样对首部小每个16bit进行二进制反码的求和。由于接收方在计算过程屮包含了发送方存在首部屮的检验和,因此,如果首部在传输过程屮没有发生任何差错,那么接收方计算的结果应该为全lo这个是原文。看一些网络程序的源码吋,发现儿乎都是用同一种程序来计算检验和的:USIIORTchecksum(USIIORT^buffe
2、r,intsize){unsignedlongcksum=0;while(size>1){cksum+=*buffer++;size-二sizeof(USHORT);}if(size){cksum+=*(UCHAR*)buffer;}cksum二(cksum>>16)+(cksum&Oxffff);cksum+二(cksum>>16);return(USIIORT)(〜cksum);}摘自ping源码。大家都用的东西看来是不会错的了,不过还是要按协议说的方法用笨办法试试看。今天看的是TCMP协议,基本格式:IIP数据报++一一20bytes一一+++IP首部+ICMP报文IC
3、MP报文还是通过IP报文发送出去的。ICMP的格式:+8——+8——+++8位类型+8位代码+16位检验和++++不同类型有不同的内容和长度+++ICMP的报文类型有很多种,而每种类型里又有多种代码。报文分查询报文和差错报文。差错报文不会嵌套产生。差错报文屮包含导致差错的IP首部和数据部分的前8个字节,并据此与具体的协议和进程联系起来。因为TCP和UDP的前8个字节屮包含有源端口和H的端口,可以据此查找到与此联系的用户进程。大部分的实现屮只返回8个字节,有系统返回的是前64个字节。如果是UDP报文产生差错,而又没有预先通过connect与指定端口联系起来,用户进程将收不到这个
4、差错报文。内核在处理后将丢弃。讨论了部分tftp实现屮的的简单的差错重传机制,等待5秒重传,已被RFC禁用。我在串口通讯屮用的还是这种简单的重传方式,看来要改了。详细讨论了吋间截请求与回复的过程,以及地址掩码请求与回应数据包的格式。对端口不可达错误,差错报文为:+端口不可达的ICMP差错报文+以太网首部+IP首部+ICMP首部+产生差错的IP首部+IP报数据域++-14bytes+20bytes+8bytes+20bytes+——8bytes根据标准,列出5种情况下,不会产生差错报文,基本上都是为了避免出现ICMP广播风暴的。这个协议因为类型与具体的细节太多,比较的费事,不过
5、也比较简单。如果不做协议的分析,倒不需要对每个类型都搞得十分清楚。好像这个并没有多少利用的空间。不过如果在一个主机试图发起连接时,发送一个伪装的ICMP包告诉它“端口不可达”,结果会怎么样?值得试试。第2卷第13章HTTP协议这一章对HTTP的请求与响应格式做了简单的介绍。由于所有传送的内容基于ASCII,虽然也会传送其他二进制,如图片,MIME文件,但是其本是还是可以从请求或响应头屮看出传送的类型,分析起来就没什么难度了。这些可以用telnet或者nc做一个真实的会话过程。把后面一章(第2卷第14章HTTP服务器的分组)看完,准备自已动手做一个小的Web服务器。公司下一•步
6、的计划是把大部分的硬件都做成可直接由浏览器操作的。而这些必须要由一个web服务器来驱动。我是作软件的,本来不需要我去关心这个。不过口己动手作一下,实践一下总不是坏事,而且可以跟他们交流一下。看了许多有关web服务器的漏洞导致的严重后果,这个得从一开始就要注卮o
此文档下载收益归作者所有