计算机网络基础进阶
三次握手四次挥手
三次握手
1------建立连接----------------------2 ACK=1,seq=0
2------传输数据,建立连接---------1
1------传输数据,建立连接---------2
三次握手用于建立TCP连接,确保通信双方都准备好进行数据传输。整个过程涉及三次报文交换:
- 第一次握手(客户端发送SYN):
客户端向服务器发送一个SYN(同步序列编号)请求,表示希望建立连接,同时带上一个初始序列号。 - 第二次握手(服务器发送SYN-ACK):
服务器收到客户端的SYN请求后,回复一个SYN-ACK包。这个包表示服务器同意建立连接,并确认客户端的SYN,同时带上自己的初始序列号。 - 第三次握手(客户端发送ACK):
客户端收到服务器的SYN-ACK包后,发送一个ACK(确认)包,确认服务器的SYN号。此时,双方都同意连接建立,TCP连接正式建立。
四次挥手
1--------断开连接--------------------------2 fin=1,ACK=1
2--------确认断开连接---------------------1
2--------若有数据传完正式断开连接-----1
1--------确认断开连接---------------------2
四次挥手用于断开TCP连接,确保双方都能够正常终止数据传输。它需要四次报文交换:
- 第一次挥手(客户端发送FIN):
客户端发送FIN(结束标志)包,表示它已经完成数据传输,想要终止连接。 - 第二次挥手(服务器发送ACK):
服务器收到FIN后,回复一个ACK包,确认客户端的FIN,但服务器此时可能还有数据要发送,因此连接暂时不会关闭。 - 第三次挥手(服务器发送FIN):
当服务器也完成数据传输后,发送一个FIN包,表示它也准备好关闭连接。 - 第四次挥手(客户端发送ACK):
客户端收到服务器的FIN后,发送一个ACK包,确认服务器的FIN。此时,连接完全关闭。
- 三次握手是为了确保客户端和服务器都能正常建立连接。
- 四次挥手则是为了保证双方能够妥善地关闭连接,避免数据丢失
网络通信
由于数据在二层封装时无法得知目标IP地址的MAC地址,导致二层的封装无法进行,所以产生了ARP( Address Resolution Protocol )
ARP缓存表是用来存放IP地址和MAC地址的映射关系。
ttl : TTL(Time to Live)是网络通信中用于限制数据包生存时间的一个字段。它的主要作用是防止数据包在网络中无限循环。
arp通告: ARP通告(ARP Announcement)是网络中使用ARP协议时的一种特殊的ARP请求,通常用来更新或确认网络中设备的IP地址和MAC地址的对应关系。
路由:目标地址 (主机路由,网络路由) 下一跳(网关) 最终实现
0.0.0.0/0.0.0.0:默认路由
A,B同一网络
A,B同一网络中通信,本地通信广播,获取mac地址 ARP广播协议
- A发起通信请求:假设A想要与B通信,首先A会构建数据包,包含源IP地址(A的IP地址)、目标IP地址(B的IP地址)以及其他协议层信息。
- 数据包封装与发送:数据包在发送之前会被封装,加入二层的MAC地址信息。A设备的网卡查找目标B的MAC地址(通常通过ARP协议查找B的MAC地址)。一旦获取B的MAC地址,A的网卡会将数据包发送到网络。
- 交换机转发数据:假如A和B在同一个局域网中,数据包会通过网络中的交换机(如果有)进行转发。交换机会根据目标MAC地址查询其MAC地址表,找到B所在的端口,并将数据包转发到对应的端口。
- B接收数据包:当数据包到达B时,B的网卡会检查目标MAC地址是否匹配自己的MAC地址。如果匹配,B的网卡会将数据包发送给操作系统。操作系统将解封装报文,解析并传递到上层的应用程序。
A,C不同网络通信,封装mac地址
- A发起通信请求:设备A想与设备C通信,首先A会构建一个包含源IP地址(A的IP地址)和目标IP地址(C的IP地址)的数据包。
- 数据包封装:数据包在发出前会封装成以太网帧,其中包含源MAC地址(A的MAC)和网关的MAC地址(而不是C的MAC,因为C不在同一个网络)。
- 数据包到达默认网关:数据包经过A所在的局域网,并通过交换机或其他网络设备,最终到达A的默认网关(通常是路由器)。
- 路由器转发:路由器会根据数据包中的目标IP地址(C的IP地址)查找路由表,确定数据包的下一跳(可能是另一个路由器或C所在的子网)。此时,数据包的源MAC地址更新为路由器的MAC地址,目标MAC地址更新为下一跳设备的MAC地址。
- 数据包到达C所在网络:数据包通过网络传输后,最终到达C所在的子网。在这里,数据包会被进一步转发,最终到达C设备。
- C接收数据包:设备C的网卡检查目标MAC地址是否匹配自己。如果匹配,C设备会接收并处理该数据包。
访问网站的全过程
1.DNS解析:将域名转化为地址,浏览器会查询本地缓存,找不到就向配置的DNS服务器发送查询请求,DNS会返回对应的IP地址
2.建立TCP连接,浏览器使用获得的IP地址和端口与百度服务器建立连接,三次握手
3.发送HTTP请求,TCP建立后,浏览器向服务器发送一个HTTP请求报文
4.服务器处理请求,百度的服务器收到请求后,会处理请求,查找相应的资源,处理完毕后,服务器会生成一个HTTP响应报文
5.发送HTTP响应,服务器将响应报文送回给客户端,响应报文中包含状态行,响应头,空行和响应体等
6.浏览器渲染页面:浏览器接收到HTTP响应后,解析HTML内容,下载并处理CSS、JavaScript和图片等资源。浏览器将页面内容呈现给用户。
7.断开连接,如果使用的是HTTP/1.0,连接在响应发送完毕后会立即关闭。如果使用的是HTTP/1.1,连接可以保持打开(Keep-Alive),以便复用同一连接发送更多请求。关闭连接需要进行四次挥手(Four-way Handshake)
linux主机接入到网络中:
本地通信:ip/netmask跨网络通信:路由(网关)基于主机名通信:DNS服务器地址(主DNS服务器地址。备用DNS服务器地址,第三DNS服务器地址)
网络接口命名方式
以太网:ethX
ppp网络:pppXo<insdex>:集成设备的设备索引号
s<slot>:扩展槽的索引号
x<MAC>:基于mac地址的命名
p<bus><slot>:基于总线及槽的拓扑结构进行命名
配置方式
静态指定:命令或者修改配置文件ifcfg:ifconfig:配置IP,NETMASKroute:路由netstat:状态及统计数据查看iproute2:ip add:地址和掩码 ip link:管理网络接口 IP route:路由ss:状态及统计数据查看centos7引入了nm(Network Manager)命令:nmcli:命令行工具nmutl:text window工具依赖:DNS服务器指定需要修改/etc/resolv.conf文件。配置文件:centos:/etc/sysconfig/network-scripts/ifcfg-网卡nameubuntu:/etc/netplan/01-netcfg.yaml
动态分配:本地网络中有DHCP服务,DHCP动态分配ip地址
相关文章:

