重头开始嵌入式第三十天(Linux系统编程 ip头)

news2024/11/14 15:16:38

目录

1.常用网络测试工具

1、telnet  远程登录工具,默认都是系统安装。

2、netstat  测试查看网络端口使用情况

3、ping 命令  测试网路的联通状况

4、arp 地址解析命令

5.1 wireshark  ==>可视化界面

5.2 tcpdump  ==》命令行 ===>www.tcpdump.com

2.ip头

3.TCP头

4.UDP头

5.HTTP协议

6.setsockopt函数

7.网络爬虫


1.常用网络测试工具


大概介绍 :telnet  netstat  ping  arp   wireshark  tcpdump
ssh2。

安装命令: 
secure crt 
sudo ufw disable
sudo apt-get install openssh-server openssh-client 
sudo apt-get install wireshark


1、telnet  远程登录工具,默认都是系统安装。


使用格式: telnet ip地址  端口
   eg: telnet 192.168.1.1  8888
注意:如果没有写端口,则默认登录23 号端口。


2、netstat  测试查看网络端口使用情况


netstat -anp 
netstat -n  ===>列出当前所有网络端口使用情况
netstat -n -t  ===>列出所有TCP通信的端口信息
netstat -n -u  ===>列出所有UDP通信的端口信息

netstat -n -i   ===>列出默认接口上的通信信息
netstat -lnp |grep 8888  ===>查看指定端口上的通信详情


3、ping 命令  测试网路的联通状况


ping ip地址
ping 域名


4、arp 地址解析命令


arp -an  ===>列出当前主机的地址ARP表
arp -d  ip地址


5、抓包工具  


5.1 wireshark  ==>可视化界面

选择指定IP,端口抓包:tcp.port == 50000 && tcp.ip  == 192.168.0.183
tcpdump 
过滤规则:
1、根据ip地址过滤:ip.src == x.x.x.x
   ip.dst == x.x.x.x
2、根据端口过滤:tcp.srcport == xx;
 tcp.dstport == xx;
 udp.srcport == xx;
 udp.dstport == xx;
3、根据协议类型过滤:
tcp   udp  icmp .....
4、任意组合以上条件抓包:
如果与的关系:  and
ip.src == 192.168.1.100 and tcp.dstport == 9999
如果或关系 :   or
ip.src == 192.168.1.100 or ip.dst == 192.168.1.102

tcp host 192.168.1.100
sudo tcpdump -n -i eth0 -xx src or dst www.taobao.com -AXX -vv|less 


5.2 tcpdump  ==》命令行 ===>www.tcpdump.com


1、tcpdump -n ===>在默认的网卡上开始抓包。
2、根据ip过滤: tcpdump -n  src  x.x.x.x  
    tcpdump -n  dst x.x.x.x
  抓192.168.0.130上面发出和接受到的数据包
  sudo tcpdump -n -x src or dst  192.168.0.130 
3、查看包中的内容:
tcpdump -n -x src x.x.x.x
tcpdump -n -x dst x.x.x.x

tcpdump -n -x src x.x.x.x  >xxx.log

4、根据端口过滤:
tcpdump -n src port xx
tcpdump -n dst port xx
tcpdump -n -p tcp port xx
tcpdump -n udp port xx
tcpdump -n port xx
5、根据协议过滤:
    tcpdump -n -p icmp/tcp/udp

6、根据指定接口过滤:
tcpdump -n -i eth0
tcpdump -n -i lo

7、根据以上各种条件组合抓包:
与关系:  and
或关系:  or


2.ip头


(1)版本 占4位,指IP协议的版本。通信双方使用的IP协议版本必须一致。目前广泛使用的IP协议版本号为4(即IPv4)。关于IPv6,目前还处于草案阶段。 

(2)首部长度 占4位,可表示的最大十进制数值是15。请注意,这个字段所表示数的单位是32位字长(1个32位字长是4字节),因此,当IP的首部长度为1111时(即十进制的15),首部长度就达到60字节。当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。因此数据部分永远在4字节的整数倍开始,这样在实现IP协议时较为方便。首部长度限制为60字节的缺点是有时可能不够用。但这样做是希望用户尽量减少开销。最常用的首部长度就是20字节(即首部长度为0101),这时不使用任何选项。 

