分类: LINUX
2005-11-07 13:46:29
TCP/IP协议相关算法
一.IP选路算法:
算法:
RouteDatagram(Datagram,RoutingTable)
从数据报中提取目的IP地址D,并计算网络前缀N:
if N 与任何直接相连的网络的地址匹配
then 通过该网络把数据报交付到目的地D(其中涉及到D转换成一个屋里地址,庾笆?莶⒎⑺透弥?
else if 表中包含特定与具体主机的一个到D路由
then 把数据报发送到表中指定的下一跳
else if 表中包含到网络N的一个路由
then 把数据报发送到表中指定的下一跳
else if 表中包含一个默认路由
then 把数据报发送到表中指定的默认路由器
else 宣布选路由错:
PS:用来转发数据报的IP算法.给定下一个IP数据报和一个选路表,该算法选择数据报要发往的下一跳.所有路由都必须指定
直接连接的网络上的下一跳!
二.子网选路算法:
大家知道传统的选路表包含如下形式的表项:
(网络地址,下一条地址)
其中网络地址(network address)字段指明了目的网络N的IP地址,下一跳地址(next hop address)
字段表明了目的地为N的数据报将被发往的路由器的地址.标准选路算法吧目的地址的网络部分与选路表中
每一表项的网络地址字段比较,直到找到一个匹配.因为下一跳地址字段是用来指定直连接网络上的一个可
达机器的,所以只需要查一次表.
标准算法知道地址是如何划分成网络部分与本地部分的,因为前三个比特对地址类型和格式进行了编码
(即类型A.B.C和D).对于子网方式,单从地址上不可以判断那些比特对应于网络,那些比特对应于主机.所以,
子网方式的修改过的算法要在选路表中维护附加信息.每个表项都包含一个附加的字段,指明该项中的网络所
使用的子网掩码:
(子网掩码,网络地址,下一跳地址)
在选择路由时,修改过的算法使用子网掩码(subnet mask)提取目的地址的某些比特与表项进行比较.也就
是说,它把32比特目的IP地址与选路表的表项中的"子网掩码"逐比特比较进行布尔"与"运算,再把结果与该表
项中的"网络地址"相比较,看是否相等.若相等,则它把数据报发给该表项中的"下一跳地址"地段所指定的路由器.
三.统一的选路算法:
算法:
Route_Ip_Datagram(datagram,routing,routing_table)
从数据报中提取目的IP地址ID:
if ID的前缀匹配某直接相连的网络协议
then 通过该网络把数据报发送到目的站(包含ID转换成无力地址,封装数据报及发送该帧.)
else
for 选路表中的每一项 do
N = ID 逐比特与子网掩码想"与"
if N 等于项中的网络字段
then 将本数据报发往白哦项中下一跳地址所指定的路由器
endforloop
if 没有找到匹配的表项
then 宣布选路出错
事实上,大多数实现方法都去掉了对直接相连的明确测试.为了做到这一点,必须再表中为每个直接相连的网络
添加一个表项.与其他表项类似,每个对应直接相连网络的表项都包含一个掩码,指定了前缀中的比特数.
四.要求安全的算法:
IPsec定义强制需要的(也就是所以实现必须提供的)算法的最小集.再每种情况下,该标准都定义了特殊的用途.
鉴别
带有MD5的HMAC RFC 2403
带有SHA-1的HMAC RFC 2404
封装安全有效载荷
CBC模式中的HMAC RFC 2405
带有MD5的HMAC RCF 2403
带有SHA-1的HMAC RFC 2404
无鉴别
无封装
PS:IPsec必须的安全算法
最近在学习有关用TCP/IP协议进行网际互联的相关知识,上面是自己列出的一些算法.