网络编程:包头分析

一、以太网头

以太网中封装了源mac地址以及目的mac地址,还有ip类型,以太网又称为mac头

0X0800 只接收发往本机的mac的ipv4类型的数据帧 

0X0806 只接收发往本机的ARP类型的数据帧

0x8035 只接受发往本机的RARP类型的数据帧

0X0003  接收发往本机的MAC所有类型:ip,arp,rarp数据帧,接收从本机发出去的数据帧,                  混杂模式打开的情况下,会接收到非发往本地的MAC数据帧

二、IP头

IP头中用于分帧的部分:id(身份证明)、 flags(标志)、 fregment_offset(偏移量)

Id:发送端发送的IP数据包标识字段都是一个唯一值,该值在分片时被复制到每个片中。

flag中有:DF或MF

DF:Don't Fragment,“不分片”位,如果将这一比特置1 ,IP层将不对数据报进行分片,即为最后一片。
MF:More Fragment,“更多的片”,除了最后一片外,其他每个组成数据报的片都要把该比特置1。
Fragment Offset:该片偏移原始数据包开始处的位置。偏移的字节数是该值乘以8。

TTL:指定数据帧可以最多经过几个路由器。当数据帧被目标仿接收后,TTL清0

Linux TTL:64   Windows TTL:128

三、UDP头

只用保存源端口号和目标端口号

四、TCP头

1.端口号:源端口号、目的端口号

2.SYN:握手包,连接时候出现

   PSH:数据传输包,在传输数据时候出现

   FIN:挥手包,在断开连接的时候出现

    ACK:应答包,用于应答非应答包

3.Seq:序列号,占4个字节,用于给数据段进行编号的。所有非应答包的数据段,都seq。

   Ack:应答号,用于应答非应答包(握手包,挥手包,数据包)。告诉对方下一次从这个       seq编号发送数据包。

4.PSH          Ack = Seq+len;

   SYN          FIN Ack = Seq+1;

五、三次握手

三次握手的发起方,肯定是客户端

  1. 第一次握手:客户端发送SYN包(SYN=1, seq=0)给服务器,并进入SYN_SENT状态,等待服务器返回确认包。
  2. 第二次握手:服务器接收到SYN包,确认客户端的SYN,发送ACK包(ACK=1 , ack=1),同时发送一个SYN包(SYN=1, seq=0),并进入SYN_RCVD状态。
  3. 第三次握手:客户端接收到服务器的SYN包,以及ACK包,进入establish状态,同时向服务器发送ACK包(ACK=1, ack=1)。此时三次握手包发送完毕,服务器也进入establish状态

六、四次挥手

  1. 第一次挥手,主动关闭方发送一个FIN包(FIN=1, seq = u)给被动方,进入FIN_WAIT_1状态;
  2. 第二次挥手:被动方接收到FIN包,给主动方发送一个ACK包(ACK=1, ack=u+1);并进入CLOKSE_WAIT状态。主动方接受到ACK包后,进入FIN_WAIT_2状态。如果有数据没有发送完毕,则继续发送,直到发送完毕为止;
  3. 第三次挥手:被动方发送一个FIN包(FIN=1, seq=w),进入LAST_ACK状态.
  4. 第四次挥手:主动关闭方收到FIN包,回复一个ACK包(ACK=1, ack=w+1)。被动关闭方收到主动关闭方的ACK后关闭连接。

七、笔试面试题型

  1. 三次握手四次挥手流程。
  2. 请简述TCP建立连接断开连接的过程。(三次握手,四次挥手)
  3. 请简述TCP和UDP通信过程中的区别?(三次握手,四次挥手 ,有无应答)
  4. 请简述如何用UDP模型实现TCP式传输?(三次握手,四次挥手 ,有无应答)

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

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

相关文章

【兆易创新GD32H759I-EVAL开发板】IPA与TLI 图层混合的区别

