《TCPIP协议栈(P12 - Read》由会员分享,可在线阅读,更多相关《TCPIP协议栈(P12 - Read(29页珍藏版)》请在金锄头文库上搜索。
1、IP协议4学时1TCP/IP协议栈(P12, Figure 2.2)2封装3分用4IP协议数据的传输过程准备好数据,指明目的地,交给IP协议IP协议将数据组成IP数据包并发送到网络设备,由通信网络将数据包传送到正确的目的地在接收方,网络设备接收到IP数据包后会根据其目的地址将数据包发送给主机系统与信件递送的区别:1 随时待命,来了即服务2 传输中只有分解、没有合成(只有在目的地才组装)5IP协议中的概念工作(处理)的对象是数据包责任是将数据正确传递到目的地无连接的数据传递服务Connectionless: each datagram is independent of all others(在
2、传输中).课本上也有描述:IP协议在处理数据包时,处理可能是不同的。不可靠的数据传递服务 Unreliable: there is no guarantee that datagrams are delivered correctly or at all.6Internet ProtocolIP is the network layer对上层:提供主机到主机的分组递送服务对下层:在不同的数据链路协议间进行翻译课本提到了,IP协议要将数据正确传递到目的地,就必须能够标识和识别出数据包的地址。那么,处于网络层的IP,它的地址有什么要求呢?课本的描述:它是一个32位的整数,包含网络ID(netid)
3、和主机ID(hostid)7IP AddressesIP addresses are not the same as the underlying data-link (MAC) addresses. Why ?IP是网络层的协议它必须能够为处于不同类型网络中的主机提供通信(不同的数据链路协议)该地址必须包含接收者所在的网络信息。这样才使路由变为可行8IP AddressesIP addresses are logical addresses (not physical)32 bits整形数.Includes a network ID and a host ID.Every host must
4、 have a unique IP address.IP addresses are assigned by a central authority (Internet Corporation for Assigned Names and Numbers - ICANN)(指合法的IP地址,私网中的地址不在此列)9五类IP地址P16, Figure 3.2组成:地址类别标识、网络ID、主机ID网络ID由全球的权威组织分配给某组织使用主机ID由本地的系统管理员分配网络ID和主机ID都用于路由:网络ID定位主机所属的网络,主机ID在该网络中定位主机。路由器仅使用netid,以缩小路由表的规模。(A
5、ddressing的原则,即先定位网络,再定位主机)10IP地址的表示32位整形数不方便阅读与记忆4个由点隔开的十进制整数例子:P17一个网络接口对应着一个IP地址。主机有多个网络接口的话,就要分配多个IP地址11特殊IP地址P17, Figure 3.3囊括了教材3.2.1节最后部分hostid特殊地址的介绍12IP地址的缺陷P18, 首先、其次、再次为什么主机从一个位置移到另一个位置时,它原有的IP地址变得无法使用?课本P16,网络设备先根据IP地址中的netid找到该IP地址所属的网络,然后由该网络中的设备根据hostid将数据包转发给它13子网技术 &私有网络地址P196位可表示64个
6、独立的主机地址,其中全0的地址被保留标志子网本身,全1的地址被保留用作广播,这样还剩62个可用的地址 VLSM:可变长子网掩码一个物理网络中可能存在多个子网超网技术:大家自己可后看一下就行了(注意纠正错误:P19倒数第一行)私有网络地址:专门标识内部网络的14网络字节序和主机字节序计算机中最基本的数据长度单位是字节,8位。整数必须使用多个字节来表示Little indian:整数中的低位存在低内存地址Big indian:整数中的低位存在高内存地址15IP数据包 P258P21, Figure 3.5typedef struct ip_hdr /定义IP首部 unsigned char ip_
7、verlen; /4位首部长度,4位IP版本号 /unsigned char ip_hlen:4;/ for windows OS/unsigned char ip_ver:4;unsigned char ip_tos; /8位服务类型TOS unsigned short ip_totallen; /16位总长度(字节) unsigned short ip_id; /16位标识 unsigned short ip_fragoff; /3位标志位,13位分片偏移 unsigned char ip_ttl; /8位生存时间 TTL unsigned char ip_protocol; /8位协议
8、(TCP, UDP 或其他) unsigned short ip_checksum; /16位IP首部校验和 unsigned int ip_srcaddr; /32位源IP地址 unsigned int ip_destaddr; /32位目的IP地址 IPV4_HDR; #define IP_HLEN(pip) (pip-ip_verlen&0xf)1) cksum+=*buffer+;size -=sizeof(USHORT);if(size ) cksum += *(UCHAR*)buffer; cksum = (cksum 16) + (cksum & 0xffff);cksum +=
9、 (cksum 16);return (USHORT)(cksum);二进制反码求和 等价于 二进制求和再取反“any overflows from the most significant bits are added into the least significant bits. 18校验和的数学特性Commutative and Associative A,B+C,D = A,B+C,0+0,DByte Order Independence the result is same, except the bytes are swapped in the sum 在函数中,对于总长为奇数的
10、情况,使用网络字节序来计算。Parallel Summation When the sum has been computed, we fold the long sum into 16 bits by adding the 16-bit segments. 19加速校验和计算的技术Deferred Carries (延缓进位)用32位的数来计算和,不用16位(这个每次加法都需要检查是否溢出)Combine with Data Copying On some machines (especially relatively slow and simple micro-computers), ov
11、erhead can be significantly reduced by combining memory-to-memory copy and the checksumming, fetching the data only once for both Incremental Update (路由器重新计算TTL)given the original value m, the new value m, and the old checksum C, the new checksum C is: C = C + (-m) + m = C + (m - m) 20校验和的检查RFC1071:
12、重新计算校验和(含checksum字段),若全为1(0xffff),则成功若是如教材所言比较二者相等,需要先把checksum字段的值保存出来,然后赋值0,再计算,最后再比较。结论:计算机累死了21IP数据包的分片和重组IP数据包的传输最终还是要依赖底层物理网络的传输功能的。物理网络有最大传输单元的限制;而IP协议的目的是向上层屏蔽各物理网络的差异,所以不能将此限制加给上层协议为了解决长度限制的问题,需要对数据包进行分片和重组分片在源主机和路由器上发生;重组只能在目标主机发生。课本P23页的例子22数据包分片图解每个分片都有IP数据包报头报头域最初的数据包的标记本分片的位置23分片算法的要点I
13、NPUT: ip_hdr *pipMaxdlen = (NI_MTU IP_HLEN(pip)&7; Offset = 0; Offindg = (pip-ip_fragoff&IP_FRAGOFF)ip_len IP_HLEN(pip);While (left NI_MTU); /generate a new IP packet, named *np, and copy the header of *pipnp-ip_len = Maxdlen + IP_HLEN(np);np-fragoff = IP_MF|offindg3; /iph2net(), etcblockcopy(np, pi
14、p, offset); /date fragment, to be implementednetwrite(NI, np, np-ip_len ); /to be implementedleft -= tosend;offindg += Maxdlen;offset += Maxdlen;/ deal with the last one24分片算法的作业模拟IP的分片自己生成一块待发送的数据,长度为300字节,最好是一个字符串假设网络的MTU=150字节发送的模拟用写入文本文件来代替,头部的数据用16进制表示,写完一个IP数据之后再换行(一行对应一个IP数据),用制表符(”t”)对齐25重组的
15、要点RFC815 :IP DATAGRAM REASSEMBLY ALGORITHMS 缓冲区链表的操作将新到的分片加入(查找定位)溢出时的丢弃数据报完整的判断将报文重组缓冲区链表的定时维护管理26IP选项的处理课后自己阅读程序实现的要点UCHAR *cp = (UCHAR*)(pip+1);int cnt = IP_HLEN(pip) sizeof(IPV4_HDR);/选项总长for(;cnt0;cnt-=optlen, cp+=optlen) /optlen:各选项长度27补充: IP软件设计思想4统一的输入队列以及统一的路由选择过程不区分数据报来自网络还是本机产生的,IP不需要在程序的
16、代码中对本地生成的数据报区别。使用单一的路由算法为所有的数据报选择路由,便于人们理解一个数据报采纳的路由。独立的IP进程使软件容易理解和修改IP软件能够不依赖硬件中断或被应用调用的那些过程本地主机接口为本地传送创建一个伪网络接口,避免将发往本机的情况作特例对待。本地伪网络接口接收到数据报时,它利用PTOTO字段决定由本机上的哪个协议软件来接收该报文 这样,IP视所有的选择路由的过程为统一且对称的:它从任一接口接收数据报,并为其选择路由,然后发送到另一接口,而不必为本地产生的(或发往本地的)数据报做特殊处理。28Services provided by IPConnectionless Delivery (each datagram is treated individually).Unreliable (delivery is not guaranteed).Fragmentation / Reassembly (based on hardware MTU).Routing.Error detection.29