网络分层(基础概念)

news2024/9/22 7:24:13

网络互连模型:

 OSI 参考模型  1.物理层  2.数据链路层 3.网络层 4.运输层5.会话层6.表示层7.应用层

TCP/IP协议: 1.网络接口层 2.网际层 3.运输层 4.应用层

1,物理层

定义接口标准、结缆标准、传输速率、传输方式等。

信道

信息传输的通道,一条传输介质上可以有多条信道。

单工通信。 信号 只能往一个方向传输,任何时候都不能改变信号的传输方向。比如无线广播,有线电视。

半双工通信 

信号可以双向传输,但必须交替,同一时间只能往一个方向传输。

全双工通信

信号 可以同时双向传输。

比如手机。

数据链路层 

链路:从一个节点到相邻节点的一段物理线路(有线或无线),中间没有其它交换节点。

数据链路:在一条链路上传输数据时,需要有对应的通信协议来控制数据的传输。

不同类型的数据链路,所有的通信协议可能是不同的。

广播信道:CSMA/CD协议(比如同轴电缆,集线器等)

点对点信道:PPP协议。(比如2个路由器间的信道。)

路由器----路由器 , PPP协议。

封装成帧:

帧结束符  ---IP数据包---帧开始符.

最大传输单元MTU

每一种数据链路层协议都规定了所能够传送的帧的数据长度上限。

以太网的MTU为1500个字节。

透明传输,使用SOH作为帧开始符,使用EOT作为帧结束符。中间数据部分如果出现这两个关键词,就需要做转义处理。

差错检验 FCS ,把帧的数据部分+首部计算出得,为了确保传数的数据准备,错误就会被丢弃。

CSMA/CD协议  ,以太网 ,以太网帧

为了能够检测正在发送的帧是否产生了冲突,以太网的帧至少要64字节。

用交换机组建的网络,已经 支持全双工通信,不需要再使用CSMA/CD,但它传输的帧依然是以太网帧。

机算机0-----集线器-----------机算机1 

用得CSMA/CD协议。

v2帧的格式  (ethernet v2标准)

字节:               6                       6               2         46-1500          4

  MAC帧 :目标MAC地址   源MAC地址   类型        数据             FCS

以太网使用曼彻斯特编码,接收端接帐帧过程只要发现没有信号挑变,就认为是结束了。不需要帧开始符和结束符。

在传递到物理层时,再会插入8个字节,叫前同步码(7字节),+帧开始定界符(1字节)

当数据部分的长度小于46字节时,数据链路层会在数据的后面加入一些字节填充,而接收端会将添加的字节去掉。

ppp协议(point to point protocol)

      首部             IP数据包          尾部

7E FF 03 协议   信息部分          FCS  7E

address字段: 图中的值是0xFF,形同虚设,点到信道不需要源MAC,目标MAC地址

Control字段:图中的值是0x03,目前没什么用

Protocol字段:内部用到的协议类型

帧开始符,帧结束符 :0x7E

网卡

网卡接收到一个帧,首先会进行差错校验,如果校验通过则接收,否则丢弃。

wireshark 抓到的帧没有FCS,因为它抓到的是差错校验通过的帧(帧尾的FCS会被硬件去掉)

wireshark抓不到差错校验失败的帧。

网络层

网络数据包 由首部和数据两部分组成。

数据:由传输层传递下来的数据段

首部

固定部分(20个字节):版本(4位) 首部长度(4位) 区分服务(提高网络质量,8位)  总长度(16位)   标识(16位) 标志(3位,第一位,保留,第二位,1代表不允许分片,0代表允许分片 ,第三位,1代表不是最后一片,0代表是最后一片)  片偏移(13位  片偏移*8:字节偏移,每一片的长度是8的整数倍)

生存时间  (8位 每个路由器在转发之前将TTL减1,一旦发现TTL减0,路由器返回错误报告)

如果两个路由器都设置了默认路由,而这两个路由器都不知道计算机发送的目标ip,他们就会死循环,来回传递,如果加了生存时间,TTL减到0,就会停止。

协议(8位,表明封装的数据是使用了什么协议) 

首部检验和(用于检查首部是否有错误,4个字节) 

源Ip地址 (4个字节)  目标ip地址(4个字节)

可变部分  可选字段  可填充

数据部分 ,最大是1460字节。

首部+数据的长度之和,最大值是65535。

由于帧的数据不能超过1500字节,所以过大的IP数据包,需要分成片传输给数据链路层,每一片都有自己的网络层首部(IP首部)

将之分成片之后,又如何在服务器重新合并?

网络首部的标识,数据包的ID,当数据包过大进行分片时,同一个数据包的所有片的标识都是一样的。 有一个计数器专门管理数据包的ID,每发出一个数据包,ID就加1。

传输层(TCP,UDP)

TCP 可靠性传输,不丢包。 应用:浏览器,文件传输。HTTP HTTPS,FTP,SMTP,DNS

UDP不可靠传输,尽最大努力交付,可能丢包。 应用:音频,直播。 DNS.

