Linux网络编程:网络层协议|IP

目录

前言:

1.IP协议 

1.1.IP协议格式

1.2.网段划分

1.2.1.知识引入

 1.2.2.IP地址划分和子网掩码

1.3.IP地址分类

1.3.1.特殊IP地址 

​编辑

1.3.2.私有IP和公网IP

1.3.3.浅谈NAT技术 

1.4.路由

1.4.1.什么是路由

1.4.2.路由表

1.5.网络层数据切片和组装

2.NAT和NAPT技术

2.1.NAT

​​​​​​​2.2.NAPT

2.3.存在的缺陷

3.代理服务器

3.1.正向代理

3.2.反向代理

3.3.NAT技术和代理服务器技术


前言:

网络层协议解决什么问题

当我们在上层实现了应用层协议将字符流数据转化为结构体数据,在传输层完成了通信的实现,数据的传输,但是数据最终还是得从本主机输出,从网络中进入到远端的另外一台主机。

  • 网络层协议IP解决的就是两台主机间数据的转移,也就是提供了一种将数据包从一台主机送到一台主机的能力。 
  • 传输层协议TCP/UDP解决的是网络传输的可靠性,将数据传输到相应的应用程序
  • 应用层协议HTTP/HTTPS解决的是将字节流数据转化为结构体数据

如图:主机B发送数据包经由若干个路由器最终到达主机C 


基本概念

  • 主机: 配有IP地址, 但是不进行路由控制的设备;
  • 路由器: 即配有IP地址, 又能进行路由控制;
  • 节点: 主机和路由器的统称
  • 路由控制是路由器根据路由控制表转发数据包的过程。

1.IP协议 

1.1.IP协议格式


32位源IP和目的IP

 表示发送端的ip地址,和数据报文的目的主机地址。


4位版本

对应着IP协议版本

  • IPV4(表示4个字节表示IP地址)
  • IPV6(16个字节表示地址)

4位首部长度

和TCP协议的4位首部长度一致,单位也是4字节,大小最大为40字节


8位协议

用来识别数据报文是TCP协议还是UDP协议,防止不同类型的协议之间进行通信


16位总长度

表示整个报文的长度,并且已知报头长度固定为20字节,那么通过报文长度 = 报头长度 + 有效载荷长度,即可分离报文和报头


8位服务类型

用于数据包发送质量、效果优先级的选择。

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

8位生存时间(TTL)

报文在路径转发过程中,经由路由器的跳数上限(不允许报文在路径节点进行无意义的节点转换,造成资源的浪费)


16位标识、3位标志、13位片偏移

因为在网络层的下一层数据链路层,最大允许发出报文长度为MTU=1500,也就是网络层形成报文之后可能大小会大于MTU,这时候就需要进行分片、多次发送。

  • 16位标识(id):唯一的标识主机发送的报文。如果IP报文在数据链路层被分片了,那么每一个片里面的这个id都是相同的(用来区分不同的报文)
  • 3位标志字段:第一位保留(默认填0,暂时没有意义)。第二位置为1表示禁止分片,这时候如果报文长度超过MTU,IP模块就会丢弃报文。 第三位表示"更多分片", 如果分片了的话,最后一个分片置为1,其他是0。类似于一个结束标记.
  • 13位分片偏移:是分片相对于原始IP报文开始处的偏移。其实就是在表示当前分片在原报文中处在哪个位置。实际偏移的字节数是这个值 * 8 得到的。因此,除了最后一个报文之外,其他报文的长度必须是8的整数倍(否则报文就不连续了)

1.2.网段划分

1.2.1.知识引入

IP地址分为两个部分, 网络号和主机号

  • 网络号: 保证相互连接的两个网段具有不同的标识;
  • 主机号: 同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号;

例如本机ip地址为127.0.0.1,其中127.0.0.为网络号,1为主机号

如图: 路由器连接了两个局域网,而在同一个局域网,我们发现网络号是相同的,不同的是主机号,所以我们就能够通过IP地址定位到网络号和主机号,进而找到唯一的主机!!!

路由器的作用:

  • 连接不同的网络
  • 构建子网
  • 进行数据包的路由和转发 

 1.2.2.IP地址划分和子网掩码

IP地址划分

在1.2.1.中我们知道IP地址划分成了网络号和主机号,保证在互相连接的网络中每一台主机的ip地址都不同,那么这时就会出现一个问题:网络号和主机号怎么设计,IP地址如何进行划分?

如图所示,为过去的一种IP地址划分的方案,为了应对不同的场景下(对应局域网的主机数量)的网络方案。

随着Internet的飞速发展,这种划分方案的局限性很快显现出来,大多数组织都申请B类网络地址,导致B类地址很快就分配完了,而A类却浪费了大量地址;

  • 例如,申请了一个B类地址,理论上一个子网内能允许6万5千多个主机。A类地址的子网内的主机数更多。
  • 然而实际网络架设中,不会存在一个子网内有这么多主句的情况。因此大量的IP地址都被浪费掉了。

我们也可以从网络的拓扑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值