【Linux 网络编程5】网络/数据链路层--IP协议,MAC帧协议和ARP协议

news2024/10/2 19:29:38
  1. IP协议格式和字段含义

  • 4位版本:IPv4或者Ipv6(他们两个不兼容);

  • 4位首部长度:报头=首部长度*4;

  • 8位服务类型:3位优先权字段(已经弃用), 4位TOS字段, 和1位保留字段(必须置为0); 4位 TOS分别表示: 最小延时, 最大吞吐量, 最高可靠性, 最小成本. 这四者相互冲突, 只能选择一个;

  • 16位总长度:报文(固长)+有效载荷;封装和解包;

  • 8位生存时间:数据报到达目的地的最大报文跳数. 一般是64. 每次经过一个路由, TTL -= 1, 一直减到0还没到达, 那么就丢弃了. 这个字段主要是用来防止出现路由循环

  • 8位协议:TCP或者UDP,采用不同的编号;

  • 16位首部校验和:使用CRC进行校验, 来鉴别头部是否损坏;

  • 32位源IP地址:发送端的IP地址;

  • 32位目的IP地址:接收端的IP地址;

2.分包(分包是少数情况)

Q:为什么会有分包?

A:因为数据链路层的有效载荷很小,只有1500;

  • 16位标识:如果属于一个TCP报文被分包就会是相同的16位标识,不被分包的也自己的16位标识;(对端排序标识,达到按序到达);

  • 3位标志:1位表示是否被分包,1位表示是否是被分包的最后一个IP报文,1位保留;

  • 13片偏移:被分包的每个包的最小的下标,对端的网络层在拼接为一个完整的TCP报文,在向上交付;缺点:如果被分包的一个部分被丢包,那么对端的网络层拼接不上,则整个被分包的报文都会被网络层丢弃;

一个IP报文有20报头,数据链路层1500-20=1480;每次只能传1480个字节数据;

Q:如何判断有无丢包?

A:可以分成前中后三部分,如果13位片偏移是0就是前部分,中部分就是前面的累加字节数,后部分看3位标志中的1位表示是否是被分包的最后一个IP报文;

3.网段划分

  1. IPv4网络通信总共有2^32IP地址,大概42亿多;

  1. IP可以分为ABCDE5类,A类是2^32的一半,B类又是A类的一半,C类是B类的一半,依次类推;

  1. A类就有2^7个,也就是2^网络号,把A类的所有IP分为2^7份;网络号可以区分国家比如:1是中国、2是美国,这是例子不一定是这个映射;

各类的具体IP数值:

  • A类 0.0.0.0到127.255.255.255

  • B类 128.0.0.0到191.255.255.255

  • C类 192.0.0.0到223.255.255.255

  • D类 224.0.0.0到239.255.255.255

  • E类 240.0.0.0到247.255.255.255

3.1.子网掩码

A类有2^24对于一个县太多了,应该划分的更小保证不浪费且更便于管理;

网络号

140.252.20.64

子网掩码

255.255.255.240

子网地址范围

140.252.20.64~140.252.20.79

4.数据链路层

4.1.MAC帧协议

  1. 用于物理层传输用;

  • 6位源地址和6位目的地址:48个比特位,每个都是唯一的电脑出厂自带在网卡上

  • 类型帧协议类型字段有三种值,分别对应IP(传数据)、ARP/RARP(获取MAC地址),向上交付的不同;

  • 4位CRC:校验,传输可能导致比特翻转;

4.1.1.MTU

  • 以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节,要在后面补填充 位;

  • 最大值1500称为以太网的最大传输单元 (MTU),不同的网络类型有不同的MTU;

  • MSS=MAC帧报头+MTU

  • 双方在发送SYN的时候会在TCP头部写入自己能支持的MSS值,然后双方得知对方的MSS值之后, 选择较小的作为最终MSS,MSS的值就是在TCP首部的40字节变长选项中(kind=2)

4.2.ARP协议

  1. ARP协议和MAC帧协议都属于数据链路层协议

  1. APR协议用于IP地址换MAC地址,MAC帧协议用于局域网中传输;

两个协议在数据链路层的位置:两个协议是上下层关系

ARP协议的格式

  • 硬件类型指链路层网络类型,1为以太网; 协议类型指要转换的地址类型,0x0800为IP地址; 硬件地址长度对于以太网地址为6字节; 协议地址长度对于和IP地址为4字节;

  • op字段1表示ARP请求,2表示ARP应答;

  • 以太网地址就是MAC地址