(3)区分服务 占8位,用来获得更好的服务。这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过。1998年IETF把这个字段改名为区分服务DS(Differentiated Services)。只有在使用区分服务时,这个字段才起作用。 

(4)总长度 总长度指首部和数据之和的长度,单位为字节。总长度字段为16位,因此数据报的最大长度为216-1=65535字节。 
在IP层下面的每一种数据链路层都有自己的帧格式,其中包括帧格式中的数据字段的最大长度,这称为最大传送单元MTU(Maximum Transfer Unit)。当一个数据报封装成链路层的帧时,此数据报的总长度(即首部加上数据部分)一定不能超过下面的数据链路层的MTU值。 

(5)标识(identification) 占16位。IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。但这个“标识”并不是序号,因为IP是无连接服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。 

(6)标志(flag) 占3位,但目前只有2位有意义。 
● 标志字段中的最低位记为MF(More Fragment)。MF=1即表示后面“还有分片”的数据报。MF=0表示这已是若干数据报片中的最后一个 
● 标志字段中间的一位记为DF(Don’t Fragment),意思是“不能分片”。只有当DF=0时才允许分片。 

(7)片偏移 占13位。片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。也就是说,相对用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位。这就是说,每个分片的长度一定是8字节(64位)的整数倍。 

(8)生存时间 占8位,生存时间字段常用的的英文缩写是TTL(Time To Live),表明是数据报在网络中的寿命。由发出数据报的源点设置这个字段。其目的是防止无法交付的数据报无限制地在因特网中兜圈子,因而白白消耗网络资源。最初的设计是以秒作为TTL的单位。每经过一个路由器时,就把TTL减去数据报在路由器消耗掉的一段时间。若数据报在路由器消耗的时间小于1秒,就把TTL值减1。当TTL值为0时,就丢弃这个数据报。 

(9)协议 占8位,协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理过程。 

(10)首部检验和 占16位。这个字段只检验数据报的首部,但不包括数据部分。这是因为数据报每经过一个路由器,路由器都要重新计算一下首部检验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)。不检验数据部分可减少计算的工作量。 

(11)源IP地址 占32位。 

(12)目的IP地址 占32位。

98f85001b4ce4cc0ad8d6adf7bdfe4df.png

3.TCP头

TCP(Transmission Control Protocol,传输控制协议)头是 TCP 报文段的首部。
 
一、结构组成
 
1. 源端口和目的端口:各占 16 位,用于标识发送方和接收方的应用程序。
2. 序号:占 32 位,指出本报文段所发送数据的第一个字节的序号。
3. 确认号:占 32 位,期望收到对方下一个报文段的第一个数据字节的序号。
4. 数据偏移:占 4 位,指出 TCP 报文段的数据起始处距离 TCP 报文段起始处有多远。
5. 保留:占 6 位,保留为今后使用,目前应置为 0。
6. 标志位:
- URG:紧急指针有效标志。
- ACK:确认序号有效标志。
- PSH:接收方应该尽快将这个报文段交给应用层。
- RST:重置连接标志。
- SYN:同步序号,用于建立连接。
- FIN:发送方完成数据发送标志。
7. 窗口:占 16 位,告诉对方自己的接收窗口大小,用于流量控制。
8. 校验和:占 16 位,用于检验 TCP 报文段在传输过程中是否出现错误。
9. 紧急指针:占 16 位,指出本报文段中紧急数据的最后一个字节的序号。
 
二、作用
 
1. 建立和终止连接:通过 SYN、ACK、FIN 等标志位实现连接的建立和关闭。
2. 可靠传输:利用序号和确认号确保数据的按序到达和不丢失。
3. 流量控制:通过窗口字段控制发送方的数据发送速度,避免接收方缓冲区溢出。
4. 错误检测:校验和用于检测报文段在传输过程中的错误。
090071a78068444cb6e11c881da7f291.png