在GD32H7系列中,IPA(Image Processing Algorithm)和TLI(TFT LCD接口)都支持图层混合功能,提供了丰富的人机界面(HMI)显示能力。尽管这两个特性在图层混合方面有一定的相似性&#xf…

十八、软考-系统架构设计师笔记-真题解析-2022年真题

软考-系统架构设计师-2022年上午选择题真题 考试时间 8:30 ~ 11:00 150分钟 1.云计算服务体系结构如下图所示,图中①、②、③分别与SaaS、PaaS、IaaS相对应,图中①、②、③应为( )。 A.应用层、基础设施层、平台层 B.应用层、平台层、基础设施层 C.平…

Jenkins 一个进程存在多个实例问题排查

Jenkins 一个进程存在多个实例问题排查 最近Jenkins升级到2.440.1​版本后,使用tomcat​服务部署,发现每次定时任务总会有3-4个请求到我的机器人上,导致出现奇奇怪怪的问题。 问题发现 机器人运行异常,总有好几个同时请求的服务。…

C++ 模板入门详解

目录 0. 模板引入 1.函数模板 1. 函数重载的缺点 2. 函数模板的概念和格式 2. 函数模板的实例化 2.1 隐式实例化&#xff1a;让编译器根据实参推演模板参数的实际类型 2.2 显式实例化&#xff1a;在函数名后的<>中指定模板参数的实际类型 2.3 函数模板参数的匹…

return code 1 from org.apache.hadoop.hive.ql.ddl.DDLTask

Bug信息 Error: Error while compiling statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.ddl.DDLTask (state=08S01,code=1)Bug产生的代码 修复hive表分区: msck repair table xxxBug原因排查 分区数量过大 这个是网上查看的说如果一次…

单身狗誓必脱单协会群(单身男女可进)

甜甜的恋爱&#xff0c;单身男女可进&#xff0c;谢绝己婚人士和海王进入&#xff01; 发送内容: "单身人士", 申请进群

【C++】—— 装饰器模式

目录 &#xff08;一&#xff09;什么是装饰器模式 &#xff08;二&#xff09;为什么要使用装饰器模式 &#xff08;三&#xff09;装饰器模式的实现步奏 &#xff08;四&#xff09;代码示例 &#xff08;五&#xff09;装饰器模式优缺点 &#xff08;一&#xff09;什么…

centos firewalld 封禁某个ip

在 CentOS 系统上使用 firewalld 封禁某个 IP 地址的步骤如下: 1. 确保 firewalld 已安装并运行: systemctl status firewalld 如果没有运行,启动 firewalld: systemctl start firewalld systemctl enable firewalld 2. 使用 firewall-cmd 命令临时封禁IP: firewall-cmd -…

【JavaSE】封装——访问修饰符详解

前言 我本来想着在【类与对象】那篇博客里讲访问修饰符的&#xff0c;但是因为继承还没有讲&#xff0c;protectded解释起来就会很费劲&#xff0c;就索性把【继承和多态】先写了&#xff0c;完了之后再来讲这个访问修饰符 访问修饰符 又称权限修饰符&#xff0c;我们之前见…

安科瑞保护测控产品在新能源行业中应用【峰谷套利 动态扩容 需求侧响应】

背景 2 月 10 日发布《关于完善能源绿色低碳转型体制机制和措施的意见》明确&#xff0c;鼓励建设源网荷储一体化、多能互补的智慧能源系统和微电网。 分布式光伏优势 近年来&#xff0c;随着光伏产业规模不断扩大&#xff0c;技术迭代升级不断加快&#xff0c;智能制造迅速推…

linux脚本中以yyyymmdd格式输出指定文件的修改日期

在Linux脚本中,你可以使用stat命令来查看文件的修改日期。然后,你可以使用date命令来格式化这个日期。以下是一个简单的bash脚本示例,它接受一个文件名作为参数,并打印出该文件的修改日期(以yyyymmdd格式): #!/bin/bash # 检查是否提供了文件名作为参数 if [ "…

