目录
网络层
一,地址管理
实际上只有两取值4/6(4->IPv4.6->IPv6)
IP的报头也是可变长的0->15,当15的时候,报头长度为60
8位服务类型(Type Of Service): 3位优先权字段(已经弃⽤), 4位TOS字段, 和1位保留字段(必须置为 0). 4位TOS分别表⽰: 最⼩延时, 最⼤吞吐量, 最⾼可靠性, 最⼩成本. 这四者相互冲突, 只能选择⼀个. 对于ssh/telnet这样的应⽤程序, 最⼩延时⽐较重要; 对于ftp这样的程序, 最⼤吞吐量⽐较重要.
最⼩延时:数据从A到B时间消耗的最短
最⼤吞吐量:数据从A到B单位时间内,传输的数量更多
最⾼可靠性:IP协议虽然那个不像TCP那样就要严密的可靠性机制,但是IP也有一些机制会影响到丢包的概率
最⼩成本:设备消耗的资源少
:64KB,但是并不代表不能传输超过64KB的数据.IP协议内置了拆包组包机制,单个IP数据包确实没有办法超过64KB,但是并不代表不能超过64KB的数据,IP协议会自动把大的数据包,拆成多个IP数据包携带传输,在接收方在进行拼装
IP协议会自动拆包,同一个载荷的数据,会被分成多份,交给多个IP数据包来携带,多个IP数据包,16标识是相同数值.13位片偏移决定组包的时候数据包的位置,3位标志位,只有2个有效,其中一个,表示这个包是否需要组包(是否是拆包的一部分),另一个表示当前包是否是组包中的最后一个单位,剩下一个是保留位
如果想使用UDP实现实现一个超过64KB的数据包,应该如何做呢实现方案,参考IP,设置一个标识,约定标识相同的数据就应该进行组包,引入片偏移,约定组包的时候的先后顺序,引入标志位,区分是否为最后一个包以及是否需要组包
一个数据包最多在网络上的存活的时间,例如构造一个IP数据包,IP地址是错的,所以就需要一个时间上限,如果到时间还没有传输到,那么就要丢弃掉,防止消耗更多的网络资源,TTL的单位并不是s/min.而是"次数",指的是经路由器转发的次数.发送一个IP数据包的时候,TTL会有一个初始值,数据报每经过一次路由器就会TTL-1(经过交换机,不减),一旦PPL减到0,此时数据包就会被当前路由器丢掉
TTL64够用吗??
答:非常充裕的.每个路由器虽然不能感受到整个网络的全貌,但是都能够了解网络结构的一部分(具体来说,每个路由器都认识那些设备是与他相邻的)
IP数据包中,携带的载荷是那种传输层的数据包,通过不同的数值,感知到接下来要把数据交给TCP还是UDP还是其他协议
验证数据在传输中是否出错(只针对首部,IP报头)
IP地址,是一个32位的整数,(4个字节)通过三个圆点分隔开,每一个部分是一个字节,范围是0-255,点分十进制
IP地址是用来标记一个网络设备,所以期望IP是唯一的,32为表示的数据范围0->42亿9千万
1,解决IP不够用的的问题:
方案一:动态分配IP地址
一个设备上网就分配IP地址,不上网就先不分配
方案二:NAT 网络地址转换
以一当千,使用一个IP代表一大批设备
把IP地址分成了两大类:
分别是内网IP/私网[10* 172.16-172.31.* 192.168*]满足其中一种就是私网IP
IP外网IP/公网IP
有几个网卡就有几个IP.要求公网IP必须是唯一的,但是私网IP是允许重复的(在不同局域网是允许重复的)
NAT网络地址转化:一个人设备在进行上网的时候,IP数据包中的IP地址就会被NAT设备(通常就是路由器)进行自动修改
1,同一个局域网内,主机A访问主机B,不会涉及NAT机制
2,公网上的设备访问公网上的设备,不会涉及NAT
3,一个局域网中的主机A访问另一个局域网中的主机B,在NAT机制中是不允许的
4,局域网内部设备A,公网上的设备B,NAT机制主要就是针对这个情况进行生效的
相当于一个公网IP就可以代表一大批设备
当有多个主机给应用程序发送数据包:
是否可能出现不同主机上的源端口号相同:这个概率非常小,客户端这里的源端口号是随机分配的,是操作系统随机分配的空闲端口号
如果真的有两个相同的源端口号:路由器在建立映射关系的时候,也可以将端口号换成其他不重复的端口(NAPT)
NAT的缺点:网络环境过于复杂,替换过程中,每一层路由器就需要维护映射关系,每一次转发数据都需要查询映射关系,
方案三:IPv6
IPv4使用32为4个字节表示IP地址(2^32)
IPv6使用128位16字节表示IP地址 (2^128),IPv6 的地址空间非常巨大(可以给地球上每一粒沙子都分配一个地址)
之所以IPv6不是主流,是应为IPv4和ipv6不兼容,想要使用IPv6就需要换设备,在IPv6提出的年代,并不具备这样的条件,但是NAT机制,只需要给设备升级软件就可以.但是IPv6 在国内的普及程度很高,高达超过70%.2018-2019年左右的的时候工信部鼎力支持.
虽然当前大规模普及了IPv6 但实际上上网的时候任然走IPv4 协议(IPv4 和IPv6并存)
2,网络划分
IP地址中的"网络划分"组网(组建网络):组网的时候,就需要针对每一个上网的设备的IP(包括路由器的IP)进行设置,家庭网络比较简单的网络结构来说,路由器都具有"自动分配IP"的功能,对于比较复杂的网络结构就需要手动设置.
IP地址,32位整数,一分为二,左半部分是网络号,右半部分是主机号,需要通过"子网掩码"(CIDR)来区分网络号和主机号,子网掩码也是32为整数,左半部分都是1,右半部分都是0,不能0,1穿插出现.子网掩码左边有多少个1,就说明IP地址左边有多少的个bit是网络号
网络中规定:同一个局域网中的设备,网络号必须相同,主机号必须不同,相邻两个局域网中,网络号必须不同
例如,在一个局域网中,如果某个设备的网络号不相同就无法上网,某一个设备虽然网络号相同,但是如果主机号也相同也无法上网
除了基于"子网掩码"的方式进行划分之外,还有ABCDE五类网络,现在已经看不到这种方式了
特殊的IP地址:
1,主机号为全0(二进制),这个IP就是表示当前网段(相当于网络号)
2,主机号为全1(二进制),称为广播IP.往这个IP地址上发送数据包,就相当于给整个局域网所有的设备都发送了一遍这个数据包
很多时候看到的"业务上的广播"都是通过应用层编写代码来实现的,而不是通过广播IP,例如直播,进行直播的时候,老师会将声音和画面传到应用程序,然后应用程序遍历直播间的每一个人,将画面和声音一次发送给他们.
手机投屏到电视上:手机和电视需要到同一个局域网中,手机上知道有多少个允许投屏的设备,这样的功能就可以基于广播IP实现,在手机触发投屏按钮的时候,往对应的广播IP上发一个数据包(UDP)(TCP不支持广播)如果收到这个数据包的设备没有投屏功能就不做反应,但是一个有投屏功能就会返回一个响应,返回自己的IP是多少
3,127.* 环回IP(lookback)自发自收,给这个IP发一个数据,设备就会从这个IP上再收到一个相同的数据,自己发送给自己,使用环回IP一般是进行测试,一般使用的环回IP为127.0.0.1
二,路由选择
网络是复杂度,从一个节点到另一个节点之间会存在许多路线.,每个路由器只知道附近的设备,无法知道网络结构的全貌,所以无法得到"最优解",只能得到"较优解"
路由表(路由器内部维护的数据结构)路由表就类似于hash一样,可以就相当于IP地址,value就是对应的网络接口,IP数据包到达路由器就会有一个路由表查表操作,IP数据包中的目的IP,查一查个目的IP在路由表中是否存在,如果查到了,自然就会按照路由表指向的方向转发即可,如果没有查到,路由表就会有一个"默认的表项"(下一跳),默认指向一个更高级的路由器(认识的设备更广),如果这个路由器也查不到,也有下一跳,到更高级的路由器......
真实的转发过程,会更加复杂
1)路由表里面的东西是怎样来的,自动获取(路由表生成算法),手工配置(网络管理员)
2)真实的网络结构(广域网的网络结构是怎样的)
数据链路层
以太网
帧尾是校验和,帧头包含目的地址(Mac地址/物理地址),类型:描述了载荷中是怎样的数据(ARP/RARP不传输业务数据,而是给转发功能提供辅助功能)
ARP数据包/ARP协议:可以视为当前设备获得到周围设备的IP地址和Mac地址之间的映关系.IP协议路由器转发过程中,这个过程都是拿着IP地址来进行查路由表,从而得到的是"网络接口"我们还需要获得更具体的Mac地址的设备,这时候就涉及到IP和Mac的映射关系.ARP协议,就是建立上述映射关系,当前设备接入网络的时候,就会广播发送ARP报文,收到ARP报文请求的设备就会返回ARP响应,响应中就会告知自己的IP和Mac
1500是数据链路层数据帧最大的载荷长度,1500字节,相当于1.5KB,这个数字称之为MTU,MTU和硬件直接相关,不同的硬件设备,对应了不同数据链路层协议,对应了不同的MTU,MTU的限制就会对上层协议产生直接的影响(IP协议),IP协议能拆包组包,实际上IP协议更多的是来应对MTU的限制,当一个数据包到达1500字节时,机会自动进行拆包了
1,Mac地址和IP地址的区别:Mac地址使用6个字节表示,IP地址是4个字节,Mac地址仍然可以给每个设备分配一个地址值,一般一个网卡,在出厂设置时,Mac地址就分配好了,写死了(不能改).Mac地址也可以作为身份标识(例如,绑定设备功能,就是通过Mac来实现的)
2,Mac地址是使用在数据链路层,用来实现相邻设备之间的数据转发,IP地址使用在网络层,立足于转发流程,进行路径规划. 理论上,搞一套地址就可以,也可以在微观层面上完成所有的工作.实际上两个都留下来了,分别负责不同的任务
例如:从伦敦到西安;
第一步:路径规划(网络层)
伦敦->北京->西安
伦敦->上海->西安
第二步:实施
1)源IP:伦敦;目的IP:西安;源MacIP:伦敦;目的MacIP北京
2)源IP:伦敦;目的IP:西安;源MacIP:北京;目的MacIP西安
以太网数据帧里面的Mac地址,随着转发的过程,时刻发生改变(每经过一个交换机/路由器都会产生上述选择)
DNS应用层协议,也可以认为是一套系统,域名解析系统.域名=>网址,代表了IP地址,域名和IP地址存在对应关系,一般是一个域名对应一个或多个IP地址,也有可能多个域名对应一个IP地址.
把域名转换成IP地址,这样的一套系统称之为 "域名解析系统".早期的域名解析系统非常简单,通过一个文件(hosts)来实现.网站太多了,域名也有很多,IP地址也有很多,靠文件来维护,是不现实的,为了解决上述问题,搭建了DNS服务器,把hosts文件放到DNS服务器里,当某个电脑需要域名解析,就访问DNS服务器.世界上有有诸多设备,每时每刻都在访问DNS服务器,DNS服务器能顶住这么大的访问量吗.=>为解决上述问题,多搞出来一些DNS服务器,称之为"镜像服务器".事实上,世界上有数不清的镜像服务器,往往是由一些运营商/互联网公司维护的,每个人上网的时候,就会就近访问DNS服务器.
一旦数据有变更,针对这种变更,需要约定某个服务器为基准,一旦有变更,就修改这个基准服务器,其他服务器就会从基准的服务网同步数据,这种服务器称之为"根服务器".
标签:协议,IP,Mac,详解,IP地址,设备,数据包,路由器 From: https://blog.csdn.net/2302_81705247/article/details/142567606