如何做镜像别人网站/seo英文

如何做镜像别人网站,seo英文,营销型网站建设 兼职,自己做网站挣钱不目录 1.TCP/IP 网络模型 2.键入网址--->网页显示 2.1 生成HTTP数据包 2.2 DNS服务器进行域名与IP转换 2.3 建立TCP连接 2.4 生成IP头部和MAC头部 2.5 网卡、交换机、路由器 3 Linux系统收发网络包 1.TCP/IP 网络模型 首先,为什么要有 TCP/IP 网络模型&a…

目录

1.TCP/IP 网络模型

2.键入网址--->网页显示

2.1 生成HTTP数据包

2.2 DNS服务器进行域名与IP转换

2.3 建立TCP连接

2.4 生成IP头部和MAC头部

2.5 网卡、交换机、路由器

3 Linux系统收发网络包


1.TCP/IP 网络模型

首先,为什么要有 TCP/IP 网络模型?对于同一台设备上的进程间通信,有很多种方式;但对于不同设备上的进程间通信,就需要网络通信,而设备是多样的,要兼容不同的设备,就需要一套通用的网络协议,这个网络协议是分层的,TCP/IP 网络模型就是对每一层进行设计和介绍。

TCP/IP 网络通常是由上到下分成 4 层,分别是应用层,传输层,网络层和网络接口层。 

应用层的数据包会传给传输层,传输层是为应用层提供网络支持的。在传输层会有两个传输协议,分别是 TCP 和 UDP,要记住他俩都属于传输层协议。

TCP 的全称叫传输控制协议(Transmission Control Protocol),大部分应用使用的正是 TCP 传输层协议,比如 HTTP 应用层协议。

应用需要传输的数据可能会非常大,直接传输不好控制,因此当传输层的数据包大小超过 MSS(TCP 最大报文段长度),就要将数据包分块,这样即使中途有一个分块丢失或损坏了,只需要重新发送这一个分块,而不用重新发送整个数据包。在 TCP 协议中,我们把每个分块称为一个 TCP 段(TCPSegment)。 

当设备作为接收方时,传输层则要负责把数据包传给应用,但是一台设备上可能会有很多应用在接收或者传输数据,因此需要用一个编号将应用区分开来,这个编号就是端口。由于传输层的报文中会携带端口号,因此接收方可以识别出该报文是发送给哪个应用。

网络层负责实际的传输功能,最常用的网络层协议是IP协议(Internet Protocol),IP 协议会将传输层的报文作为数据部分,再加上 IP 包头组装成 IP 报文,如果 IP 报文大小超过1500 字节就会再次进行分片,得到一个即将发送到网络的IP 报文。

网络层负责将数据从一个设备传输到另一个设备,那么不同设备之间如何寻找呢 ? 因此,网络层需要能区分设备的编号。我们一般用 IP 地址给设备进行编号,对于IPv4 协议,IP地址共 32 位,分成了四段(比如,192.168.100.1),每段是8位。只有一个单纯的IP 地址虽然做到了区分设备,但是寻址起来就特别麻烦,全世界那么多台设备,难道一个一个去匹配?这显然不科学。因此,需要将 IP 地址分成两种意义:一个是网络号,负责标识该IP地址是属于哪个的;一个是主机号,负责标识同一子网下的不同主机;配合子网掩码能算出 IP 地址的网络号和主机号。

IPv4地址和子网掩码_哔哩哔哩_bilibili

除了寻址能力,IP 协议还有另一个重要的能力就是路由。实际场景中,两台设备并不是用一条网线连接起来的,而是通过很多网关、路由器、交换机等众多网络设备连接起来的,那么就会形成很多条网络的路,因此当数据包到达一个网络节点,就需要通过路由算法决定下一步走哪条路径。所以,IP 协议的寻址作用是告诉我们去往下一个目的地该朝哪个方向走,路由则是根据「下一个目的地」选择路径。寻址更像在导航,路由更像在操作方向盘。

生成了 IP 头部之后,接下来要交给网络接口层,将来自网络层(IP层)的IP数据封装成适合物理网络传输的数据帧,即添加头部和尾部信息(如MAC地址、帧校验序列),然后交给物理硬件传输。解封装:接收物理网络的数据帧后,剥离帧的头部和尾部,提取IP数据报传递给上层(网络层)。网络接口层是TCP/IP模型的基石,确保数据能够跨越物理网络实现“最后一公里”的传输,是连接软件协议栈与硬件设备的桥梁。

  • 传输层,给应用数据前面增加了 TCP 头
  • 网络层,给 TCP 数据包前面增加了IP 头
  • 网络接口层,给 IP 数据包前后分别增加了帧头和帧尾

