首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux网络-IP协议

文章目录 零、前言 一、网络层 理解路由选择 二、IP协议 三、网段划分 四、IP地址数量限制 五、私有和公网IP地址 NAT技术 六、路由 零、前言 本章主要讲解学习网络层的作用, 深入理解IP协议的基本原理...这个NSAP就是由对应网络所运行的网络层通信协议来定义的,在目前最常见的TCP/IP协议网络中,这个协议就是IP协议,对应的NSAP就是IP地址 在数据链路层中传输的是一个个以许多字节为单位的帧,在每个帧的帧头都有源节点的...(IP协议则是IP地址寻址);如果通信双方在不同网络内,需要网络层中的网络地址进行寻址,即必须通过三层进行 二、IP协议 基本概念: 主机: 配有IP地址, 但是不进行路由控制的设备 路由器: 即配有IP...16位总长度,获得整个报文的大小,减去报头大小就是有效载荷的大小了 IP确定向上交付的协议层: 当IP从底层获取到一个报文后,提取8位协议从而知道应该将分离出来的有效载荷交付给上层的哪一个协议的...即使备置两台 NAT 做容灾备份,TCP 连接还是会被断开 六、路由 概念及介绍: 数据的发送和转发就是在复杂的网络结构中, 找出一条通往终点的路线 路由的过程, 就是这样一跳一跳(Hop by

4K20

Linux】网络层协议IP

8位协议表示网络层的上层的协议类型,ICMP协议是0000 0001,TCP是0000 0110,UDP是0001 0001,通过8位协议就可以将有效载荷向上分用,交付给上层协议了。 2....……等等,而IP协议只负责跨网络发送数据即可。...一般路由器的ip,都是网络号.1,但并不是所有网段的路由器ip都是这样配置的,具体取决于网络管理员的设置和具体的网络拓扑结构。但一般家用的路由器都是这样配置的。...隐藏内部网络拓扑结构:这个作用可以算是捎带的,看一下就好,时间长了肯定也会忘,但上面的功能是NAT技术最大的价值,一定要记住!...当内部设备通过 NAT 路由器访问互联网时,外部网络只能看到 NAT 路由器的公网IP地址,而无法直接获知内部设备的真实IP地址,这样就隐藏了内网的拓扑结构

31130
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Linux并发(task_struct结构

    Linux下的进程也好,线程也罢,在内核中统统都以任务(task)的面目示人,他们用一样的内核数据结构来表示。...拓展: 内核中用一个非常大的结构来表达进程或者线程(统称任务task),下面是这个结构的掠影: ?...如果没什么意外,这个结构可能是这个宇宙中最大的单个变量了,一个结构就有好几k那么大,想想他包含了一个进程的所有信息,这么庞大也不足为怪了。...LINUX内核代码纷繁复杂,千头万绪,这个结构是系统进程在执行过程中所有涉及的方方面面的缩影,包括系统内存管理子系统、进程调度子系统、虚拟文件系统等等,以这个所谓的PCB为切入点,是一个很好的研究内核的窗口...总之,当一个程序文件被执行的时候,内核将会产生这么一个结构,来承载所有该活动实体日后运行时所需要的所有资源,随着进程的运行,各种资源被分配和释放,是一个动态的过程。

    1.3K20

    linux时间相关结构和函数整理

    一般通过 time_t time = time(NULL); 获取. (2) struct timeb结构: 主要有两个成员, 一个是秒, 另一个是毫秒, 精确度为毫秒. 1 struct timeb...microseconds */ 5 }; 由int gettimeofday(struct timeval *tv, struct timezone *tz);获取. struct timezone结构的定义为...获取特定时钟的时间,时间通过tp结构传回,目前定义了6种时钟,分别是 CLOCK_REALTIME                                         系统当前时间,从1970...而实际实现中,linux上的nanosleep和alarm相同,都是基于内核时钟机制实现,受linux内核时钟实现的影响,并不能达到纳秒级的精 度,man nanosleep也可以看到这个说明,man里给出的精度是...:Linux/i386上是10 ms ,Linux/Alpha上是1ms

    2.9K50

    结构

    • •3.为此,C语言专门提供了一种构造类型来解决上述问题,这就是结构,它允许内部的元素是不同类型的。 二、结构的定义 •1.定义形式:结构体内部的元素,也就是组成成分,我们一般称为"成员"。...•1.先定义结构类型,再定义变量。...输出结果为: 结构数组 1.定义 •跟结构变量一样,结构数组也有3种定义方式 struct Student {     char *name;     int age; }; struct Student...,跟普通数组的用法是一样的 结构作为函数参数 •将结构变量作为函数参数进行传递时,其实传递的是全部成员的值,也就是将实参中成员的值一一赋值给对应的形参成员。...•每个结构变量都有自己的存储空间和地址,因此指针也可以指向结构变量 •* 结构指针变量的定义形式:struct 结构名称 *指针变量名 •* 有了指向结构的指针,那么就有3种访问结构成员的方式

    1.6K130

    结构

    (如 int ) 函数参数是什么类型就传什么类型 /* 函数功能:定义一个结构,在另一个函数中打印结构成员的值; 函数形参为结构变量的函数使用void qq(struct book cc); */...);   //因为函数在主函数下面所以要声明一下函数 void main() { struct book one;       //定义一个结构名为book的结构变量one one.cose=25;... -即struct book cc和struct book one;  问一个问题如何把一个结构的变量的成员的信息copy到另一个结构变量?... one;       //定义一个结构名为book的结构变量one struct book cc;        //定义一个结构名为book的结构变量cc one.cose=25;  one.name...struct book shu[20];    //20本书  /* 函数功能:结构变量为数组的结构 */ /* 函数功能:结构变量为数组的结构 */ #include"stdio.h" struct

    1.4K60

    结构

    结构 结构的作用 数组:具有相同类型的数据的集合 结构:存储不同类型的数据项 单一的数据类型无法满足特定的需求,数据类型的集合体:结构 出现了 结构的定义和使用 结构的定义方式 结构是一种自定义数据类型...struct用来定义一个类型 结构的定义: 1struct 结构名字 2{ 3 //成员变量 4}; 定义结构后再定义变量 1//例1: 2struct stu 3{ 4 int id...,"小明同学"}; // STU这个结构类型就可以直接定义使用了 定义结构的时候给结构取别名 1//例3: 推荐这种写法 2typedef struct stu //定义结构的时候取别名...该结构最大对齐数为 int 也就是4个字节大小 ,结构的大小就是4的整数倍 ?...如果嵌套了结构的情况,嵌套的结构对齐到自己最大对齐数的整数倍处,结构的整体大小就是所有最大对齐数(含嵌套结构的对齐数)的整数倍。

    1.4K30

    结构

    结构 1.1 结构基本概念 结构属于用户 自定义的数据类型, 允许用户存储不同的数据类型 1.2 结构定义和使用(cpp23.cpp) 语法:struct 结构名{结构成员列表}; 通过结构创建变量的方式有三种...: struct 结构名 变量名 struct 结构名 变量名 = {成员1值,成员2值,...}...std; //定义结构,定义结构时 struct 关键字 不能省略 struct Student { //以下是 结构属性 //姓名 string name;...作用:将自定义的结构放入到数组中方便维护 语法:struct 结构名 数组名[元素个数] = {结构1,结构2,...}; 使用 结构数组 时,struct 关键字可以省略 #define...(cpp25.cpp) 作用:结构中的成员可以是另一个结构 例如:每个老师辅导一个学员,一个老师的结构中,记录一个学生的结构; 1.6 结构做函数参数(cpp33.cpp) 作用:将结构作为参数向函数中传递

    16200

    结构

    结构 为什么要创建结构类型?在我们处理复杂对象的时候,比如描述一个人的时候,它有名字,性别,身高,体重等一些方面的特征。用结构打包描述的时候就比较方便。...结构类型的声明 结构类型的关键字struct。 声明的基本模板为: struct 标签 { 成员; }变量; 结构的成员可以是不同的类型。...结构类型的特殊声明: 匿名结构类型,它只能使用一次。...而结构在内存中存在结构对齐的现象。 1.第一个成员变量放在偏移量为0的位置 2.后面的成员放在偏移量为对齐数的整数倍的位置。...5.如果含有结构嵌套的情况,镶嵌的那个结构的对齐数是里面成员的最大对齐数。

    58820

    结构

    emp8 取得就是结构的值 Go 语言允许我们在访问 firstName 字段时,可以使用 emp8.firstName 来代替显式的解引用 (emp8).firstName。...如果结构名称以大写字母开头,则它是其他包可以访问的导出类型(Exported Type)。...同样,如果结构里的字段首字母大写,它也能被其他包访问到 结构名称首字母和字段大小写,对同一个包的读写不受任何影响,如果不在同一个包,就有严格的显示,大写能方位,小写不能方位 12.结构相等性 结构是值类型...如果它的每一个字段都是可比较的,则该结构也是可比较的。如果两个结构变量的对应字段相等,则这两个变量也是相等的。...package employee // 创建一个私有的结构 type employee struct { name string age int } // 返回结构类型 func

    1.1K20

    Ip协议详解

    参考 Ip协议是Tcp/Ip协议中的核心协议,位于网络层,上层的tcp、udp、icmp等协议都要依靠它。 Ip协议提供了一种尽力交付、无连接的服务。不保证Ip数据包一定能到达目的地。...8位的协议字段用来标示ip数据报所承载的数据报类型,17为udp,6为tcp,4表示ipv4. 16位头部校验和字段仅计算ipv4的头部。所以内部的tcp等数据报需要自己记录本身的校验和。...ip协议根据相应的转发表,来转发接收到的数据。一个转发表至少包含以下4部分: 掩码,子网掩码,用来与ip地址执行与操作。...下一跳,根据对比目的网络地址,决定数据报的下一跳 *接口,由ip层使用的标识符。 备注 Ip协议数据报中的目的地址在经过每一跳时都不改变,但是链路层的目的地址每跳都会发生改变。...参考 《TCP/IP详解(卷1:协议)》第二版 ip协议详解 欢迎与我分享你的看法。 转载请注明出处:http://taowusheng.cn/

    96630

    浅谈TCP IP协议栈(四)IP协议解析

    通过之前的网络层基础知识,IP地址以及路由器的简介,大家应该对于TCP/IP有一个大致的了解,在脑海里应该对于网络的几个基础概念有个大概的了解,简单点说整个协议栈就是在做一件事,规定网络报文(网络传输中的数据报...最常用的开始学起: 链路层——以太网、VLAN 网络层——IP协议 传输层——TCP/UDP协议 应用层——HTTP协议 上面的几种协议,如果都能熟练掌握,那基本上就是入门并且偏上的水平了,所以接下来我们就逐一介绍各个协议...我们重点介绍IP首部,可以看到,每一行是4个字节,也就是32位,而对于每一行我们又根据位数分为不同的字段,先来看看每个字段具体的含义: 第一段: 4位版本号:取值为4时代表IPV4协议,取值为6时代表IPV6...8位协议:代表着这份IP报文承载着何种上层传输协议或者网络协议,常见的取值与对应关系如下: ICMP协议 IGMP协议 TCP协议 UDP协议 IGRP协议 16位首部校验和:用于检验收到的报文是否有差错...第四段: 32位源IP地址:发送方IP地址 第五段: 32位目的IP地址:接收方IP地址 介绍完IP报文的格式以后,我们再来说一下IP报文的特点,其主要特点有以下几点: IP报文具有不可靠性,即不能发送方发送报文后

    1.4K40

    【C 语言】结构 ( 结构浅拷贝 )

    文章目录 一、结构浅拷贝与深拷贝 二、结构浅拷贝 三、结构浅拷贝代码示例 一、结构浅拷贝与深拷贝 ---- 结构 中 嵌套了 指针 , 指针指向的内存 , 如果需要 malloc 在堆内存中...拷贝 指针变量的值 , 不会拷贝 指针变量 指向的 内存空间的 数据 ; 二、结构浅拷贝 ---- 结构浅拷贝 : 下面两种方式的拷贝 , 是结构的浅拷贝 ; 直接拷贝结构体内存 : //...结构体内存拷贝 // 该拷贝是浅拷贝 memcpy(to, from, sizeof (Student)); 使用 = 操作拷贝 : 只会将 结构 变量的 内存 , 从 from 指针指向的地址..., 拷贝到 to 指针指向的地址 ; // 结构直接赋值 , 与上面的代码作用相同 // 该拷贝也是浅拷贝 *to = *from; 三、结构浅拷贝代码示例 ---- 代码示例...数据类型 , 同时为该结构类型声明 别名 * 可以直接使用 别名 结构变量名 声明结构类型变量 * 不需要在前面添加 struct 关键字 */ typedef struct Student

    3K20
    领券