【Java EE初阶 --- 网络原理】网络层---IP协议,数据链路层---以太网协议
乐观学习,乐观生活,才能不断前进啊!!!
我的主页:optimistic_chen
我的专栏:c语言 ,Java
欢迎大家访问~
创作不易,大佬们点赞鼓励下吧~
文章目录
- IP协议
- 地址管理
- IP的分配
- NAT网络通信
- 网段划分
- 特殊的IP地址
- 路由选择
- 以太网协议
- 完结
IP协议
继应用层HTTP(HTTPS)协议,传输层UDP/TCP协议后,接下来就是网络层的IP协议,开发最多用到传输层,网络层更加靠近硬件,用的很少。
IP协议的主要功能:
地址管理:使用IP地址,标识网络上某个设备的位置
路由选择:在两个通信节点之间,规化出合理路径
4位版本:IPv4 / IPv6
4位首部长度:IP协议的报头,也可以变长(单位也是4字节)
8位服务类型:决定IP协议的工作方式,3位优先权字段(已弃用)4位TOS字段和1位保留字段(置为0);4位TOS分别表示:最大延时,最大吞吐量,最高可靠性,最小成本,四者只能选其一。IP协议可以随时切换。
16位总长度:一个IP数据报报头+数据包的长度。大小位64KB,而且IP协议内置了拆包组包功能,如果IP携带一个较大的TCP数据包,IP协议就会自动拆成多个。
16位标识:把拆出来的多个包,设为相同的标识;组包时把相同标识的数据包组合到一起
3位标志:一个标志位表示是否触发了拆包操作,一个表示当前包是否是最后一个
13位片偏移:描述了数据包先后顺序,偏移小的放前面,大的放后面
8位生存时间(TTL):表示一个IP数据报,能够在网络上传输的最大时间。单位是“次数”, IP数据每次经过一个路由器一次,TTL值就-1,直到减到0说明包到不了。
8位协议:标识传输层使用哪种协议。分用的时候,IP协议解析IP数据包时,拿到数据包交给上层处理,上层就可以根据8位协议号知道使用哪种协议。
16位首部校验和:数据包部分有TCP/UDP校验
32位源IP地址 / 32位目的IP地址:IP协议的核心
地址管理
IP的分配
IP的格式:点分十进制,本质上是32位整数,但是32位的IP地址只能表示42亿多不同的IP,对于如今的互联网时代,远远不够
1. 动态分配IP:上网再分配,不上网就不分配;
2. NAT机制没网络地址转化:把所有的IP非为两大类,公网/外网 IP和私网/内网IP;NAT机制就是可以用一个外网IP对应一系列的内网设备,一个设备有一个独立的局域网IP(可以重复),但是多个设备公用同一个外网IP(不允许重复)
3. IPv6:使用16个字节作为IP地址
16个字节,一个字节8bit位,一共128位:2^128 = 2^32 * 2^32 * 2^32 * 2^32.超级大的数字
内网一般的格式:10. *;173.16-172.31. * ;192.168. *
NAT网络通信
1. 同一个局域网下,设备A可以访问设备B(IP不重复)
2. 公网设备A访问公网设备B(IP不重复)
3. 不同局域网下,设备A不可以访问设备B
4. 局域网设备A访问公网设备B(网络地址映射)
5. 公网设备A不允许访问局域网设备B
如果有多个请求去访问百度服务器,那么服务器该如何精准响应到每一个请求主机呢?(返回)
路由器在触发NAT机制地址替换的时候,自身有一个“哈希表”结构,记录替换的映射关系。
网段划分
把一个IP地址分成两个部分,前面是“网络号”,后面是“主机号”(可以自己配置)
同一个局域网中,网络号必须相同,主机号必须不同
两个相邻的局域网中,网络号必须不同,主机号无所谓
一个路由器有两个IP:WAN,LAN这两个局域网就是相邻局域网
子网掩码:也是一个32位的整数,左半部分都是1,右半部分都是0;1的部分就表示了哪些bit位是网络号
特殊的IP地址
1. 将IP地址中的主机地址全部设为0,就成了网络号,代表这个局域网
2. 将IP地址中的主机地址全部设为1,就成了广播地址,用于给同一个链路中相互连接的所有主机发送数据包
3. 127.*的IP地址用于本机环回测试,通常是127.0.0.1
192.168.100.0是一个网络号,注意:局域网中,不能直接把主机号设为0
192.168.100.255 是广播地址,往广播地址上发送数据包,就会被转发给局域网中的所有设备(只限于此局域网)
而主机号位1的IP192.168.100.1,在IP协议中,只是普通IP,但是在实际中,通常使用这个IP作为网关IP:就是网络的入口/出口
路由选择
通过IP协议,进行数据转发的过程。
没有路由器可以知道所有的网络信息,但是每个路由器都知道附近网络情况(谁和它相连)。当数据包到达某个路由器的时候,就会匹配这个路由器的“路由表”,它里面记录了这个路由器周围设备的IP是什么,以及记录每个设备要通过哪个口转发
1. 如果目的IP刚好匹配到路由表中的记录,直接按照当前的对应的口转发过去
2. 如果没有匹配到,路由表会有一个特殊的表项“下一跳”,指向上一级路由器所在位置,路由器越往上,涵盖的范围越大
以太网协议
实际上,以太网是数据链路层+物理层的协议,但凡电脑是通过网线的方式来上网,走的协议就是以太网,网线就是以太网线。
网络上描述传输数据的单位:
包packet IP协议
段segment TCP协议
报 datagram UDP协议
帧 frame 以太网协议
以太网数据帧格式:
注意:此处的地址,不是IP地址,而是mac地址(物理地址)
物理地址是一个6字节数据, 足够用
IP在网络层使用,关注整个网络路径的转发传输过程;Mac在数据链路层使用,重点是两个相邻设备之间的转发
类型:类型不同,载荷的数据格式也不同,比如:0800就是16进制数字
IP数据报载荷部分最大长度是1500个字节,但是IP数据报,报头最多有64Kb,在数据链路层这里只有1Kb左右,所有IP数据报,拆包组包更多时候是因为数据链路层的限制
ARP:根据IP地址,得到对应的mac地址,网络通信中,网络层转发IP,数据链路层要根据mac转发数据,路由器要根据下一节点的IP找到对应mac
完结
可以点一个免费的赞并收藏起来~
可以点点关注,避免找不到我~ ,我的主页:optimistic_chen
我们下期不见不散 ~ ~ ~