UDP

是无连接的,减少了建立和释放连接的开销。

首部只有8个字节,16位源端口号,16位目的端口号,16位UDP长度,16位UDP检验和。

端口:2个字节,取值范围 0-65535

客户端的源端口是临时开启的随机端口。

防火墙可以设置开启/关闭某些端口来提高安全性。

netstat -an :查看被占用的端口

netstat -anb: 查看被占用的端口,占用端口的应用程序.

telnet 主机端口:查看是否可以访问主机的某个端口。

TCP(传输控制协议)

首部长度(数据偏移):4位,取值 0x0101~0x1111, 乘以4为tcp首部的长度。

因为有20字工的固定首部,所以数据偏移最小是5.

UDP中的首部中有个16位的字段记录了整个UDP报文段的长度(首部+数据)

但是,TCP的首部中仅仅有个4位的字段记录了TCP报文段的首部长度,并没有字段记录TCP报文段的数据长度。

tcp\udp的数据长度,完全可以由IP数据包的首部推测出来。

传输层的数据长度=网络层的总长度-网络层的首部长度-传输层的首部长度。

标志位

URG:当为1时,紧急指针字段才有效。表明当前报文段中有紧急数据,应优先尽快传送。

图上紧急指针里的数据生效。如果紧急指针中是8 ,则TCP数据部分的前8个字节代表着紧急数据。

ACK : 当ACK=1时,TCP确认号字段才有效。

RST:当RST=1时,表明连接中出现严重差错,必须释放连接,然后再重新建立连接。

SYN:当SYN=1、ACK=0时,表明这是一个建立连接的请求。

若对方同意建立连接,则回复SYN=1、ACK=1

FIN   当FIN=1时,表明数据已经 发送完毕 ,要求释放连接。

序号  首先传输的每一个字节都会有一个编号,在建立连接后,序号代表:这一次传给对方的TCP数据部分的第一个字节的编号。

确认号  在建立连接后,确认号代表:期望对方下一次传过来 的TCP数据部分的第一个字节的编号。确认号与下次服务器发来的序号是一样的。

窗口  这个字段有流量控制功能,用以告知对方下一次允许发送的数据大小(单位:字节)

tcp的几个要点:

可靠传输,中途丢包,可以补发。

在TCP通信过程中,如果发送序列中间某个数据包丢失,(比如1,2,3,4,5中3丢失了)

TCP会通过重传最后确认的分组后续的分组(最后确认的是2,会重传3,4,5)

这样原先已经 正确传输的分组也可能重复发送(比如4,5),降低了TCP性能。

为改善上述情况 ,发展出了SACK技术,告诉发送方哪些数据丢失,哪些数据已经 提前收到。

使TCP只重传发送丢失的包,(比如3),不用发送后续所有的分组。

tcp首部的选项部分就可以放一些SACK。

kind : 1字节,值为5代表这是SACK选项。

length: 1字节,表明SACK选项一共占用多少字节。

leftEdge 4字节  左边界

RightEdge 4字节 右边界

一对边界信息需要占用8字节,由于tcp首部的选项部分最多40字节,所以 SACK选项最多携带4组边界信息。

SACK选项的最大占用字节数=4*8+2=34

ARQ协议,自动重传请求。(具体不赘述)

A向B发送数据包,B接受数据包,有差错,丢弃有差错的报文,A没有极时得到B的响应,会进行超时重传。

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

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

相关文章

武汉流星汇聚:体育热潮驱动市场新高峰,体育用品迎来发展黄金期

在全球体育产业的蓬勃发展中,法国作为体育大国,其深厚的体育文化底蕴和广泛的运动普及度,为体育用品市场注入了源源不断的活力。随着足球、徒步、网球等运动的持续升温,以及国际体育赛事如奥运会的临近,体育用品市场正…

量子加密算法:保障信息安全的新利器

随着信息技术的飞速发展,信息安全问题日益凸显。量子加密算法作为一种新型加密技术,以其独特的优势逐渐成为保障信息安全的重要手段。本文将简要介绍量子加密算法的原理、特点及其在我国的应用前景。 一、量子加密算法的原理 量子加密算法是基于量子力学…

Graphpad Prism for Mac 医学绘图软件教程

Mac分享吧 文章目录 效果一、下载软件二、开始安装1、双击运行软件,将其从左侧拖入右侧文件夹中,等待安装完毕2、应用程序显示软件图标,表示安装成功 三、运行测试安装完成!!! 效果 一、下载软件 下载软件…

智慧楼宇公厕系统小程序,提高卫生间管理使用效率

在当今的智慧楼宇中,公厕系统的管理和使用效率成为了衡量楼宇品质的重要指标之一。智慧楼宇公厕系统小程序的出现,为解决这一问题带来了全新的思路和方法。 一、检查公厕环境数据 智慧公厕系统不仅关注如厕的基本需求,还注重提升如厕环境的质…

你了解大模型的偏见吗

