开学是为期两周的课程设计,前一周没弄,后一周想弄的时间发现都只能弄一个简单的版本,不可能写大的项目。这次将课程设计总结如下,首先我想说几点,以便区分一下概念,而且这些东西对学习的方法也有帮助。很多东西深入研究之后,发现理科的东西也涉及到历史问题,由于现实社会在不断进步,一些概念也得到了延生,打个比方,就是我们现在说的交换机,路由,虽然名字没变,但早不是以前的交换机和路由,所以与书本上有所区别。
一.协议与协议栈
协议都是大家都共同遵守的标准。协议栈是什么?
协议栈是指网络中各层协议的总和,其形象的反映了一个网络中文件传输的过程:由上层协议到底层协议,再由底层协议到上层协议.
使用最广泛的是英特网协议栈,由上到下的协议分别是:应用层 (HTTP,TELNET,DNS,EMAIL等),运输层(TCP,UDP),网络层(IP),链路层(WI-FI,以太网,令牌环,FDDI等)tcp/ip协议栈
一台互联网主机之间的相互通信可以看出如下过程,整个过程由软件和硬件共同控制完成。
我想大家对这两个图都非常熟悉,但对于程序员莫过于从底层看到协议栈的实现,从而更好的理解它。下面我用ethreal软件进行抓包分析,由于对网络了解甚浅,这个软件以前我也不知道,之所以选这个软件一是开源,二是我询问我们老师时,他推荐这款软件。这款软件原理是将网卡设置为混杂模式,抓取链路层的帧。下面进行我的抓包分析实例,我的系统为xp,以太网卡。
1.udp包
ethreal有对包的分析,根据以太网帧格式:
1.链路帧首部(12字节+2字节):
目的mac地址:48-5b-39-b7-e2-db,源mac地址:e0-05-c5-1b-53-c8。
类型:0x0800。注意这里是网络传输大端表示法,表示ip协议。
2.网络层首部(20字节):
前面4为版本号,后4位为首部长度,单位为4个字节。故20 byte 。
首部长度: 0x45 区分服务:0x00 总长度:0x002c即44 byte
标识 : 0x95d4 标志:0x00 。片偏移:0x00
生存时间: 0x38 协议:0x11 (udp) 首部效验和:0x1fa9
源地址 : b6-25-55-11即182.37.85.17
目的地址 : c0-a8-01-65即192.168.1.101
3.udp首部(8字节)。
源端口:0x2c3a 源端口:0x1172 长度(2):0x0018 效验和(2):0xa568
4.数据(16字节)
4b.. ..
这里帧长为60个字节,应该一个异常帧,因为以太网有效帧最短为64个字节即12+2+46+4=64字节。而这里的ip包为44字节,最少要46字节,故ip报文出错。第一次抓包居然抓一个这样的包,看来人品不咋地。