4.UDP头

UDP(User Datagram Protocol,用户数据报协议)头是 UDP 数据报的首部。

一、结构组成

1. 源端口:占 16 位,标识发送方的应用程序。

2. 目的端口:占 16 位,标识接收方的应用程序。

3. 长度:占 16 位,指出 UDP 数据报的长度,包括首部和数据部分。

4. 校验和:占 16 位,用于检测 UDP 数据报在传输过程中是否出现错误。如果校验和计算结果为 0,则表明不进行校验。

二、作用

1. 简单快速传输:UDP 是一种无连接的协议,不需要建立连接的过程,因此传输速度快,适用于对实时性要求较高的应用,如视频流、音频流等。

2. 低开销:UDP 头部相对简单,比 TCP 头部的开销小。

3. 不可靠传输:UDP 不提供可靠传输机制,不保证数据的按序到达、不重复和不丢失。但在一些特定场景下,如实时通信,对少量数据丢失的容忍度较高,可以通过上层应用进行错误处理。

e28187eb208a465da3a6859614cb8638.png

5.HTTP协议

HTTP(HyperText Transfer Protocol,超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议。

一、主要特点

1. 简单快速:客户端向服务器请求服务时,只需传送请求方法和路径。

2. 灵活:HTTP 允许传输任意类型的数据对象,正在传输的类型由 Content-Type 加以标记。

3. 无连接:每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接,以节省传输时间。(HTTP/1.1 版本后默认采用持续连接,即只要客户端服务端双方都没有提出断开连接,则保持连接状态,以提升传输效率。)

4. 无状态:HTTP 协议是无状态协议,对事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。

二、工作流程

1. 客户端与服务器建立连接。

2. 客户端向服务器发送请求,请求包括请求方法(如 GET、POST 等)、请求 URI 和协议版本等信息。

3. 服务器接收请求并进行处理,然后向客户端返回响应,响应包括协议版本、状态码、响应头和响应体等内容。

4. 客户端接收响应并进行处理,根据响应内容进行相应的操作,如显示网页、下载文件等。

三、常用请求方法

1. GET:用于请求指定的资源,通常用于获取数据。

2. POST:用于向指定资源提交数据,通常用于提交表单数据或上传文件。

3. PUT:用于向指定资源上传其最新内容。

4. DELETE:用于删除指定的资源。

四、状态码

1. 1xx:指示信息,表示请求已接收,继续处理。

2. 2xx:成功,表示请求已被成功接收、理解、接受。例如 200 OK 表示请求成功。

3. 3xx:重定向,表示要完成请求,需要进一步操作。例如 301 Moved Permanently 表示资源已被永久移动到新位置。

4. 4xx:客户端错误,表示客户端请求有错误。例如 404 Not Found 表示请求的资源不存在。

5. 5xx:服务器错误,表示服务器在处理请求时发生错误。例如 500 Internal Server Error 表示服务器内部错误。

9cb3c640fecb481b94827edfa8a5ef45.png

6.setsockopt函数

setsockopt 是一个在网络编程中常用的函数,用于设置套接字选项。

一、函数原型

在 C 和 C++中,其函数原型通常如下:

int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen);

-  sockfd :套接字描述符,指定要操作的套接字。

-  level :选项级别,通常是 SOL_SOCKET(套接字级别选项)或 IPPROTO_TCP(TCP 协议级别选项)等。

-  optname :要设置的具体选项名称。

-  optval :指向包含选项值的缓冲区。

-  optlen :选项值缓冲区的长度。

二、主要用途

1. 设置套接字的各种属性和行为:

- 例如,设置套接字为可重用地址(SO_REUSEADDR),在服务器快速重启时很有用,可以避免“Address already in use”错误。

- 设置发送和接收缓冲区大小(SO_SNDBUF 和 SO_RCVBUF),以优化网络性能。

- 设置超时时间(如 SO_RCVTIMEO 和 SO_SNDTIMEO),防止在某些操作上无限等待。

2. 影响网络通信的特定方面:

- 开启或关闭广播选项(SO_BROADCAST),允许或禁止套接字发送广播数据。