随着AI大模型在各个领域的广泛应用,它们的偏见问题逐渐引起关注。 这些偏见可能无意中影响生成内容的公正性,误导用户决策,甚至加剧社会不平等。 AI偏见不仅会损害公众对技术的信任,还可能在关键领域如招聘、教育和医疗中产生不…

自定义树工具v2.0+评论回复功能开发

文章目录 1.新增评论回复1.EasyCode生成代码2.SaveShareCommentReplyReq.java3.ShareCommentReplyController.java4.ShareCommentReplyService.java5.ShareCommentReplyServiceImpl.java6.ShareMomentMapper.java 增加动态回复数7.ShareMomentMapper.xml8.测试1.评论2.评论记录…

CTFSHOW misc入门中misc8解法

第一步:下载misc8压缩包后解压缩,发现是一张misc8.png图片 第二步:老规矩,还是在kali里用binwalk命令查看文件是否包含隐藏文件,发现有两个png文件 第三步:使用binwalk -e 命令看是否能进行解析文件,结果不…

Emacs29.x版本之重要特性及用法实例(一百六十二)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列…

如何提升网络对AI大模型流量的承载能力?

前言 随着AI大模型的兴起,数据中心正在经历前所未有的变革。AI模型的规模巨大并持续快速增长。自2017年起,AI模型的规模每半年翻一番,从初代Transformer的6500万增长到GPT-4的1.76万亿,预计下一代大语言模型的尺寸将达到10万亿。…

CSE12 Lab 4: Simple CSV File Analysis

This file shows the stock returns from an investment portfolio over a year. The “A” column contains the stock name and the “B” column indicates the returns in USD (You can assume that there are no negative stock returns in any of our CSV data files ).…

深度解析|comfyui画面词云效果工作流搭建和讲解

前言 本篇文章共分为4部分: 工作流展示 工作流节点逻辑梳理 工作流拆解搭建 总结 我会对里面的重要的节点做详细的说明和解释,希望大家看完之后能学会并自己进行搭建,可以把出图效果放评论区一起学习探讨哦。 1.工作流效果展示 今天我…

45.【C语言】指针(重难点)(H)

目录: 22.函数指针变量 *创建 *使用 *两段代码分析 23.函数指针数组 *基本用法 *作用 往期推荐 22.函数指针变量 *创建 类比数组指针变量的定义:存放数组地址的指针变量,同理函数指针变量存放函数的地址 格式 函数的返回类型 (*指针变量的…

【python报错已解决】“string indices must be integers”

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 引言 你是否在处理Python字符串时遇到了“string indices must be integers”的错误?这个错误可能会让你的代码运行…

[SWPU2019]Network

TTL加密 python脚本解密 import binasciif open(attachment_3.txt, "r") str Binary number while 1:num f.readline()if not num:breakif num.rstrip() 63: # 去掉每行后面的空格Binary 00elif num.rstrip() 127:Binary 01elif num.rstrip() 191:Bi…

C++那些事之helgrind并发编程检测

C那些事之helgrind并发编程检测 大纲 死锁数据竞争提问 通常我们在写多线程程序的时候很容易遇到两个问题: 死锁了,不知道什么原因导致数据不一致,多个线程没保护数据 那么有没有工具来检测这两种场景呢 答案是有的,我们可以使用v…

【Qt】常用控件QProgreeBar

常用控件QProgreeBar 使用QProgressBar表示一个进度条!!! QProgressBar的核心属性 属性说明 minimum 进度条最⼩值 maximum 进度条最⼤值 value 进度条当前值 alignment ⽂本在进度条中的对⻬⽅式. Qt::AlignLeft : 左对⻬Qt::Align…

Unity(2022.3.38LTS) - 性能分析器

目录 一. 简介 二. 打开分析器 1. 打开 2.在目标平台上分析应用程序 三. 分析分析器 四. 模块详细介绍 1.Asset Loading Profiler 模块 2.Audio Profiler 模块 3.CPU Usage Profiler 模块 4.File Access Profiler 模块 5.Global Illumination Profiler 模块 6.GPU …

多线程任务中设置MDC的实践

多线程任务中设置MDC的实践 引言 在当今的软件开发中,日志记录是不可或缺的一部分。日志不仅仅是调试工具,还在系统监控、性能分析、故障排除中扮演着关键角色。尤其在多线程环境中,日志的上下文信息一致性至关重要。MDC(Mapped…

WPF 动画 插值动画、关键帧动画、路径动画

WPF动画,分为三种:插值动画、关键帧动画、路径动画 2.1 插值动画:     1)定义:插值动画是指,属性值从某一个值,经过一段时间后,连续变化值另一个值的动画。         例…

订单到期关闭如何实现?

目录 一、被动关闭 二、定时任务 三、JDK自带的DelayQueue 四、Netty的时间轮 五、Kafka的时间轮 六、RocketMQ延迟消息 七、RabbitMQ死信队列 八、RabbitMQ插件 九、Redis过期监听 十、Redis的Zset 十一、Redisson 在电商、支付等系统中,一般都是先创建…