网络接口层的传输单位是帧(frame),IP层的传输单位是包(packet),TCP 层的传输单位是段(segment),HTTP 的传输单位则是消息或报文(message)。但这些名词并没有什么本质的区分,可以统称为数据包。

这些新增的头部和尾部,都有各自的作用,也都是按照特定的协议格式填充,这每一层都增加了各自的协议头,那自然网络包的大小就增大了,但物理链路并不能传输任意大小的数据包,所以在以太网中,规定了最大传输单元(MTU)是 1500 字节,也就是规定了单次传输的最大IP 包大小。

当网络包超过 MTU 的大小,就会在网络层分片,以确保分片后的 IP 包不会超过 MTU 大小,如果 MTU越小,需要的分包就越多,那么网络吞吐能力就越差,相反的,如果 MTU 越大,需要的分包就越少,那么网络吞吐能力就越好。

2.键入网址--->网页显示

在浏览器输入URL回车之后发生了什么?_哔哩哔哩_bilibili

2.1 生成HTTP数据包

键入网址到网页显示,期间发生了什么?首先浏览器做的第一步工作就是要对 URL 进行解析,从而生成发送给 Web 服务器的请求信息。长长的 URL 实际上是请求服务器里的文件资源。当没有路径名时,就代表访问根目录下事先设置的默认文件,也就是/index.html 或者 /default.html 这些文件,这样就不会发生混乱了。

对 URL进行解析后,浏览器确定了 Web 服务器和文件名,接下来就是根据这些信息来生成 HTTP 请求消息了。

2.2 DNS服务器进行域名与IP转换

首先我们要先学习DNS域名的解析:DNS域名解析过程_哔哩哔哩_bilibili

通过浏览器解析 URL 并生成 HTTP 消息后,需要委托操作系统将消息发送给 web 服务器。但在发送之前,还有一项工作需要完成,那就是查询服务器域名对应的IP 地址,因为委托操作系统发送消息时,必须提供通信对象的IP 地址。有一种服务器就专门保存了 web服务器域名与 IP的对应关系,它就是 DNS服务器,其实DNS服务器就是一个数据库,里面记录了很多URL和对应的IP地址。

这个根是由一群服务器组成的,这群服务器用了13个不同的域名,这13个根域名服务器是由12个独立机构营运的,注意是13个域名不是13台机器。

当用户在浏览器中输入一个域名,比如www.example.com,客户端(如浏览器)会首先检查自己的缓存(还要检查本机缓存),看是否已经有该域名对应的 IP 地址记录。如果有缓存记录,就直接使用缓存中的 IP 地址进行连接,解析流程结束;如果没有,则会向本地配置的 DNS 服务器发送域名解析请求。如果你的主机里面DNS服务器设置错误就会存在可以登录QQ客户端但是不能浏览网页的情况,因为QQ客户端是直接用IP访问的。

这个DNS服务器一般会是最接近我们的本地DNS服务器,这台本地DNS服务器一般由ISP负责管理,ISP也就是互联网服务提供商(移动、电信)。本地 DNS 服务器接收到请求后,也会先检查自己的缓存。如果缓存中有该域名的记录,就直接将对应的 IP 地址返回给客户端。如果本地 DNS 服务器缓存中没有相关记录,它会根据配置的转发规则,将请求转发给其他 DNS 服务器,比如根 DNS 服务器或上级 DNS 服务器,进行进一步的查询。

2.3 建立TCP连接

2.2 键入网址到网页显示,期间发生了什么? | 小林coding

首先,源端口号和目标端口号是不可少的,如果没有这两个端口号,数据就不知道应该发给哪个应用。
接下来是包的序号,这个是为了解决包乱序的问题。还有应该有的是确认号,目的是确认发出去对方是否有收到。如果没有收到就应该重新发送,直到送达这个是为了解决丢包的问题。
接下来还有一些状态位。例如SYN是发起一个连接,ACK是回复,RST是重新连接,FIN 是结束连接等。TCP 是面向连接的,因而双方要维护连接的状态,这些带状态位的包的发送,会引起双方的状态变更。
还有一个重要的就是窗口大小。TCP 要做流量控制,通信双方各声明一个窗口(缓存大小),标识自己当前能够的处理能力,别发送的太快,撑死我,也别发的太慢,饿死我。除了做流量控制以外,TCP还会做拥塞控制,对于真正的通路堵车不堵车,它无能为力,唯一能做的就是控制自己,也即控制发送的速度。

2.4 生成IP头部和MAC头部

分别对应了网络层和网络接口层

2.5 网卡、交换机、路由器

