IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 思维导图模式 -- 深度理解及复习 网络 知识 -> 正文阅读

[网络协议]思维导图模式 -- 深度理解及复习 网络 知识

思维导图

在这里插入图片描述

基本概念

协议

提前的一种约定就叫作协议。(用于保证网络传输双方能够正常通讯的)

OIS七层

应用层:针对特定应用的协议
表示层:设备固有的数据格式和网络标准格式的转换
会话层:用来关闭通讯双方之间的会话
传输层:保证通讯双方的数据能够正常传输
网络层:地址的管理和路由选择
数据链路层:确保两个相邻节点间的数据传递
物理层:将数字信号转换成光电信号

TCP / IP

应用层:HTTP(80)、FTP(21)、SSH(22)、TELNET(23)、DNS(53)
传输层:TCP、UDP
网络层:IP
数据链路层:MAC

数据传输的 5 个要素

1.源地址 IP
2.源地址端口号
3.目的地 IP
4.目的地端口号
5.协议类型

数据传输过程

封装:从应用层一步步到物理层的过程【装快递】
分用:从物理成再到应用层的过程【拆快递】

端口号

作用

找到应用程序

端口号与程序关系

一对一或多对一

端口号分类

知名端口号: 0-1023
普通端口号:1024-65535

IP vs MAC

IP:32位(互联网协议地址,不可修改),MAC:48位(网卡地址,出厂全球唯一,但可修改)
IP冲突:上不了网;MAC冲突:如果不在同一内网,无影响;在同一内网,间歇性收到消息。

UDP

包含信息

16位源端口号、16位目的端口号、16位UDP长度、16位效验和、数据

特点

UDP:无连接、不可靠、面向数据报、无发送缓冲区,有接收缓冲区

存储大小

16位的长度(数据+头部),UDP的最大包必须是16位可以表示的,理论可以传输的大小为64K

如果UDP编程的数据包大于64K的解决方案

  1. 在应用层进行数据包的拆分和组合(程序员定义)
  2. 不进行手动处理,交给TCP/IP协议去处理,他会在网络层进行分包和组包

基于UDP的协议

NFS: 网络文件系统
TFTP: 简单文件传输协议
DHCP: 动态主机配置协议
BOOTP: 启动协议(用于无盘设备启动)
DNS: 域名解析协议

TCP

包含信息

源/目的端口号: 表示数据是从哪个进程来, 到哪个进程去

32位序号/32位确认号:标识唯一TCP

4位TCP报头长度

6位标志位:
URG:表示紧急消息;
ACK:确认应答表示;
PSH:用来表示让接收端将消息从缓冲区取走;
RST:复位标识符;
SYN:同步标识符。TCP初次连接;
FIN:结束表示。TCP断开连接

16位窗口大小:它记录的是接收缓冲区窗口的大小,这个是动态改变的

16位校验和: 用来确定当前数据是否是正确的

16位紧急指针: 标识哪部分数据是紧急数据;

40字节头部选项

TCP 10 大特性

1.确认应答

(保障稳定性最关键的措施)

2.超时重传

策略:
a)动态的重传频率,每次重复的时间间隔是上一次的一倍
b)当重试一定次数之后就会停止重传

3.连接管理

初始状态:
双方都为 closed (关闭)状态
启动服务器后,服务器变为 listen (监听)状态

三次握手:
客户端syn_send(发送) —— SYN(同步标识符) —— 服务器端syn_rcvd(recivied接收)
服务器端 syn_rcvd(recivied接收) —— SYN(同步标识符) + ACK(确认应答) —— 客户端 established(成立)
客户端 established(成立) —— ACK(确认应答) —— 服务器端 established(成立)

数据传输:
客户端 —— data数据 —— 服务器端
服务器端 —— ACK(确认应答) —— 客户端

四次挥手:
客户端 fin_wait_1 (等待结束1) —— FIN(结束标识符) —— 服务器端 close_wait(等待关闭)
服务器端 close_wait(等待关闭) —— ACK(确认应答) —— 客户端 fin_wait_2 (等待结束2)
服务器端 last_ack(最后应答) —— FIN(结束标识符) —— 客户端 time_wait (等待时间)
客户端 time_wait (等待时间) —— ACK(确认应答) —— 服务器端 closed(关闭)

结束状态:
客户端关闭 closed(关闭)

经典面试题
TIME_WAIT -> CLOSE 为什么要经历两个MSL(最大生存时间)?
2MSL = ACK最大超时连接(1MSL) + 对方发给他消息的一个最大等待时间(1MSL)
(1)等ACK
(2)失败后,再发一个消息,再等重发的FIN

如果发现服务器端存在大量的CLOSE_WAIT说明程序有什么问题?
程序有BUG,程序中没有调用close()方法主动去关闭连接

3次挥手行不行?
有可能可以,如果服务器端的缓冲区内没有内容,那么可以通过捎带应答,使2,3步合并,从而只需3步就断开连接。

两次握手行不行?
不行,因为TCP是双全攻的,连接需要证明发送端的收发能力以及接收端的收发能力,两次握手不足以证明双方的收发能力