计算机网络基础进阶
三次握手四次挥手 三次握手 1------建立连接----------------------2 ACK1,seq0 2------传输数据,建立连接---------1 1------传输数据,建立连接---------2 三次握手用于建立TCP连接,确保通信双方都准备好进行数据传输。整个…...
什么是“钻石继承问题”
钻石继承问题(Diamond Inheritance Problem) 主要是指在多重继承中,由于继承关系的复杂性,子类可能通过多个路径继承到相同的基类,从而导致成员的多份副本或者方法调用的二义性。 C 通过 虚拟继承 来解决这个问题&…...

iOS 回到主线程刷新UI
在iOS 里面,项目打开就会运行一个主线程,所有的UI都在主线程里进行.其他网络请求或者耗时操作理论上也可以在主线程运行,但是如果太耗时,那么就会影响主线程其他UI.所以需要开字线程来进行耗时操作,子线程进行完耗时操作之后,如果项目需求有需要刷新UI,或者改变UI,一定得回到主…...
Spring Data 技术详解与最佳实践
引言 Spring Data 是 Spring 框架的一个模块,旨在简化数据访问层的开发。它提供了一种通用的方法来访问各种数据存储,包括关系型数据库、NoSQL 数据库、搜索引擎等。Spring Data 不仅简化了数据访问代码的编写,还提供了一系列强大的特性&…...
ubuntu下安装图片编辑工具shutter
ubuntu自带的截屏工具能够截图指定区域的图片,但是通常情况下,我们还需要对图片做一些编辑例如,下划线,方框标识,添加文本描述等,这时就需要强大的shutter软件了。 有人说直接在终端直接执行命令安装即可&…...

代码随想录算法训练营Day38 | 62. 不同路径、63. 不同路径 II
目录 62. 不同路径 63. 不同路径 II 62. 不同路径 题目 62. 不同路径 - 力扣(LeetCode) 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到…...

