当前位置: 首页 > news >正文

3 网络协议入门

  1. 从淘宝买东西举例来说明一次请求中的,网络有关的部分
  2. 是打开浏览器,输入购物网站的地址:
https://www.taobao.com/
  1. 那么浏览器是怎么打开购物网站的首页的呢?
    (1)首先受到了一段http报文
HTTP/1.1 200 OK
Date: Tue, 27 Mar 2018 16:50:26 GMT
Content-Type: text/html;charset=UTF-8
Content-Language: zh-CN
<!DOCTYPE html>
<html>
<head>
<base href="https://www.taobao.com/" />
<meta charset="utf-8"/> <title> 淘宝3 周年主会场 </title>

(2)由于客户只是在浏览器地址栏输入:

https://www.taobao.com/
1.但是浏览器并不知道具体的淘宝的ip地址,因此浏览器需要去打开地址簿去查找,这个一般的地址簿使用的是DNS,或者是更精准的HTTPDNS
2.无论是用的哪一种,最终都会得到一个ip:106.1xx.13x.2x

(3)知道了目标地址,浏览器开始打包请求:

1.对于普通的浏览请求,往往会使用HTTP协议
2.但是对于购物的请求,往往需要进行加密传输,因而会使用HTTPS协议
3.无论是什么协议,里面都会写明“你要买什么和买多少”(请求参数)

(4)DNS、HTTP、HTTPS 所在的层我们称为应用层

1.经过应用层封装后,浏览器会将应用层的包交给下一层去完成,通过 socket 编程来实现
2.下一层是传输层,传输层有两种协议:a.一种是无连接的协议UDPb.一种是面向连接的协议TCP
3.对于支付来讲,往往使用 TCP 协议。所谓的面向连接就是,TCP 会保证这个包能够到达目的地。如果不能到达,就会重新发送,直至到达.
4.TCP 协议里面会有两个端口:a.一个是浏览器监听的端口b.一个是电商的服务器监听的端口
5.操作系统往往通过端口来判断,它得到的包应该给哪个进程。
6.传输层封装完毕后,浏览器会将包交给操作系统的网络层
7.网络层的协议是 IP 协议:IP 协议里面会有源 IP 地址,即浏览器所在机器的 IP 地址和目标 IP 地址,也即电商网站所在服务器的 IP 地址.
8.既然知道了目标ip,那么改如何找到这个目标ip呢?a.操作系统往往先判断这个ip是本地ip,还是远程ipb.既然知道了目标ip是远程ip,不在本局域内,那么就需要通过网关去奔向目标ip
9.本地网关之间的通讯基本靠吼(也就是ARP协议),网关响应之后,就会告诉客户端自己的地址,即MAC地址。
10.于是这个ip包就给到了下一层:MAC层网卡再将包发出去,这个包里面就包含了MAC地址
11.网关收到包之后,会根据自己的知识,判断下一步应该怎么走。网关往往是一个路由器,到某个 IP 地址应该怎么走,这个叫作路由表
12由于请求带着目标的ip,路由器就会告诉请求,你的下一跳应该去哪里才可以访问到目标ip因为路由器之间也会经常通信,这种沟通成为路由协议,常用的有OSPFBGP

(5)当网络包平安到达 TCP 层之后,TCP 头中有目标端口号,通过这个端口号,可以找到电商网站的进程正在监听这个端口号,假设一个 Tomcat,将这个包发给电商网站。

相关文章:

3 网络协议入门

从淘宝买东西举例来说明一次请求中的&#xff0c;网络有关的部分是打开浏览器&#xff0c;输入购物网站的地址&#xff1a; https://www.taobao.com/那么浏览器是怎么打开购物网站的首页的呢&#xff1f; (1)首先受到了一段http报文 HTTP/1.1 200 OK Date: Tue, 27 Mar 2018 …...

【星海出品】VUE(五)