网络包只是存放在主机内存中的一串二进制数字信息,没有办法直接发送给对方。因此,我们需要将数字信号转换为电信号,才能在网线上传输,也就是说,这才是真正的数据发送过程。
负责执行这一操作的是网卡,要控制网卡还需要靠网卡驱动程序。网卡驱动获取网络包之后,会将其复制到网卡内的缓存区中,接着会在其开头加上报头和起始帧分界符,在末尾加上用于检测错误的帧校验序列。

  • 起始帧分界符是一个用来表示包起始位置的标记
  • 末尾的 FCS(帧校验序列)用来检查包传输过程是否有损坏

交换机是将网络包原样转发到目的地。交换机工作在 MAC 层,也称为二层网络设备。那么交换机是如何接收包的呢?

首先,电信号到达网线接口,交换机里的模块进行接收,接下来交换机里的模块将电信号转换为数字信号,然后通过包末尾的 FCS 校验错误,如果没问题则放到缓冲区。

计算机的网卡本身具有 MAC 地址,并通过核对收到的包的接收方 MAC 地址判断是不是发给自己的,如果不是发给自己的则丢弃;相对地,交换机的端口不核对接收方 MAC 地址,而是直接接收所有的包并存放到缓冲区中。因此,和网卡不同,交换机的端口不具有 MAC 地址。

网络包经过交换机之后,现在到达了路由器,并在此被转发到下一个路由器或目标设备。这一步转发的工作原理和交换机类似,也是通过查表判断包转发的目标。不过在具体的操作过程上,路由器和交换机是有区别的:

  • 路由器是基于 IP 设计的,俗称三层网络设备,路由器的各个端口都具有 MAC 地址和 IP 地址
  • 而交换机是基于以太网设计的,俗称二层网络设备,交换机的端口不具有 MAC 地址

在网络包传输的过程中,源 IP 和目标 IP 始终是不会变的,一直变化的是 MAC 地址,因为需要 MAC 地址在以太网内进行两个设备之间的包传输。

3 Linux系统收发网络包

2.3 Linux 系统是如何收发网络包的? | 小林coding

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/69794.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c++ 多线程知识汇总

一、std::thread std::thread 是 C11 引入的标准库中的线程类&#xff0c;用于创建和管理线程 1. 带参数的构造函数 template <class F, class... Args> std::thread::thread(F&& f, Args&&... args);F&& f&#xff1a;线程要执行的函数&…

LabVIEW用户界面(UI)和用户体验(UX)设计

作为一名 LabVIEW 开发者&#xff0c;满足功能需求、保障使用便捷与灵活只是基础要求。在如今这个用户体验至上的时代&#xff0c;为 LabVIEW 应用程序设计直观且具有美学感的界面&#xff0c;同样是不容忽视的关键任务。一个优秀的界面设计&#xff0c;不仅能提升用户对程序的…

【工业场景】用YOLOv8实现火灾识别

火灾识别任务是工业领域急需关注的重点安全事项,其应用场景和背景意义主要体现在以下几个方面: 应用场景:工业场所:在工厂、仓库等工业场所中,火灾是造成重大财产损失和人员伤亡的主要原因之一。利用火灾识别技术可以及时发现火灾迹象,采取相应的应急措施,保障人员安全和…

STM32_USART通用同步/异步收发器

目录 背景 程序 STM32浮空输入的概念 1.基本概念 2. STM32浮空输入的特点 3. STM32浮空输入的应用场景 STM32推挽输出详解 1. 基本概念 2. 工作原理 3. 应用场景 使能外设时钟 TXE 和 TC的区别 USART_IT_TXE USART_IT_TC 使能串口外设 中断处理函数 背景 单片…

利用IDEA将Java.class文件反编译为Java文件:原理、实践与深度解析

文章目录 引言&#xff1a;当.class文件遇到源代码缺失第一章&#xff1a;反编译技术基础认知1.1 Java编译执行原理1.2 反编译的本质1.3 法律与道德边界 第二章&#xff1a;IDEA内置反编译工具详解2.1 环境准备2.2 三步完成基础反编译2.3 高级反编译技巧2.3.1 调试模式反编译2.…

算法日记16:SC68 联通块问题(并查集)

一、题目&#xff1a; 二、题解&#xff1a; 1、看到求联通块问题&#xff0c;我们可以考虑使用DFS/并查集(在这里我们仅介绍并查集) 2、什么是并查集&#xff1f; 2.1&#xff1a;初始化&#xff1a;对于每一个点&#xff0c;我们都对其进行初始化操作pre[i]i pre[i]表示i的…

visual studio导入cmake项目后打开无法删除和回车

通过Cmakelists.txt导入的项目做删除和回车无法响应&#xff0c;需要点击项目&#xff0c;然后选择配置项目就可以了

ChartDB:一个基于Web的可视化数据库设计工具

