《TCP/IP作品详细解释2:达到》注意事项--IP地址
1.接口和地址
如下面的图全部本文中讨论的接口和地址的结构看一个示例配置:
上图中显示了我们三个接口样例:以太网接口,SLIP接口和环回接口。
它们都有一个链路层地址作为地址列表中的第一个结点。
显示的以太网接口有两个IP地址。SLIP接口有一个IP地址,而且环回接口有一个IP地址和一个OSI地址。
全部的IP地址都被链接到in_ifaddr列表中,而且全部链路层地址能从ifnet_addrs数组訪问。
后面的部分讨论上图的数据结构以及用来查看和改动这些结构的IP专用ioctl命令。
2.sockaddr_in结构
之前讨论了通用的sockaddr和ifaddr结构。如今我们说明IP专用的结构:sockaddr_in和in_ifaddr。
在Internet域中的地址存放在
一个sockaddr_in结构:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvVE9ERDkxMQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
因为历史原因,Net/3以网络字节序将Internet地址存储在一个in_addr结构中,这个结构仅仅有一个成员s_addr,它包括这个地址。
3.in_ifaddr结构
下图显示了Internet协议定义的接口地址结构。
对于每一个指派给一个接口的IP地址,分配一个in_ifaddr结构,而且加入到接口地址列表中和IP地址全局列表中。
下图为以太网、PPP和环回in_ifaddr结构。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvVE9ERDkxMQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
4.地址指派
当接口结构在系统初始化期间被识别时的初始化。在Internet协议能通过这个接口进行通信前,必须指派一个IP地址。一个Net/3
内核执行,程序ifconfg就配置这些接口,ifconfig通过在某个插口上的ioctl系统调用来发送配置命令。通常都是通过系统引导时
调用shell脚本运行的。
下图是本文涉及到的ioctl命令。命令相关的地址必须是此命令插口所支持的地址族类,对于IP地址。ioctl命令在一个UDP插口上
发送。
本文中说明的ioctl的函数。
SIOCG命令用于获取地址信息。
SIOCS用于设置地址信息。
SIOC代表socket ioctl。
上图中的命令改动一个接口的相关地址信息。因为地址时特定协议使用的,因此。命令处理是与协议相关的。
4.1.ifioctl函数
ifioctl协议将协议相关的ioctl命令传递给此插口关联的pr_usrreq函数。将控制权交给udp_usrreq,而且又马上传给in_control,
在in_control中进行大部分处理。
我们依照以下的顺序查看这个接口ioctl命令。以及这些命令在in_control中处理。
1.指派一个地址、网络掩码或目标地址
2.指派一个广播地址
3.取回一个地址,网络地址。目标地址或广播地址
4.给一个接口指派多播地址
5.删除一个地址
对于全部这命令,在in_control函数中有两个switch语句。第一个switch语句进行前提处理,然后在第二个switch语句中处理
命令。
4.2.前提条件:SIOCSIFADDR、SIOCSIFNETMASK和SIOCSIFDSTADDR
对于这三个命令in_control函数中第一个switch做同样的处理:
1.仅用于超级用户
2.分配并初始化in_ifaddr结构
4.3.地址指派SIOCSIFADDR
4.4.in_ifinit函数
4.5.网络掩码指派:SIOCSIFNETMASK
4.6.目的地址指派:SIOCSIFDSTADDR
对于点对点接口,在链路还有一端的系统的地址使用该命令指定。
代码设置新地址后,使用函数if_ioctl通知硬件。假设地址原来有一个关联的路由。首先调用rtinit删除这路由,并再次调用rtinit
为新地址安装一个路由。
4.7.获取接口信息
获取接口信息的过程比較简单。将in_ifaddr相应的信息拷贝到ioctl參数ifreq中。
4.8.每一个接口多个IP地址
SIOCG和SIOCS命令仅仅操作一个接口关联的第一个IP地址,为支持每一个接口多个IP地址,必须使用SIOCAIFADDR命令指派和
配置其它的地址。
实际上SIOCAIFADDR能完毕SIOCG和SIOCS命令能完毕的操作。
程序ifconfig使用SIOCAIFADDR来配置一
个接口的全部地址信息。
4.9.删除IP地址:SIOCDIFADDR
命令SIOCDIFADDR从一个接口删除IP地位置。查找并从当前接口要求IP同样的地址结构,并删除任何路由都与此地址相关联。
版权声明:本文博主原创文章,博客,未经同意不得转载。
《TCP/IP作品详细解释2:达到》注意事项--IP地址的更多相关文章
- 《TCP/IP作品详细解释2:实现》笔记--Radix树路由表
通过IP完整的路由是路由机制,它通过搜索路由表来确定从哪个分组被发送的接口执行此,它是不一样的路由策略,路由策略 它是一组规则,这些规则可以被用来确定哪些路由编程到路由表,Net/3内核实现的路由机制 ...
- 《TCP/IP作品详细解释2:达到》注意事项--ARP:地址解析协议
Net/3于ARP和实施密切与路由表相关联的,下图显示了我们的叙述性说明ARP使用样品. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvVE9ERDkxMQ ...
- TCP/IP具体解释--UDP数据报中的IP分片
1.UDP首部 2.UDP分片 在第二章,讲链路层是,提到过以太网.刨除数据帧帧头.最多传输的长度为1500.也就是说,假设一个ip数据报,长度大于1500,则须要分片. 分片方法: 在ip头中3位标 ...
- 三、tcp、ip协议详细
1. 什么是 TCP/IP? TCP/IP 是一类协议系统,它是用于网络通信的一套协议集合. 传统上来说 TCP/IP 被认为是一个四层协议 1) 网络接口层: 主要是指物理层次的一些接口,比如电缆等 ...
- 关于 /proc/sys/net/ipv4/下 文件的详细解释
关于 /proc/sys/net/ipv4/下 文件的详细解释: 1) /proc/sys/net/ipv4/ip_forward 该文件表示是否打开IP转发. 0,禁止 1,转 ...
- Linux下函数调用堆栈帧的详细解释【转】
转自:http://blog.chinaunix.net/uid-30339363-id-5116170.html 原文地址:Linux下函数调用堆栈帧的详细解释 作者:cssjtuer http:/ ...
- #pragma详细解释(一)
#pragma详细解释 #pragma详细解释(一) 2010-04-18 14:21:00| 分类: 默认分类 | 标签: |字号大中小订阅 在#Pragma是预处理指令它的作用是设定编 ...
- linux tcpdump抓取HTTP包的详细解释
tcpdump tcpdump是linux系统自带的抓包工具,主要通过命令行的方式,比较适合在线上服务器进行抓包操作,如果是windows或者ubuntu完全可 以选择一些图形化的工具,ubuntu比 ...
- Linux内核TCP MSS机制详细分析
前言 上周Linux内核修复了4个CVE漏洞[1],其中的CVE-2019-11477感觉是一个很厉害的Dos漏洞,不过因为有其他事打断,所以进展的速度比较慢,这期间网上已经有相关的分析文章了.[2] ...
随机推荐
- WebGL自学教程——WebGL演示样例:開始
最终開始WebGL的演示样例了,...... 開始 使用WebGL的步骤,非常easy: 1. 获得WebGL的渲染环境(也叫渲染上下文). 2. 发挥你的想象力,利用<WebGL參考手冊> ...
- jquery下php与ajax的互传数据(json格式)自我总结
研究了一整天的json数据与ajax的数据传输,现在进行一个小的自我总结,仅供参考 1.关于ajax的认识 $.ajax(),是jquery下包装好的一个函数:参考地址:http://www.w3sc ...
- Maven安装中的问题
按照<Maven实战>中的讲述,在安装完Maven后执行mvn -v的时候,出现了问题.在网上搜索到了解决办法: 引用:http://blog.csdn.net/xueyepiaoling ...
- Android自己定义控件实战——仿淘宝商品浏览界面
转载请声明出处http://blog.csdn.net/zhongkejingwang/article/details/38656929 用手机淘宝浏览商品详情时,商品图片是放在后面的,在第一个Scr ...
- Tomcat6 Session建立机制简要
底: 测试部门做压力测试, 结果没多久新闻,出现OutOfMemory. 查找原因,通过监视工具,查找StandardSession(org.apache.catalina.session.Stan ...
- HGE引擎 - 绘制,声音,碰撞处理
原帖地址:http://blog.csdn.net/i_dovelemon/article/details/8818037 另外,年代久远,该引擎官网早已上不去了!!! 1.库的安装和下载 从官网上h ...
- SecureCRT学习之道:用SecureCRT来上传和下载数据
今天才知道,原来SecureCRT可以使用linux下的zmodem协议来快速的传送文件,而且还使用非常方便哦,我还傻傻的找其他软件来sftp,笨死了:(你只要设置一下上传和下载的默认目录就行opti ...
- Windows phone 8 学习笔记(7) 设备
原文:Windows phone 8 学习笔记(7) 设备 本节主要涉及到 Windows phone 8 手机支持的各类设备,包括相机.设备状态,振动装置等.还有各类感应器,包括磁力计.加速度器和陀 ...
- 扩展WebBrowser控件,使其支持拖放文件
public partial class UserControl1 : WebBrowser { private const int WmDropfiles = 0x233; [DllImport(& ...
- Linux 编程学习笔记----ANSI C 文件I/O管理
转载请注明出处:http://blog.csdn.net/suool/article/details/38129201 问题引入 文件的种类 依据数据存储的方式不同,能够将文件分为文本文件和二进制文件 ...