赞
踩
我们常说的TCP-IP协议其实是两种协议,TCP协议和IP协议。TCP协议位于OSI模型中的传输层,IP是Internet Protocol(网际互连协议)的缩写,IP协议位于OSI模型中的网络层。
首先我们需要了解IP协议的协议格式和内容:
IP协议的选路功能
每一个路由器中都会维护一张路由表,这张路由表中包含目的ip地址、网关(下一站路由器的IP地址)、标志位等信息。路由器在接收到Ip数据报文后,首先寻找能够和IP报文中目的地址完全匹配的地址,如果有则把数据包发送给对应的IP;如果没有,则寻找和目的网络好相同的网络地址,然后把报文转发给改网络地址指定的下一站路由来处理,如果依然没有匹配的网络号,则路由器会查找标为“默认”的表目,并将数据转发给符合默认表中的地址。如果默认表中也没有匹配的地址,路由器会返回一个差错。
1)搜索匹配的主机地址;
2)搜索匹配的网络地址;
3)搜索默认表项(默认表项在路由表中被指定为一个网络表项,其网络号为0);
4)如果上面三项都失败,则返回一个差错。
IP协议的分片重组功能
每一种物理网络都会规定链路层数据帧的最大长度,称为链路层MTU。如果链路层的数据长度加上头部长度大于MTU,那么IP层会将数据分成多片传输。IP协议的首部有3个标志位(3个bit位)用来区分数据是否分片:
如果IP层的数据需要进行分片,系统会将DF位置0,如果有更多的IP数据,则将MF位置1。接收端可以根据13位的偏移字段对分片的数据进行重组。
我们通过udp发送4702个字节长度的数据到网络,抓取到的数据如图:
可以看到DF位为0,表示数据报文分片。分片的数据在蓝色字体部分可以看到。可以看出4702个字节的数据被分成了4帧,长度分别是1480、1480、1480、270。1155、1156、1157、1158表示帧序号。数据长度的总和为4710,比udp数据的总长度多了8个字节是因为udp的头部占了8个byte。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。