网络应用基础(二)

一,TCP报头解析

数据打包与解析直观图:
在这里插入图片描述

1.0报文与报文字段

1.0.1 报文

报文是计算机网络中交换信息的基本单位,是一种用于在网络中传递数据的结构化数据格式。在网络通信中,数据会被封装成报文的形式,通过网络传输到目标设备,然后在目标设备上进行解析和处理。

报文通常由报文头和报文体两部分组成。报文头包含了一些关于报文的控制信息,如报文类型、源地址、目标地址、协议版本等等。报文体则包含了具体的数据内容,如文本、图片、音频、视频等等。报文体的长度可以根据需要而变化,而报文头的长度通常是固定的。

不同的网络协议会定义不同的报文格式和规范,例如在 HTTP 协议中,报文通过请求报文和响应报文的形式进行交互,而在 TCP 协议中,报文则包括了一些用于保障数据可靠传输的控制信息,如序列号、确认号等等。

1.0.2报文字段

报文字段指的是计算机网络中通信协议中定义的报文格式中的各个部分或段落,每个字段都负责传递特定的信息。通常,一个报文由报文头报文体两部分组成,报文头包含各种控制信息,而报文体包含传输的数据。

在不同的协议中,报文字段的类型和含义可以有所不同,但通常包括以下几个方面:

(1)版本号/协议版本:指明报文所使用的协议的版本号。
(2)源地址/目标地址:指明报文发送方和接收方的 IP 地址。
(3)端口号:指明报文发送方和接收方的端口号,用于标识应用程序。
(4)序列号/确认号:用于实现 TCP 协议中的可靠传输,保证数据的顺序和完整性。
(5)标志位:用于表示 TCP 报文的状态,如 SYN、ACK、FIN 等。
(6)数据长度:指明报文体中传输的数据的长度。
(7)校验和:用于校验报文的完整性,防止数据在传输过程中被损坏或篡改。

1.1TCP报文头部详解

在这里插入图片描述在这里插入图片描述

    1. Source port:源端口号与Destination port目标端口号:
      在TCP(传输控制协议)协议中,源端口和目标端口字段用于标识通信会话的端点。
      (1)源端口是一个16位字段,用于标识本地主机上的发送应用程序或进程。它由发送主机选择,并由接收主机用于将响应数据包发送回正确的端口。
      (2)目标端口是一个16位字段,用于标识远程主机上的接收应用程序或进程。它由发送主机指定,并由接收主机用于将传入数据包定向到正确的应用程序或进程。
      (3)源端口和目标端口字段一起形成一个唯一的套接字(Socket),它标识两个主机之间特定的通信会话。源端口和目标端口的组合允许多个应用程序或进程在同一主机上与不同的端点建立多个通信会话。
    1. Sequence numberAcknowledge numbe
      在TCP协议中,序列号和确认号字段用于提供可靠的数据传输。发送方可以根据确认号确定接收方已经成功接收到哪些数据,从而可以重传丢失的数据。接收方可以使用序列号来将接收到的数据按正确的顺序进行组装,从而保证数据的完整性和正确性。
      (1)Sequence number:TCP链接中的每个报文都有序列号。序列号是一个32位的字段,用于标识TCP报文段中第一个字节的序列号。由于TCP报文段可能会分成多个IP数据包进行传输,序列号可以用于确定报文段中的字节在数据流中的顺序。
      (2)Acknowledge numbe:,用于对收到的报文的确认的确认号。确认号是一个32位的字段,用于指示期望接收的下一个字节的序列号。当接收方成功接收到一个TCP报文段时,它会发送一个确认报文段回到发送方,其中确认号字段被设置为已接收的最大序列号加1,表示下一个期望接收的字节的序列号。
    1. Window Size
      用于窗口TCP的流量控制,根据接收者能力进行调节,这个值表明当前接受端可接受的最大数据总数(字节),如果没有这个流量控制,传输方会尽最大能力传输数据,如果接收方一次不能接受完所有数据就会导致丢包,还需要重新传送。
    1. Checksum字段:
      在计算机网络中,Checksum(校验和)是一种用于检测数据传输中错误的技术。在TCP协议中,Checksum字段用于检测TCP报文段中的错误。
      (1)Checksum字段是一个16位的字段,用于存储计算出的校验和值。发送方在发送TCP报文段时,计算校验和并将其添加到Checksum字段中。接收方在接收到TCP报文段后,也会计算校验和并将其与Checksum字段中的值进行比较,以检测是否存在数据传输中的错误。
      (2)计算校验和的方法是将TCP报文段中的每个16位字(包括报文头和报文数据)两两相加,得到一个总和。如果总和大于16位,则将低16位与高16位相加,直到得到一个16位的结果。然后将这个16位结果取反,得到的值就是校验和。
      (3)通过Checksum字段,TCP协议可以检测到数据传输中的错误,例如数据丢失、损坏或被篡改等。如果接收方检测到Checksum值与计算得到的校验和值不同,则说明TCP报文段中存在错误,接收方会丢弃这个报文段并要求发送方重新发送数据。
      因此,Checksum字段是TCP协议实现可靠数据传输的重要组成部分之一。
    1. Urgent pointer
      Urgent pointer" 是 TCP (Transmission Control Protocol) 报文头中的一个字段,用于指示 TCP 报文中的数据应该比其他数据优先处理
      (1)当设置了 “urgent pointer” 字段时,TCP 报文接收方知道该报文包含的是需要立即处理的紧急数据。接收方可以使用 “urgent pointer” 字段中的值来确定 TCP 报文中紧急数据的最后一个字节的位置。
      (2)使用 “urgent pointer” 是可选的,通常只有在有特定需要指示某些数据应该优先处理的情况下才会使用它。使用 “urgent pointer” 的例子包括需要实时数据传输的应用程序,如在线游戏或视频流媒体

