简单回顾一下TCP的特点
TCP是可靠性,UDP是负责效率,那么如何基于UDP实现可靠传输
本质还是考察TCP
目录
TCP/IP协议栈
那么假如IP地址不够用怎么办呢?NAT机制
IP地址的介绍
我们来简单了解一下,上面都是干什么的:
(1)四位版本号
主流IPV4,IPV6(用于工作,商用这种),其他版本也有,不过大多数是实验室用。
(2)4位首部长度,设定和TCP一样
IP报头可变长,IP报头可以带有选项,此处单位也是4字节。
(3)8位服务类型(真正只有四位是有效果的)
类似于模式/形态切换
模式:最小延时:传输一个数据包的实践尽可能的短。
最大吞吐量:一定时间,传输的数据量尽量多。
最高可靠性:在传输中最不易触发丢包。
最小成本:在传输中消耗的硬件资源最低。
(4)16位总长度
IP报头+载荷长度
=总长度- IP长度->载荷长度->TCP的报文长度
TCP报文总长度- TCP报头长度->TCP载荷长度
这里的16位总长度,确实涉及64kb问题,但是IP协议,自身支持“拆包组包”机制,这里的64kb只是约束一个IP数据报。
如果携带比较长的数据,IP协议会自动把一个数据报拆成多个数据报,接收方在进行分用的时候,也会把多个数据报合并成一个数据报。
(5)16位标识,3位标志位,13位片偏移
描述了整个IP数据报,拆包组包的过程
当IP数据报需要携带比较长的数据报的时候,就在IP协议这一层触发“拆包的操作”,把一个大包拆成多个小包,多个小的IP数据报带有Ip报头,载荷是TCP数据报的几个部分
16位标识:拆出来的多个包,16位标识是相同的
13位片偏移:不同的点,前一个包偏移量更小,后一个更大,通过片偏移,就可以区分包的先后顺序。
3位标志位:其中一位是不用的,还有一位,表示是否允许拆包,在这里已经拆了,这一位都是1,剩下一位标识“结束标记”标识当前的包是否是最后一个,这一位为0表示,这是最后一个包了。
(6)八位生存时间TTL,单位是次,初始情况TTL(32/64/128次),每过一个路由器转发,TTL就会-1,正常来说这个TTL是足够到达网络上(其实也就是地球上)任意位置,如果确实出现0,基本可以认定这个ip不可达(甚至不存在)
(7)8位协议
描述了上层传输层,使用哪种协议。
(8)16位首部校验和
校验数据是否正确的机制,只需要校验首部就可以,载荷部分,TCP/UDP人家已经自己校验过自己了。
(9)32位源地址
32位目的地址,IP协议中最重要的部分,数据报从哪里来到哪里去,其实64次是足够到达任何角落。
IP地址
网络这么多主机,要有办法描述主机的具体位置,IP地址就是解决该问题的关键
32位源IP地址:源IP地址,所谓IP地址,其实是一个32位整数(4字节)点分十进制,由于按照32位的方式表示,就会使这个数字变的很大,很难去理解记忆,一般是把IP地址,按照点分10进制表示(用三个.把32位分成4个部分,每个部分8位,每个部分是一个字节)
192.168.22.56,
32位的数据量是十分有限的,既然是弟子,原则上(是不可以重复的)
1.动态分配IP(DHCP):你这个设备,不用一直上网,需要上网的时候再去分配IP,不需要则先不用分配——当然这个属于是只缓解,不根治
2.NAT机制(网络地址转化)考点,要点考点
IP地址,被聪明的猿,想了个办法,把IP地址,分成两类
(1)内网IP:不同局域网内的设备,内网IP可以重复,同一个局域网内的设备,内网IP不能重复(以下三个开头比较多)
10* 172.16*-172.31* 192.168*
换句话说:在别的局域网中,也可以使用这样的IP地址,此时大量设备可以使用同样的IP了,此时IP不够用的程度,就得到了很大的改善。
但是不同情况的处理又会是怎么样的呢?
1.如果局域网内部设备进行通信,OK
2.A局域网,想和B局域网中的设备进行网络通信,这个时候咋办?(当然了,必须是最怪的那种情况,两个设备的IP相同)当前的情况是禁止这种情况,想通信要有一个带外网的IP进行中转(QQ,微信)
(2)外网IP:外网IP不能重复
局域网内部的设备访问带有外网IP的设备
像平时使用的电脑/手机,都是在局域网内部使用,他们会有一个内网IP,还有一类设备是服务器,服务器可以有外网IP。
一个路由器可以连接多个设备,让外界可以看起来这些设备都源于一个路由器,NAT机制下,意义是一个外网IP代表的不一定是一个设备,而是很多设备。
百度服务器返回响应里头也是IP数据报
该数据包会先到电信路由器,对于NAT设备,会在触发NAT的时候维护一个映射表,然后NAT设备,通过查表,把目的IP再替换回来,比如换回192.22.26.1234
同一个局域网内部,内网IP不能相同的
相对来说,真实情况:我的电脑经过自己家的路由器,会进行NAT,经过电信光猫,又有NAT,对经过的电信再进行一个NAT(相当于是那种带面具参加舞会,一个舞会带一个面具)
当今世界,是由NAT构建起来的~
缺点十分明显:1.效率不高
2.非常繁琐
3.不方便直接访问局域网内设备
优点:纯软件实现的方案,能提高IP地址的服用率,但也没有从根本解决IP不够的问题
IPV6:从根本上解决问题,IP地址不够用的问题,16字节,128位表示IP地址(什么概念,有多大?地球上的不仅仅是人,沙子都有IP),
IPV6和IPV4并不兼容,要升级IPV6,(要更换路由器设备=花钱)
为什么IPV4不用呢,要执着IPV6呢?(IPV4是由外国所垄断的,对于中国互联网来说,IPv6的规模部署是场输不起的战争。、IPv4时代,全球共有13个根服务器(主根在美国),却没有一个在中国,所以之前不少自媒体说,一旦外国切断了我们对根服务器的访问途径,我们的网络就会瘫痪)
IP地址分为两个部分:网络号和主机号
网络号:标识网段,保证相互连接的两个网段有不同的标识
主机号:标识主机,同一个网段内,主机之间具有相同的网络号,但必须有不同的主机号。
1.同个局域网中设备的网络号必须相同,主机号必须不同。
2.两个相邻的局域网,网络号必须相同
日常开发中,不关心IP地址咋来的,以及规则是什么,一般是“网络管理员”要操心这些事情。
(IP地址可以是手动分配的 企业网络,网络繁杂,也可以我们手动分配)
IP地址,哪个部分是网络号,哪个部分是主机号?
一部分通过子网掩码来识别
子网掩码 ...255.255.252.0
子网掩码和IP地址一样,也是4个字节,32位整数,左侧必须连续1,右侧必须连续的0
255.255.252.0表达起来就是 1111 1111 1111 1111 1111 1100 0000 0000
一共32位,1的范围描述了IP地址的对应哪些位是网络号~(即将前22个bit是网路号,针对该机的子网掩码)10个bit是主机号
下面的没啥用,但是笔试有可能考
范围 适用网络 网络数量 主机最大连接数 A类:0.0.0——127.255.255.255 大型规模网络 126 16777214 B类:128.0.0.0——191.255.255.255。 中型网络 约1600个 65534 C类:192.0.0.0-223.255.255.255 小型规模网络 254 D类:224.0.0.0——239.255.255.255 E类:240.0.0.0-247.255.255.255