分享
 
 
 

TCP/IP协议详解卷1学习笔记-IP校验和与ICMP协议

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

IP数据报的检验和:

为了计算一份数据报的I P检验和,首先把检验和字段置为0。然后,对首部中每个16 bit进行二进制反码求和(整个首部看成是由一串16 bit的字组成),结果存在检验和字段中。当收到一份I P数据报后,同样对首部中每个16 bit进行二进制反码的求和。由于接收方在计算过程中包含了发送方存在首部中的检验和,因此,如果首部在传输过程中没有发生任何差错,那么接收方计算的结果应该为全1。

这个是原文。看一些网络程序的源码时,发现几乎都是用同一种程序来计算检验和的:

USHORT checksum(USHORT *buffer, int size) {

unsigned long cksum=0;

while(size 1) {

cksum+=*buffer++;

size -=sizeof(USHORT);

}

if(size ) {

cksum += *(UCHAR*)buffer;

}

cksum = (cksum 16) + (cksum & 0xffff);

cksum += (cksum 16);

return (USHORT)(~cksum);

}

ICMP协议,基本格式:

|-------- IP 数据报 ------------+

+--20 bytes --+----------------+

+

IP首部

+ ICMP 报文

+

+------------------------------+

ICMP报文还是通过IP报文发送出去的。

ICMP的格式:

+----8---+----8---+-------- --------+

+ 8位类型 + 8位代码 +

16位检验和

+

+-----------------------------------+

+ 不同类型有不同的内容和长度

+

+-----------------------------------+

ICMP的报文类型有很多种,而每种类型里又有多种代码。

报文分查询报文和差错报文。差错报文不会嵌套产生。差错报文中包含导致差错的IP首部和数据部分的前8个字节,并据此与具体的协议和进程联系起来。因为TCP和UDP的前8个字节中包含有源端口和目的端口,可以据此查找到与此联系的用户进程。大部分的实现中只返回8个字节,有系统返回的是前64个字节。如果是UDP报文产生差错,而又没有预先通过 connect与指定端口联系起来,用户进程将收不到这个差错报文。内核在处理后将丢弃。

讨论了部分tftp实现中的的简单的差错重传机制,等待5秒重传,已被RFC禁用。我在串口通讯中用的还是这种简单的重传方式,看来要改了。

详细讨论了时间截请求与回复的过程,以及地址掩码请求与回应数据包的格式。对端口不可达错误,差错报文为:

+----------------- 端口不可达的ICMP差错报文 -------------------------------+

+ 以太网首部

+

IP首部

+ ICMP首部 +

产生差错的IP首部

+ IP报数据域

+

+- 14 bytes

+--- 20 bytes ---+ 8 bytes +---- 20 bytes ----+-- 8 bytes -+

根据标准,列出5种情况下,不会产生差错报文,基本上都是为了避免出现ICMP广播风暴的。

这个协议因为类型与具体的细节太多,比较的费事,不过也比较简单。如果不做协议的分析,倒不需要对每个类型都搞得十分清楚。好像这个并没有多少利用的空间。不过如果在一个主机试图发起连接时,发送一个伪装的ICMP包告诉它“端口不可达”,结果会怎么样?值得试试。

第2卷 第13章 HTTP协议

这一章对HTTP的请求与响应格式做了简单的介绍。由于所有传送的内容基于ASCII,虽然也会传送其他二进制,如图片,MIME文件,但是其本是还是可以从请求或响应头中看出传送的类型,分析起来就没什么难度了。这些可以用 telnet 或者 nc做一个真实的会话过程。把后面一章(第2卷第14章 HTTP服务器的分组)看完,准备自已动手做一个小的Web服务器。公司下一步的计划是把大部分的硬件都做成可直接由浏览器操作的。而这些必须要由一个 web服务器来驱动。我是作软件的,本来不需要我去关心这个。不过自己动手作一下,实践一下总不是坏事,而且可以跟他们交流一下。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有