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 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 网络原理基础知识 -> 正文阅读

[网络协议]网络原理基础知识

  • OSI七层模型

    1. 应用层

    2. 表示层

    3. 会话层

    4. 传输层

    5. 网络层

    6. 数据链路层

    7. 物理层

  • TCP/IP五层协议栈

    1. 物理层

    2. 数据链路层

    3. 网络层

    4. 传输层

      UDP:无连接,不可靠,面向数据报

      TCP:有连接,可靠,面向字节流

    5. 应用层

  • 传输层数据一般叫做数据段

  • 网络层数据一般叫做数据报

  • 数据链路层数据一般叫做数据帧

传输层

UDP

  • 协议段格式:

    ?

  • 组成:2字节源端口,2字节目的端口,2字节数据报长度,2字节校验和

  • 优点:传输速度快,支持“广播”

  • 缺点:无重传机制,当传输过程发生错误时无法得知传输成功与否;

长度64kb,不适合传输大文件

TCP

确认应答机制+超时重传(可靠性)

  • 协议段格式:

    ?

  • 确认应答机制:发送数据后,接收方返回报文包含确认序号ACK,ACK确保了ACK之前的数据接收成功,发送方接下来发送的序号从ACK开始。

  • 超时重传:发送数据后等待一段时间,若没有接收ACK则会重传,可能存在发送方丢包以及ACK丢包问题,若ACK丢包则会发送两次数据,这时就需要去重机制,接收方有缓冲池,根据发送数据的序号判断是否去重。等待时间是不确定的且逐渐增大的,当等待一定时间后就会认为网络等问题,断开连接。

连接管理

  • TCP建立连接,3次握手

    • 本质:确认通信双方的发送能力和接受能力正常

    • SYN:同步报文段

  • TCP断开连接,4次挥手

    • FIN:结束报文段

    • 接收方返回ACK与FIN时不一定合并:

      1. 不合并的理由:发送ACK是操作系统内核的行为。在收到FIN时发送ACK。发送FIN是应用程序的行为,在执行代码中的“close()”才会发送FIN。

      2. 合并的理由:如果close()能够很快地被调用,即ACK和FIN间隔较短时会触发TCP的“延时应答+捎带应答”机制。

TCP常见的“状态”

  1. ESTABLISHED :连接成功,可以进行后续通信。

  2. LISTIN:服务器端的状态:允许客户端随时建立连接。

  3. CLOSE_WAIT:断开连接时服务器端的一个中间状态。存在于接收FIN,发送ACK,发送FIN的时间点。

  4. TIME_WAIT:断开连接时主动发起的客户端的一个状态,防止最后一个ACK丢包。发送ACK后等待一段时间,若服务器端发送FIN则ACK丢包,继续发送ACK。TIME_WAIT=2MSL,MSL为端与端传输数据的最大时间间隔。

滑动窗口

  • 在确保TCP可靠性的同时,也要保证高效率

  • 窗口范围内的数据即发送的的数据也是等待ACK响应的数据,当返回一个ACK时表示,等待响应的数据也会改变,同时发送新的数据。

  • 若ACK响应丢包,可以通过后续到达的ACK响应来确认,如:ACK=1001丢包,则第二个ACK=2001到达时则可以确认1-2000数据发送成功。

  • 若数据包丢包,则服务器端后续发送给客户端的数据报中ACK 为成功传输数据包的ACK,如1-1000成功发送,1001-2000丢包则接收2001-3000的数据包返回的依然是ACK=1001,多次返回1001后,客户端重新发送1001-2000数据包。以此类推。

流量控制

  1. 目的:为了使发送的速率和接收方的速率可能一致,提高数据传输的效率

  2. 方法:发送方发送数据后,接收方返回一个ACK以及一个“缓冲区空余空间”。根据这个大小来决定窗口的大小。若无空余空间,则每隔一段时间发送方发送试探报文来获取一个ACK和缓冲区空余空间。

  3. 缓冲区空余空间存储在TCP报头的16位窗口大小的字段中来确定窗口大小。

拥塞控制

?

发送方发送的初始窗口为一个较小的窗口,若无丢包行为则逐渐增大,若丢包则减小窗口大小,循环此过程。

先指数增加,到达阈值后线性增加。网络堵塞后,窗口大小重新定为慢开始的大小,阈值为堵塞窗口大小的一般。

延迟应答

  • 接收方收到数据后等待一段时间,可能有更多的缓冲区空余空间,提高传输效率。

  • 每隔几个包延迟一次或者每隔一段时间延迟一次。

捎带应答

  • 基础:延迟应答

  • 作用:减少了传输数据包的个数,降低传输成本,提高传输效率

面向字节流

  • 应用程序可以以字节为单位发送/接收数据。

  • 核心在于TCP的“缓冲区”。

  • 粘包问题:接收方以字节为单位读取数据后存放进接受缓冲区,与此同时,接受了多条数据,无法区分字节属于哪个数据。

    显式的指定包的长度;显式的指定包的分隔符。必须具备一种或两种。