表单 表单输入绑定 只需要v-model声明一下这个变量就可以。 还可以选择不同的类型&#xff0c;例如 type"checkbox“ v-model 也提供了 lazy、number、.trim 功能&#xff0c;只需要在v-model后面加入.lazy 例如&#xff1a;v-model.lazy”message“ <template><…...

项目实战之安装依赖npm install

文章目录 nvmdeasync包和node-gyp报错deasync包node-gyp报错 前言&#xff1a;有些人看着还活着其实已经凉了好一会儿了。 初拿到项目 初拿到项目肯定是先看配置 package.json的啦&#xff0c;看看都需要安装什么依赖&#xff0c;然后 npm install,OK结束 皆大欢喜。 ————…...

Java之图书管理系统

&#x1f937;‍♀️&#x1f937;‍♀️&#x1f937;‍♀️ 今天给大家分享一下Java实现一个简易的图书管理系统&#xff01; 清风的个人主页&#x1f389;✏️✏️ &#x1f302;c/java领域新星创作者 &#x1f389;欢迎&#x1f44d;点赞✍评论❤️收藏 &#x1f61b;&…...

用「埋点」记录自己,不妄过一生

最近有朋友问我「埋点怎么做」&#xff0c;给朋友讲了一些互联网广告的案例&#xff0c;从源头的数据采集讲到末尾的应用分析和流量分配等&#xff08;此处省略N多字&#xff09; 解释完以后&#xff0c;我想到一个问题&#xff1a;有了埋点可以做分析&#xff0c;那我们对自己…...

运维知识点-Docker从小白到入土

Docker从小白到入土 安装问题-有podmanCentos8使用yum install docker -y时&#xff0c;默认安装的是podman-docker软件 安装docker启动dockeryum list installed | grep dockeryum -y remove xxxx安装Docker安装配置下载安装docker启动docker&#xff0c;并设置开机启动下载所…...

基于DevEco Studio的OpenHarmony应用原子化服务(元服务)入门教程

