【Java EE初阶 --- 网络原理】网络层---IP协议,数据链路层---以太网协议

乐观学习,乐观生活,才能不断前进啊!!!

我的主页:optimistic_chen
我的专栏:c语言Java
欢迎大家访问~
创作不易,大佬们点赞鼓励下吧~

文章目录

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
我们下期不见不散 ~ ~ ~

相关推荐
凤年徐19 分钟前
【数据结构与算法】21.合并两个有序链表(LeetCode)
c语言·数据结构·c++·笔记·算法·链表
正经教主39 分钟前
【问题】Docker 容器内的应用(如n8n),访问不到外部主机的应用(如mysql)
tcp/ip·docker·容器
_Kayo_7 小时前
VUE2 学习笔记14 nextTick、过渡与动画
javascript·笔记·学习
sibylyue8 小时前
Apache HttpClient HTTP 线程池参数设置
网络协议·http·apache
AI视觉网奇10 小时前
语音识别dolphin 学习笔记
笔记·学习
killer Curry10 小时前
B站 XMCVE Pwn入门课程学习笔记(6)
笔记·学习
小猪扒饭12 小时前
C基础 12_day
c语言·笔记·学习·算法
斯~内克12 小时前
深入解析域名并发请求限制与HTTP/2多路复用技术
网络·网络协议·http
weixin_4569042712 小时前
基于UDP的SNMP协议
网络·网络协议·udp
机器视觉知识推荐、就业指导13 小时前
手动开发一个TCP客户端调试工具(一):了解Qt中TCP通信原理与核心类
网络·qt·tcp/ip