IP总结
- 网络层向上只提供无连接的、尽最大努力支付的数据报服务
- IP地址,32位,分为两部分,网络和主机标示
- IP地址分类:
- A类:0开头,1~8位为网络标示
- B类:10开头,1~16位为网络标示
- C类:110开头,1~24位为网络标示
- D类:1110开头,1~32位为网络标示(用于多播)
- IP地址和硬件地址:物理地址数据链路层和物理层使用的地址,IP地址是网络层及以上层使用的地址,是一种逻辑地址。使用IP地址的IP数据报交给数据链路层之后就被封装成MAC帧,MAC帧中源地址和目的地址都是硬件地址
- 地址解析协议ARP:根据IP地址找到相应硬件地址。ARP只是转换局域网中的IP地址到硬件地址
- 在每一个主机中存放有一个ARP高速缓存,里面有本局域网上各主机和路由器的IP地址到硬件的映射表,
- 当主机刚刚启动或者ARP表中没有相应IP地址时:在局域网中广播发送ARP请求分组,此局域网中所有主机的ARP进程都能收到此请求分组,当与某主机IP地址一致时响应,再将此记录写入高速缓存中
- 高速缓存中的每一项都要设置一个生存时间,硬件地址更新
- IP数据报格式:32位,固定部分20字节
- 版本:IPv4还是IPv6
- 协议:指出此数据报携带的数据使用的是哪种协议,以使目的主机IP层知道需要将数据交给那个处理过程
- 首部校验和:使用CRC校验码,只是校验首部部分,不包括数据
- 源地址,目的地址
- IP层转发流程:使用路由表,每一行对应一个网络(目的网络地址:下一条地址)
- IP数据报根据目的主机找到下一条路由器,间接交付
- 到达最后一个路由器时,向主机直接交付
- 分组转发算法:
- 根据首部中IP地址得到目的网络地址
- 若此路由器与网络直接相连,则直接交付
- 若路由表中有到达目的网络的路由,则间接交付
- 若路由表中有默认路由,则交付默认路由
- 报告分组转发错误
- 路由表:因特网中主机数大于路由器数量,属于效率考虑,主机不和连接在互联网上的路由器定期交换路由信息。在主机刚开始工作时,一般在路由表中先设置一个默认路由,不管要把数据报发送到哪里,都先直接发送到默认路由中,而这个默认路由知道每一个目的网络的最佳路径,如果到达某一个目的网络不需要经过默认路由,则将此信息告诉主机,在主机路由表中加上一条记录
- 划分子网:
- 地址空间利用率低,路由表过大,两级地址不够灵活(比如需要在其他地方新建子网)
- 划分方式:
- 将所属物理网络划分为若干个子网,但对外仍表现为一个网路
- 网络的主机号借用若干位作为子网号
- 发送IP数据报时仍然是根据目的网络号发送,在路由器收到数据报时,再按目的网络号和子网号找到子网交付
- 子网掩码:将源网络分为多个物理网络
- IP网络地址部分全为1,主机部分全为0
- 无分类编址CIDR:消除了网络IP地址类别及划分子网的概念,从三级地址改为两级:IP地址/网络前缀所占位数(后面为子网掩码位数)
- 网际控制报文协议ICMP:为了更高效转发IP数据报和提高支付成功机会。ICMP报文存在IP数据报的数据部分
- 分类:
- 差错报告报文:当交付出现问题(如终点不可达,时间超过,参数问题)
- 询问报文:回送请求回答,时间戳请求回答
- 应用举例:
- PING:测试两个主机的连通性,没有通过传输层。如果目的主机正常工作则发回回送请求报告
- traceroute:数据报中封装的是无法交付的UDP用户数据报。路途中每经过一个路由器,相应路由器就会向源主机发送时间超过的差错报告报文。就可以知道经过的路由信息。
- 分类:
- 路由选择协议:因特网一般采用动态的路由协议。因特网将整个互联网划分为多个较小的自治系统,因此路有选择协议划分为
- 内部网关协议:在一个自治系统内部使用的路有选择协议,RIP、OSPF
- 外部网关协议:不同自治系统之间
- 内部网关协议RIP工作原理:要求网络中每一个路由器都要维护一个从他自己到下一个目的网络的距离纪录,能直接到达的网络记为1,每经过一个路由器加1。
- 需要不断和其他的路由器交换信息,要求:
- 仅和相邻路由器交换信息
- 交换当前路由器所知道的全部信息
- 按固定时间间隔交换路由信息
- 路由表中的内容:目的网路,距离,下一条地址
- 距离向量算法:
- 将收到的相邻路由器X发送来的信息,下一条都改为X,距离加1
- 对于每一条信息,如果目的网络不存在原路由表中,加上
- 如果原路由表中对应目的主机行,下一跳是X,则更新
- 如果原路由表中对应目的主机行,下一跳是不X,比较距离若更小,则更新
- 需要不断和其他的路由器交换信息,要求:
- 内部网关协议OSPF
- 特点:
- 与RIP不同,将路由信息发送到所有路由器而不是相邻路由器
- 不采用UDP而是直接用IP数据报
- 特点:
- 外部网关协议BGP:
- 不使用内部网关协议原因:
- 因特网规模太大,自治系统之间选择困难
- 原则路由时不是选择最短路径,需要考虑网络性能,安全性
- 自治系统管理员需要为自治系统选择一个路由器作为‘发言人’,当需要交换路由信息时,先建立TCP连接,在此连接上建立会话。
- 不使用内部网关协议原因:
- 虚拟网络VPN
- 由于IP地址紧缺,在一个机构内部可以自行分配其IP地址,仅在机构内部有效,因特网中的路由器对目的地址是专用地址的数据报不能转发,因此内网中主机不能作为服务器
- 当一个机构不同部门在不同地点时,可以利用因特网作为专用网之间的通信载体,这样的网络称为虚拟专用网,通过因特网传输的数据需要加密,每个专用网需要有一个具有全球IP地址的路由器
- 网络地址转换NAT:
- 当专用网中的主机想要访问互联网中的主机,需要将本地地址转换为全球IP地址
- NAT地址转换表:源IP地址(本地地址)、目的主机地址(互联网IP地址)
- 可以利用运输层端口号,使得多个拥有本地地址的主机共用一个NAT路由器的全球IP地址,叫做NAPT网络地址与端口号转换
IP总结的更多相关文章
- Tcp/ip 报文解析
在编写网络程序时,常使用TCP协议.那么一个tcp包到底由哪些东西构成的呢?其实一个TCP包,首先需要通过IP协议承载,而IP报文,又需要通过以太网传送.下面我们来看看几种协议头的构成 一 .Ethe ...
- 网站定位之---根据IP获得区域
记得以前做一个培训机构网站时候需要定位,那时候用的搜狐的api,不是很精准. demo:https://github.com/dunitian/LoTCodeBase/tree/master/NetC ...
- 通过 floating IP 访问 VIP - 每天5分钟玩转 OpenStack(126)
前面我们是直接用 curl 测试 VIP,在更为真实的场景中通常会使用 floating IP 访问 VIP. 下面我们给 VIP 关联一个 floating IP,再进行测试. 访问 Project ...
- PHP获取客户端IP
/** * 获取客户端IP */ function getClientIp() { $ip = 'unknown'; $unknown = 'unknown'; if (isset($_SERVER[ ...
- 获取 dhcp IP 过程分析 - 每天5分钟玩转 OpenStack(91)
前面我们已经讨论了 DHCP agent 的配置以及 namespace 如何隔离 dnsmasq 服务,本节将以 cirros-vm1 为例分析获取 DHCP IP 的详细过程. 在创建 insta ...
- Java获取本机的IP与MAC地址
有些机器有许多虚拟的网卡,获取IP地址时会出现一些意外,所以需要一些验证: // 获取mac地址 public static String getMacAddress() { try { Enumer ...
- 根据ip判断返回城市名称查询当地天气
<?phpheader("content-type:text/html;charset=utf-8");date_default_timezone_set("Asi ...
- TCP/IP基础
TCP/IP 是用于因特网 (Internet) 的通信协议. 计算机通信协议是对那些计算机必须遵守以便彼此通信的规则的描述. 什么是 TCP/IP? TCP/IP 是供已连接因特网的计算机进行通信的 ...
- CentOS:ECDSA host key "ip地址" for has changed and you have requested strict checking(转)
原文地址:http://blog.csdn.net/ausboyue/article/details/52775281 Linux SSH命令错误:ECDSA host key "ip地址& ...
- TCP/IP之TCP_NODELAY与TCP_CORK
TCP/IP之Nagle算法与40ms延迟提到了Nagle 算法.这样虽然提高了网络吞吐量,但是实时性却降低了,在一些交互性很强的应用程序来说是不允许的,使用TCP_NODELAY选项可以禁止Nagl ...
随机推荐
- sql 基本查询
要查询数据库表的数据,我们使用如下的SQL语句: SELECT * FROM <表名> 假设表名是students,要查询students表的所有行,我们用如下SQL语句: -- 查询st ...
- 其它课程中的python---6、python读取数据
其它课程中的python---6.python读取数据 一.总结 一句话总结: 记常用和特例:慢慢慢慢的就熟了,不用太着急,慢慢来 库的使用都很简单:就是库的常用函数就这几个,后面用的时候学都来得及. ...
- c# 使用 java的 rsa 进行签名
/// <summary> /// 类名:RSAFromPkcs8 /// 功能:RSA加密.解密.签名.验签 /// 详细:该类对Java生成的密钥进行解密和签名以及验签专用类,不需要修 ...
- option click事件
$("#m-s-type").on("change",function(){ var id = $(this).find("option:select ...
- HTML5自定义属性的设置与获取
<div id="box" aaa="bbb" data-info="hello"></div> <body& ...
- Codeforce 1182B Plus from Picture
题目链接:http://codeforces.com/problemset/problem/1182/B 题意:检查图中 * 形成的是否是唯一的十字. 思路:dfs找到十字的中心,反向消除十字,最后检 ...
- 20140730 word标题样式 数组
1.word 标题四, 右键更新 自己也可以新建标题样式 2.数组 连续内存,空间复杂度高(即使数组存在一个元素,占据的空间的大小不变),时间复杂度低(0(1)访问),内存分配一次性完成
- webpack 配置之入门一
webpack 是一个现代 Javascript 应用程序的模块打包器(module bundler ),它里面的功能比较多,核心模块可分为模块打包.代码分割与按需加载.这里只简单讲解下 webpac ...
- 小白如何在Windows下使用Redis
一.redis下载按装 Nuget 可以直接下载 redis 将下来的包拷贝到自已需要的目录如我放到桌面文件夹“近期需要\Redis应用\redis-64.3.0.503” 操作 cmd进入命令操作 ...
- 2019-3-15-在-Windows-Defender-设置文件夹白名单提升-VisualStudio-编译速度
title author date CreateTime categories 在 Windows Defender 设置文件夹白名单提升 VisualStudio 编译速度 lindexi 2019 ...