图解网络读书笔记
文章平均质量分 83
计算机网络入门
Jackeys007
开朗、活泼,一个逗比的程序员
展开
-
你知道如何优化TCP吗?
TCP内核参数调优一、TCP三次握手优化(建立连接)客户端优化SYN_SENT状态的优化服务端优化SYN_RCV 状态的优化全队列溢出优化TCP Fast Open二、TCP四次挥手性能提升(断开连接)关闭连接的方式close函数与shutdown函数的区别主动方的优化FIN_WAIT1状态的优化FIN_WAIT2状态的优化一、TCP三次握手优化(建立连接)客户端优化SYN_SENT状态的优化客户端作为主动发起连接方,首先它将发送SYN 包,于是客户端的连接就会处于SYN_SENT状态。客户端在等待原创 2021-10-24 20:24:56 · 1223 阅读 · 0 评论 -
你知道TCP的半连接与全连接队列吗?
TCP的半连接与全连接队列TCP连接队列半连接队列全连接队列TCP全连接队列策略设置TCP全连接队列TCP半队列溢出最大半队列连接数服务端处于SYN_RECV状态的最大个数syncookiesTCP连接队列半连接队列服务端收到客户端发起的 SYN 请求后,内核会把该连接存储到半连接队列(SYN队列),并向客户端响应 SYN+ACK。全连接队列服务端收到第三次握手的ACK后,内核会把连接从半连接队列移除,然后创建新的完全的连接,并将其添加到accept队列,等待进程调用accept 函数时把连接取出原创 2021-10-22 15:18:44 · 1732 阅读 · 1 评论 -
TCP握手丢包分析与快速建立连接
TCP握手丢包分析与快速建立连接一、TCP握手丢包分析TCP第一次握手SYN丢包TCP第二次握手SYN + ACK丢包TCP第三次握手ACK丢包一、TCP握手丢包分析TCP第一次握手SYN丢包当客户端发起的TCP第⼀次握手SYN 包,在超时时间内没收到服务端的ACK,就会在超时重传SYN数据包,每次超时重传的RTO是翻倍上涨的,直到 SYN 包的重传次数到达 tcp_syn_retries值后,客户端不再发送 SYN 包。TCP第二次握手SYN + ACK丢包当TCP第⼆次握⼿ SYN、ACK 包原创 2021-10-21 20:42:01 · 516 阅读 · 0 评论 -
你知道TCP的重传机制、滑动窗口、流量控制、拥塞控制吗?
TCP的四大机制一、重传机制超时重传TCP以下两种情况会发生超时重传超时时间的设置连续发生超时重传快速重传SACKDuplicate SACKD-SACK的好处二、滑动窗口三、流量控制四、拥塞控制一、重传机制TCP针对数据包丢失的情况,会用重传机制解决。超时重传超时重传:就是在发送数据时,设定⼀个定时器,当超过指定的时间后,没有收到对方的ACK确认应答报文,就会重发该数据。TCP以下两种情况会发生超时重传数据包丢失ACK应答报文丢失超时时间的设置RTT:包的往返时间。超时重传时间是原创 2021-10-21 20:01:57 · 1982 阅读 · 1 评论 -
Socket编程
Socket编程服务端和客户端初始化socket,得到文件描述符服务端调用bind ,将绑定在IP地址和端口服务端调用listen ,进行监听服务端调用accept ,等待客户端连接(服务端调用accept时,连接成功了会返回⼀个已完成连接的socket,后续用来传输数据)客户端调用connect ,向服务器端的地址和端口发起连接请求服务端accept返回用于传输的socket的文件描述符客户端调用write写入数据服务端调用read读取数据客户端断开连接时,会调用close ,那么服原创 2021-10-21 20:00:46 · 90 阅读 · 0 评论 -
TCP四次挥手
TCP四次挥手一、TCP四次挥手第一次挥手第二次挥手第三次挥手第四次挥手二、四次回收的原因三、TIME_WAIT状态详解TIME_WAIT=2MSL的原因TIME_WAIT的作用TIME_WAIT没有等待时间或者时间太短导致的问题过多的TIME_WAIT导致的问题优化TIME_WAIT四、已经建立连接,客户端出现故障TCP保活机制保活机制需考虑的问题一、TCP四次挥手第一次挥手客户端打算关闭连接,此时会将TCP首部的FIN标志位标为1,将此报文发送给服务端,发送之后,客户端进入FIN_WAIT_1状态原创 2021-10-19 21:08:19 · 291 阅读 · 0 评论 -
TCP的三次握手
TCP连接建立一、TCP的三次握手第一次握手第二次握手第三次握手二、为什么是三次握手?不是两次?四次?避免历史连接同步双方的初始序列号避免资源浪费三、为什么客户端ISN和服务端ISN不相同?四、初始化序列号ISN的生成方式五、IP层会分片,为什么TCP层还需要MSSMTU与MSS原因分析六、SYN攻击SYN攻击应对方法通过修改 Linux 内核参数,控制队列大小和当队列满时应做什么处理syncookie一、TCP的三次握手第一次握手客户端会随机初始化序号(client_isn),将此序号置于TCP首部原创 2021-10-17 15:52:05 · 581 阅读 · 0 评论 -
TCP的基本认识
TCP的基本认识一、TCP的头部格式二、TCP的特点三、TCP连接确定唯一的一个TCP连接TCP的最大连接数四、UDP和TCP的区别以及应用场景UDP和TCP的区别UDP和TCP的应用场景一、TCP的头部格式序列号:在建立连接时由计算机生成的随机数作为其初始值,通过 SYN 包传给接收端主机,每发送⼀次数据,就累加⼀次该数据字节数的大小。用来解决网络包乱序问题。确认应答号:指下⼀次期望收到的数据的序列号,发送端收到这个确认应答以后可以认为在这个序号以前的数据都已经被正常接收。用来解决不丢包的问题。原创 2021-10-17 11:35:28 · 884 阅读 · 0 评论 -
你知道HTTP3吗?
HTTP3一、HTTP2的问题对头阻塞TCP与TLS的握手时延迟网络迁移需要重新连接二、QUIC协议的特点无队头阻塞更快的连接建立连接迁移三、HTTP3协议HTTP2与HTTP3的帧格式头部算法一、HTTP2的问题对头阻塞HTTP/2 多个请求是跑在⼀个 TCP 连接中的,那么当 TCP 丢包时,整个 TCP 都要等待重传,那么就会阻塞该 TCP 连接中的所有请求。由于内核中的TCP 数据不是连续的,于是接受方的应用层就无法从内核中读取到,只有等到丢包的数据重传后,接收方的应用层才可以从内核中读取到数原创 2021-10-15 16:18:29 · 371 阅读 · 0 评论 -
HTTP2牛逼在哪儿?
HTTP2的过人之处一、HTTP1.1的高延迟性能问题二、HTTP2的针对HTTP1.1的优化兼容老版本头部压缩HTTP1.1存在的问题静态表编码概述过程动态表编码概述过程使用前提不足一、HTTP1.1的高延迟性能问题HTTP头部巨大且重复对头阻塞问题不支持服务器推送消息并发连接有限二、HTTP2的针对HTTP1.1的优化兼容老版本HTTP没有在URI里引入新的协议名,仍然用http://表示明文协议,用https://表示加密协议, 于是只需要浏览器和服务器在背后自动升级协议,这样可原创 2021-10-09 17:01:38 · 287 阅读 · 0 评论 -
你知道HTTPS如何优化吗?
优化HTTPS一、性能损耗分析二、硬件优化三、软件优化三、协议优化密钥算法优化TLS升级四、证书优化证书传输优化证书验证优化CRL(证书吊销列表)OCSP(在线证书状态协议)OCSP Stapling五、会话复用SessionIDSession TicketSessionID和SessionTicket的缺点重放攻击一、性能损耗分析性能损耗主要从两方面着手TLS协议握手过程握手后的对称加密报文传输针对握手后的对称加密报文传输,主流的AES、ChaCha20性能都是不错的,所以这个好解决。那么原创 2021-10-06 22:57:17 · 527 阅读 · 0 评论 -
你知道HTTPS ECDHE握手吗?
HTTPS ECDHE握手解析一、DH算法的原理数学基础DH算法过程DH算法分类static DH算法(已经废弃了)DHE算法二、ECDHE算法ECDHE概述ECDHE密钥交换过程三、ECDHE握手过程第一次握手第二次握手一、DH算法的原理数学基础DH算法是非对称加密算法,因此它可以作为密钥交换,算法的核心是离散对数。特别是当模数P是⼀个很大的质数,即使知道底数 a 和真数 b ,在现有的计算机的计算水平是几乎无法算出离散对数的,这就是 DH 算法的数学基础。DH算法过程假设小红和小明使用D原创 2021-10-06 21:57:46 · 389 阅读 · 0 评论 -
你知道HTTPS的RSA握手过程吗?
RSA握手解析一、RSA握手过程TLS第一次握手TLS第二次握手TLS第三次握手TLS第四次握手二、密码套件解析三、数字证书数字证书的构成CA颁发证书和客户端验证证书CA颁发证书客户端验证证书四、RSA算法的缺陷一、RSA握手过程TLS第一次握手ClientHello:客户端发送一个消息TLS版本号支持的密码套件列表随机数TLS第二次握手ServerHello:服务器发送一个消息确认TLS的版本号密码套件随机数ServerCertificate:服务器发送数字证书Sever原创 2021-10-06 17:32:54 · 1068 阅读 · 0 评论 -
你知道HTTP1.1、HTTP2、HTTP3的演变吗?
HTTP/1.1、HTTP/2、HTTP/3演变一、HTTP1.1比较HTTP1.0提升的地方HTTP1.1的性能瓶颈二、HTTP2的优化头部压缩二进制格式数据流多路复用服务器推送三、针对HTTP2的缺陷,HTTP做的优化HTTP2的缺陷优化一、HTTP1.1比较HTTP1.0提升的地方使用长连接改善了短连接造成的性能消耗支持管道网络传输,减少整体的响应时间HTTP1.1的性能瓶颈请求头未经压缩就发送,只能压缩Body的部分发送冗长的首部。每次互相发送相同的首部造成浪费服务器是按请求的顺原创 2021-10-03 15:10:37 · 1307 阅读 · 0 评论 -
你知道HTTP与HTTPS之间区别吗?
HTTP与HTTPS一、HTTP与HTTPS的区别二、HTTPS解决了HTTP的三大问题混合加密摘要算法数字证书三、SSL/TLS建立流程基本流程详细流程1.ClientHello2.ServerHello3.客户端回应4.服务器最后的回应一、HTTP与HTTPS的区别文字描述就可以看出HTTPS肯定是HTTP的升级版。HTTP是明文传输,存在不安全问题。HTTPS则很好地解决了这个问题,在TCP和HTTP之间加入了SSL/TLS安全协议,使得报文能够加密传输。HTTP连接的建立相对简单一些,只需原创 2021-10-03 14:44:10 · 2052 阅读 · 0 评论 -
你知道HTTP的特性有哪些吗?
你知道HTTP的特性有哪些吗?一、HTTP(1.1)的优点二、HTTP(1.1)的缺点三、HTTP(1.1)的性能长连接管道网络传输对头堵塞四、总结一、HTTP(1.1)的优点简单:HTTP的基本格式是header+body,头部信息是key-value形式,易于理解灵活和易于扩展:HTTP协议里的各类请求方法、URI/URL、状态码、头字段等各个组成要求都没有被固定死,都允许开发人员自定义和扩充,同时HTTP允许下层随意变化应用广泛和跨平台二、HTTP(1.1)的缺点无状态好处:服务原创 2021-10-03 10:24:43 · 1631 阅读 · 0 评论 -
你知道GET与POST的区别吗?
GET与POST一、GET与POST的区别一、GET与POST的区别原创 2021-10-03 09:27:05 · 2109 阅读 · 0 评论 -
你知道如何优化HTTP1.1?
如何优化HTTP1.1?一、避免发送HTTP请求缓存技术过期时间二、减少HTTP请求的次数减少重定向请求重定向请求重定向工作交由代理服务器代理服务器知晓重定向规则合并请求延时发送请求三、减少HTTP响应的数据大小无损压缩有损压缩一、避免发送HTTP请求众所周知,客户端请求资源,必然需要发送HTTP请求,那么何来避免发送HTTP请求一说?其实是通过缓存技术来实现的,将请求-响应的数据缓存在本地。缓存技术客户端会把第一次请求以及响应的数据缓存在本地磁盘上,URL作为key值,响应的数据作为value。这原创 2021-10-02 11:57:13 · 200 阅读 · 0 评论 -
你知道HTTP吗?
HTTP基本概念一、HTTP是什么?二、能否详细解释超文本传输协议?三、那HTTP是用于互联网服务器传输超文本到本地浏览器的协议,这种说法正确吗?HTTP常见的状态码,有哪些?四、http常见的字段有哪些?一、HTTP是什么?HTTP是超文本传输协议二、能否详细解释超文本传输协议?HTTP可以被拆分成三个部分:超文本:超越了普通文本的文本,是文字、图片、视频等的混合体,最关键有超链接,能从一个超文本跳转到另外一个超文本。HTML就是最常见的超文本。传输:HTTP协议是一个双向协议,数据在AB之原创 2021-09-30 02:06:09 · 394 阅读 · 0 评论 -
你知道TCP/IP网络模型吗?
TCP/IP网络模型应用层传输层网络层数据链路层物理层应用层我们电脑或者手机使用的应用软件都在应用层实现,应用层只需要为用户提供应用功能,不需要关心数据是如何传输的。应用层是工作在操作系统的用户态,传输层及以下则工作在内核态。传输层应用层的数据包会传给传输层,传输层是为应用层提供网络支持的。在传输层存在两个传输协议TCP:TCP的全称为传输层控制协议,大部分应用使用的正是TCP传输层协议,比如HTTP应用层协议。TCP有很多特性(流量控制、超时重传、拥塞控制等)都是为了保证数据包可靠地传输给对原创 2021-09-30 01:09:09 · 142 阅读 · 0 评论