• 《TCP/IP具体解释卷2:实现》笔记--域和协议


    Net/3组把协议关联到一个域,而且用一个协议族常量来标识每一个域。Net/3还通过全部的编址方法将协议分组。

    在一个域中

    的每一个协议使用同类地址。而且每种地址仅仅被一个域使用。作为结果,一个域能通过它的协议族或地址族常量唯一标识。

    下图是是我们讨论的协议和常量。



    1.domain结构

    一个协议有一个下图所看到的的domain结构来表示。


    下图显示了一个domains列表的样例。


    2.protosw结构

    在编译期间。Net/3为内核中每一个协议分配一个protosw结构并初始化。同一时候将在一个域中的全部协议的这个结构组织到一个
    数组中,每一个domain结构引用对应的protosw结构数组。一个内核能够通过提供多个protosw项为同一协议提供多个接口。
    protosw结构的定义例如以下:

    pr_type可能的值和相应的Internet协议例如以下图所看到的。


    pr_flags的值例如以下图所看到的。


    pr_input,pr_output,pr_ctlinput。pr_ctloutput和pr_usrreq这几个函数的关系例如以下下图所看到的:


    3.IP的domain和protosw结构

    申明全部协议的结构domain和protosw,并进行静态初始化。对于Internet协议。inetsw数组包括protosw结构。下图总结了
    在数组inetsw中协议信息。

    下图为Internet协议的数组定义和domain结构的定义。

    domaininit函数:
    在系统初始化期间,在main函数中。内核调用domaininit来链接结构domain和protosw。
    下图显示了链接的结构domain和protosw。它们
    配置在内核中来支持Internnet、Unix和OSI协议族。


    4.pfctlinput函数

    函数pfctlinput给每一个域中的每一个协议发送一个控制请求,当可能影响每一个协议的事件发生时。使用这个函数。比如一个接口
    被关闭。或路由表发生变化。当一个ICMP重定向报文到达时,ICMP调用pfctlinput,由于重定向会影响全部Internet协议。

    函数通过遍历每一个域,然后遍历每一个域以下的protosw。终于调用protosw中的pr_ctlinput函数。

    5.IP初始化

    Internet域没有一个初始化函数可是单个Internet协议有。如今,我们仅查看IP初始化函数ip_init。在该函数中,一个功能就是
    初始化数组ip_protox.
    一个网络层协议像IP必须奋勇输入数据报,并将它们传递到对应的运输层协议。为了完毕这些,对应的protosw结构必须通过
    一个在数据报中出现的协议编号得到。

    对于Internet协议。这由数组ip_protox来完毕,例如以下图所看到的:


    数组ip_protox的下标是来自IP的协议值。被选项是inetsw数组中处理此数据报的协议的下标。

    6.sysctl系统调用

    系统调用sysctl訪问并改动Net/3系统范围參数。

    系统管理员通过程序sysctl改动这些參数。每一个參数有一个分层的整数列表

    来标识。并由一个对应的类型,此系统调用的原型为:
    int sysctl(int *name, u_int namelen, void *old, size_t * oldlenp, void *new, size_t newlen) ;
    *name指向一个包括namelen个整数的数组。*old指向在此范围内返回的旧值。*new指向在此范围内传递的新值。
    下图总结了关于联网名称的组织。
    在上图中,IP转发标志的全名为:
    CTL_NET、PF_INET、0、IPCTL_FORWARDING
    用4个整数存储在一个数组中。


    net_sysctl函数:
    每层的sysctl命名方案通过不同函数处理。下图显示了处理这些Internet參数的函数。

    顶层名称由sysctl处理。

    网络层名称由net_sysctl处理,它依据族和协议将控制转给此协议的protosw项指定的pr_sysctl函数。


  • 相关阅读:
    2020软件工程作业05
    2020软件工程作业00--问题清单
    2020软件工程作业03
    2020软件工程作业02
    2020软件工程作业01
    软件工程个人作业06
    软件工程作业04
    软件工程作业05
    软件工称作业03
    2020软件工程作业02
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5074450.html
Copyright © 2020-2023  润新知