IP协议讲解

发送报文->我们需要进行路径选择

主机和路由器统称为节点

IP协议:解决什么问题呢?

提供一种能力,将数据包跨网络从B发送到A主机

目标地址=所在城市+目标景点

IP地址=目标网络+目标主机

在学习网络时认识

1.网络不是凭空产生的,是有人为我们建设的

2.网络世界时精心设计的,像OS

IP报头

1.如何分离

4位首部长度 【0,60】标准报头大小20

16位总长度 = 4位首部长度(报头+选项) + 数据

2.如何分用

4位版本: IPV4 / IPV6

8位协议:发送方填充,对方识别,决定是用udp/tcp通信

​8位服务类型(Type Of Service): 3位优先权字段(已经弃用),4位TOS字段,和1位保留字段(必须置为0).4位TOS分别表示: 最小延时,最大吞吐量,最高可靠性,最小成本,这四者相互冲突,只能选择一个.对于ssh/telnet这样的应用程序,最小延时比较重要; 对于ftp这样的程序,最大吞吐量比较重要.

8位生存时间:报文经过路由器所经历的跳数,防止报文环路问题,当报文每经过一个路由器就将生存时间减减,为0,直接丢弃该报文

32位源IP:发送端IP

32位目的IP:目的端IP

16位标识 3位标志 13位片标识

数据链路层规定,单个数据帧不能太大

​​

mtu:最大传输单元 上图为1500字节,代表ip的报文不能超过1500字节

如果此时IP就要发送3000的报文,这就要求网络层ip学会,分片与组装,同层网络层发送方分片,接受层组装。

我们接下来谈的三个字段就是为了实现分片与组装

网络层ip的分片策略是无奈的,分片策越会使得丢包效率变得更高,1个报文分成10个报文去发,在传输途中如果丢了一片,接收方就无法组装,这时候就需要补发10个报文,使得传输效率遍变低

那么如何做到不分片呢,这时候就要去要求传输层

tcp发送报文,不能只按照接收方的缓冲区接收能力,去直接发一整个大报文,而是按照自己的切片可能性,设置自己报文的大小。

如果mtu为1500,在不考虑ip与tcp报文中的选项,他们的报头都是20字节,也就是说传输层发送的最大数据大小就是1460,它叫做MSS(最大数据段尺寸)

16位标识

如果报文被分片了,16位标识都是相同的

3位标记

第一位1表示保留;留给后面用

第二位1表示禁止分片:表示如果报文超过了mtu,该报文应该被直接丢弃

第三位1表示“更多分片”:分片的最后一片为0,表示一个报文分片的最后一个分片,在此分片之前该值都为1

13位片偏移

分片相对于原始IP的开始处的偏移,表示分片在原报文的所处的哪个位置,要*2的3次方得到相对于报文的实际位置

尝试下分片

例如一个ip报文3000字节,mtu为1500。

​​​

尝试下组装
0.你怎么知道上层报文分片

看到报文的3位标志,更多分片为1,证明分片,如果是结尾分片,查看片偏移。

按照16为表示,收集相同报文的分片

1.首先我得保证分片收全了

a.首先第一个切片的13位片偏移为0,如果切片中没有13位片偏移为0的切片,则没有头部切片,

b.我们按照报文中16位总长度是知道报文总大小的,13位片偏移*2的3次方,再加上头部切片报文总大小,就可以知道下一个切片的片偏移应该为多少,

下一个切片再用,第二个切片的有效载荷大小加上13为片偏移找到,依次类推 (第二个切片是多加了一个报头的)

最后一个切片依靠他的3位标志第三位为0。

2.正确按序组合

按照片偏移与3位标志即可

网段划分(重要)

​​​

路由器既属于上一个子网,又属于下一个子网,主机标识往往是1

例如:我们的路由器一端是自己构建的子网,另一端是运营商的子网

路由器不仅构建子网,还对子网中的IP进行分配管理(DHCP)

1.网段划分是什么?

​​

然而我们根本不会存在子网有这么多的情况

新的划分方案CIDR

IP地址与子网掩码按位与得到网络号

子网掩码会在路由表中

像B类地址,8位主机号根本用不到,让主机号的前8位作为网络号的一部分,这样就可以在一个B类网络再构建出2的8次方子网。

子网掩码就提高了网络号的利用率

私有IP地址和公网IP地址

私有IP地址:构建局域网

公网IP地址:构建Internet

如果一个组织内部组建局域网,IP地址只用于局域网内的通信,而不直接连到Internet上,理论上 使用任意的IP地址都 可以,但是RFC 1918规定了用于组建局域网的私有IP地址

10.,前8位是网络号,共16,777,216个地址

172.16.到172.31.,前12位是网络号,共1,048,576个地址

192.168.,前16位是网络号,共65,536个地址

包含在这个范围中的, 都成为私有IP, 其余的则称为全局IP(或公网IP);

2.为什么要设计网段划分?

1.提高定位和查找主机的效率

根据目标网络进行路由

运营商角色

2.内网ip不能出现在公网中,不同的子网ip允许重复,大大缓解了IP资源不足的问题.​

那么内网ip怎么达到公网呢?

任何一个内网路由器,在转发的时候会将报文中src ip地址替换成自己的WAN口ip。(NAT技术)重要

那么如何从路由器到我们这台主机呢?

我们知道我们源IP到达公网是由路由器进行更换的,但是路由器不仅仅做了替换,路由器还构建了一张NAT转化表,内网ip与公网ip的转换互为键值(一一对应)

所以路由器可以做到内网ip到公网ip的转换,同时做到了当接收报文时,将公网ip替换成内网ip,当报文返回时,就可以通过这张转化表原路返回。

路由器还有可能将端口号替换了

当一个子网内两台主机的不同进程的端口号相同时,如果路由器不去更改端口号,转换成的公网ip+端口号是相同的,因为此时公网ip是同一个路由器Wanc号

由于转换表需要一一对应,所以得更换到公网的端口号。

路由器映射关系很多

家庭路由器&&企业路由器

​​

NAT技术

NAT技术是解决IP不够用的主要手段,是路由器的必备技术

a.NAT路由器将源地址从10.0.0.10替换成全局的IP 202.244.174.37;

b.NAT路由器收到外部的数据时,又会把目标IP从202.244.174.37替换回10.0.0.10;

c.在NAT路由器内部,有一张自动生成的,用于地址转换的表;d.

当 10.0.0.10 第一次向 163.221.120.9 发送数据时就会生成表中的映射关系;

NAT技术的缺陷

1.由于NAT转换表是由内网主机向外网发送消息建立的,外网主机无法直接访问内网主机。

2.NAT设备出现异常,所有TCP通信都会断开

从家里出去的网是直接到公网吗?

大概率不是,要先到运营商的局域网中 ​

真实的网络情况: 公网+私网(家用网络和运营商私网)构建的网络拓扑结构​

3.怎么做到利用网段划分?

路由

ip=目标网络+目的主机

每经过一个路由器都会匹配一下网络号

route命令查看路由表

将目标ip与对应的掩码按位与再与Destination对比

当查看路由表之后没找到,会去default路由

由此可知,

网络层ip提供一种能力,将数据包跨网络从B发送到A主机,跨网络就是无数次局域网转发。

但是数据是怎么在局域网中转发的

数据链路层。。。

那么IP解决了什么问题呢?->IP解决的就是从哪去哪的问题。路径选择和路由的问题

传输层可靠性保护

而应用层只要考虑如何处理数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值