TCP/IP学习笔记
TCP\IP从实际应用的五层结构开始,自顶而下的去分析每一层。
TCP/IP五层架构概述
学术上面是TCP/IP四层架构,OSI/ISO是七层架构,实际中使用的是TCP/IP五层架构。数据链路层
ICMP数据包分析
Wireshark抓包分析ICMP协议_wireshark抓ping包分析数据报格式-CSDN博客
ping百度的ip地址。
请求报文
DDOS攻击
DDoS(分布式拒绝服务)攻击是一种恶意网络攻击,**旨在通过向目标服务器、服务或网络发起大量的流量请求,导致其无法正常工作**,从而使其无法为合法用户提供服务。与传统的DoS(拒绝服务)攻击不同,DDoS攻击是由多个受控设备(通常是被恶意软件感染的设备,形成一个“僵尸网络”)同时发起攻击,从而分散了攻击来源,使其更难被防范和追踪。Ping Flood 攻击:这是最简单的 DDoS 攻击之一。攻击者使用大量设备向目标服务器发送大量 ICMP 回显请求(类似于 ping
命令),目的是占用目标的网络带宽和 CPU 资源。
网络层
IP协议
IP习题
首部长度为20字节
前八位中后四位0100,表示4是ip首部的长度,这个最小值为5.所以需要丢弃这个分组。
4个二进制表示一个十六进制。生存时间必须是32+32个位也就是16个十六个十六进制。 生存时间8位两个十六进制。01表示这个分组的跳数是1。下一个两个十六进制就是协议类型。02表示的是IGMP协议。
片位移式100 *8=字节,前面长度位799。下一个从800开始。 首部20,总长度100. 这个分片有80字节。
第一个字节编号 800 最后一个879
wireshark抓取ip数据包进行分析。
4 表示ipv4
5 首部长度位5*4=20字节
00 是区分服务
0030 总长度 长度48
7a4f 表示标识字段
4000 标志和片位移 0100 0000 1标识不分片
7c 生存时间 124
06 上层TCP协议
635d 首部校验和
3b517295 源地址 59.81.114.149
3b 51 37 e4 目的地址 59.81.55.228
分析ip数据包,应该是必考的.
Wireshark分析IP数据报_用wireshark分析ip报文结构-CSDN博客
前面的MAC地址,MAC地址长度是48位。四位是一个十六禁止,所以六位是一个MAC地址。
第一个4 标识ipv4的协议。
6是首部的长度,首部长度位30字节。
00 标识区分服务。
校验和确认
IP地址
OSPF和RIP协议
求当前最短路径的算法。
https://blog.csdn.net/yunfengfengfeng/article/details/105555008?ops_request_misc=&request_id=&biz_id=102&utm_term=dijkstra%E7%AE%97%E6%B3%95%E8%AE%A1%E7%AE%97%E8%B7%AF%E7%94%B1%E8%A1%A8&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-2-105555008.142v100pc_search_result_base2&spm=1018.2226.3001.4187
ARP报文分析
https://blog.csdn.net/weixin_46027505/article/details/106440848
ARP(Address Resolution Protocal,地址解析协议)是将IP地址解析为以太网的MAC地址(或者称为物理地址)的协议。在局域网中,当主机或其他网络设备有数据要发送给另一个主机或设备时,它必须知道对方的网络层地址(即IP地址)。但是仅仅有IP地址还是不够的,因为IP数据报文必须封装成帧才能通过物理网络发送,因为发送站还必须有接收站的物理地址,所以需要一个从IP地址到物理地址的映射。ARP就是实现这个功能的协议。
arp的理解(考研考过)
arp 请求的时候是广播报文,响应式单播报文。
查看本地arp 缓存
arp -a
arp -d * 删除本地的缓存表 需要管理员的权限
ARP请求
arp响应报文
HardWare type 1表示当前的硬件类型式以太网
protoco type 表示上层协议类型 ipv4
hardware size MAC地址长度
Protocol size ip协议地址长度
opcode reply 操作类型 1 表示arp请求报文 2表示 arp应答报文
源MAC和源IP
目的MAC和目的IP地址
传输层
TCP协议
报文格式
三次握手
第一次握手 SYN=1 请求建立连接 seq=x 表示当前的序号是x第二次握手 SYN=1 ACK=1 ack=x+1 表示收到了前x个,下一个从x+1开始,seq表示当前是从y第三次握手 ACK=1表示有效 ack=y+1 seq=x+1
是否可以进行两次握手。
防止已经失效的连接请求,一个报文在网络中逗留了很长的时候,在到达服务器端,这个时候服务器端打开状态,而客户端已经关闭了状态,浪费了资源。
选择C ACK=上一次的seq+1.
四次挥手
第一次挥手 FIN=1 ACK=1 seq=u ack=v请求关闭连接
第二次挥手 服务器发送 ACK 包 ACK=1 seq=v ack=u+1
第三次挥手 服务器发送FIN=1 请求关闭连接
第四次挥手 发送ACK报文
四次挥手详细过程如下:
- 客户端发送关闭连接的报文段,FIN 标志位1,请求关闭连接,并停止发送数据。序号字段 seq = x (等于之前发送的所有数据的最后一个字节的序号加一),然后客户端会进入 FIN-WAIT-1 状态,等待来自服务器的确认报文。
- 服务器收到 FIN 报文后,发回确认报文,ACK = 1, ack = x + 1,并带上自己的序号 seq = y,然后服务器就进入 CLOSE-WAIT 状态。服务器还会通知上层的应用程序对方已经释放连接,此时 TCP 处于半关闭状态,也就是说客户端已经没有数据要发送了,但是服务器还可以发送数据,客户端也还能够接收。
- 客户端收到服务器的 ACK 报文段后随即进入 FIN-WAIT-2 状态,此时还能收到来自服务器的数据,直到收到 FIN 报文段。
- 服务器发送完所有数据后,会向客户端发送 FIN 报文段,各字段值如图所示,随后服务器进入 LAST-ACK 状态,等待来自客户端的确认报文段。
- 客户端收到来自服务器的 FIN 报文段后,向服务器发送 ACK 报文,随后进入 TIME-WAIT 状态,等待 2MSL(2 * Maximum Segment Lifetime,两倍的报文段最大存活时间) ,这是任何报文段在被丢弃前能在网络中存在的最长时间,常用值有30秒、1分钟和2分钟。如无特殊情况,客户端会进入 CLOSED 状态。
- 服务器在接收到客户端的 ACK 报文后会随即进入 CLOSED 状态,由于没有等待时间,一般而言,服务器比客户端更早进入 CLOSED 状态。
两倍的MSI时间,保证TCP服务器端能收到第四次挥手的内容,如果第四次发送的内容咋在网络中丢失了,那么服务器端一直会发送重新响应报文。
16进制一个数字用四个二进制来表示。0532源端口 0017目的端口 都是16位。00000001 是序号 seq00000000 确认号 ack5 首部长度 5*4等于20字节报文类型 0000 0000 0010 SYN等于1。 07FF 窗口的大小0000 校验和0000紧急指针
wireshark分析TCP\IP三次握手和四次挥手的过程。
大脑里面需要有那一张的图
先 ping www.baidu.com
然后再 curl www.baidu.com 解释curl命令
https://blog.csdn.net/ngczx/article/details/143669372?spm=1001.2014.3001.5501
第一次握手
seq和ack都是0.
第二次握手
seq=0,ack=上一次的+1=1
第三次握手
seq等于1,客户端第二次和服务器进行交互了。 ACK等客户端序号+1=1
第一次挥手
seq=79 ack=2782 FIN=1 请求关闭连接。
第三次挥手
第四次挥手
https://blog.csdn.net/dfBeautifulLive/article/details/121889271
TCP的高级特性包括**重传机制、滑动窗口、流量控制、拥塞控制。**
重传机制
往返时间RTT测量是比较复杂度的。
计算RTO的值。
滑动窗口
滑动窗口是一种流量控制机制,用于管理发送方和接收方之间的数据传输。**它通过定义一个窗口大小,限制在任何时间点内发送方可以发送但未被确认的数据量,从而防止接收方被过多的数据淹没。 **流量控制
窗口的大小 **rwnd**。拥塞控制
完整的拥塞控制过程
考研题目
UDP协议
TCP和UDP协议的区别
特性 | TCP | UDP |
---|---|---|
全称 | 传输控制协议 | 用户数据包协议 |
面向连接 | 无连接 | |
传输具有可靠性 | 不可靠 | |
速度较慢,需要建立连接 | 速度较快 | |
使用场景 | 文件传输、网页浏览器 | 实时视频会议、DNS查询 |
wireshark抓取UDP报文分析
应用层的协议
Http协议
报文类型
请求报文请求方法 URL HTTP版本请求头请求体(post请求才有请求体)
响应报文
HTTP的版本 状态码 状态信息
HTTP/1.1 200 OK响应头
key:value响应体
wireshark分析HTTP报文
[wireshark抓包分析HTTP协议,HTTP协议执行流程,_浏览网页wireshark进行报文捕获-CSDN博客](https://blog.csdn.net/wangyuxiang946/article/details/132634902)报文符合三次握手和四次挥手的过程。
DNS协议
**域名: **** www.baidu.com。**就像 IP 地址必须转换成 MAC 地址才能访问主机一样,域名也必须要转换成 IP 地址,这个过程就是“域名解析”。
采用任播的技术,每次请求的时候都是找到最近的根域名服务器。
查询一般使用递归或者迭代查询
DNS本身是传输使用的是UDP,如果是DNS服务器之间传输数据可能会用TCP,所以DNS不一定是UDP。
NAT协议
```javascript 私有的IP地址。 10.0.0.0 ——— 10.255.255.255172.16.0.0——— 172.16.255.255
192.168.0.0———192.168.255.255
为了解决ip地址非常稀少的问题,提出了NAT协议,将私网的ip地址映射到公网上面去。实现了一个公司使用一个公网的ip地址。NAPT 加上了ip地址和端口号NAT对于外网屏蔽了内网主机地址,能够为内网主机提供一定的安全保护。<h3 id="OMfj9">DHCP协议</h3>
需要掌握**DHCP 客户使用的端口是68,DHCP服务器使用的端口是67。**DHCP在没有获取到ip地址的时候默认是**0.0.0.0**。只有通过四次交互之后才会真正分配ip地址。
相关文章:

TCP/IP学习笔记
TCP\IP从实际应用的五层结构开始,自顶而下的去分析每一层。 TCP/IP五层架构概述 学术上面是TCP/IP四层架构,OSI/ISO是七层架构,实际中使用的是TCP/IP五层架构。 数据链路层 ICMP数据包分析 Wireshark抓包分析ICMP协议_wireshark抓ping包分析…...

0000_vim自定义快捷键_alias
vim自定义快捷键_alias 如下: 1.直接打开vi ~/.bashrc 然后到最底部,添加alias快捷键 2.添加alias快捷键mgplat 以后只要发送mgplat就等于出发了那么长一条指令 3.保存退出即可 【注意】 操作完后,可能你用mgplat无法使用,可…...
Spring Boot项目中,实体类是否需要实现Serializable接口
在Spring Boot项目中,实体类是否需要实现Serializable接口并不是一个硬性规定,而是取决于具体的应用场景和需求。以下是对这一问题的更详细分析: 1. 序列化的基本概念 序列化是将对象的状态信息转换为可以存储或传输的形式的过程。反序列化则…...

打通工业通信壁垒实现Ethernetip转profinet网络互通
西门子S7-1500 PLC(profinet)与AB PLC 1769-L32E以太网通讯(EtherNet/IP)。今天与大家分享一篇Profinet转EtherNet/IP的通讯配置方案。本文主要介绍开疆智能的Profinet转EtherNet/IP网关KJ-PNG-208,连接西门子S7-1500 …...

数据结构_图的应用
最小生成树 Prim算法 int AMGraph::sum(string v) {int start, totalW, cnt, minW, u, vv, i, j;start LocateVex(v); // 获取起始顶点编号memset(visited, false, sizeof(visited)); // 初始化访问状态visited[start] true;totalW 0; // 最小生成树的总权重cnt 1; // 当前…...
C#中面试的常见问题002
1.wpf和Winfrom的区别 1. 技术基础 WPF:基于.NET Framework,使用XAML(可扩展应用程序标记语言)作为界面描述语言,支持矢量图形和高级布局。WinForms:基于.NET Framework,使用纯代码或拖放设计…...
快速理解微服务中Ribbon的概念
一.基本概念 1.在微服务架构中,Ribbon 是一个客户端负载均衡器,用于控制服务间的通信方式。 2.Ribbon 是一个开源的库,最早由 Netflix 开发,用于实现客户端负载均衡。 3.Ribbon 主要解决的是在微服务架构中,多个服务…...
K8S简介、使用教程
以下是关于 Kubernetes(通常缩写为 K8S)的简介和使用教程: 一、Kubernetes 简介 定义与作用 Kubernetes 是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它最初由谷歌开发,后捐赠给云原生计算基…...
极狐GitLab 17.6 正式发布几十项与 DevSecOps 相关的功能【四】
GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料: 极狐GitLab 官网极狐…...
麦肯锡报告 | 科技落地的真谛:超越技术本身的价值创造
科技创新正在以惊人的速度改变企业运作和客户体验,但实现其潜力的关键在于正确的策略、流程、文化和人才。麦肯锡强调了一个理念:Never just tech(不仅仅是技术)。这表明,成功的数字化转型不仅依赖于技术,还…...

彻底解决 macOS 下Matplotlib 中文显示乱码问题
彻底解决 macOS 下Matplotlib 中文显示乱码问题 在使用 Python 的 Matplotlib 库进行数据可视化时,中文字符的显示常常会出现乱码问题,尤其在 macOS 系统上。在网上找了一大堆方法,花了很久,发现不是要安装各种字体就是要改配置&…...

STM32-- keil 的option for target使用
keil版本号 1.device界面 如:stm32f103c8t6的工程,可以直接在device这里修改成stm32f103vct6,虽然引脚不一样,但是很多一样的地方,可以直接使用,有些不修改也可以下载程序。 2.target xtal的设置不起作用了…...
【MCU】微控制器的编程技术:ISP 与 IAP
在嵌入式领域中,将程序下载到内置 Flash 有两种技术 ISP (In-system programming) ISP 即在系统编程,是指一些可编程逻辑器件、微控制器、芯片组和其他嵌入式设备在安装到完整嵌入式系统后能够进行编程,而不需要在将芯片安装到系统中之前对…...

C#基础题总结
16.一张单据上有一个5位数的号码为6**42,其中百位数和千位数已模糊不清,但知道该数能被 57 和 67 除尽。设计一个算法,找出该单据所有可能的号码。 17.编程序求2~10000以内的完全数。一个数的因子(除了这个数本身&…...

Elasticsearch中的节点(比如共20个),其中的10个选了一个master,另外10个选了另一个master,怎么办?
大家好,我是锋哥。今天分享关于【Elasticsearch中的节点(比如共20个),其中的10个选了一个master,另外10个选了另一个master,怎么办?】面试题。希望对大家有帮助; Elasticsearch中的节…...

《参与中型项目,领略 Spring 魅力》
一、Spring 在中型项目中的魅力展现 Spring 框架以其强大的功能和灵活性,在中型项目中发挥着重要作用。它不仅简化了开发过程,还提高了代码的可维护性和可扩展性。 Spring 在中型项目中魅力十足,其优势主要体现在以下几个方面。 首先&#…...

计算机网络-GRE(通用路由封装协议)简介
昨天我们学习了VPN的基本概念,虚拟专用网络在当前企业总部与分支间广泛使用。常用的划分方法为基于协议层次有GRE VPN、IPSec VPN、L2TP VPN、PPTP VPN、SSL VPN等。其实我有考虑该怎么讲,因为在IP阶段好像虚拟专用网络讲得不深,在IE的阶段会…...
开源电话机器人产品的优点是什么?
开源电话机器人产品的优点是什么? 作者:开源呼叫中心系统 FreeIPCC,Github地址:https://github.com/lihaiya/freeipcc 开源电话机器人产品作为人工智能技术的一种应用,近年来在电销、客户服务等多个领域展现出了显著的…...

Spring Boot 集成 Knife4j 的 Swagger 文档
在开发微服务应用时,API 文档的生成和维护是非常重要的一环。Swagger 是一个非常流行的 API 文档工具,可以帮助我们自动生成 RESTful API 的文档,并提供了一个友好的界面供开发者测试 API。本文将介绍如何在 Spring Boot 项目中集成 Knife4j …...
极狐GitLab 17.6 正式发布几十项与 DevSecOps 相关的功能【一】
GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料: 极狐GitLab 官网极狐…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...

Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...

JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...