3 网络协议入门
- 从淘宝买东西举例来说明一次请求中的,网络有关的部分
- 是打开浏览器,输入购物网站的地址:
https://www.taobao.com/
- 那么浏览器是怎么打开购物网站的首页的呢?
(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因为路由器之间也会经常通信,这种沟通成为路由协议,常用的有OSPF和BGP
(5)当网络包平安到达 TCP 层之后,TCP 头中有目标端口号,通过这个端口号,可以找到电商网站的进程正在监听这个端口号,假设一个 Tomcat,将这个包发给电商网站。
相关文章:
3 网络协议入门
从淘宝买东西举例来说明一次请求中的,网络有关的部分是打开浏览器,输入购物网站的地址: https://www.taobao.com/那么浏览器是怎么打开购物网站的首页的呢? (1)首先受到了一段http报文 HTTP/1.1 200 OK Date: Tue, 27 Mar 2018 …...
【星海出品】VUE(五)
表单 表单输入绑定 只需要v-model声明一下这个变量就可以。 还可以选择不同的类型,例如 type"checkbox“ v-model 也提供了 lazy、number、.trim 功能,只需要在v-model后面加入.lazy 例如:v-model.lazy”message“ <template><…...
项目实战之安装依赖npm install
文章目录 nvmdeasync包和node-gyp报错deasync包node-gyp报错 前言:有些人看着还活着其实已经凉了好一会儿了。 初拿到项目 初拿到项目肯定是先看配置 package.json的啦,看看都需要安装什么依赖,然后 npm install,OK结束 皆大欢喜。 ————…...
Java之图书管理系统
🤷♀️🤷♀️🤷♀️ 今天给大家分享一下Java实现一个简易的图书管理系统! 清风的个人主页🎉✏️✏️ 🌂c/java领域新星创作者 🎉欢迎👍点赞✍评论❤️收藏 😛&…...
用「埋点」记录自己,不妄过一生
最近有朋友问我「埋点怎么做」,给朋友讲了一些互联网广告的案例,从源头的数据采集讲到末尾的应用分析和流量分配等(此处省略N多字) 解释完以后,我想到一个问题:有了埋点可以做分析,那我们对自己…...
运维知识点-Docker从小白到入土
Docker从小白到入土 安装问题-有podmanCentos8使用yum install docker -y时,默认安装的是podman-docker软件 安装docker启动dockeryum list installed | grep dockeryum -y remove xxxx安装Docker安装配置下载安装docker启动docker,并设置开机启动下载所…...
基于DevEco Studio的OpenHarmony应用原子化服务(元服务)入门教程
一、创建项目 二、创建卡片 三、应用服务代码 Index.ets Entry Component struct Index {State TITLE: string OpenHarmony;State CONTEXT: string 创新召见未来!;build() {Row() {Column() {Text(this.TITLE).fontSize(30).fontColor(0xFEFEFE).fontWeight(…...
MySQL和Java程序建立连接的底层原理(JDBC),一个SQL语句是如何执行的呢?
Java程序方面 1. JDBC驱动程序:JDBC驱动程序是连接MySQL数据库的核心组件。它是一组Java类,用于实现与MySQL数据库的通信协议和数据传输。驱动程序负责将Java程序发送的请求转化为MySQL数据库能够理解的格式,并将数据库返回的结果转化为Java…...
uniapp踩坑之项目:uniapp数字键盘组件—APP端
//在components文件夹创建digitKeyboard文件夹,再创建digitKeyboard.vue <!-- 数字键盘 --> <template><view class"digit-keyboard"><view class"digit-keyboard_bg" tap"hide"></view><view clas…...
聊一聊GPT——让我们的写作和翻译更高效
1 介绍 GPT(Generative Pre-trained Transformer)是一种基于Transformer的语言生成模型,由OpenAI开发。它采用了无监督的预训练方式,通过处理大量的文本数据进行自我学习,从而提高其语言生成的能力。 GPT在自然语言…...
413 (Payload Too Large) 2023最新版解决方法
文章目录 出现问题解决方法 出现问题 博主在用vue脚手架开发的时候,在上传文件的接口中碰到 这样一个错误,查遍所有csdn,都没有找到解决方法,通过一些方式,终于解决了。 解决方法 1.打开Vue项目的根目录。 2.在根目…...
uboot启动linux kernel的流程
目录 前言流程图autoboot_commandrun_command_listdo_bootmdo_bootm_statesdo_bootm_linuxboot_prep_linuxboot_jump_linux 前言 本文在u-boot启动流程分析这篇文章的基础上,简要梳理uboot启动linux kernel的流程。 流程图 其中, autoboot_command位于…...
垃圾回收系统小程序定制开发搭建攻略
在这个数字化快速发展的时代,垃圾回收系统的推广对于环境保护和可持续发展具有重要意义。为了更好地服务于垃圾回收行业,本文将分享如何使用第三方制作平台乔拓云网,定制开发搭建垃圾回收系统小程序。 首先,使用乔拓云网账号登录平…...
可变参数模板
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排宽度不一的座位,每排2座,2n名内外向乘客依序上车按各自喜好选座。 (笔记模板由python脚本于2023年11月05日 21:49:31创建,本篇笔记适合熟悉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间的操作(即算子/OPÿ…...
编辑器报警处理
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.数据过滤 在数据处理中,我们经常会对数据进行过滤,为此Pandas中提供mask()和where()两个函数; mask(): 在 满足条件的情况下替换数据,而不满足条件的部分…...
工具: MarkDown学习
具体内容看官方教程: Markdown官方教程...
国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...
给网站添加live2d看板娘
给网站添加live2d看板娘 参考文献: stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下,文章也主…...