1.2滑动窗口

  • 概念:滑动窗口是TCP协议中用于流量控制和拥塞控制的机制之一,它允许发送方和接收方之间的通信进行自适应调整,以适应网络条件的变化。
  • 作用
    (1)在TCP协议中,发送方和接收方都维护一个滑动窗口用于控制数据的传输。发送方的滑动窗口表示可以发送的数据量,而接收方的滑动窗口表示可以接收的数据量。这个滑动窗口大小可以根据网络条件进行动态调整。
    (2)发送方根据接收方的滑动窗口大小来发送数据,确保不会发送超过接收方缓冲区大小的数据。接收方通过发送确认消息来告知发送方它的滑动窗口大小,从而通知发送方可以发送多少数据。
    (3)通过滑动窗口,TCP协议可以自适应地调整数据的传输速率,以适应网络的拥塞和性能变化。如果网络拥塞,接收方可以减小滑动窗口的大小,从而减少发送方的数据量,避免网络拥塞加剧。如果网络条件良好,滑动窗口可以增大,从而提高数据传输速率。

二, TCP三次握手

在这里插入图片描述
TCP三次握手是建立TCP连接时使用的一种协议,它的目的是确保通信双方都能够正常地发送和接收数据。它的过程如下:
(1)客户端向服务器发送一个SYN包(SYN=1,ACK=0),表示客户端请求建立连接。
(2)服务器收到SYN包后,向客户端返回一个SYN/ACK包(SYN=1,ACK=1),表示服务器已经收到了客户端的请求,并且同意建立连接。
(3)客户端收到服务器的SYN/ACK包后,向服务器发送一个ACK包(SYN=0,ACK=1),表示客户端已经收到了服务器的确认,并且双方已经建立连接。

在这个过程中,每个包都包含了序列号和确认号,用于确保数据的可靠传输。如果任何一个包在传输过程中丢失,TCP协议会自动重传该包,直到成功收到对应的确认包。通过这种方式,TCP协议可以确保通信双方能够可靠地进行数据传输。

三,TCP四次挥手

在这里插入图片描述

TCP四次握手是用于关闭TCP连接的一种协议,它的目的是确保通信双方都能够正常地关闭连接并释放相关资源。它的过程如下:

(1)客户端向服务器发送一个FIN包(FIN=1,ACK=0),表示客户端请求关闭连接。
(2)服务器收到FIN包后,向客户端发送一个ACK包(FIN=0,ACK=1),表示服务器已经收到了客户端的请求,并且确认关闭连接。
(3)服务器向客户端发送一个FIN包(FIN=1,ACK=1),表示服务器也请求关闭连接。
(4)客户端收到服务器的FIN包后,向服务器发送一个ACK包(FIN=0,ACK=1),表示客户端已经收到了服务器的确认,并且双方已经关闭连接。

在这个过程中,每个包都包含了序列号和确认号,用于确保数据的可靠传输。如果任何一个包在传输过程中丢失,TCP协议会自动重传该包,直到成功收到对应的确认包。通过这种方式,TCP协议可以确保通信双方能够可靠地关闭连接并释放相关资源。
在这里插入图片描述

四,抓包工具Wireshark使用

4.1Wireshark下载

  1. 下载网站:Wireshark官网
    在这里插入图片描述

4.2Wireshark安装

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

4.3软件界面介绍

  1. 界面介绍:
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述在这里插入图片描述在这里插入图片描述
  2. 软件外观更改
    在这里插入图片描述在这里插入图片描述

4.4 软件抓包过程与结果分析

4.4.1 实验过程:

  1. 确立通信模型:客户端(我们的PC)-----服务端(华为官网:www.huawei.com)
  2. 找到通信的源地址与目标地址
    (1)源地址:在这里插入图片描述
    (2)目标地址:域名:www.huawei.com(域名对应的IP地址)
  3. 如何从抓包文件中获取域名对应的IP地址?
    (1)使用Wireshark软件过滤器:dns.qry.name==www.hauwei.com
    123.125.34.49在这里插入图片描述
  4. 根据IP地址进行过滤数据包: ip.addr==123.125.34.49
    如下:
    List item