- 设置 TCP_NODELAY 选项以禁用 Nagle 算法,减少小数据包的延迟,但可能会增加网络流量。

三、返回值

成功时返回 0,失败时返回 -1,并设置  errno  以指示错误类型。常见的错误包括无效的套接字描述符、不支持的选项级别或选项名称等。

7.网络爬虫

网络爬虫是一种自动获取网页内容的程序。

一、工作原理

1. 首先,指定一个或多个起始 URL。

2. 爬虫程序向这些 URL 发送请求,服务器响应后,爬虫接收网页内容。

3. 分析网页内容,提取出其中的链接。

4. 对新发现的链接重复上述过程,不断地遍历网页,以获取更多的信息。

二、主要用途

1. 搜索引擎构建:搜索引擎使用网络爬虫来收集互联网上的网页信息,建立索引,以便用户能够快速搜索到相关内容。

2. 数据采集:企业或研究者可以利用网络爬虫收集特定领域的数据,如商品价格、新闻文章、社交媒体信息等,进行数据分析和挖掘。

3. 网站监测:监测竞争对手的网站变化、行业动态等。

三、面临的挑战

1. 反爬机制:许多网站为了保护自己的内容和资源,会设置各种反爬措施,如验证码、IP 封锁、限制访问频率等。爬虫需要不断改进技术来应对这些反爬机制。

2. 法律和道德问题:在进行网络爬虫时,必须遵守法律法规和道德规范,不得侵犯他人的知识产权和隐私,也不能对网站造成过大的负担。

3. 数据质量:爬取到的数据可能存在不完整、不准确或格式不一致等问题,需要进行数据清洗和验证。

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

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

相关文章

【微信小程序】分包--独立分包

1. 什么是独立分包 独立分包本质上也是分包,只不过它比较特殊,可以独立于主包和其他分包而单独运行。 2. 独立分包和普通分包的区别 3. 独立分包的应用场景 4. 独立分包的配置方法 5. 引用原则

什么是PMP项目管理?PMP证书有什么用?

PMP(Project Management Professional)项目管理,简单来说,就是美国项目管理协会(PMI)颁发的一种项目管理资格认证。 它代表了项目管理领域的最高水平,是一种系统化的管理方法。PMP项目管理将项…

大模型有哪些评估指标?

1. 导入 你可能听说过A大模型比B大模型好,但你知道如何评估这些模型吗?在大模型领域,有许多指标可以帮助我们评估模型的性能。这些指标可以帮助我们了解模型的准确性、效率和可解释性。在本文中,我们将介绍一些常用的指标&#x…

卡尔曼滤波实现一阶马尔可夫形式的滤波|价格滤波|MATLAB代码|无需下载,复制后即可运行

一节马尔可夫 一阶马尔可夫噪声是一种具有马尔可夫性质的随机过程。在这种噪声中,当前时刻的状态只与前一时刻的状态有关,与更早的状态无关。 一阶马尔可夫噪声可以用一个状态转移矩阵表示,矩阵的每个元素表示从一个状态转移到另一个状态的概率。 滤波模型 状态量的迭代…

CleanClip for Mac v2.2.0 剪贴板历史管理软件正式激活版

CleanClip 是一款专为 Mac 用户设计的强大剪贴板历史管理工具。它能够自动保存您复制的内容,让您轻松访问和管理剪贴板历史记录,大大提高工作效率。 下载地址:CleanClip for Mac v2.2.0 剪贴板历史管理软件正式激活版 主要特点 自动保存剪贴板历史 CleanClip 会自…

作为HR如何做候选人的背景调查

如果HR想更进一步解决背景调查难题,可以先建立一套规范的调查流程,这样能够大大节约时间。在这套流程中要包括明确调查的内容,比如个人学历,工作经历,资质证书等等,只要是和岗位招聘相关的信息都需要全面覆…

SAP B1 三大基本表单标准功能介绍-物料主数据(中)