TrickMo 安卓银行木马新变种利用虚假锁屏窃取密码
近期,研究人员在野外发现了 TrickMo Android 银行木马的 40 个新变种,它们与 16 个下载器和 22 个不同的命令和控制(C2)基础设施相关联,具有旨在窃取 Android 密码的新功能。 Zimperium 和 Cleafy 均报道了此消息。 …...

Java | Leetcode Java题解之第493题翻转对
题目: 题解: class Solution {public int reversePairs(int[] nums) {Set<Long> allNumbers new TreeSet<Long>();for (int x : nums) {allNumbers.add((long) x);allNumbers.add((long) x * 2);}// 利用哈希表进行离散化Map<Long, Int…...
uniapp scroll-view翻转90度后,无法滚动问题,并设置滚动条到最底部(手写横屏样式)
uniapp scroll-view翻转90度后,无法滚动问题,并设置滚动条到最底部 <template><view class"main"><view style"height: 200px;"></view><view class"btn-main"><view class"send-…...
腾讯PAG 动画库Android版本的一个问题与排查记录
1 背景与环境 Android project中有加载动画的需求,设计师推荐使用腾讯的pag动画。项目中使用到的pag android库的版本是:com.tencent.tav:libpag:4.3.50。 2 故事经过 项目中pag的动画资源是有固定尺寸的,由于资源中的内容过于偏左&#x…...

计算机的算术运算之浮点数
3.5 浮点运算 科学计数法:小数点左边只有一位数字的表示数的方法。 规格化:没有前导0的浮点表示法。 二进制小数格式: 1.xxxxxxxxx X 2^yyyyy 浮点:二进制小数点不固定的数的计算机表示。 3.5.1 浮点表示 尾数:…...
Sqlite3 操作笔记
一、 数据格式 支持数据格式 一般数据采用的固定的静态数据类型,而SQLite采用的是动态数据类型,会根据存入值自动判断。SQLite具有以下五种数据类型: 1.NULL:空值。 2.INTEGER:带符号的整型,具体取决有存…...
mysqlRouter读写分离
数据库优化项目 使用中间件ProxySQL实现读写分离降低服务器压力,查看慢查询日志,反馈慢查询优化查询速度,清除无用数据,添加zabbix对mysql的监控。 ProxySql读写分离: 环境:mysql集群134、133 Mysql toute…...
【修订中】ffmpeg 知识点
一、两种安装方式 static FFmpeg binaries for macOS 64-bit Intel brew install ffmpeg 时间有点长 需要挂上代理 二、ffmpeg 使用这个工具去除水印以后原来水印的那个点就模糊了如何解决这个问题呢 使用 FFmpeg 的delogo过滤器去除水印时,通常会导致水印所…...

Rust初踩坑
一、下载 到官网https://www.rust-lang.org/zh-CN/tools/install下载你需要的版本 二、安装 执行rustup-init 文件,选择1 按提示直到安装完成 可以通过以下命令测试: rustc -V # 注意的大写的 V cargo -V # 注意的大写的 V三、在VScode中…...
element-ui 的el-calendar日历组件样式修改
<div style"width:100%;height:calc(100% - 35px);margin-top: 5px;"><el-calendar v-model"calendar" style"height: 100%;"></el-calendar></div> css部分 <style>/* 去除底色 */ /deep/ .el-calendar {backg…...
LinuxDebian系统安装nginx
1、安装了必要的开发工具和库文件 sudo apt update sudo apt install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev2、下载Nginx源码 cd /home/kylin wget http://nginx.org/download/nginx-1.20.1.tar.gz tar -zxvf nginx-1.26.2.tar.gz cd nginx-1…...
Redis 数据类型Streams
目录 1 基本特性 2 主要操作命令 2.1 XADD key ID field value [field value ...] 2.2 XREAD [COUNT count] [BLOCK milliseconds] STREAMS key [key ...] ID [ID ...] 2.3 XRANGE key start end [COUNT count] 2.4 XREVRANGE key end start [COUNT count] 2.5 XGROUP …...
基智科技CEO张文战:探索火山引擎数据飞轮模式下的大模型应用新机会
9月下旬,火山引擎数据飞轮研讨会在北京举办,北京基智科技有限公司(以下简称“基智科技”)CEO张文战作为积极探索大模型应用领域的企业代表,围绕“数据飞轮如何转进企业业务流”展开主题分享,并介绍基智科技…...

【AUTOSAR标准文档】AotuSar结构横向分层详解(RTE、BSW)
Top view The AUTOSAR Architecture distinguishes on the highest abstraction level between three software layers: Application, Runtime Environment and Basic Software which run on a Microcontroller. 译文:AUTOSAR架构在最高抽象层次上将软件分为三层&…...

网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...

【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...

【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...