一、创建项目 二、创建卡片 三、应用服务代码 Index.ets Entry Component struct Index {State TITLE: string OpenHarmony;State CONTEXT: string 创新召见未来&#xff01;;build() {Row() {Column() {Text(this.TITLE).fontSize(30).fontColor(0xFEFEFE).fontWeight(…...

MySQL和Java程序建立连接的底层原理(JDBC),一个SQL语句是如何执行的呢?

Java程序方面 1. JDBC驱动程序&#xff1a;JDBC驱动程序是连接MySQL数据库的核心组件。它是一组Java类&#xff0c;用于实现与MySQL数据库的通信协议和数据传输。驱动程序负责将Java程序发送的请求转化为MySQL数据库能够理解的格式&#xff0c;并将数据库返回的结果转化为Java…...

uniapp踩坑之项目:uniapp数字键盘组件—APP端

//在components文件夹创建digitKeyboard文件夹&#xff0c;再创建digitKeyboard.vue <!-- 数字键盘 --> <template><view class"digit-keyboard"><view class"digit-keyboard_bg" tap"hide"></view><view clas…...

聊一聊GPT——让我们的写作和翻译更高效

1 介绍 GPT&#xff08;Generative Pre-trained Transformer&#xff09;是一种基于Transformer的语言生成模型&#xff0c;由OpenAI开发。它采用了无监督的预训练方式&#xff0c;通过处理大量的文本数据进行自我学习&#xff0c;从而提高其语言生成的能力。 GPT在自然语言…...

413 (Payload Too Large) 2023最新版解决方法

文章目录 出现问题解决方法 出现问题 博主在用vue脚手架开发的时候&#xff0c;在上传文件的接口中碰到 这样一个错误&#xff0c;查遍所有csdn&#xff0c;都没有找到解决方法&#xff0c;通过一些方式&#xff0c;终于解决了。 解决方法 1.打开Vue项目的根目录。 2.在根目…...

uboot启动linux kernel的流程

目录 前言流程图autoboot_commandrun_command_listdo_bootmdo_bootm_statesdo_bootm_linuxboot_prep_linuxboot_jump_linux 前言 本文在u-boot启动流程分析这篇文章的基础上&#xff0c;简要梳理uboot启动linux kernel的流程。 流程图 其中&#xff0c; autoboot_command位于…...

垃圾回收系统小程序定制开发搭建攻略

在这个数字化快速发展的时代&#xff0c;垃圾回收系统的推广对于环境保护和可持续发展具有重要意义。为了更好地服务于垃圾回收行业&#xff0c;本文将分享如何使用第三方制作平台乔拓云网&#xff0c;定制开发搭建垃圾回收系统小程序。 首先&#xff0c;使用乔拓云网账号登录平…...

可变参数模板

1. sizeof...计算参数个数 template<typename... Ts> void magic(Ts... args) {std::cout << sizeof...(args) << std::endl; } 2.递归模板函数 template<typename T> void printf1(T value) {std::cout << value << std::endl; }templ…...

坐公交:内外向乘客依序选座(python字典、字符串、元组)

n排宽度不一的座位&#xff0c;每排2座&#xff0c;2n名内外向乘客依序上车按各自喜好选座。 (笔记模板由python脚本于2023年11月05日 21:49:31创建&#xff0c;本篇笔记适合熟悉python列表list、字符串str、元组tuple的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&…...

十年老程序员分享13个最常用的Python深度学习库和介绍,赶紧收藏码住!

文章目录 前言CaffeTheanoTensorFlowLasagneKerasmxnetsklearn-theanonolearnDIGITSBlocksdeepypylearn2Deeplearning4j关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案…...

【pytorch源码分析--torch执行流程与编译原理】

背景 解读torch源码方便算子开发方便后续做torch 模型性能开发 基本介绍 代码库 https://github.com/pytorch/pytorch 模块介绍 aten: A Tensor Library的缩写。与Tensor相关的内容都放在这个目录下。如Tensor的定义、存储、Tensor间的操作&#xff08;即算子/OP&#xff…...

编辑器报警处理

1、warning CS8600: 将 null 文本或可能的 null 值转换为不可为 null 类型。 原代码 string returnedString Marshal.PtrToStringAuto(pReturnedString, (int)bytesReturned); 处理后的代码 string returnedString Marshal.PtrToStringAuto(pReturnedString, (int)bytesR…...

Python库学习(十二):数据分析Pandas[下篇]

接着上篇《Python库学习(十一):数据分析Pandas[上篇]》,继续学习Pandas 1.数据过滤 在数据处理中&#xff0c;我们经常会对数据进行过滤&#xff0c;为此Pandas中提供mask()和where()两个函数&#xff1b; mask(): 在 满足条件的情况下替换数据&#xff0c;而不满足条件的部分…...

工具: MarkDown学习

具体内容看官方教程&#xff1a; Markdown官方教程...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗&#xff1f;了解下一期 Elasticsearch Engineer 培训的时间吧&#xff01; Elasticsearch 拥有众多新功能&#xff0c;助你为自己…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

Typeerror: cannot read properties of undefined (reading ‘XXX‘)

最近需要在离线机器上运行软件&#xff0c;所以得把软件用docker打包起来&#xff0c;大部分功能都没问题&#xff0c;出了一个奇怪的事情。同样的代码&#xff0c;在本机上用vscode可以运行起来&#xff0c;但是打包之后在docker里出现了问题。使用的是dialog组件&#xff0c;…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

从面试角度回答Android中ContentProvider启动原理

Android中ContentProvider原理的面试角度解析&#xff0c;分为​​已启动​​和​​未启动​​两种场景&#xff1a; 一、ContentProvider已启动的情况 1. ​​核心流程​​ ​​触发条件​​&#xff1a;当其他组件&#xff08;如Activity、Service&#xff09;通过ContentR…...