电脑照片分辨率怎么调?这款dpi修改工具好用

许多考试平台在上传证件照片的时候&#xff0c;大多都会对图片分辨率有具体要求&#xff0c;但是如果遇上手上的图片分辨率达不到要求&#xff0c;那么怎么改图片分辨率呢&#xff1f;可以利用专业的dpi修改工具来处理&#xff0c;比如今天分享的就是一个在线修改图片分辨率的方…

【漏洞复现】6.Struts2 S2-061 远程命令执行漏洞(CVE-2020-17530)复现与分析

文章目录 1. 预备知识2. 漏洞复现2.1 漏洞介绍2.2 漏洞原理分析2.2.1 Apache Struts2架构2.2.2 OGNL语法介绍2.2.3漏洞原理 2.3 漏洞复现2.3.1 靶场搭建2.3.2 漏洞探测2.3.3 漏洞利用2.3.4 POC分析 2.4 漏洞修复 1. 预备知识 Struts是一个用于开发Java EE网络应用程序的开放源代…

如何用SCSS制作小铃铛振动/震动/摇晃/晃动的特效/效果?

放大了看效果 ​​​​​​​​​​​​​​ // 摇晃小铃铛振动/震动/摇晃/晃动的特效/效果---------------------------------------- [sg-shaking] {display: inline-block;transform-origin: center top;animation: sg-shaking 1s alternate forwards; }keyframes sg-shaki…

【timm笔记1】

1. 安装timm pip install timm2. 打印模型 import timm# 获取并打印所有可用的预训练模型名称 available_models = timm.list_models() # 打印出所有的模型 print(available_models)# 打印所有包含"resnet"字符的模型名称 resnet_models = timm.list_models(*resne…

最全的最新流行70个的javascript js框架 React vue Angular extjs jquery 等各种优缺点,是否可以生成app,全栈开发

以下是70个JavaScript框架的列表&#xff0c;每个框架的优缺点以及是否支持生成原生应用的概述&#xff1a; 这些框架各具特色&#xff0c;适用于不同的应用场景和需求。在选择框架时&#xff0c;除了考虑其功能和性能外&#xff0c;还需要考虑项目的具体需求、团队的技能水平以…

Java基础知识总结(中)

本文部分内容节选自Java Guide, 地址: https://javaguide.cn/java/basis/java-basic-questions-02.html &#x1f680; 基础&#xff08;上&#xff09; → &#x1f680; 基础&#xff08;中&#xff09; (正在更新中……) 面向对象基础 对象相等和引用相等的区别 对象相等一…

【每日力扣】491. 非递减子序列与122. 买卖股票的最佳时机 II

&#x1f525; 个人主页: 黑洞晓威 &#x1f600;你不必等到非常厉害&#xff0c;才敢开始&#xff0c;你需要开始&#xff0c;才会变的非常厉害。 491. 非递减子序列 给你一个整数数组 nums &#xff0c;找出并返回所有该数组中不同的递增子序列&#xff0c;递增子序列中 至少…

基于单片机的电梯系统模拟与研究

摘要: 随着建筑物规模越来越大,楼层也越来越高,对电梯的调速精度、调速范围等静态和动态特性都提出了更高的要求。由于传统的电梯运行逻辑控制系统采用的是继电器逻辑控制线路。采用这种控制线路,存在易出故障、维护不便、运行寿命较短、占用空间大等缺点。因此进行了基于单…

提升交付效率:Booking.com 金融技术团队的成功实践

Booking.com 金融技术业务部门的团队对其平台的后端和前端实施了一系列改进措施&#xff0c;并通过 DORA 指标将交付性能提高了一倍。此外&#xff0c;还使用了微前端 (MFE) 模式&#xff0c;将单体 FE 应用程序分解为多个可单独部署的分解应用程序。 2022 年年中&#xff0c;B…