| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 计算机网络 -> 正文阅读 |
|
[网络协议]计算机网络 |
文章目录
1.计算机网络1.1计算机网络重点概述1.1.1 计算机网络分层结构为什么要分层,分层要做什么:
正式认识分层结构: 1.1.2 OSI七层参考模型
OSI七层参考模型通信过程:
1.1.3 TCP/IP四层参考模型1.1.4 五层参考模型五层参考模型通信过程: 1.2 物理层重点(没啥重点)1.3 数据链路层重点1.3.1 数据链路层的流量控制和可靠传输流量控制是为了让传输过程中的发送速度和接受速度匹配,减少传输出错与资源浪费 1.3.1.1 停止等待协议(Stop-and-Wait)停止等待协议的无差错情况: 停止等待协议的有差错情况:
停止等待协议的特点 1.3.1.2 后退N帧协议(GBN)因为停止等待协议太浪费时间了,所以尝试采用GBN,发送连续多个数据帧,以增大信道利用率 下图是一个实例: 发送窗口不能无限大,与使用的编号的比特数有关,二进制表示:
1.3.1.3 选择重传协议(SR)吸取了GBN协议的教训,我们打算尝试只重传错误的帧,这样的话就不用浪费资源把已经收到的帧再重传一次了。 SR运行过程: 同样的,因为编号的问题,发送窗口不能无限大 1.3.2 介质访问控制技术就是让节点之间的通信不会进行相互干扰 1.3.2.1 静态划分信道–信道划分协议1.3.2.1.1 频分多路复用FDM1.3.2.1.2 时分多路复用TDM1.3.2.1.3 统计时分复用STDMTDM的缺点就是利用率低,所以又衍生出了STDM STDM的原则是先到先走,满了就发,相对于TDM提高了利用率 1.3.2.1.3 码分多路复用CDM每个节点分配一种不同的编码,每个节点使用其唯一的编码来对发送的数据进行编码(如果精心选择编码,不同节点能同时传输) 1.3.2.2 动态分配信道–随机访问协议所有用户都可以随机发送信息,发送时可以占用全部带宽,理论上个人使用时比静态分配信道的速度更快 1.3.2.2 .1 ALOHA协议帧到达节点时,立刻传输。如果发生碰撞,节点将立即(在完全传输碰撞帧后)以概率p重传。否则,等待一个帧传输时间,再以概率p重传。信道有效传输速率实际不是R bps,而是时隙ALOHA的一半 时隙ALOHA协议: 1.3.2.2.2 CSMA协议(载波侦听多路访问)
1.3.2.2.3 CSMA/CD协议因为链路实际有长短,发送数据需要时间,这个时间内可能就被其他节点当成空闲状态导致发生碰撞。 图示传播时延对载波监听的影响: 由此我们可以想到最小帧长的问题,因为如果帧太短,帧都发送完了才检测到碰撞导致停止,导致无法停止碰撞 1.3.2.2.4 CSMA/CA协议1.3.2.2.5 CSMA/CD 与 CSMA/CA的区别1.3.2.3 动态分配信道–轮询访问协议主要包括两大类,一个是轮询协议,另一个是令牌传递协议 1.3.2.3.1 轮询协议就是选出一个代表,让他控制所有的传输 1.3.2.3.2 令牌传递协议注释:在节点之间没有收发数据的需求时,令牌在节点之间循环。
1.3.3 广域网1.3.3.1 广域网使用的链路层协议1.3.3.1.1 PPP协议(Point-to-Point Protocol)PPP协议是目前使用最广泛的数据链路层协议,拨号基本都是PPP协议 PPP协议需要满足的要求: PPP协议不需要满足的要求: PPP协议组成成分以及功能: PPP协议的帧格式: 1.3.3.1.2 HDLC协议(High-Level Data Link Control)HDLC的三种站: HDLC的帧格式: 1.3.3.1.3 PPP协议和HDLC协议对比为什么HDLC协议更可靠,但是我们使用PPP协议? 1.3.4 链路层设备的冲突域和广播域1.4 网络层重点1.4.1 数据交换方式为什么要进行数据交换?因为每个节点之间都拉网线太麻烦了也不实际,所以通过大量交换设备互联进行数据交换 1.4.1.1 电路交换常见的例子:打电话 1.4.1.2 报文交换**注释:**报文发送的过程 1.4.1.3 分组交换分组交换和报文交换基本相同,就是将报文切割之后再进行发送 1.4.1.3.1 分组传输的两种传输方式-数据报与虚电路数据报: 虚电路: 数据报与虚电路的区别: 1.4.2 路由算法和路由选择协议路由算法就是让路由知道收到报文之后下一步怎么走 AS就是多个路由器之间构成的单独的小圈子,圈子内使用自己的协议,圈子和圈子之间用的是BGP协议 1.4.2.1 内部网关协议IGP–RIP协议和距离向量算法1.4.2.1.1 RIP协议概述通过交换信息构建路由表 1.4.2.1.2 如何建立路由表1.4.2.1.3 RIP协议报文格式1.4.2.1.4 RIP协议特点就是来回更新路由表,错误信息被覆盖,导致直至达到距离上限强制错误时才可以得知出错
1.4.2.1.5 距离向量算法注释: 1.4.2.2 内部网关协议IGP–OSPF协议和链路状态算法1.4.2.2.1 OSPF协议概述1.4.2.2.2 OSPF区域1.4.2.2.3 OSPF分组1.4.2.2.4 OSPF的其他特点为什么OSPF收敛速度快?因为它只是刷新一下链路状态,得知其是否连通,不需要和RIP一样进行对照,而是直接通过Dijilstra算法来自己算出路径 1.4.2.2.5 链路状态路由算法1.4.2.3 外部网关协议EGP–BGP协议1.4.2.3.1 BGP协议简介1.4.2.3.2 BGP协议交换信息的过程了解即可,只需要知道BGP交换协议里面交换的是一组路径向量 1.4.2.3.3 BGP协议报文格式BGP是应用层协议 1.4.2.3.4 BGP协议特点1.4.2.3.5 BGP的四种报文1.4.2.4 三种路由协议的比较1.4.3 IP数据报IP数据报格式:
计算偏移量时记住是以0开始的就行,以每一篇最开始的除以8得到的数值就是偏移量 1.4.4 IPV41.4.4.1 ipv4地址全球唯一的表示某一个主机或者路由器接口的编码 ipv4地址分类: 解释一下 特殊ip地址: 私有ip地址: 1.4.4.2 子网划分和子网掩码1.4.4.2.1 子网划分和子网掩码总结一下,就是ip利用率太低造成对ip资源的浪费,所以需要子网划分提高ip利用率 注释: 1.4.4.2.2 子网掩码子网掩码就是用来和ip地址一起计算子网的地址的 这道题可以看出来,即使子网掩码不同,相同ip地址对应的子网ip地址也可能相同 1.4.4.2.3 使用子网时的分组转发注释: 1.4.4.3 无分类编制CIDR使用CIDR可以聚合网络 构成超网: 1.4.4.4 ARP协议1.4.4.5 DHCP协议1.4.4.6 ICMP协议1.4.4.6.1 ICMP协议概述ICMP,IGMP处于网络层和传输层之间,就是为了更好地转发ip数据报和提高交互成功的几率 1.4.4.6.2 ICMP差错报告报文ICMP差错报告报文如何与IP数据报结合: 五种ICMP差错报文: 其中源点抑制已废弃不用 四种不发送ICMP差错报文的情况: **注释:**组播是指由一点到多点,但不是无脑发到所有点,无脑发到所有点的是广播,组播有筛选条件 1.4.4.6.3 ICMP询问报文四种ICMP询问报文: 后两种是掩码地址请求和回答报文,路由器询问和通告报文,这两个已经废弃不再使用 1.4.4.6.4 ICMP的应用1.ping命令:测试两个主机之间连通性,使用了ICMP回送请求和回答报文 1.4.5 IPV61.4.5.1 为什么会有IPV6就是IPV4地址用完了,从根本上增加ip地址数目,之前讲的NAT和CIDR也只是在IPV4的基础上扩展了IPV4地址数目,治标不治本 1.4.5.2 IPV6地址表示形式1.4.5.3 IPV6数据报格式
1.4.5.4 IPV6基本地址类型
1.4.5.5 IPV6向IPV4过渡的政策如果是ipv6的数据报到了ipv4,就用ipv4重新封装,把ipv6数据报前面加上ipv4伪装成ipv4数据报继续传输,直至到了ipv6路由再解开ipv4伪装 1.4.6 IPV4和IPV6的区别1.4.7 IP组播(多播)1.4.7.1 IP数据报的三种传输方式单播只能一对一,广播必须一对全部,组播就可以是一对全部中的一部分 辅助理解:单播所占资源多 组播明显减轻了压力 1.4.7.2 IP组播地址1.4.7.3 硬件组播就像全F的mac地址代表广播一样,00-10-5E打头的MAC地址就代表组播 1.4.7.4 IGMP协议**注释:**IGMP只能知道有没有组播组成员,对有几个组播组成员,成员在哪个地方都不知道 1.4.7.5 组播路由选择协议有了这个,成员可以自行找到转发组,自行决定参加哪个组播(就像电视机选台一样) 1.4.8 集线器,网桥,路由表几层设备比较1.5 传输层重点1.5.1 传输层的寻址和端口端口号只用于计算机分辨本地进程,总共有2^16=65536种端口号,端口号有很多种,不能随便使用 1.5.2 常见的应用程序端口号1.5.3 传输层的两个协议1.5.4 UDP协议1.5.4.1 UDP概述注释: 1.5.4.2 UDP首部格式1.5.4.3 UDP的校验位构成这里的伪首部只是用来计算检验和的,计算完了就丢弃,可以见下UDP的校验方式 1.5.4.4 UDP校验方式总结一下步骤: 在接收端的时候: 1.5.5 TCP协议1.5.5.1 TCP协议的特点TCP必须要建立连接之后才可以进行数据交换,所以TCP是面向连接的 TCP传输数据是随机切割数据的 1.5.5.2 TCP报文段的首部注释: 窗口就是接收方告诉发送方,还有多少地方(缓存)可以放数据 1.5.5.3 TCP的六个控制位1.5.5.3.1 紧急位URGURG的特点就是让数据插队,URG=1的就会在缓存中被提前到第一个传输 1.5.5.3.2 确认位ACK1.5.5.3.3 推送位PSH就是接收端的URG,将PSH=1的数据尽快接收 1.5.5.3.4 复位RST1.5.5.3.5 同步位SYNA和B主机要建立连接,就A先发一个报文,其中SYN=1 1.5.5.3.6 终止位FIN1.5.5.4 TCP三次握手(建立连接)
注释: 第二段的意思是: 第三段的意思是: 注意一下,TCP是双向的,所以不存在绝对不变的发送方接收方,这里的两台主机都同时是发送方和接收方 TCP三次握手特定导致的SYN洪泛攻击: 1.5.5.5 TCP四次挥手(连接释放)
注释: 第二段的意思是: 第三段的意思是: 第四段的意思是: 为什么需要等待计时2MSL? 1.5.6 TCP可靠传输TCP是提供可靠传输,UDP这种本身还是不可靠传输的就再靠应用层解决了 1.5.6.1 序号就是TCP根据下方数据链路层的MTU(最大传输单元)来随即将数据切割成好几端并且进行编号 1.5.6.2 确认发送方每一次发送数据之后都需要接收方进行确认。 1.5.6.3 重传为什么要使用自适应算法?网络环境太复杂,路径又长又短,RTT设置短了照顾不了距离远的,RTT设置长了又导致网络利用率降低,所以使用RTTs 1.5.7 TCP流量控制简单来说就是接收方可以动态的发送信息告诉发送方发送窗口的大小。 计时器: 1.5.8 TCP拥塞控制流量控制是对单独一个来说的,拥塞控制是一群 1.5.8.1 拥塞控制四种算法:这里虽然是四种算法,但是通常是两两结合进行使用 1.5.8.1.1 慢开始和拥塞避免这里开始时以指数形式增长,ssthresh的意思是慢开始门限,代表从这个地方注入的报文段就比较多了,需要开始慢速增加了。 1.5.8.1.2 快重传和快恢复这里和上面的慢开始和拥塞避免的一开始步骤差不多,都是先指数增长再转变为线性增长。 1.6 应用层重点因为不同的网络应用之间需要有一个确定的通信规则 1.6.1 两种常用的网络应用模型1.6.1.1 客户/服务器模型(Client/Server)1.6.1.2 P2P模型(Peer-to-Peer)网络健壮性指的是P2P模型不容易坏掉,即使一个节点坏了也没问题,可以有其他节点代替 1.6.2 域名系统协议(DNS)DNS就是将打在地址栏的域名转化为IP地址的东西 1.6.2.1 域名域名就是www.xxx.com,当然这是最简单的一种 1.6.2.2 域名服务器(DNS服务器)DNS服务器有很多台,根据层次结构分为三层,根域名服务器,顶级域名服务器,权限域名服务器 1.6.2.3 域名解析过程1.6.2.3.1 递归查询在上图中 1.6.2.3.2 迭代查询在上图中 1.6.2.3.3 高速缓存为了减少多次查询同一个域名的资源浪费,本地域名服务器会存储最近使用的ip地址解析,下次再访问同一个域名就不需要这么多查询步骤了。同时这个高速缓存主机本身也有存储 1.6.3 文件传输协议(FTP,TFTP)TFTP是一个轻量的,比较容易实现的,面对小文件的,UDP的文件传输协议 1.6.3.1 FTP的服务端和客户端1.6.3.2 FTP的工作原理为什么有匿名登陆:对于一些公共服务器来说,增加验证阶段就是增加资源开销,减少验证阶段就可以节省资源来更好地服务 先注释一下这里的主进程被忽略掉了,只是没标在上面,不是没有啊 FTP的两种传输模式了解即可: 1.6.4 电子邮件1.6.4.1 电子邮件的格式1.6.4.2 电子邮件系统的组成结构注释: 邮件服务器的功能注释: 协议的功能注释: 1.6.4.3 简单邮件传送协议SMTP注意一下,这里STMP客户和服务器不是固定死的,可以也可以成为服务器,服务器也可以成为用户,由发送方和接收方决定,发送方就是客户,接收方就是服务器 注释:
都是应答信息 这里RCPT能有多条命令的原因是,电子邮件可以有多个收件人,就是群发,所以允许多个RCPT 再强调一下,这里服务器和客户端可以互换,视具体情况而定,发送方是客户端,接收方是服务器端 1.6.4.4 改进SMTP缺点的MIME协议MIME改善SMTP发送数据的缺点,是SMTP的功能性扩展 1.6.4.5 邮局协议POP3这里接收方是客户端,邮件服务器是服务器端 1.6.4.6 比较复杂的读取邮件的协议——IMAP协议1.6.4.7 基于万维网的电子邮件与之前的不同的地方就是,基于万维网的电子邮件的邮件服务器端可以不同 同时,发送邮件使用的SMTP/MIME和收邮件时的POP3/IMAP协议都换成了HTTP协议 1.6.5 万维网和HTTP协议1.6.5.1 万维网概述URL用来标识整个互联网当中的某一个资源(文字,视屏,音频等)的位置 HTTP用来将这些资源传送给用户 HTML帮助设计者来设计页面,让不同设计者设计的页面都可以在界面上显示 1.6.5.2 HTTP协议1.6.5.2.1 HTTP协议的过程这张图里讲了HTTP的具体过程 服务器通过TCP 80端口来监听HTTP请求 注意HTTP可以不一次性下载完页面的所有资源,可以只下载文本部分,其他音频视频等待用户下一步请求之后再传输 1.6.5.2.2 HTTP协议的特点1.6.5.2.3 HTTP的连接方式——持久连接和非持久连接非持久连接在TCP三次握手的第三次握手时发生,将HTTP请求作为第三次握手的数据部分发给服务器,服务器收到请求之后将HTTP相应报文传输给客户。耗时就是RTT*2+文档传输时间。 持久连接和非持久连接类似,都是在第三次握手时发生,将HTTP请求作为第三次握手的数据部分发给服务器,服务器收到请求之后将HTTP相应报文传输给客户。但是持久连接再需要请资源的时候就不需要建立新的TCP连接了 持久连接的两种方式——非流水线和流水线: 非流水线就是发一个,确认一个,才能再发下一个 1.6.5.2.4 HTTP的报文结构开始行用于区别请求报文和响应报文。可以明显的看到两者第一行的东西都不一样 请求报文的方法是指命令,就是对所请求的对象进行什么操作,如获取/删除等等 CRLF相当于我们程序里面的;,标识一行的结束。同时,在整个首部行结束时,为了区别首部行和实体主体还会有一行单独的CRLF 这里举了请求报文的例子,和一些常用的状态码 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/28 21:00:51- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |