问题1: 内网和外网ip的区别
内网ip其实也是一种外网ip,只是这种ip被因特网设定为私有ip地址,不会被中央路由器和边界路由器进行路由转发, 其中有以下几个地址段被分为私有ip地址
A 类:10.0.0.0~10.255.255.255
B 类:172.16.0.0~172.31.255.255
C 类:192.168.0.0~192.168.255.255
问题2: 啥是中央路由器,啥是边界路由器
这就要扯到很远,首先最开始网络ip是分类的,类别由网络号区分,然后不同分类中中由主机号区分,最后发现这样进行分太难管理了,所以出现边界路由器,目的就是分担网络,我中央路由器只把对应网络号的流量进行转发给相应的边界路由器,然后对应要到那个主机再由边界路由器进行定位
问题3: 啥是网络号和主机号
自行百度
问题4: 我的ip是192.168.0.1,是私有ip咋么也可以连接因特网
这个问题,首先要牵涉到很久以前,以前没有人使用私有ip一说,大家都用公有ip地址,然后互相可以联通,但是ip地址有限,要是这样下去肯定有些人需要共享ip地址了,但是共享ip地址怎么区分流量是来自那台电脑,这时候就利用上了私有ip和使用NAT网络地址转换技术来解决
问题5: 啥事NAT
NAT意思就是网络地址转换,就是将一组私有ip转化为公有ip进行对因特网的访问
问题6: 一个私有ip对应一个共有ip那么也没省ip地址啊
是的,这样确实没有减轻ip地址的使用,所以出现了NAPT
问题7: NAPT是啥
NAPT很简单,就是在网络地址转换的时候我给每个私有ip的请求转换成公有ip加端口,这样就可以实现一个ip多用了,这样的话路由器就需要读取tcp/udp中的端口信息了,路由器需要建立一个网络地址转换的表,表意思是 私有ip:端口->公有ip:端口,公有ip:端口->外网ip:端口. 最后: 私有ip:端口->外网ip:端口, 具体连接流程如下
- 客户端发起连接去连接外网ip
- NAT路由将客户端ip+NAT路由随机生成的端口来代理客户端去访问外网
- 然后外网的数据就会被NAT路由器转发到内网ip
应对这种连接有一种问题就是
- 只能内网连外网,不能外网连接内网
- 有些应用层协议就会出问题,比如ftp, ftp的数据传输和控制是分开连接的,控制连接保持验证和命令控制,当你想要获取或上传某些数据的时候,就需要建立一个数据连接,(主动模式)这时候为了安全就用控制连接发送ip和端口让ftp服务器知道,但是这里就有一个问题,你发送的ip和端口是在应用层协议的包中,这样ftp记录的是内网的ip和地址,到时候ftp发送数据连接握手就会发现连接不上,为了解决这个问题就出现了ALG网关,来处理应用层协议的问题,比如解析你发送给ftp的ip和端口进行转化成nat的ip和端口,对应上到时候数据连接的时候你连接nat转换的端口,具体的连接图如下
ftp数据连接的2种模式
- 主动模式,由客户端发送ip和端口,然后服务器主动建立连接
- 被动魔兽,由服务端发送端口,客户端主动发起连接, 被动模式为了防止防火墙拦截
ALG协议
ALG的作用就是解析特定的应用层协议的内容进行解析转换,用来配合nat地址转换来用的,就是因为内网所有的地址都会被转换,所以在应用层协议的包中发送的内网ip和端口需要转化为nat的ip和端口,然后让你们连接的时候用转化的ip和端口去玩
引用
- baike.baidu.com/item/nat/32…
- blog.csdn.net/xiaoshengqd…
- blog.csdn.net/gui951753/a…
- baike.baidu.com/item/ALG网关/…
- 图解tcp/ip第五版-5.6 NAT
- Wireshark网络分析就这么简单-ftp201206011369543image001747033976650.jpg