部分内容摘自CSNote和牛客
目录
一. 概论
二. 物理层
三. 数据链路层
四. 网络层
五. 传输层
六. 应用层
OSI把对等层次之间传输的数据单位叫做该层的协议数据单元PDU(Protrol Data Unit)
层与层之间的叫做SDU(Service Data Unit)
① 实体表示可发送或接受信息的硬件或软件进程
② 协议是控制两个对等实体进行通信的规则集合
③ 协议保证了两个对等实体之间的通信,使得本层能向上一层提供服务
④ 实现协议需要使用下一层提供的服务
⑤ 协议是水平的,服务是垂直的
⑥ 两层实体交互的地方叫做服务访问点(SAP(Service Acess Point))
功能:确定与传输媒体的接口有关的一些特性,提供透明的比特流传输
① 机械特性:接线器形状、尺寸…
② 电气特性:电压范围
③ 功能特性:电平的电压的意义(语义)
④ 过程特性:对于不同功能的各种可能事件的出现顺序(同步)
为了让多用户共享同一信道
ASDL非对称数字用户线(下行(ISP到用户)>> 上行(用户到ISP))
_SDSL对称,一般企业用
HFC网,对有线电视网的改造
FFTx 光纤到户
提供可靠的帧传输
①封装成帧和透明传输
②差错检测
1.CRC
n位冗余码,M为数据,P商定好的除数,有n+1位,余数R为冗余码
M=101001
=101001000(n=3,所以补三个零)
模2运算,其实是把每一位都进行异或一下就可以了。
当接收端接收到数据后,要再进行一次CRC,如果余数为0,则没有错。
题目
①要发送的数据为11001001,采用CRC的生成多项式是P(X)=X3+X+1,则应添加在数据后面的余数为
记得补三个零,除数为4,n为4减1
②若接收方收到的二进制数字序列为1010111001100111,CRC生成多项式为X4+X2+X+1,试说明数据传输过程中是否出错(要求写出计算过程)。
没什么要注意的,算的时候仔细点就行,结果为0,传输无错
2.重传机制
接入ISP时使用,PPP协议无需支持非全双工链路
另一种可靠传输协议:高级数据链路控制协议HDLC(Highlevel DataLink Control)(已淘汰)
①将IP数据报封装到串行链路的方法
1.实现封装成帧
2.实现透明性
3.差错检测(CRC)即尾部的FCS
4.最大传送单元(不超过1500字节)
A、C保留无意义
②LCP(Link Control Protocol)
配置
③NCP
实现了多种网络层协议,使得路由器能同时支持多种网络层协议
网络层地址协商,给新接入的用户分配IP(临时IP)
④适配器(网卡)
实现了多种类型的链路,即串行和并行传输之间的切换
CSMA/CD协议
载波监听多点接入/碰撞检测
载波监听是指不管在发送前还是发送后都要不停地检测信道
多点接入说明是总线型网络
碰撞检测即边发送边监听是否有碰撞产生
它是无连接、不可靠交付、半双工的(不能边发送边接收)
强化碰撞,即撞后广播人为干扰信号(其实一般碰撞时也会有因叠加产生的大幅电压变化)
集线器hub的星形以太网10BASE-T,使用双绞线
“10”表示信号的传输速率为10 Mbps,“Base”表示信道上传输的是基带信号,“T”是英文Twisted-pair(双绞线电缆)的缩写。
集线器工作于物理层
α的值应该尽可能小
结论:以太网的连线长度不能太长(分子会太大),以太网帧不能太短(T。太小)
①MAC帧
②
本站在以下情况下会收下帧,而不是丢弃:
但是如果把路由的工作方式调为混杂模式,就可以偷偷收下所有帧,这是一种监听方式
使用集线器扩展
冲突域合并了,加入每个系的最大吞吐量为10Mbit/s,合并后总的依然为10Mbit/s,但是每个系分到的就只有3Mbit/s左右了。
因此我们使用以太网交换机进行扩展
以太网交换机实质为多接口的网桥,全双工,并行,连接多对接口,使每一个接口独占传输媒体,无碰撞地传输
因此不用CSMA/CD了,但是仍然保留以太网帧结构
以太网交换机的自学习功能:
Virtual YouTuber
Virtual LAN
每个VLAN帧都有一个明确的标识符指明发送帧的计算机属于哪个VLAN
提供灵活简单、无连接、尽最大努力交付的数据报服务
片偏移
用两道题目来理解ARP
①ARP是地址解析协议,简单语言解释一下工作原理。
1:首先,每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。
2:当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送ARP数据包,该数据包包括的内容有:源主机 IP地址,源主机MAC地址,目的主机的IP 地址。
3:当本网络的所有主机收到该ARP数据包时,首先检查数据包中的IP地址是否是自己的IP地址,如果不是,则忽略该数据包,如果是,则首先从数据包中取出源主机的IP和MAC地址写入到ARP列表中,如果已经存在,则覆盖,然后将自己的MAC地址写入ARP响应包中,告诉源主机自己是它想要找的MAC地址。
4:源主机收到ARP响应包后。将目的主机的IP和MAC地址写入ARP列表,并利用此信息发送数据。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。
广播发送ARP请求,单播发送ARP响应。
②为什么有了Mac地址,还要IP地址
由于全世界存在着各式各样的网络,他们使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转化工作,因此由用户或用户主机来完成这项工作几乎是不可能的的事。但IP编址就把这个复杂的问题解决了。连接到互联网的主机只需要各自拥有一个唯一的IP地址,他们之间的通信就像连接在同一个网络那么简单方便。
网际 组管理协议
①尽量用硬件多播,效率高,没有参与多播的不会收到IGMP报文
②多播路由器在探询组成员关系时,对组发一个询问
③当有多个多播路由器时,它们能快速有效地选择其中一个来探询
④一台主机要发送多个多播报文时,随机数时间(时延),时延小的先发
⑤组内都要监听,但有一个组成员响应时,其他的就不用响应了
多播转发树
多播路由协议:
①洪泛和剪除
RPB反向路径广播:收到多播数据报时,检查是否是从源点经最短路径传来的,是就向发送方外的其他路由转发,不是则丢弃
如果多播树上的某个路由的下游树枝已经没有该多播组的成员,则把它和下游一起剪除
②隧道技术
如果两个网支持多播,但是他们之间的网不支持,则封装成单播发送
③基于核心的发现技术
一个多播组指定一个核心路由器
④其他协议
距离向量多播路由选择协议DVMRP、基于核心的转发树CBT、开放最短通路优先的多播扩展MOSPF、协议无关多播-稀疏 / 密集方式PIM-SM/PIM-DM
基于距离向量的路由选择协议(分布式)Routing Information Protocol
要点:
① 距离不能超过16,等于16为不可达
② 仅和相邻路由交换信息
③ 路由器交换的是当前路由器所知的全部信息,即整个路由表
④ 按固定时间间隔交换信息
好消息传播快,坏消息传播慢
RIP基于Bellman-Ford算法
开放最短路径优先(Open Shortest Path First)(分布式的链路状态协议)
三个与RIP不一样的要点:
① 洪泛法,更新收敛快
② 发送的信息是与本路由器相邻的所有路由器的链路状态,但是是部分信息
③ 只有当链路状态变化时,才开始洪泛
其他特点:
OSPF对不同类型的业务可计算出不同路由
负载均衡
鉴别功能,保证信息只在可信赖的路由器之间交换链路信息
支持CIDR
带序号,32位,序号越大的报文越新
发送的分组类型:
①问候,发现和维持可达性
②数据库描述
③链路状态请求
④链路状态更新
⑤链路状态确认
边界网关协议(Border Gateway Protocol)使用了路径向量选择协议:
选择BGP发言人来在AS间交换信息
是树形结构的自治系统连通图,不存在回路
报文种类:
OPEN(打开)
KEEPALIVE(保活)
UPDATE(更新)
NOTIFICATION(通知)检测差错用
①零压缩:
FF05:.0:0:0:0:0:0:B3→FF05::B3
②过渡:
双协议栈
传输过程中,IPv6数据报遇到IPv4网络时,将首部转化为IPv4,但是会丢失流标号。
隧道技术
将IPv6封入IPv4数据部分
VPN虚拟专用网(Virtual Private Network)
10.0.0.0——10.255.255.255
172.16.0.0——172.31.255.255
192.168.0.0——192.168.255.255
NAT
通过一个装有NAT的路由器,路由器至少有一个全球ip地址,内网在与外网连接时,路由器会将它的内网ip映射成一个全球ip。这样就可以使专用网内较多的主机轮流使用NAT路由器中有限的全球ip地址
比较简单,只提一下最长前缀匹配
使用CIDR后,路由表的地址查找要查找最长前缀匹配的,使用的是二叉线索树
提供端到端的可靠通信,端点为进程
差错检测和IP协议的差不多,但是检测首部和数据部分,结果全1时无差错
①TCP首部
序号 :用于对字节流进行编号,例如序号为 301,表示第一个字节的编号为 301,如果携带的数据长度为 100 字节,那么下一个报文段的序号应为 401。
确认号 :期望收到的下一个报文段的序号。例如 B 正确收到 A 发送来的一个报文段,序号为 501,携带的数据长度为 200 字节,因此 B 期望下一个报文段的序号为 701,B 发送给 A 的确认报文段中确认号就为 701。
数据偏移 :指的是数据部分距离报文段起始处的偏移量,实际上指的是首部的长度。
确认 ACK :当 ACK=1 时确认号字段有效,否则无效。TCP 规定,在连接建立后所有传送的报文段都必须把 ACK 置 1。
同步 SYN :在连接建立时用来同步序号。当 SYN=1,ACK=0 时表示这是一个连接请求报文段。若对方同意建立连接,则响应报文中 SYN=1,ACK=1。
终止 FIN :用来释放一个连接,当 FIN=1 时,表示此报文段的发送方的数据已发送完毕,并要求释放连接。
窗口 :窗口值作为接收方让发送方设置其发送窗口的依据。之所以要有这个限制,是因为接收方的数据缓存空间是有限的。
② 可靠传输
停止等待协议(ARQ)(Automatic Repeat reQuest自动重传请求)
有进行编号,明确哪个分组收到确认
超时重传时间的选择
加权平均往返时间 RTTs ,计算如下
若α很接近于0,则表示新的RTTs值和旧的变化不大(RTT值更新较慢)
超时重传时间RTO应略大于RTTs
重传不计RTO的原因:
无法判断确认报文是对先发送的还是重传的
但是这样导致堵塞时无法更新RTO
所以采用重传直接X2的算法
③流量控制
滑动窗口协议
通过设置窗口rwnd的大小来控制流量
这种流量控制会有两个问题
第一是发送时机的问题,如果是交互式应用一次只发一个字节,会很浪费资源
使用捎带确认的方法,实际应用为Nagle算法,即把第一个字节先发送出去,并把后面的字节都缓存起来,当收到第一个字节的确认后,再把缓存中的所有数据组装成一个报文段发送,当要发送的数据已达到发送窗口大小的一半或报文段的最大长度时,立即发送。
二是糊涂窗口综合征
指接收方缓存满后,交互式应用进程正在使用,一次读取一个字节,然后发送确认,并将窗口设为一个字节,发送方一次发一个字节,接收方确认…
让接收方等待一段时间,直到接受缓存有一半的空间再发
④拥塞控制
防止过多数据注入到网络中,这样可以使网络中的路由器和链路不至于过载
流量控制是端到端的,而拥塞控制是全局的
⑤ 主动队列管理AQM
① 三次握手
seq为序号,ack为确认号
为什么要有第三次握手
假设只有两次握手,C的请求在某结点滞留,C重发,S确认连接,释放连接后,C的第一次请求终于到了,S确认连接,并一直等待着C的数据,一直浪费资源
② 四次挥手
为什么要等待2MSL
1.保证C最后的ACK能到达,如果C发完后直接关闭,S没收到确认,要求重传,C可以重传确认,并重新计时
2.已失效请求重新出现时,新连接被旧请求关闭,等待2MSL让所有请求从网络中消失
保活计时器
两小时无数据,发探测报文,每隔75秒一次,10次后关闭连接
应用层提供各种各样的应用层协议,这些协议嵌入在各种我们使用的应用程序中,为用户和网络之间提供一个打交道的接口
DNS域名系统,简单描述其工作原理。
①当一个应用进程需要把某个域名解析为IP地址时,该应用进程就会调用解析程序,并成为一个DNS用户
②把待解析的域名放在DNS请求报文中,进行递归查询,以UDP数据报的形式发送给本地域名服务器,端口为53
③本地域名服务器查找缓存得到相应域名的IP地址后,就将该域名的IP地址信息放入应答报文中返回给客户进程
④如果本地域名服务器没有直接查找到对应的IP地址,则向根域名服务器发出迭代查询,再将查询到的IP地址信息回传给客户程序。
基于TCP,修改文件需要拉取整个文件后重新上传,NFS不用这样,可以只上传修改部分
TFTP 简单文件传送协议
基于UDP,可以一对多,且代码内存占用小
端口:69
一个电子邮件系统由三部分组成:用户代理、邮件服务器以及邮件协议。
邮件协议包含发送协议和读取协议,发送协议常用 SMTP,读取协议常用 POP3 和 IMAP。
DHCP (Dynamic Host Configuration Protocol) 提供了即插即用的连网方式,用户不再需要手动配置 IP 地址等信息。
DHCP 配置的内容不仅是 IP 地址,还包括子网掩码、网关 IP 地址。
DHCP 工作过程如下:
TELNET
端口:23
WWW
HTTP
端口:80,HTTPS 443,无连接,无状态
HTTP/1.1,持续连接,有两种工作方式,一种是不停发请求保持连接的流水线模式,一种是收到响应才能再发请求的非流水线模式(主要)
文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib
文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang
文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些
文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器
文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距
文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器
文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn
文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios
文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql
文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...
文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120
文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数