4.4.2抓包实验

  1. 网卡选择,鼠标左键选择
    在这里插入图片描述

  2. 点击开始抓包,打开浏览器访问网站,用于产生流量在这里插入图片描述

  3. 停止抓包 在这里插入图片描述

  4. 最后保存文件在这里插入图片描述在这里插入图片描述在这里插入图片描述

  5. Wireshark界面主要三部分
    在这里插入图片描述数据包中更详细的信息:在这里插入图片描述

  6. 过滤数据包:dns.qry.name==www.huawei.com

  7. 过滤结果如下:在这里插入图片描述在这里插入图片描述

  8. 对响应数据包进行分析:
    在这里插入图片描述在这里插入图片描述
    复制IP值:
    在这里插入图片描述

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 很抱歉,我是AI语言模型,无法回答您的问题。但是,我可以告诉您,Android移动应用基础教程第版是一本介绍Android移动应用开发基础知识的书籍,适合初学者学习。书中包含了Android应用程序的开发环境搭建、UI设计、数据存储、网络通信等方面的内容。如果您对Android开发感兴趣,可以考虑阅读这本书。 ### 回答2: Android移动应用基础教程第版是一本非常有价值的教材,它介绍了如何使用Android Studio以及Java语言开发Android移动应用程序的基础知识和技能。本书分为三大部分:第一部分介绍如何使用Android Studio创建新项目、编写布局文件、添加控件、运行和调试应用程序;第部分介绍如何处理用户输入、使用布局、ListView、GridView等组件实现数据展示、使用Intent、Fragment等组件实现应用程序交互;第三部分介绍如何在应用程序中访问网络、使用SQLite数据库存储数据、创建服务和多线程应用程序。整本书的难度层次逐次增加,既适合Android移动应用开发入门者学习,也适合进阶学习的开发者参考。 首先,本书首先介绍了如何下载和安装Android Studio,并解释了Android Studio的主要界面和功能,包括项目视图、代码编辑器、布局编辑器等。然后,本书介绍了如何使用XML语言编写布局文件,以及如何通过Java代码访问布局中的控件,实现应用程序的基本功能。除了入门的编程基础知识之外,本书还介绍了如何使用Android Studio提供的控件和组件实现更高级的功能,比如用ListView和GridView实现数据展示、使用Fragment实现应用程序模块化、使用Intent实现应用程序进程间通信等。同时本书还提供了很多练习题和示例代码,让读者通过实际操作优化自己的编程技能。 本书中还介绍了如何在应用程序中访问网络,获取网络数据以及如何将数据存储在本地文件,有效管理和处理应用程序数据。本书的最后一部分介绍了如何创建服务和多线程应用程序,这是Android应用程序开发的重要知识点,因为它可以确保应用程序代码高效地运行。 总之,Android移动应用基础教程第版是一本非常值得推荐的教材,它不仅覆盖了Android应用程序设计的基本概念和技术,还提供了大量的示例代码和练习题,非常适合初学者和进阶者学习。无论您是刚刚开始学习Android移动应用程序开发还是想提高技能水平,这本书都是您的不选择。 ### 回答3: 《Android移动应用基础教程第版》是一本面向初学者的Android移动应用开发入门教材,由赖明星、阮一峰两位知名作者倾力打造。本书从Android移动应用的架构、开发环境、UI设计、数据存取、网络通信等方面详细介绍了Android应用的开发过程和技巧,并给出了许多实用的案例及其源码。 本书的第一章介绍了Android开发环境的安装和配置,包括Android Studio软件、Java JDK、Android SDK和模拟器等的安装与使用。这对初学者来说是非常关键的,因为只有正确地安装和配置开发环境,才能顺利进行Android应用开发。 第章讲解了Android应用的架构和基本原理,其中包括四大组件、应用生命周期、Intent机制、UI控件和布局等内容。这对于初学者来说是非常重要的,因为只有明确了Android应用的组成和机制,才能理解应用开发的过程和逻辑。 第三章介绍了多种UI控件和布局,包括如何创建和使用TextView、EditText、Button、ImageView等控件,并介绍了常见的布局方式和属性设置。这对于初学者来说也非常重要,因为Android应用的UI设计是应用吸引用户的第一步,只有美观实用的UI才能引起用户的兴趣和使用。 第四到八章则涉及到Android应用的核心开发内容,包括数据存取、网络通信、多线程编程、服务和广播等方面,涵盖了许多实用的案例和技巧。这些章节对于想要进一步学习Android应用开发的初学者来说非常宝贵,因为这些内容是应用开发中最基础和最重要的部分。 最后,本书还附带了许多实用的工具和资源,包括常用的第三方库、网站、书籍和论坛等。这些资源对于初学者来说非常有用,能够帮助他们更好地进行Android应用开发和学习。 总之,《Android移动应用基础教程第版》是一本非常实用的Android应用开发入门教材,适合初学者学习和使用。本书详细介绍了Android应用的开发过程和技巧,帮助初学者顺利掌握Android应用开发的基础知识。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泰勒今天想展开

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值