TCP异常处理

  • RST:复位报文段

  • 进程终止:会释放文件的描述符,仍可以发送FIN。

  • 机器重启:正常重启的情况下和进程终止一样

  • 断电断网:

    接受方断电断网时,发送方没有收到ACK确认会触发超时重传,达到一定次数是就会重置连接。若重置连接没有响应就会释放连接。

    发送方断电断网时,TCP内置一个“保活机制”,接收方每隔一段时间会发送一个短小的数据,期待回应,多次尝试后就会重置连接。若重置连接没有响应就会释放连接。

网络层

IP协议

协议头格式

?

  • 版本:常用IPV4,IPV6

  • 4位首部长度能表示4*15

  • TOS:切换IP协议模式,只有四位能用,分别表示:最小延时,最大吞吐量,最高可靠性,最小成本,其中四者是相互冲突的。

  • 16位总长度:不同于UDP只支持64kb,IP协议支持拆包和组包.

  • 16位标识:当一个IP数据报触发分包机制,分成多个包时,拥有同一个标识。

  • 3位标志:识别这个包是不是最后一个包。

  • 13位片偏移:区分出若干个包,谁在前,谁在后。

  • 8位生存时间:有一个初始生存时间,每经过一个设备转发就会-1,到0时就认为不会到达目的端,将其丢弃。

  • 8位协议:明确指出是传输层的哪个协议。

  • 16位首部检验和:验证首部是否正确。

  • 32位源IP地址:发送方地址

  • 32位目的IP地址:接收方地址

网段划分

  • IP地址分为两部分:

    网络号:局域网标识

    主机号:区分同一局域网的不同主机。

  • 划分IP地址:

    1. 传统网络划分:

      ?

    2. 通过子网掩码来划分:子网掩码与IP地址相与操作得到网络号,甚于位为主机号。

特殊的IP地址:

  • 主机地址全为0,成为网络号,代表该局域网

  • 主机地址全为1,成为广播地址,将信息传输给该局域网。

  • 127.*用于本机环回测试。

IPV4地址枯竭

  • 动态划分IP地址:当一台设备关闭时回收IP地址,请求时在重新分配。

  • NAT机制:将源IP地址替换,使用一个外网IP替代多个内网IP,多个内网IP通过端口号来进行区分。

  • IPV6:IPV4的升级版,保证地址绝对够用,但与IPV4不兼容。

路由选择

  • 通过路由表查询IP地址,若查询到则直接从指定网络接口进行发送。如果没有查询到则会从默认接口发送,一般为WAN口,即上一级路由器。

数据链路层

  • 只关注相邻节点之间的传输情况。

以太网(协议)

?

  • 既包含了数据链路层,也包含了物理层

  • 以太网的网线必须使用双绞线

  • 此处地址为MAC地址

  • 类型

    1. 0800:普通数据帧

    2. 0806:ARP

    3. 8035:RARP

  • 数据部分为一个完整的IP数据报,数据长度存在最大值

  • CRC:校验和,验证数据是否正确。

MAC地址

  • 即物理地址,和主机的网卡绑定,唯一的,不能修改的。

  • IP地址立足于全局,用于网络规划

  • MAC地址立足于局域网,专注于相邻节点的通信

  • 将IP数据报加入帧头和帧尾形成以太网数据帧

ARP协议

  • 建立IP地址与MAC地址之间的映射关系。

  • ARP每隔一段时间就会对当前局域网进行广播,把ARP请求发送到局域网内每个设备,设备会发送一个ARP响应,其中包括设备的IP地址和MAC地址,路由器会对其进行一一对应并存储。

DNS应用层协议

  • 域名解析系统

  • 查询网页时,IP地址难以记忆,用域名来进行查询方便很多。DNS将域名转换为IP地址。

  • 用户通过域名查询网站时都要访问DNS服务器,此时服务器承担很大的压力,一般有两种处理方法

    1. 缓存

      访问过后存储到主机

    2. 分布式

      每个主机访问DNS时,就近访问DNS服务器

      根据域名来分级查询,使每个根域名服务器不必装载过多的域名

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

  • 后端的角度

    1. 网络传输过程(DNS域名解析,HTTP协议格式,TCP建立连接和传输,IP数据报的转发过程,数据链路层转发过程)

    2. 应用程序(Tomcat根据请求获取Servlet代码),执行代码,根据代码构建响应,将响应返回给客户端

    3. 服务器整体系统流程(分布式架构的基本面)

  • 前段的角度

    1. 网络传输过程(DNS域名解析,HTTP协议格式,TCP建立连接和传输,IP数据报的转发过程,数据链路层转发过程)

    2. 浏览器如何处理用户的操作(浏览器如何获取输入的字符串,如何构建一个HTTP,如何发送出去)

    3. 浏览器如何处理服务器的相应数据(如浏览器如何将HTML渲染成页面效果)

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-14 14:29:09  更:2021-08-14 14:31:44 
 
开发: 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年11日历 -2024/11/25 19:42:55-

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