网站上的广告怎么做,网络营销成功的品牌,佛山外贸网站建设信息,传奇世界网页版在线玩文章目录 参考一、网络模型有哪几层DMANAPI 机制二、键入网址到网页显示#xff0c;期间发生了什么#xff1f;1. HTTP2. DNS3. 协议栈4. TCP5. IP6. MAC7. 网卡8. 交换机9. 路由器10. 服务器 与 客户端的互相扒皮#xff08;添加、删除头部信息#xff09;参考图HTTP 请求… 文章目录 参考一、网络模型有哪几层DMANAPI 机制二、键入网址到网页显示期间发生了什么1. HTTP2. DNS3. 协议栈4. TCP5. IP6. MAC7. 网卡8. 交换机9. 路由器10. 服务器 与 客户端的互相扒皮添加、删除头部信息参考图HTTP 请求报文结构HTTP 响应报文结构 参考
图解网络介绍 | 小林coding
TCP/IP 网络模型有哪几层键入网址到网页显示期间发生了什么Linux 系统是如何收发网络包的
一、网络模型有哪几层 OSI 七层结构 VS TCP/IP四层结构 OSI 参考模型 应用层负责给应用程序提供统一的接口 表示层负责把数据转换成兼容另一个系统能识别的格式 会话层负责建立、管理和终止表示层实体之间的通信会话 传输层负责端到端的数据传输 网络层负责数据的路由、转发、分片 数据链路层负责数据的封帧和差错检测以及 MAC 寻址 物理层负责在物理网络中传输数据帧 TCP/IP 模型 应用层负责向用户提供一组应用程序比如 HTTP、DNS、FTP 等; 传输层负责端到端的通信比如 TCP、UDP 等 网络层负责网络包的封装、分片、路由、转发比如 IP、ICMP 等 网络接口层负责网络包在物理网络中的传输比如网络包的封帧、 MAC 寻址、差错检测以及通过网卡传输网络帧等 由于 OSI 模型实在太复杂提出的也只是概念理论上的分层并没有提供具体的实现方案。事实上我们比较常见也比较实用的是四层模型即 TCP/IP 网络模型Linux 系统正是按照这套网络模型来实现网络协议栈的。 TCP/IP 四层结构 每一层的封装格式 应用层只需要专注于为用户提供应用功能比如 HTTP、FTP、Telnet、DNS、SMTP等 应用层是工作在操作系统中的用户态传输层及以下则工作在内核态 端口设备作为接收方时传输层则要负责把数据包传给应用但是一台设备上可能会有很多应用在接收或者传输数据因此需要用一个编号将应用区分开来这个编号就是端口。 我们不希望传输层协议处理太多的事情只需要服务好应用即可让其作为应用间数据传输的媒介帮助实现应用到应用的通信而实际的传输功能就交给下一层也就是网络层Internet Layer。 网络层负责将数据从一个设备传输到另一个设备世界上那么多设备又该如何找到对方呢因此网络层需要有区分设备的编号这个编号就是 IP 地址。 IP 协议的作用 寻址 路由。路由表来确定数据包从源主机到目标主机的传输路径 IP 地址 网络号 主机号配合子网掩码计算。 子网掩码的格式又叫 CIDR 格式。CIDR格式中的网络前缀长度指定了网络地址中网络部分的长度它决定了网络中可用的IP地址数量。较小的前缀长度表示更大的网络而较大的前缀长度表示更小的网络。如192.0.2.0/24表示一个拥有256个IP地址的网络其中包括192.0.2.0到192.0.2.255之间的所有地址。 网络接口层主要为网络层提供「链路级别」传输的服务负责在以太网、WiFi 这样的底层网络上发送原始数据包工作在网卡这个层次使用 MAC 地址来标识网络上的设备。 网络接口层的传输单位是帧frameIP 层的传输单位是包packetTCP 层的传输单位是段segmentHTTP 的传输单位则是消息或报文message。但这些名词并没有什么本质的区分可以统称为数据包。 Linux 网络协议栈 应用程序需要通过系统调用来跟 Socket 层进行数据交互 Socket 层的下面就是传输层、网络层和网络接口层 最下面的一层则是网卡驱动程序和硬件网卡设备 DMA DMADirect Memory Access直接内存访问是一种计算机技术用于提高数据传输速度和系统性能。DMA 允许外部设备如硬盘驱动器、网络适配器等直接访问计算机内存而无需经过中央处理器CPU的直接参与。 优点 提高性能由于 DMA 控制器可以在不影响 CPU 的情况下执行数据传输因此可以显著提高系统的性能和效率。减少 CPU 开销DMA 可以减少 CPU 处理数据传输的负担使 CPU 可以更多地专注于执行其他任务。降低能耗减少了 CPU 参与数据传输的次数从而降低了系统的能耗。支持大数据传输DMA 可以支持大容量数据的快速传输例如大文件的读写、网络数据的传输等。 然而DMA 也存在一些潜在的安全风险因为外部设备可以直接访问内存可能会导致数据泄露或者安全漏洞。因此在设计系统时需要考虑安全性并采取适当的措施来保护系统的数据安全。 NAPI 机制 为了解决频繁中断带来的性能开销Linux 内核在 2.6 版本中引入了 NAPI 机制它是混合「中断和轮询」的方式来接收网络包它的核心概念就是不采用中断的方式读取数据而是首先采用中断唤醒数据接收的服务程序然后 poll 的方法来轮询数据。 NAPI的工作原理如下 轮询模式Polling ModeNAPI机制允许网络设备在非高负载情况下使用中断模式进行数据包处理而不是持续地轮询网络接口。这可以减少CPU的轮询负载提高系统的整体性能。 中断抑制Interrupt Coalescing在高负载情况下NAPI会暂时关闭中断并切换到轮询模式。这样可以减少中断处理的频率降低系统的负载。 数据包处理延迟由于NAPI机制可以在非高负载情况下使用中断模式因此可能会引入一定的数据包处理延迟。但是这种延迟可以通过调整NAPI的参数来平衡系统的性能和响应时间。 二、键入网址到网页显示期间发生了什么
1. HTTP
解析 URL 协议、服务器主机地址、所请求的数据路径、可能得参数生成发送给 Web 服务器的请求消息
2. DNS
域名解析——查询服务器域名对应的 IP 地址
3. 协议栈
通过 DNS 获取到 IP 后把 HTTP 的传输工作交给操作系统中的协议栈作为行动指南。
4. TCP
HTTP 是基于 TCP 协议传输的三次握手建立连接数据包大于MTU则分段生成网络包
5. IP
TCP 模块在执行连接、收发、断开等各阶段操作时都需要委托 IP 模块将数据封装成网络包发送给通信对象。
6. MAC
生成 IP 头部后发送方需要在数据包前添加MAC头部含源设备和目标设备的MAC地址数据包就能够通过数据链路层正确地发送到目标设备 如果目标主机不是本地局域网填入的MAC地址是路由器也就是把数据包转发给路由器路由器一直转发下一个路由器直到转发到目标主机的路由器 如果发现 IP 地址是自己局域网内的主机就会 arp 请求获取目标主机的 MAC 地址从而转发到这个服务器主机。
转发的过程中源IP地址和目标IP地址是不会变的前提没有使用 NAT 网络的源 MAC 地址和目标 MAC 地址是会变化的。
7. 网卡
网卡驱动程序控制网卡网卡会将网络包存放在内存中的一串二进制数字信号转为电信号模拟信号通过网线发送到交换机
网卡还会附加一些必要的控制信息如源MAC地址表示发送方的网卡和目标MAC地址表示接收方的网卡。
8. 交换机
数据包到达交换机交换机读取数据包中的目标 MAC 地址
交换机根据数据包中的目标MAC地址查找MAC地址表MAC地址–端口以确定目标设备所连接的端口然后将信号发送到相应的端口从而将数据包发送到目标设备的网卡。
9. 路由器
通过路由器的转发数据包可以在不同的网络之间进行传输实现了跨网络的通信 查询路由表确定输出端口 知道对方的 IP 地址之后接下来需要通过 ARP 协议根据 IP 地址查询 MAC 地址并将查询的结果作为接收方 MAC 地址。 发送出去的网络包会通过交换机到达下一个路由器。
在网络包传输的过程中源 IP 和目标 IP 始终是不会变的一直变化的是 MAC 地址因为需要 MAC 地址在以太网内进行两个设备之间的包传输。
10. 服务器 与 客户端的互相扒皮添加、删除头部信息
目的MAC地址、IP地址、TCP序列号、端口号的检验若符合且正在监听此端口则发送给 HTTP 进程进行后续处理。
服务器发送 HTTP 响应报文与上述过程类似
客户端没有后续请求发起 TCP 四次挥手断开双方连接。
参考图 HTTP 报文 HTTPHypertext Transfer Protocol是用于在网络上传输超文本如网页的应用层协议。HTTP协议定义了客户端和服务器之间的通信方式它是无状态的即每个请求都是独立的服务器不会保留任何与之前请求相关的信息。 HTTP报文是客户端和服务器之间交换的数据块它分为请求报文和响应报文两种类型。 HTTP 请求报文结构 请求行包含了请求方法、请求的资源路径以及HTTP协议版本。例如 GET /index.html HTTP/1.1请求头部包含了请求的一些附加信息如Host、User-Agent、Content-Type等。每个请求头部都是以一个键值对的形式表示。例如 Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36空行请求行和请求头部之后是一个空行用来表示请求头部的结束。 请求体可选对于一些请求如 POST 请求会包含请求体其中包含了客户端发送给服务器的数据。例如 key1value1key2value2HTTP 响应报文结构 状态行包含了响应的HTTP协议版本、状态码以及状态消息。例如 HTTP/1.1 200 OK响应头部与请求头部类似包含了响应的一些附加信息如Content-Type、Content-Length等。例如 Content-Type: text/html; charsetutf-8 Content-Length: 1234空行响应头部和响应体之间是一个空行。 响应体可选包含了服务器发送给客户端的实际数据比如网页的HTML内容、图片、文件等。 DNS 域名解析过程先查缓存、hosts文件再… 协议栈上面的部分会向下面的部分委托工作下面的部分收到委托的工作并执行 TCP 报文头部的格式 或 TCP 传输数据之前要先三次握手建立连接保证双方都有发送和接收的能力 TCP 分割数据 MTU VS MSS MTUMaximum Transmission Unit是指网络通信中可以在单个数据包中传输的最大数据量。它是以字节为单位来衡量的代表了网络中数据链路层如以太网能够传输的最大数据包大小。 MSSMaximum Segment Size是 TCP 协议中的一个参数指示在 TCP 通信中单个 TCP 分段Segment的最大数据量。它通常是 MTU 减去 IP 头和 TCP 头的长度。
IP 报文头部的格式 或 路由表查询、路由 MAC 头部是以太网使用的头部它包含了接收方和发送方的 MAC 地址等信息 ARP 协议寻找路由器的 MAC 地址 查看 ARP 缓存 MAC 报文 网络包网卡驱动获取网络包之后会将其复制到网卡内的缓存区中接着会在其开头加上报头和起始帧分界符在末尾加上用于检测错误的帧校验序列。 交换机的 MAC 地址表 查询路由表判断转发目标 互相扒皮 —— 服务器 与 客户端