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

嵌入式学习之系统编程(十一)网络编程之协议头,测试命令及工具

目录

一、在网络中每一次发送和接收的过程(TCP举例)

二、协议头

(一)TCP与UDP的首部格式(都是传输层)

1、TCP报文段首部格式

TCP首部关键字段的意义

2、UDP的首部格式

UDP首部各字段意义

(二)IP数据报

 1、组成

2、首部各字段的意义

3、扩展

(三)MAC帧

1、MAC帧格式

2、首部各字段的意义

三、常用网络测试命令及工具

1、telnet  

注意:如果没有写端口,则默认登录23 号端口。2、netstat  

3、ping 命令 

4、arp 

5、抓包工具 

(1)wireshark 

(2)tcpdump  

一、在网络中每一次发送和接收的过程(TCP举例)

中间的为路由器

1、数据封包:(操作系统底层做的)

一帧数据(一个数据分包)

2、数据拆包:(每一层都有校验)

3、MTU(最大传输单元)

现用网络类型:以太网

由于以太网限制,一帧数据为1500个字节(1.5k);数据太大就分片

二、协议头

协议头:

(一)TCP与UDP的首部格式(都是传输层)

1、TCP报文段首部格式

注:端口号在TCP头

TCP首部关键字段的意义

控制位

(1)紧急 URG(URGent):当URG=1时,表明紧急指针字段有效。

(2)确认ACK(ACKnowlegment):仅当ACK=1时确认号字段才有效。当ACK=0

时,确认号无效。TCP规定,在连接建立后所有传送的报文段都必须把ACK置1。

(3)推送PSH(PuSH):当两个应用进程进行交互式的通信时,有时在一端的应用进程希望在键入一个命令后立即就能够收到对方的响应。在这种情况下,TCP就可以使用推送(push)操作。这时,发送方TCP把PSH置1,并立即创建一个报文段发送出去。接收方TCP收到PSH=1的报文段,就尽快地(即“推送”向前)交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。

(4)复位RST(ReSeT):当RST=1时,表明TCP连接中出现严重差错(如由于主机

崩溃或其他原因),必须释放连接,然后再重新建立运输连接。

(5)同步SYN(SYNchronization):在连接建立时用来同步序号(发起连接)。当SYN=1而ACK=0时,表明这是一个连接请求报文段。对方若同意建立连接,则应在响应的报文段中使SYN=1和ACK=1。因此,SYN置为1就表示这是一个连接请求或连接接受报文。

(6)终止 FIN (FINis,意思是“完”、“终”) 用来释放一个连接。当FIN=1时,表明此报文段的发送方的数据已发送完毕,并要求释放运输连接。

注:F与S不会同时出现

窗口:占2字节。窗口值是[0,2^16-1]之间的整数。窗口指的是发送本报文段的一方的接收窗口(而不是自己的发送窗口)。窗口值告诉对方:从本报文段首部中的确认号算起,接收方目前允许对方发送的数据量。之所以要有这个限制,是因为接收方的数据缓存空间是有限的。总之,窗口值作为接收方让发送方设置其发送窗口的依据

窗口字段明确指出了现在允许对方发送的数据量。窗口值是经常在动态变化着。

2、UDP的首部格式

UDP首部各字段意义

(二)IP数据报

 1、组成

        找主机;一个IP数据报由首部和数据两部分组成。首部的前一部分是固定长度,共 20字节(5行每行4个字节),是所有IP数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。

2、首部各字段的意义

(1)版本 占4位,指IP协议的版本。通信双方使用的IP协议版本必须一致。目前广泛使用的IP协议版本号为4(即IPv4)。


(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)总长度 (TCP+正文的长度);总长度指首部和数据之和的长度,单位为字节。总长度字段为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时才允许分片。 (默认DF=0)

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

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

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

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

(11)源IP地址 占32位。 

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

3、扩展

        互联网网络节点怎么工作:(一片找,最短路径或最佳路径(两条线路保存)选一条回)

网络节点直接或间接相连(网状结构)。

(三)MAC帧

1、MAC帧格式

硬件地址(标识在开头和结尾)

2、首部各字段的意义

(1)MAC地址6个字节,对方MAC地址,自己MAC地址,

(2)类型:什么类型的报文,

(3)IP数据报:IP+TCP+正文;

(4)FCS:校验码

详细注解:

以太网 V2 的 MAC 帧比较为简单,由五个字段组成。

(1)前两个字段分别为6字节长的目的地址和源地址字段。

(2)第三个字段是2字节的类型字段,用来标志上一层使用的是什么协议,以便把收到的MAC帧的数据上交给上一层的这个协议。例如,当类型字段的值是0x0800时,就表示上层使用的是IP数据报。若类型字段的值为 0x8137,则表示该帧是由Nove1l IPX 发过来的。

(3)第四个字段是数据字段,其长度在46到1500字节之间(46字节是这样得出的:最小长度64字节减去18字节的首部和尾部就得出数据字段的最小长度)。

(4)最后一个字段是4字节的帧检验序列FCS(使用CRC检验)。当传输媒体的误码率为1x10时,MAC 子层可使未检测到的差错小于1x10-14。

三、常用网络测试命令及工具

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、抓包工具 

(1)wireshark 

 ==>可视化界面

抓包步骤:

选择网络设备;

设置过滤条件;eg:tcp.port == 50000 && tcp.ip  == 192.168.0.183

开抓;

过滤规则:

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、任意组合以上条件抓包:
(1)如果与的关系:  and
        eg:ip.src == 192.168.1.100 and tcp.dstport == 9999
(2)如果或关系 :   or
        eg:ip.src == 192.168.1.100 or ip.dst == 192.168.1.102

(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

http://www.xdnf.cn/news/905221.html

相关文章:

  • 可视化图解算法49:滑动窗口的最大值
  • 大话软工笔记—需求工程概述
  • day45_Tensorborad使用介绍
  • 4G网络中频段的分配
  • 进行用户VMware官网注重中一直无法登录,该怎么处理
  • Java下载文件(特殊字符编码处理)
  • 基于React + FastAPI + LangChain + 通义千问的智能医疗问答系统
  • QT: `long long` 类型转换为 `QString` 2025.6.5
  • ruoyi-plus-could 负载均衡 通过 Gateway模块配置负载均衡
  • Curtain MonGuard:智能水印颜色适配,提升屏幕信息安全
  • LabVIEW实时系统数据监控与本地存储
  • C++ 基础特性深度解析
  • 化学小工具之OpenBabel
  • idea中 maven 本地仓库有jar包,但还是找不到,解决打包失败和无法引用的问题———————————————— 版权声明:本文为博
  • 第16节 Node.js 文件系统
  • MySQL性能调优:Mysql8高频面试题汇总
  • Elasticsearch集群手动分片分配指南:原理与实践
  • Python实现快速排序的三种经典写法及算法解析
  • 【知识扫盲】如何由inq,ouq和totaltime计算tokens/s
  • 栈的概念以及实现
  • SOC-ESP32S3部分:32-LVGL显示框架
  • ComfyUI 工作流
  • Numpy 之 reshape 教程
  • 【OpenGL学习】(五)自定义着色器类
  • Redis知识
  • 强化学习基础概念图文版笔记
  • 【QT常用技术讲解】多线程执行后台命令行的两种方式(后台运行和返回打印信息)
  • 【Linux】grep 命令详解及使用示例:搜索匹配指定模式的文本行
  • 【JJ斗地主-注册安全分析报告】
  • 20250606-C#知识:匿名函数、Lambda表达式与闭包