ARP协议原理:

5.其他的协议和技术

5.1.DNS技术

  1. 用来把域名转化为IP地址;

域名简介:

www.qq.com
  • .com:一级域名:表示这是一个企业域名. 同级的还有 "net"(网络提供商), "org"(非盈利组织)等

  • qq:二级域名,公司名

  • www.:只是一种习惯用法. 之前人们在使用域名时, 往往命名成类似于ftp.xxx.xxx/www.xxx.xxx这样的格 式, 来表示主机支持的协议

5.2.一个问题,ping命令有端口号吗?

A:没有,ping是基于ICMP协议的一个命令,icmp是是一个网络层协议

5.3.代理服务器

5.3.1.正向代理:靠近客户端

收集请求,再由代理代理服务器来发送请求,校园网就是这样设计的,好处:

  1. 身份识别:只有身份正确的才能使用,外来人就不能免费使用

  1. 加速访问:被多次访问的资源可以缓存下来

  1. 识别请求:把客户端一些不安全的请求直接丢弃

5.3.2.反向代理:靠近服务器端

负载均衡:把大量的请求分别给各个server,让每台服务器都得到好的利用

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

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

相关文章

【SpringCloud】1、服务网关Gateway

这里写目录标题1.网关的介绍2.GateWay2.1 GateWay介绍1.网关的介绍 大家都知道在微服务架构中, 一个系统会被拆分为很多个微服务, 那么作为客户端要如何去调用这么多的微服务呢? 如果没有网关的存在, 我们只能在客户端记录每个微服务的地址, 然后分别去调用 这样的架构, 会…

2023-04-14 使用纯JS实现一个2048小游戏

文章目录一.实现思路1.2048的逻辑2.移动操作的过程中会有三种情况二.代码部分:分为初始化部分和移动部分1.初始化部分1.1.生成第一个方块:1.2.生成第二个方块:2.移动过程部分:三.实现代码1.HTML部分2.CSS部分3.JS部分3.1.game对象的属性3.2.game对象的start方法3.3.game对象的r…

材料科学基础学习指导-吕宇鹏-名词和术语解释-第5章:相图

目录 第一部分 第二部分​​​​​​​ 第三部分 第四部分​ 第一部分 1.1组元:是材料科学中的基本术语。意思是组成合金的独立的、最基本的单元。 1.2相: 指合金中具有同一聚集状态、同一晶体结构和性质并以界面相互隔开的均匀组成部分。​​​​…

【DS】河南省第十三届ICPC大学生程序设计竞赛 J-甜甜圈

明天就要省赛了,感觉已经寄了捏 J-甜甜圈_河南省第十三届ICPC大学生程序设计竞赛(重现赛) (nowcoder.com) 题意: 思路: 直接模拟复杂度太高,因此考虑用DS优化 我们考虑用树状数组维护 在用线段树和树状…

python 填充Word文档模板 循环填充表格、图片 docxtpl、 jinja2

python 填充Word文档 循环填充表格、图片codeword模板input.txt 内容参考code from docxtpl import DocxTemplate, InlineImage from docx.shared import Inches, Cm, Mm import jinja2word_template tpl.docx out_word_file new_test.docx input_file "input.txt&quo…

【机器学习】决策树(实战)

决策树(实战) 目录一、准备工作(设置 jupyter notebook 中的字体大小样式等)二、树模型的可视化展示1、通过鸢尾花数据集构建一个决策树模型2、对决策树进行可视化展示的具体步骤3、概率估计三、决策边界展示四、决策树的正则化&a…

【Microsoft Edge】关于 Microsoft Edge 浏览器多版本安装目录结构的测试分析

文章目录1. 问题描述准备工作二、测试2.1. 运行手动保存的安装程序无法安装2.2、依次从低版本到高版本安装2.2.1 运行腾讯电脑管家下载的正式版 112.0.1722.392.2.2 用 MicrosoftEdgeSetup 安装包安装正式版 112.0.1722.482.2.3 用 MicrosoftEdgeSetupBeta 安装包安装 Beta 版 …

别再只会使用简单的ping命令了,Linux中这些高级ping命令可以提高工作效率!

