网络层主要负责两方面的事情
1.地址管理:制定一系列的规则,通过地址,描述出网络中的设备的位置
2.路由选择:网络环境是非常复杂的。从一个节点到另外一个节点之间,存在很多条不同的路径,通过路由选择来筛选或规划出更合适的路径进行数据传输
IP协议
TCP/IP协议栈
现在大规模使用的有4,和6这两个版本分别是IPV4和IPV6,
IP协议的报头也是变长的(有选项可以扩充)0-60字节
能够让IP协议进行切换形态(3位优先权字段已经弃用,4位TOS字段,和1位保留字段(必须置为0)。四位TOS彼此之间冲突,分别代表是最小延时,最大吞吐量,最高可靠性,最小成本。设置形态时一位是1,其余位为0,代表是1的这种形态,不能同时设置为1.可以设置同时为0代表一般服务。
描述了IP数据包的最长的长度
这三个属性支持IP协议的拆包和组包。
16位标识符:如果一个大的IP数据包需要拆分成多个小的,拆除来的多个小包的数值由其表示。
3位标志:一位表示是否允许拆包,一位表示是否是最后一个包(只有这两位有意义目前)
13位片偏移:描述当前每个小的数据包的相对位置
描述了这个IP数据包在网络上还能继续存活多长时间
TTL的单位是次数。
数据包构造出来的时候,TTL会被设置成一个初始值(32,64,128)
数据包在转发过程中,每次经过一个路由器转发,TTL就会-1
如果这个数据包,已经把TTL耗尽了,还没有顺利到达对方,就会被丢弃掉.
这个机制,还是非常有用的.给网络能够进行兜底~~
假设构造一个数据包,目的IP写作不存在的IP.这个数据包不可能到达目标.显然这样的包,也不可能允许在网络上一直存在.就能解决这样的问题
如果把TTL设置成32,会不会不够用?
会不会明明数据包是合法的目的ip,还没到达 ttl就耗尽了??这个情况也是可能会存在的,概率不大.(???)
-般来说,TTL还是会比较充裕的
描述的是IP数据包的载荷部分,是一个UDP包还是TCP包(传输层协议是哪个)
这个校验和只是检验IP 首部,不管IP数据的载荷(UDP和TCP都有自己的检验和)
IP地址本质上就是一个32位整数,为了方便理解写成点分十进制。
IP地址,是一个32位的整数. 2^ 32 也就是42亿9千万.
地址,理论上来说,是不应该重复的
互联网发展到今天,能上网的设备,非常非常多的.早就超过了42亿9千万这个数字
解决IP地址不够用的问题?
1.动态分配IP
提高了IP地址的利用率,并没有增加IP地址的数目.(???)
2.NAT机制(网络地址转换)
本质就是让一个IP地址代表一批设备的IP地址
将IP地址分为两大类
1内网IP(局域网IP)
如果一个IP地址,是以10.*或者172.16.*- 172.31.*或者192.168.*
在同一个局域网内部,内网IP之间,不能重复.
在不同的局域网中,内网IP之间,可以重复.
2.外网IP(广域网)
剩余的IP就是外网IP
外网IP不能重复,必须唯一
现今,通常都是一个小区/一个学校/一个公司,都是构成一个大的局域网(这一个局域网中可能就有几千,上万个设备)
这样的一个局域网,就使用一个外网IP即可.
(一个外网IP就代表了,几千个上万个这样的设备)
NAT机制的工作原理
一般网络通信分为四个大部分
1.我的电脑
2.运营商服务器
3.广域网
4.目标服务器
我的电脑先构建一个数据包请求,然后发送到运营商服务器中,运营商服务器是一个NA设备,对我的电脑的IP进行转化称为外网IP(内网IP无法在外网中使用),然后发送通过广域网到达目标服务器。从目标服务器来看这个此时经过转化的IP就是我的IP。
然后目标服务器回应响应,因为运营商路由器,内部会记录一个映射关系.就会将刚才替换的IP给替换回去IP。
如果当前局域网内,有多个主机都访问同一个网站服务器,此时服务器诱回的响应经过当前的路由器之后,要交还给哪个主机呢??
当服务器返回数据之后,路由器如何决定这个数据要交给哪个设备?是要结合端口号来进行区分
“端口号,可以用来区分同一个主机的不同进程也可以区分不同主机的不同进程"
如果端口号相同
到达路由器之后,路由器这回发现,
这俩数据包的目的ip和目的端口都一样(访问同-个服务器)
端口也一样.
路由器直接把端口也一起给替换掉
当前的网络环境,就是以NAT+动态分配的方式来解决IP地址不够用的问题的.