背景 在 SAP B1 中,科目表、业务伙伴主数据、物料主数据被称为三大基本表单,其中的标准功能是实施项目的基础。本系列文章将逐一介绍三大基本表单各个字段的含义、须填内容、功能等内容。 附上 SAP B1 10.0 的帮助文档:SAP Business One 10…

【软件测试专栏】软件测试 — BUG篇

博客主页:Duck Bro 博客主页系列专栏:软件测试专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ 软件测试 — BUG篇 关键词:bug、bug生命周期、bug级别…

解析C++内联函数与auto关键字

🌈个人主页:Yui_ 🌈Linux专栏:Linux 🌈C语言笔记专栏:C语言笔记 🌈数据结构专栏:数据结构 🌈C专栏:C 文章目录 1. 内联函数1.1 概念1.2 内联的特性1.3 内联与…

YOLOv8改进 | 模块缝合 | C2f融合PKINet提升遥感图像的检测性能【完整代码】

秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 专栏目录 :《YOLOv8改进有效…

MySQL系列—7.内存结构

目录 1.Buffer Pool 2.Redo Log Buffer 3.change buffer InnoDB内存结构主要分为4个部分: Buffer Pool Change Pool #写缓存 Log Buffer #日志缓存 Adaptive Hash Index #自适应hash索引 1.Buffer Pool 也是B树结构 1.当读一条数据时,会先检查是…

去中心化身份验证:Web3时代数字身份的革新

随着Web3时代的到来,去中心化技术正在重新定义数字身份验证的方式。传统的身份验证方法常常依赖于中心化的数据库和中介机构,这些系统不仅易受攻击,还可能侵犯用户的隐私。而去中心化身份验证(DID, Decentralized Identifier&…

SDN与SD-WAN:共同点和区别分析

软件定义网络(SDN)是一种革新性的网络架构,而软件定义广域网(SD-WAN)则是基于SDN技术发展而来的网络解决方案。两者有许多共同点,但它们之间也存在显著差异。本文将详细分析SDN与SD-WAN的共同和区别。 SDN的…

cv2.error: OpenCV(4.10.0) :-1: error: (-5:Bad argument) in function ‘resize‘

cv2.error: OpenCV(4.10.0):-1: error: (-5:Bad argument)in function resize 安装好Echomimic之后,上传图片和音频进行生成视频的时候报错了,在服务器端查看报错信息如下: 解决方法&#xff1a…

uniapp / uniapp x UI 组件库推荐大全

在 uniapp 开发中,我们大多数都会使用到第三方UI 组件库,提起 uniapp 的UI组件库,我们最常使用的应该就是uview了吧,但是随着日益增长的需求,uview 在某些情况下已经不在满足于我们的一些开发需求,尽管它目…

在线压缩pdf,无需安装就可轻易压缩pdf文件

PDF文件因其跨平台兼容性和良好的阅读体验,成为工作学习中不可或缺的一部分。然而,随着文件体积的增大,如何有效压缩PDF文件成为了许多人的迫切需求。很多小伙伴想要通过在线的方式来压缩PDF文件,下面给大家分享一种在线压缩方法&…

前端布局利器:Flex布局

曾经的我们使用传统布局方式,我们深刻的体会着1px除不尽,三等分,居中,塌陷等等让我们升血压的问题。传统的布局方式:布局繁琐,需要使用大量的HTML和CSS代码来实现简单的布局。灵活性差,难以实现…

腾讯视频:让自媒体创作者“怀才有遇”

在这个信息快速流通的自媒体时代,时间变得越来越碎片化,短剧、短番与短节目则凭借着短小精悍、内容紧凑的特点,完美契合了碎片化的时间消费习惯。这些短的内容被观众喜爱的同时,也让许多自媒体创作者找到了致富之路。 相对于大IP…

Redis Desktop Manager 0.8.8.384 安装与使用详解

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storm…

【软件安装】PyCharm安装教程(MAC)

一、准备阶段 准备软件安装包和jetbrains crack 包 二、软件安装 (1)运行pycharm安装包 等待程序运行 (2)运行jetbrains crack 安装包 运行补丁安装 (3)打开pycharm软件 等待系统验证后,打开…