当你需要测试网络连接或者诊断网络问题时,ping命令是一个非常有用的工具。除了基本的用法,ping还有一些高级用法,可以帮助你更好地使用它。 一、基本用法 首先,让我们回顾一下ping的基本用法。ping命令用于测试与另一台计算机的…

C++ 类之间的横向关系(组合、依赖、关联和聚合)

目录 组合(复合) 定义 举例 依赖 定义 举例 关联 定义 举例 聚合 定义 举例 组合(复合) 定义 它是一种"is a part of"的关系,部分与整体,包含与被包含。组合是一个类中包含另一个类对…

企业如何高效管理新媒体矩阵账号?提升运营效率,监管内容风险

2023年,面对不确定的市场环境,更要精准把控业务动向,对于在抖音、小红书、视频号、快手等新媒体平台,布局大量账号的企业,实现矩阵账号的统一治理,不仅是应对市场不确定性影响的关键,更为有效降…

NC65合并报表如何取消上报并退回以及注意事项和相关问题总结

NC65合并报表如何取消上报并退回? 在【企业绩效管理】-【合并报表】-【合并】-【合并执行】节点中,点击〖数据中心〗按钮,在弹出的〖合并报表数据中心〗界面中,点击〖报送管理〗-〖合并方案请求退回〗,然后到【合并综…

Qt编写推流综合应用示例-文件推流

一、功能特点 1.1 文件推流 指定网卡和监听端口,接收网络请求推送音视频等各种文件。实时统计显示每个文件对应的访问数量、总访问数量、不同IP地址访问数量。可指定多种模式,0-直接播放、1-下载播放。实时打印显示各种收发请求和应答数据。每个文件对应MD5加密的唯一标识符…

JavaScript的基础

文章目录一、JavaScript 声明提升二、JavaScript 严格模式(use strict)三、JavaScript 表单四、JavaScript 表单验证五、JavaScript 验证 API总结一、JavaScript 声明提升 JavaScript 中,函数及变量的声明都将被提升到函数的最顶部。 JavaScript 中,变…

ClickHouse之采样查询(SAMPLE)

文章目录SAMPLE概念SAMPLE功能SAMPLE语法sample Ksample Nsample K offset mgroupArraySample语法SAMPLE概念 该 SAMPLE 子句允许近似于 SELECT 查询处理。 启用数据采样时,不会对所有数据执行查询,而只对特定部分数据(样本)执行…

电脑C盘被格式化 如何快速将被删的数据文件恢复找回?

如今的互联网时代,不管是办公还是休闲,一般都喜欢在电脑上进行操作,尤其是办公,感觉有了电脑能轻松不少,可以将一些工作中的重要数据保存在电脑里面,那么电脑里面的数据真就很安全了吗?这个就让…

Unity ShaderVariant 变体收集方案分析

最近遇到一个问题,在editor中场景渲染正确,打包android之后,渲染异常。 经过排查得出原因:工程把所有shader单独打包Assetbundle,editor打包ab包的时候,未收集到正确的shader变体,未将场景中使…

go语言并发编程

并发编程1.并发介绍1.1进程和线程1.2并发和并行1.3协程和线程1.协程2.线程1.4goroutine只是由官方实现的超级"线程池"2.Goroutine2.1使用Goroutine1.启动单个goroutine2.启动多个goroutine3.goroutine与线程3.1可增长的栈3.2goroutine调度3.runtime包3.1runtime.Gosc…

人员玩手机离岗识别检测系统 yolov5

人员玩手机离岗识别检测系统根通过pythonyolov5网络模型识别算法技术,人员玩手机离岗识别检测算法可以对画面中人员睡岗离岗、玩手机打电话、脱岗睡岗情况进行全天候不间断进行识别检测报警提醒。Python是一种由Guido van Rossum开发的通用编程语言,它很…

Nginx 的docker部署及宿主机配置文件修改重启

Nginx是一款高性能的Web服务器,用于反向代理、负载均衡、HTTP缓存等。在docker中部署Nginx可以更加方便地管理和配置。下面是部署Nginx的步骤: 步骤一:拉取Nginx镜像 首先需要从Docker Hub上拉取Nginx镜像,可以使用以下命令&…

windows11系统关闭右键【显示更多选项】

在新的Win11操作系统之中,微软为了美化界面,将右键菜单进行了整合更改,但是实用性却大幅度下降,引起了很多用户的反感,并迫切希望能够将Win11显示更多选项这个反人类的设置恢复成Win10的状态。 方法一:更改…