31-IP、子网、子网掩码、网关、默认网关 IPIP 地址(Internet Protocol Address)是互联网上用于唯一标识和定位计算机设备的数字地址。它是在 TCP/IP 协议中使用的一种地址,用于在网络上标识设备和进行数据传输。 IP 地址是由 32 位(IPv4)或 128 位(IPv6)的二进制数字组成,通常以点分十进制的形式表示。IPv4 地址通常以四个十进制数表示,每个数的取值范围是0到255,例如:192. 2021-03-08 network #network
40-TCP 零、一些知识MTU、MSS MTU:一个网络包的最大长度,以太网中一般为 1500 字节。 MSS:除去 IP 和 TCP 头部之后,一个网络包所能容纳的 TCP 数据的最大长度。 RTT(Round-Trip Time):往返时延。表示从发送端发送数据开始,到发送端收到来自接收端的确认(接收端收到数据后便立即发送确认),总共经历的时延。 拥塞控制目前有非常多的 TCP 的拥塞控制协议,例如: 2021-03-08 network #network
40-TCP 状态流转图 各种状态的说明 CLOSED: 表示初始状态。 LISTEN: 表示服务器端的某个SOCKET处于监听状态并可以接受连接了。 SYN_SENT: 这个状态是client端状态,与SYN_RCVD遥想呼应,当客户端SOCKET执行CONNECT连接时,它首先发送SYN报文,因此也随即它会进入到了SYN_SENT状态,并等待服务端的发送三次握手中的第2个报文。SYN_SENT状态表示客户端已发送 2021-03-08 network #network
41-ARQ 自动重传请求(Automatic Repeat-reQuest,ARQ)自动重传请求(Automatic Repeat-reQuest,ARQ)是 OSI 模型中数据链路层和传输层的错误纠正协议之一。它通过使用确认和超时这两个机制,在不可靠服务的基础上实现可靠的信息传输。如果发送方在发送后一段时间之内没有收到确认信息(Acknowledgements,就是我们常说的 ACK),它通常会重新发送,直 2021-03-08 network #network
41-SACK 标准的 TCP 确认机制中,如果发送方发送了 0-1000 序号之间的数据,接收方收到了 0-100、300-1000,那么接收方只能向发送方确认 101,这时发送方会重传所有 101-1000 之间的数据,实际上这是不必要的,因为有可能仅仅是丢了一小段而已,但是在标准的 TCP 确认机制中,发送方无法感知这一事情,只能重传从 101 开始的所有数据。 为了优化这种情况,必须让发送方知道更多的接收 2021-03-08 network #network
70-HTTP HTTP 1.0 和 HTTP 1.1 的主要区别是什么HTTP/1.0 最早在网页中使用是在 1996 年,那个时候只是使用一些较为简单的网页上和网络请求上,HTTP/1.1 则在 1999 年才开始广泛应用于现在的各大浏览器网络请求中,同时 HTTP1.1 也是当前使用最为广泛的 HTTP 协议。主要区别主要体现在: 长连接: HTTP/1.0 中,默认使用短 2021-03-08 HTTP #HTTP
70-HTTP POST 请求参数形式 简介HTTP 协议是以 ASCII 码 传输,建立在 TCP/IP 协议之上的应用层规范。规范把 HTTP 请求分为三个部分:状态行、请求头、消息主体。 协议规定 POST 提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据必须 使用什么编码方式 。实际上,开发者完全可以自己决定消息主体的格式,只要最后发送的 HTTP 请求满足上面的格式就可以。 数据发送出去, 2021-03-08 HTTP #HTTP
70-HTTP 请求方式 根据 HTTP 标准,HTTP 请求可以使用多种请求方法 HTTP1.0 定义了三种请求方法:GET、POST 和 HEAD 方法。 HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。 1、GET 【获取资源】GET 本质就是发送一个请求来取得服务器上的某一资源。资源通过一组 HTTP 头和呈现数据(如 HTML 文 2021-03-08 HTTP #HTTP
71-HTTPS 这篇文章写的不错,转载一下 https://zhuanlan.zhihu.com/p/43789231 为什么需要加密?因为 http 的内容是明文传输的,明文数据会经过中间代理服务器、路由器、wifi热点、通信服务运营商等多个物理节点,如果信息在传输过程中被劫持,传输的内容就完全暴露了。劫持者还可以篡改传输的信息且不被双方察觉,这就是中间人攻击。所以我们才需要对信息进行加密。最容易理解的就是对称 2021-03-08 HTTP #HTTP
71-SSL TLS 握手协议 1、TLS/SSL 的前世今生SSL(Secure Sockets Layer)最初由 Netscape 定义, 分别有 SSLv2 和 SSLv3 两个版本(SSLv1未曾对外发布),在 SSLv3 之后 SSL 重命名为 TLS。 TLS(Transport Layer Security)版本从 TLSv1.0 开始,TLSv1.0 是在 SSLv3 的基础上升级而来。 协议 2021-03-08 HTTP #HTTP
80-00 IO 模型 简介 IO 模型介绍传统的网络 IO 模型包括五种: [阻塞IO(blocking IO)](#阻塞IO(blocking IO)) [非阻塞IO(non-blocking IO)](#非阻塞IO(non-blocking IO)) [多路复用IO(IO multiplexing)](#多路复用IO(IO multiplexing)) 信号驱动IO模型 [异步IO(Asynchronous I 2021-03-08 network #network
80-30 IO 模型-多路复用 基础 前提在介绍 select、poll、epoll 前,有必要说说 linux(2.6+) 内核的事件 wakeup callback 机制,这是 IO 多路复用机制存在的本质。 Linux 通过 socket 睡眠队列来管理所有等待 socket 的某个事件的 process,同时通过 wakeup 机制来异步唤醒整个睡眠队列上等待事件的 process,通知 process 相关事件发生。 通常情 2021-03-08 network #network
80-31 IO 模型-多路复用 select select 函数该函数准许进程指示内核等待多个事件中的任何一个发送,并只在有一个或多个事件发生或经历一段指定的时间后才唤醒。函数原型如下: 123456789101112131415161718192021222324252627282930313233343536#include <sys/select.h>#include <sys/time.h>int select 2021-03-08 network #network
80-32 IO 模型-多路复用 poll 简介poll 的机制与 select 类似,与 select 在本质上没有多大差别,管理多个描述符也是进行轮询,根据描述符的状态进行处理,但是 poll 没有最大文件描述符数量的限制。poll 和 select 同样存在一个缺点就是,包含大量文件描述符的数组被整体复制于用户态和内核的地址空间之间,而不论这些文件描述符是否就绪,它的开销随着文件描述符数量的增加而线性增大。 poll 函数函数格式如下 2021-03-08 network #network
80-33 IO 模型-多路复用 epoll 背景epoll 是在 2.6 内核中提出的,是之前的 select 和 poll 的增强版本。相对于 select 和 poll 来说,epoll 更加灵活,没有描述符限制。epoll 使用一个文件描述符管理多个描述符,将用户关系的文件描述符的事件存放到内核的一个事件表中,这样在用户空间和内核空间的 copy 只需一次。 epoll 接口epoll 操作过程需要三个接口,分别如下: 1234567 2021-03-08 network #network
80-33 IO 模型-多路复用 epoll 2 原文链接:https://zhuanlan.zhihu.com/p/63179839 一、从网卡接收数据说起下图是一个典型的计算机结构图,计算机由CPU、存储器(内存)、网络接口等部件组成。了解epoll本质的第一步,要从硬件的角度看计算机怎样接收网络数据。 下图展示了网卡接收数据的过程。在①阶段,网卡收到网线传来的数据;经过②阶段的硬件电路的传输;最终将数据写入到内存中的某个地址上(③ 2021-03-08 network #network
A 记录与 CNAME 记录 解析域名分为两种: 将一个域名解析为一个IP地址,这个就是 A 记录 将一个域名解析为另外一个域名,这个就是 CNAME 记录 A 记录与 CNAME 记录A 记录和 CNAME 记录是 DNS 中两种常见的资源记录类型,它们在域名解析过程中具有不同的作用。 A 记录 (Address Record)。A 记录用于将域名解析为IPv4地址。例如,将域名 www.example.com 解析为 2021-03-08 network #network
CDN CDN(Content Delivery Network,内容分发网络)CDN 是一种网络架构,旨在提高用户对互联网上内容的访问速度和性能。CDN 通过在全球各地部署大量的服务器节点,将内容缓存到离用户更近的服务器上,从而减少内容传输的距离,提高访问速度和响应时间。 CDN的工作原理是:将内容(如网页、图片、视频等)缓存到离用户最近的服务器节点上,当用户请求访问这些内容时,CDN 会根据用户的地理 2021-03-08 network #network
Flask SQLAlchemy 使用 session.commit() 处理异常回滚 最为原始的try/except办法,多次插入数据就要写多次,很麻烦,使用python原生的contextlib.contextmanager简化代码! 123456789 try: user_db = User(email=self.email, nickname=self.nickname, password=self.password) db.session.add(us 2021-03-08 Python > Flask #Python #Flask
Flink 上传的包 先看一张图片 上传 jar 包两个重要的配置 web.tmpdir:上传 jar 包临时目录,重启后上传包就会被删除。。格式:java.io.tmpdir + “flink-web-” + UUID web.upload.dir: jar 包上传目录。flink 上传 jar 包逻辑:从配置文件中找 UPLOAD_DIR,若是为 null 就找 TMP_DIR 目录来看成 jar 上传的路径 2021-03-08 Flink #Flink