计算机网络
文章平均质量分 74
咖啡与乌龙
这是一个知识分享型宝藏博主,本科测控技术与仪器,研究生仪器科学与技术,自学计算机技术,目前在sangfor担任后台开发工程师,职场新人小菜鸟一枚。欢迎大家关注,相互交流,相互学习,共同进步!!!
展开
-
TCP的拥塞控制算法:慢启动、拥塞避免、快重传、快恢复
TCP的拥塞控制一、前言:什么是拥塞?什么是拥塞控制?拥塞:随着网络中的主机增加其发送速率并使网络变得十分拥挤,此时会经常发生丢包现象,导致网络的传输效率急剧降低。分组的超时重传通常被作为网络拥塞的标志。如果不对网络拥塞进行控制,整个网络的吞吐量将随着输入负荷的增大而下降,降低网络的传输效率,如下图:二、TCP的4种拥塞控制算法(慢开始、拥塞避免、快重传、快恢复)为了便于讨论做一下假设数据是单方向传送的,另一个方向只传输确认接收方的总是有足够大的缓冲区,因此发送方的发送窗口仅原创 2022-02-22 22:52:31 · 22834 阅读 · 17 评论 -
(四)Windows网络模型之完成端口模型详解
完成端口模型是重叠IO模型的升级版,它解决了重叠IO模型中线程过多导致效率下降的问题。在完成端口模型中,我们新创建一个完成端口变量,并将所有的socket(包括服务器socket和客户端通信socket)都绑定到完成端口上。然后使用AcceptEx()、WSARecv()、WSASend()函数异步投递相应的任务,等任务完成后操作系统将完成通知放进通知队列中。之后程序员创建合理数目的线程,在线程函数中取出通知队列的头部,然后分析并分类处理。该模型所有函数执行部分都是异步的,而且不存在线程滥用问题原创 2022-08-08 16:00:16 · 998 阅读 · 0 评论 -
(二)Windows网络模型之异步选择模型(基于消息机制)
Windows处理用户行为的方式之一。消息机制的核心是消息队列,所有用户的操作都可以被认为是一个消息,当某些用户动作发生后,其对应的消息就会进入操作系统维护的消息队列;程序员负责将消息队列中的消息取出,并根据消息类型进行分类处理;消息队列是由操作系统维护的;因此消息机制是有序地处理消息队列中的所有消息,早产生的消息早处理!......原创 2022-08-07 13:50:44 · 352 阅读 · 0 评论 -
(三)Windows网络模型之重叠IO模型(事件通知和完成例程)
基本的C/S模型,到处都是阻塞的,accept()函数傻等阻塞、recv()函数傻等阻塞、recv()和send()函数均存在的执行阻塞select模型通过FD_SET这样的socket集合,主动查询哪些socket是有信号、有动作的,它解决了accept()和recv()傻等阻塞的问题,但是select()函数本身的执行阻塞也是一个大问题,如果socket非常多,访问量非常高,select模型就非常糟糕了事件选择模型是基于事件机制的select模型的升级版,其通过将事件对象event、socket.原创 2022-08-06 23:30:07 · 868 阅读 · 0 评论 -
(一)Windows网络模型之select模型和事件选择模型
所谓网络模型的不断优化,其本质就是在解决函数调用过程中的阻塞问题(傻等阻塞与执行阻塞)select模型解决的是基本C/S模型中的傻等阻塞(accept和recv)accept函数在没有客户端前来连接的时候会一直阻塞等待,也就是傻等阻塞recv函数进行通信,在对端没有发来数据的时候也就一直阻塞等待,也就是傻等阻塞但是select函数本身也是阻塞的,这属于执行阻塞,recv和send在执行的时候造成的阻塞也是执行阻塞,比如数据有点多,在发送和接收数据时就会执行阻塞通常在实际应用中。............原创 2022-08-04 01:46:26 · 807 阅读 · 0 评论 -
LVS+Nginx实现LVS-DR负载均衡---基于CentOS 7
LVS是4层的负载均衡(ip+端口号的负载均衡);Nginx是7层的负载均衡(基于请求报文的负载均衡);因此LVS的负载能力要比Nginx更高,通常LVS可以做为Nginx集群的调度者,LVS通常只接收请求,不响应请求;......原创 2022-07-22 23:09:37 · 684 阅读 · 0 评论 -
为什么TCP握手刚刚好是3次呢?
为什么TCP建立连接的过程是3次握手原创 2022-06-22 11:07:53 · 285 阅读 · 0 评论 -
Cookie、Session、Token的区别:基于Session的验证机制和基于Token的验证机制
Cookie、Session、Token的区别《基于Token的登录流程》《彻底理解Cookie、Session、Token》1、CookieCookie是一个很具体的东西,就是浏览器里面的一种能永久保存的数据,仅仅是浏览器实现的一种数据存储功能。Cookie存储在浏览器中,其结构是键值对形式,但值只能存储ASCII码字符Cookie的大小受浏览器限制,很多是4K大小Cookie不太安全,容易被恶意查看2、SessionSession是存储在服务器上的用于保存用户信息、会话状态以及相关原创 2022-03-02 22:15:23 · 350 阅读 · 0 评论 -
HTTPS = HTTP + SSL = HTTP + 加密 + 认证 + 完整性保护
HTTPS协议 = HTTP + SSL协议HTTP协议的缺陷:窃听风险篡改风险冒充风险SSL/TLS协议就是为了解决这3个风险,于是实现了下面的:所有信息都是加密转播,第三方无法窃听具有校验机制,一旦被篡改,通信双方会立刻被发现配备身份证书,防止身份被冒充具体的请看阮一峰老师的两篇博客,我就不班门弄斧了…SSL/TLS协议运行机制的概述图解SSL/TLS协议......原创 2022-03-02 16:24:41 · 449 阅读 · 0 评论 -
HTTP请求中的GET-POST方式
直接看链接吧!原创 2022-03-02 10:36:13 · 59 阅读 · 0 评论 -
TCP粘包拆包问题是什么?如何去解决?
13.TCP粘包问题是什么?你会如何去解决它?前言:TCP协议是面向字节流的,TCP没有消息边界保护的功能,所以TCP就会发生粘包和拆包的问题。这一点不像UDP,因为UDP面向报文,所以它不会对报文进行处理,而是直接将报文作为一个整体,添加UDP头部粘包和拆包是什么?粘包:我举一个比较典型的例子:假如发送方发送了2个TCP报文段,但是接收方仅仅接收到了1个TCP报文段,这导致接收端应用程序无法区分两个TCP报文段的边界,也就无法进行数据处理拆包:还是举一个例子:假如发送方发送了2个TCP原创 2022-02-26 21:03:23 · 2455 阅读 · 0 评论 -
IPv4的数据报的首部格式与TCP首部格式的比较,清晰明了一遍懂
IPv4的数据报的首部格式一、IP数据报的首部格式图注意和TCP数据报首部格式的对比,这样也好记忆两者相同的地方是:固定部分都是20字节,可变部分都是最大40字节IPv4头部中的首部长度字段和TCP头部中的数据偏移字段表达的含义一样,都是说该头部的长度,且单位都是4字节都需要进行填充,将头部长度补齐为4的倍数个字节二、具体的IPv4数据报头部格式详解版本(4bit):指明了IP协议的版本,IPv4还是IPv6;通信双方的版本要一致首部长度(4bit):指明了IP数据原创 2022-02-25 11:00:54 · 2435 阅读 · 0 评论 -
数据从应用层的应用进程到最后的网络包是怎么一步步封装的呢?TCP怎么拆分?IP怎么分片?
上图是一个整体的网络包的结构,可以看到网络包层层封装的结构一、因此如果问一句,那数据从应用层的应用进程到最后的网络包是怎么一步步封装的呢?答:比较概括性的回答是:(为便于讨论,假设是一个web服务)首先应用层的应用进程将http请求报文下发到运输层运输层的TCP协议栈给http请求报文添加TCP头部封装成TCP报文段,然后下发到网络层网络层的IP协议栈给TCP报文段添加上IP头部封装成IP包,然后下发到数据链路层数据链路层也有各种协议,假设是以太网协议,那么会给IP包加上帧头和帧尾,形成帧,.原创 2022-02-25 10:05:18 · 4077 阅读 · 1 评论 -
IP数据报在网络中的主机发送与路由转发
IP数据报的转化和发送(2种情况)1.主机发送IP数据报若目的主机和自己位于同一个网络,则直接交付若目的主机和自己不在同一个网络,则间接交付,传输给主机所在网络的默认网关(一般是路由器),由默认网关帮忙转发什么是默认网关?对于一个网络如果需要连接到互联网,则需要有一个默认网关,所有发往互联网的网络包都要经过该网关的转发;通常我们在计算机上看到默认网关是一个IP地址的形式,这个IP地址就是充当转发桥梁的某个路由设备的一个接口的IP地址,该网络上所有发往互联网的网络包都要先发到该接口,然后原创 2022-02-25 09:46:00 · 2410 阅读 · 0 评论 -
TCP、UDP的首部格式及其含义
一、TCP报文段的首部格式TCP是面向字节流的TCP在发送数据时,从发送缓存中取出一部分或全部字节并给其加上一个TCP首部,使其成为TCP报文段然后交给网络层(TCP是运输层,其下层是网络层) 一个TCP报文段由TCP首部和数据载荷部分组成TCP的全部功能都体现在其首部中各个字段的作用TCP的首部格式如下所示:数据偏移(4bit):该字段表示数据载荷的首字节在整个TCP报文段中的位置,同时也代表了TCP首部的长度,因为TCP首部由固定首部20字节和最大扩展首部40字节原创 2022-02-24 21:21:35 · 3777 阅读 · 0 评论 -
UDP与TCP的区别
UDP与TCP的区别总结区别如下:UDP是无连接的,面向应用报文的,提供不可靠传输服务的无连接:指不需要事先建立连接就可以直接传输数据面向应用报文:指UDP不会对应用层发来的报文合并和拆分不可靠传输服务:指数据报在传输过程中发生误码、丢失等后什么也不做,丢了就丢了主要用于IP电话、视频会议等实时应用,还有DNS服务TCP是面向连接的,面向字节流的,提供可靠传输服务的面向连接:指的是在传输数据之前需要先通过3次握手建立连接,传输数据后需要通过4次挥手释放连接面向字节流的:指的原创 2022-02-24 21:17:34 · 271 阅读 · 0 评论 -
(TCP三次握手详解)TCP用3次握手建立连接的过程,以及可不可以将3次握手修改为2次握手?这么做是为了什么?
TCP用3次握手建立连接的过程注意:TCP客户端主动建立连接,TCP服务端等待连接起初两端都是关闭状态第一次握手:客户端主动发送建立连接的请求报文,进入同步已发送状态其中主要的字段为SYN=1,seq=x....等第二次握手:服务器接收到报文后,如果同意建立连接,则发送TCP连接请求的确认报文,然后进入同步已接收状态其主要字段SYN=1,ACK=1,seq=y,ack=x+1...等第三次握手:客户端接收到服务器的确认报文后,给服务器再次发送确认报文,然后进入连接已建立状态原创 2022-02-23 23:37:55 · 1234 阅读 · 1 评论 -
TCP使用4次挥手释放连接,以及为什么客户端在第四次挥手之后还进入了时间等待状态,需要等待两个MSL才进入关闭状态?
TCP使用4次挥手释放连接起初是连接已建立的状态第一次挥手:客户端发起TCP连接释放请求报文,进入终止等待1状态FIN=1 ACK=1 seq=u ack=v...表示释放连接,ACK=1表示这也是一个回复确认报文,回复确认了之前的数据传输报文第二次挥手:服务器对客户端的请求进行回复确认,进入关闭等待状态然后通知应用程序,让应用程序发送还没发完的数据ACK=1 seq=v ack=u+1...表示对请求的确认,因为FIN=1的报文不携带数据但是消耗一个序号,所以ack=u+1第三原创 2022-02-23 23:34:34 · 1246 阅读 · 0 评论 -
TCP利用以字节为单位的滑动窗口来实现可靠传输
TCP利用滑动窗口机制实现可靠传输TCP利用滑动窗口实现可靠传输,可以借助上图进行描述:因为TCP时全双工通信,所以连接双方都各自维护一个发送窗口和接收窗口,本文为描述方便,只讨论一个方向的传输,因为另一个方向也是同样的情况为讨论方便,我们假设发送窗口等于TCP报文段中的接收窗口的大小,也即不考虑拥塞窗口的影响,而实际的发送窗口的大小是min{拥塞窗口,发送窗口}TCP是以基于字节为单位的滑动窗口来实现可靠传输的那什么是可靠传输呢?可靠传输就是从A端发送到B端的数据,在协议和逻辑层面不会遗原创 2022-02-23 21:28:54 · 1640 阅读 · 0 评论 -
超时重传时间RTO的确定
超时重传时间的确定超时重传时间RTO:TCP数据报文段发出后,经过RTO的时间没有收到其确认报文,就会重新发送该报文段往返时间RTT:TCP数据报文段发出到收到该报文的确认报文所经历的时间通常:超时重传时间RTO要略大于往返时间RTT,但由于实际网络环境的复杂性,RTT的测量并没有那么容易,RTT的测量有可能偏大或偏小。一、实际网络中使用的往返时间RTT是由平滑往返时间RTTSRTT_SRTTS度量的在实际的网络中,通常不直接使用测量得到的RTT样本,而是使用加权平均往返时间RTTSRT原创 2022-02-23 20:16:48 · 2052 阅读 · 0 评论 -
TCP如何利用滑动窗口实现流量控制(15分钟醍醐灌顶)
TCP如何利用滑动窗口实现流量控制前言:为什么需要流量控制 因为如果发送方把数据发送的过快,接收方就可能来不及接收,这就会造成数据的丢失流量控制就是让发送方的发送速率不要太快,让接收方来得及接收所有数据TCP中是通过滑动窗口机制在TCP连接上实现对发送方的流量控制(接收方控制发送方)流量控制的具体细节:假设先不考虑拥塞控制,发送方的发送窗口等于接收方的接收窗口假设一个如下的TCP连接情况:主机A和主机B已建立TCP连接,主机A给主机B发送数据,主机B对主机A进行流量控制原创 2022-02-22 20:44:05 · 6242 阅读 · 1 评论 -
网络连接(三)集线器、交换机、路由器的功能和之间的异同,路由表和交换机中的表、为啥要地址转换、包过滤是啥?
只要不断坚持,最坏结果无非是大器晚成3.0 前言3.1 通过网线到达集线器3.2 经过交换机3.3 经过路由器3.4 交换机和路由器的异同3.0 前言本章主要讲的是网络包离开网卡之后经过网线传输到集线器,然后集线器对数据包进行广播,网络包随后被发送到交换机,交换机根据网络包中的MAC地址进行网络包的转发,随后数据到达路由器,路由器根据网络包中的IP地址进行转发,之后循环往复的转发传递,以及在此过程中所涉及到的众多知识点3.1 通过网线到达集线器集线器的结构简图如下:集线器的工作原创 2021-07-18 23:19:23 · 428 阅读 · 1 评论 -
网络连接(二)三次握手、四次挥手、socket本质、网络包的打包、TCP头部、IP头部、ACK确认、滑动窗口、网络包的结果、网卡的工作方式、以太网、TCP\UDP
网络是怎样连接的_学习笔记(第2章)2.0 前言这一章的思维导图因为出差前前后后写了有20多天,本文主要就是按照自己对网络的理解进行表述,希望看到本文的小伙伴可以较为清晰的理解其中内容,希望可以帮助到读者,这是我莫大的荣幸。文字部分主要是讲一个框架和思路,具体细节在思维导图中呈现。2.1 创建套接字及其细节待发送的数据从应用程序被提交给协议栈,协议栈分为上下两层,上边是TCP/UDP模块,下面是IP模块。对于一般的TCP/IP协议通讯,自然这些数据会先交给TCP模块来处理,之后TCP处理原创 2021-07-15 14:29:10 · 315 阅读 · 3 评论 -
网络是怎样连接的_学习笔记(一)(生成HTTP消息、域名解析、协议栈发送消息)
网络是怎样连接的_学习笔记(一)(生成HTTP消息、域名解析、协议栈发送消息)一、前言重要的知识点都在书上了,无意义的重复书上的知识点不是一种正确的学习方法;下面的都是总结和自我复述从浏览器输入网址(URL)到将这些请求消息打包发送出网卡是本章的主要内容二、整个过程叙述如下:浏览器先对网址进行解析,获知浏览器的访问方式(http、ftp、mailto等)、服务器名称、数据源的路径等信息根据HTTP协议生成请求消息(请求行、消息头、消息体)通过DNS服务器查询到指定域名的IP地址(也即域名原创 2021-06-21 23:23:03 · 185 阅读 · 0 评论