海南网站建设多少钱,网站开发 .net,科技有限公司网站,网站首页图片怎么更换一、流程案例 接下来揭秘我要说的大事情#xff0c;“双十一”。这和我们要讲的网络协议有什么关系呢#xff1f;
在经济学领域#xff0c;有个伦纳德里德#xff08;Leonard E. Read#xff09;创作的《铅笔的故事》。这个故事通过一个铅笔的诞生过程#xff0c;来讲述…一、流程案例 接下来揭秘我要说的大事情“双十一”。这和我们要讲的网络协议有什么关系呢
在经济学领域有个伦纳德·里德Leonard E. Read创作的《铅笔的故事》。这个故事通过一个铅笔的诞生过程来讲述复杂的经济学理论。这里我也用一个下单的过程看看互联网世界的运行过程中都使用了哪些网络协议。
你先在浏览器里面输入 https://www.kaola.com 这是一个URL。浏览器只知道名字是“www.kaola.com”但是不知道具体的地点所以不知道应该如何访问。于是它打开地址簿去查找。可以使用一般的地址簿协议DNS去查找还可以使用另一种更加精准的地址簿查找协议HTTPDNS。
无论用哪一种方法查找最终都会得到这个地址106.114.138.24。这个是IP地址是互联网世界的“门牌号”。
知道了目标地址浏览器就开始打包它的请求。对于普通的浏览请求往往会使用HTTP协议但是对于购物的请求往往需要进行加密传输因而会使用HTTPS协议。无论是什么协议里面都会写明“你要买什么和买多少”。
DNS、HTTP、HTTPS 所在的层我们称为应用层。经过应用层封装后浏览器会将应用层的包交给下一层去完成通过 socket 编程来实现。下一层是传输层。传输层有两种协议一种是无连接的协议UDP一种是面向连接的协议TCP。对于支付来讲往往使用 TCP 协议。所谓的面向连接就是TCP 会保证这个包能够到达目的地。如果不能到达就会重新发送直至到达。
TCP 协议里面会有两个端口一个是浏览器监听的端口一个是电商的服务器监听的端口。操作系统往往通过端口来判断它得到的包应该给哪个进程。
传输层封装完毕后浏览器会将包交给操作系统的网络层。网络层的协议是 IP 协议。在 IP 协议里面会有源 IP 地址即浏览器所在机器的 IP 地址和目标 IP 地址也即电商网站所在服务器的 IP 地址。
操作系统既然知道了目标 IP 地址就开始想如何根据这个门牌号找到目标机器。操作系统往往会判断这个目标 IP 地址是本地人还是外地人。如果是本地人从门牌号就能看出来但是显然电商网站不在本地而在遥远的地方。
操作系统知道要离开本地去远方。虽然不知道远方在何处但是可以这样类比一下如果去国外要去海关去外地就要去网关。而操作系统启动的时候就会被 DHCP 协议配置 IP 地址以及默认的网关的 IP 地址 192.168.1.1。
操作系统如何将 IP 地址发给网关呢在本地通信基本靠吼于是操作系统大吼一声谁是 192.168.1.1 啊网关会回答它我就是我的本地地址在村东头。这个本地地址就是MAC地址而大吼的那一声是ARP协议。
于是操作系统将 IP 包交给了下一层也就是MAC 层。网卡再将包发出去。由于这个包里面是有 MAC 地址的因而它能够到达网关。
网关收到包之后会根据自己的知识判断下一步应该怎么走。网关往往是一个路由器到某个 IP 地址应该怎么走这个叫作路由表。
路由器有点像玄奘西行路过的一个个国家的一个个城关。每个城关都连着两个国家每个国家相当于一个局域网在每个国家内部都可以使用本地的地址 MAC 进行通信。
一旦跨越城关就需要拿出 IP 头来里面写着贫僧来自东土大唐就是源 IP 地址欲往西天拜佛求经指的是目标 IP 地址。路过宝地借宿一晚明日启行请问接下来该怎么走啊
城关往往是知道这些“知识”的因为城关和临近的城关也会经常沟通。到哪里应该怎么走这种沟通的协议称为路由协议常用的有OSPF和BGP。
城关与城关之间是一个国家当网络包知道了下一步去哪个城关还是要使用国家内部的 MAC 地址通过下一个城关的 MAC 地址找到下一个城关然后再问下一步的路怎么走一直到走出最后一个城关。
最后一个城关知道这个网络包要去的地方。于是对着这个国家吼一声谁是目标 IP 啊目标服务器就会回复一个 MAC 地址。网络包过关后通过这个 MAC 地址就能找到目标服务器。
目标服务器发现 MAC 地址对上了取下 MAC 头来发送给操作系统的网络层。发现 IP 也对上了就取下 IP 头。IP 头里会写上一层封装的是 TCP 协议然后将其交给传输层即TCP 层。
在这一层里对于收到的每个包都会有一个回复的包说明收到了。这个回复的包绝非这次下单请求的结果例如购物是否成功扣了多少钱等而仅仅是 TCP 层的一个说明即收到之后的回复。当然这个回复会沿着刚才来的方向走回去报个平安。
因为一旦出了国门西行路上千难万险如果在这个过程中网络包走丢了例如进了大沙漠或者被强盗抢劫杀害怎么办呢因而到了要报个平安。
如果过一段时间还是没到发送端的 TCP 层会重新发送这个包还是上面的过程直到有一天收到平安到达的回复。这个重试绝非你的浏览器重新将下单这个动作重新请求一次。对于浏览器来讲就发送了一次下单请求TCP 层不断自己闷头重试。除非 TCP 这一层出了问题例如连接断了才轮到浏览器的应用层重新发送下单请求。
当网络包平安到达 TCP 层之后TCP 头中有目标端口号通过这个端口号可以找到电商网站的进程正在监听这个端口号假设一个 Tomcat将这个包发给电商网站。
电商网站的进程得到 HTTP 请求的内容知道了要买东西买多少。往往一个电商网站最初接待请求的这个 Tomcat 只是个接待员负责统筹处理这个请求而不是所有的事情都自己做。例如这个接待员要告诉专门管理订单的进程登记要买某个商品买多少要告诉管理库存的进程库存要减少多少要告诉支付的进程应该付多少钱等等。
如何告诉相关的进程呢往往通过 RPC 调用即远程过程调用的方式来实现。远程过程调用就是当告诉管理订单进程的时候接待员不用关心中间的网络互连问题会由 RPC 框架统一处理。RPC 框架有很多种有基于 HTTP 协议放在 HTTP 的报文里面的有直接封装在 TCP 报文里面的。
当接待员发现相应的部门都处理完毕就回复一个 HTTPS 的包告知下单成功。这个 HTTPS 的包会像来的时候一样经过千难万险到达你的个人电脑最终进入浏览器显示支付成功。
二、网络分层
假设你要在网上购买一本书
应用层你打开浏览器访问网上书店选择一本书并下订单。表示层你的订单信息可能会被加密以确保传输过程中的安全。会话层你的浏览器与书店服务器建立一个会话确保在整个购物过程中保持连接。传输层你的订单信息被分成多个数据包每个数据包都会被编号确保所有数据包能完整地送达书店服务器。负责端到端的通信和数据完整性常用协议有TCP和UDP网络层这些数据包通过互联网使用IP地址找到书店服务器。数据链路层在本地网络中这些数据包通过交换机和路由器使用MAC地址进行传输。物理层最终这些数据包通过物理介质如网线、光纤或无线信号传输到书店服务器。
三、ifconfig
CIDRClassless Inter-Domain Routing无类域间路由 表示法使用IP地址和一个斜杠后面的数字来表示网络前缀的长度例如192.168.1.0/24表示一个网络前缀其中前24位为网络部分剩下的8位为主机部分。 10.100.122.2/24这个 IP 地址中有一个斜杠斜杠后面有个数字 24。这种地址表示形式就是 CIDR。后面 24 的意思是32 位中前 24 位是网络号后 8 位是主机号。
伴随着 CIDR 存在的一个是广播地址10.100.122.255。如果发送这个地址所有 10.100.122 网络里面的机器都可以收到。另一个是子网掩码255.255.255.0。
将子网掩码和 IP 地址进行 AND 计算。前面三个 255转成二进制都是 1。1 和任何数值取 AND都是原来数值因而前三个数不变为 10.100.122。后面一个 0转换成二进制是 00 和任何数值取 AND都是 0因而最后一个数变为 0合起来就是 10.100.122.0。这就是网络号。将子网掩码和 IP 地址按位计算 AND就可得到网络号。 net-tools和iproute2都是用于管理Linux网络配置的工具集。 net-tools是一个传统的网络工具集包含一些常见的网络命令行工具比如ifconfig, route, netstat等。这些工具在过去被广泛使用来配置和查看网络接口、路由表以及网络状态信息。例如使用ifconfig可以查看和配置网络接口的信息使用route可以添加和删除路由条目使用netstat可以显示网络状态和连接信息。 而iproute2则是一个更新的网络工具集它提供了更多现代化的网络管理工具比如ip, ss, tc等。其中最常用的是ip命令它可以用来替代ifconfig和route命令提供更灵活和强大的网络配置功能。例如使用ip命令可以轻松地配置网络接口、管理路由表、设置策略路由等。 总的来说iproute2提供了更加灵活和强大的网络管理工具推荐在新的Linux系统中使用而net-tools则是传统的工具集逐渐被iproute2取代。 MAC
在 IP 地址的上一行是 link/ether fa:16:3e:c7:79:75 brd ff:ff:ff:ff:ff:ff这个被称为MAC 地址是一个网卡的物理地址用十六进制6 个 byte 表示。 MAC地址更像是身份证是一个唯一的标识。 MAC 地址是有一定定位功能的只不过范围非常有限。你可以根据 IP 地址找到杭州市网商路 599 号 B 楼 6 层但是依然找不到我你就可以靠吼了大声喊身份证 XXXX 的是哪位我听到了我就会站起来说是我啊。但是如果你在上海到处喊身份证 XXXX 的是哪位我不在现场当然不会回答因为我在杭州不在上海。 网络设备状态标识
BROADCAST,MULTICAST,UP,LOWER_UP UP 表示网卡处于启动的状态BROADCAST 表示这个网卡有广播地址可以发送广播包MULTICAST 表示网卡可以发送多播包LOWER_UP 表示 L1 是启动的也即网线插着呢。
四、DHCP与PXE
Linux 首先会判断要去的这个地址和我是一个网段的吗或者和我的一个网卡是同一网段的吗只有是一个网段的它才会发送 ARP 请求获取 MAC 地址。 如果发现不是呢 Linux 默认的逻辑是如果这是一个跨网段的调用它便不会直接将包发送到网络上而是企图将包发送到网关。
DHCP 就是租ip地址
在这个广播包里面新人大声喊我是新来的Boot request我的 MAC 地址是这个我还没有 IP谁能给租给我个 IP 地址 如果一个网络管理员在网络里面配置了DHCP Server的话他就相当于这些 IP 的管理员。他立刻能知道来了一个“新人”。这个时候我们可以体会 MAC 地址唯一的重要性了。当一台机器带着自己的 MAC 地址加入一个网络的时候MAC 是它唯一的身份如果连这个都重复了就没办法配置了。
只有 MAC 唯一IP 管理员才能知道这是一个新人需要租给它一个 IP 地址这个过程我们称为DHCP Offer。同时DHCP Server 为此客户保留为它提供的 IP 地址从而不会为其他 DHCP 客户分配此 IP 地址这有一个租用期的。
预启动执行环境PXE自动安装操作系统
首先启动 BIOS。这是一个特别小的小系统只能干特别小的一件事情。其实就是读取硬盘的 MBR 启动扇区将 GRUB 启动起来然后将权力交给 GRUBGRUB 加载内核、加载作为根文件系统的 initramfs 文件然后将权力交给内核最后内核启动初始化整个操作系统。 PXE 协议分为客户端和服务器端由于还没有操作系统只能先把客户端放在 BIOS 里面。当计算机启动时BIOS 把 PXE 客户端调入内存里面就可以连接到服务端做一些操作了。
PXE的工作过程
PXE 服务器上往往还有一个 TFTP 服务器
什么是initramfs
initramfsInitial RAM Filesystem初始内存文件系统是系统启动时使用的一个小型的临时文件系统。它被加载到内存中并在系统启动的早期阶段提供一些基本的工具和驱动程序以帮助系统找到并挂载实际的根文件系统通常是在硬盘上。
为什么需要initramfs
想象一下系统启动过程就像是一个人在黑暗中找东西。initramfs就像是一把手电筒帮助系统在一开始的时候找到并准备好实际要使用的文件系统。
工作流程 启动加载程序 当你打开计算机时启动加载程序比如GRUB会从硬盘上加载Linux内核和initramfs到内存中。 解压initramfs 内核启动后会解压这个临时文件系统到内存中里面包含了一些基本的工具和驱动程序。 运行初始化脚本 initramfs里有一些初始化脚本这些脚本会运行并做一些准备工作比如加载必要的驱动程序让系统能够识别硬盘和其他设备。 挂载实际的根文件系统 初始化脚本会找到硬盘上的实际根文件系统就是平时你操作系统所在的地方然后把这个根文件系统挂载起来。 切换到实际根文件系统 一旦实际的根文件系统准备好系统会把控制权交给这个根文件系统继续启动剩下的操作系统。
总结
initramfs在系统启动时提供了一个临时的、最基本的环境帮助系统加载需要的驱动程序和工具以便能够找到并挂载实际的根文件系统让操作系统顺利启动起来。
五、
六、
七、
八、
九、
十、