这次给大家介绍一个可视化的数据库设计工具&#xff1a;ChartDB。 ChartDB 是一个免费开源的数据库可视化设计工具&#xff0c;支持的数据库包括 MySQL、MariaDB、PostgreSQL、Microsoft SQL Server、SQLite、ClickHouse 等。 对于已有的数据库&#xff0c;ChartDB 提供了一键…

elementUI tree树形控件 根据数据动态设置禁用,全选时不可选中禁用数据

需求 根据后端返回的数据禁用数据&#xff0c;将tree结构对应的数据设置为禁用状态&#xff0c;并且在点击全选后不可选中禁用数据。 效果 根据数据动态设置禁用 全选时不可选中禁用数据 代码 <template>...<div class"list-box"><div class&q…

Flutter 添加 iOS widget 小组件

环境 macOS 15.1 Xcode16.1 Flutter 3.27.4 前言 本篇文章主要记录&#xff0c;在Flutter 项目中如何正确地添加iOS 小组件&#xff0c;iOS 小组件 相关的知识在另一篇文章有记录。 iOS 14 widget 添加小组件 WidgetExtension 打开Xcode New -> Target 选择 iOS -> 搜…

LLM:GPT 系列

阅读原文&#xff1a; LLM&#xff1a;Qwen 系列 GPT&#xff08;Generative Pre-trained Transformer&#xff09;是生成式预训练语言模型&#xff0c;基于 Transformer 架构&#xff0c;专注于通过自回归的方式生成自然语言文本&#xff0c;即给定一个输入序列 x { x 1 , …

消息中间件:RabbitMQ镜像集群部署配置全流程

目录 1、特点 2、RabbitMQ的消息传递模式 2.1、简单模式&#xff08;Simple Mode&#xff09; 2.2、工作队列模式&#xff08;Work Queue Mode&#xff09; 2.3、发布/订阅模式&#xff08;Publish/Subscribe Mode&#xff09; 2.4、路由模式&#xff08;Routing Mode&am…

【STM32】通过HAL库Flash建立FatFS文件系统并配置为USB虚拟U盘MSC

【STM32】通过HAL库Flash建立FatFS文件系统并配置为USB虚拟U盘MSC 在先前 分别介绍了FatFS文件系统和USB虚拟U盘MSC配置 前者通过MCU读写Flash建立文件系统 后者通过MSC连接电脑使其能够被操作 这两者可以合起来 就能够实现同时在MCU、USB中操作Flash的文件系统 【STM32】通过…

打穿内网三重奏-红日7

靶机下载地址&#xff1a; 漏洞详情 (qiyuanxuetang.net) 攻击链路&#xff1a; DMZ区IP段为192.168.11.1/24 第二层网络环境IP段为192.168.52.1/24 第三层网络环境IP段为192.168.93.1/24 这里DMZ和攻击者我用的是192.168.11.1 这个网段&#xff0c;其他不变 这里我加了两张…

Vue.js 在低代码开发平台中的应用与优化

Vue.js 在低代码开发平台中的应用与优化 在数字化转型的进程中&#xff0c;低代码开发平台成为了企业快速构建应用的得力助手。而 Vue.js 作为一款广受欢迎的前端框架&#xff0c;在低代码开发平台中发挥着举足轻重的作用。它不仅提升了开发效率&#xff0c;还优化了应用的用户…

QML 快捷键与Shortcut的使用

一、效果展示 二、源码分享 import QtQuick import QtQuick.Controls import Qt.labs.qmlmodels import QtQuick.Controls.Basic import QtQuick.Layouts import QtQuick.Effects import Qt.labs.platformApplicationWindow {id:rootwidth: 1000height: 730visible: truetitle…

RocketMQ和Kafka如何实现顺序写入和顺序消费?

0 前言 先说明kafka&#xff0c;顺序写入和消费是Kafka的重要特性&#xff0c;但需要正确的配置和使用方式才能保证。本文需要解释清楚Kafka如何通过分区来实现顺序性&#xff0c;以及生产者和消费者应该如何配合。   首先&#xff0c;顺序写入。Kafka的消息是按分区追加写入…

【南方Cass】快捷键0002:合并多段线

快捷键&#xff1a;JOIN 按下快捷键JOIN&#xff0c;然后选择需要合并的对象&#xff08;多段线&#xff09;&#xff0c;按下回车即可完成合并。

Qt的isVisible ()函数介绍和判断窗口是否在当前界面显示

1、现象&#xff1a;当Qt的窗口最小化时&#xff0c;isVisible值一定是true&#xff0c;这是正常的。 解释&#xff1a;在Qt中&#xff0c;当你点击窗口的最小化按钮时&#xff0c;Qt内部不会自动调用 hide() 方或 setVisible(false) 来隐藏窗口。相反&#xff0c;它会改变窗口…

【愚公系列】《Python网络爬虫从入门到精通》007-请求模块requests高级应用(Reguests-HTML)

标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度…