4. 滑动窗口

特点:一次发一批一批,保证数据高效的传递

快重传:当前面的数据被正常补齐之后,服务器端给客户端响应的ack都是最大的ack值

滑动窗口是越大越好吗?
太大的话,数据传输吞吐率较大,需要传递内容多,如果接收能力不强,会导致接收缓冲区爆满,从而大量信息舍弃,触发大量超时重传,形成恶循环。

5. 流量控制

特点:根据接收端的处理能力(接收缓冲区剩余空间), 来决定发送端的发送速度

机制:当接收缓冲区大小为 0 时,停止消息发送,启动一个检测包来定时检测接收缓冲区剩余空间大小

6. 拥塞控制

特点:以当前网络环境的拥塞程度为导向,来决定发送端发送速度

慢开始:发包从1开始,以默认值16为临界值,当小于此值的时候,以指数增加的方式发包,当等于这个此值就有线性增长的方式发包,一直到有大量丢包的请求(发包已经到当前时间段的极致);这个时候就会:将发包值置为1,再将临界值设置为最大发包值的一半,继续重复此过程,一直循环此过程

7. 延迟应答

特点:等待缓冲区的内容多被处理一些的时候,再给服务器应答剩余缓冲区大小,以此来提升性能

策略:
a)每隔一定次数之后延迟应答一次
b)每个一段时间延迟一次

注意事项:延迟应答的时间不能超过超时重传的时间

8. 捎带应答

特点:如果有大于一个消息需要同时输送,那么可以搭顺风车,一起组成一个包后进行传输

这让三次挥手有可能,如果缓冲区没有内容的话,服务器端要发送的 ack 和 fin 可以合并传输给客户端

9. 面向数据流

问题:粘包/半包

解决方案:

  1. 使用固定大小的数据包(造成不必要的网络带宽压力)
  2. 使用结束符来明确消息边界的方式来解决。例如:/n

10. TCP 异常处理

  • 有缓冲时间的异常:关机【和正常的关闭是一样的】
  • 没有缓冲时间的异常:断电、断网【TCP 健康检测机制】

基于TCP应用层协议

HTTP:简单的请求-响应协议
HTTPS:以安全为目标的 HTTP 通道
SSH:安全外壳协议
Telnet:Internet远程登录服务的标准协议
FTP:文件传输协议
SMTP:电子邮件传输的协议

TCP vs UDP

  1. UDP是无连接的;TCP是有连接的
  2. UDP是不稳定的;TCP是稳定的
  3. UDP是面向数据报的;TCP是面向数据流的
  4. UDP没有发送缓冲区;TCP有发送缓冲区
  5. UDP是以高效性著称;TCP是以稳定性著称
  6. 使用的场景不同
    如果对稳定性要求比较高,那么应该使用TCP
    如果对消息丢失不敏感,要求性能比较高,那么可以考虑使用UDP

IP

协议内容

4位版本号、4位头部长度、8位服务类型、16位总长度、3位标志字段、13位分片偏移、8位生存时间SSL

网段划分

最早划分 A-E 造成了很多 IP 浪费,后面使用 IP 地址+ 子网掩码按位与得到 网络号

内网网段

  • 10.*:前8位是网络号,共 16,777,216 个地址
  • 172.16. 到 172.31.,前12位是网络号,共1,048,517 个地址
  • 192.168,*, 前16位是网络号,共65,536个地址,包含再这个范围中的,都成为私有IP,其余的则称为全局IP(或公网IP)
  • 127.0.0.1:本地回环地址

数据链路层

MAC地址 vs IP地址

IP地址描述的是路途总体的 起点 和 终点;
MAC地址描述的是路途上的每一个区间的起点和终点

MTU

大传输单元

MTU 对 UDP 的影响:
1500 - UDP(固定头部信息)8字节 - IP协议头部20字节 = 1472 字节

MTU对于TCP协议的影响:
MSS:TCP最大报文长度
MTU = IP Header + TCP Header + DAT(MSS)

ARP协议

定义:ARP不是一个单纯的数据链路层的协议, 而是一个介于数据链路层和网络层之间的协议

作用:ARP协议建立了主机 IP地址 和 MAC地址 的映射关系

浏览器中输入url后, 发生的事情

  1. 浏览器会先检查你的url地址的正确性
  2. 浏览器会检查这个url有没有缓存,如果有缓存就取缓存
  3. DNS域名解析,拿到IP进行访问
  4. TCP 3次握手(TCP握手的内容传递和状态变化)
  5. HTTP 协议 Resquest 内容发送 (首行,head,空行,body)
  6. 服务器接收到请求,并且进行相应的业务处理
  7. 服务器端将结果返回给客户端
  8. 浏览器拿到返回的结果并调用浏览器的内核,实现前端页面的渲染
  9. TCP 的4次挥手
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-07-04 20:05:15  更:2021-07-04 20:05:54 
 
开发: 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年4日历 -2024/4/25 3:30:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码