网络TCP...
文章平均质量分 65
这瓜保熟么
平常心
展开
-
linux服务器出现大量TIME_WAIT的解决方法
一、大量TIME_WAIT造成的影响在高并发短连接的TCP服务器上,当服务器处理完请求后立刻主动正常关闭连接。这个场景下会出现大量socket处于TIME_WAIT状态。如果客户端的并发量持续很高,此时部分客户端就会显示连接不上。我来解释下这个场景。主动正常关闭TCP连接,都会出现TIMEWAIT。为什么我们要关注这个高并发短连接呢?有两个方面需要注意:1. 高并发可以让服务器在短时间范围内同时占用大量端口,而端口有个0~65535的范围,并不是很多,刨除系统和其他服务要用的,剩下的就.转载 2021-01-11 18:38:34 · 8229 阅读 · 0 评论 -
详解 TCP 连接的“ 三次握手 ”与“ 四次挥手 ”
1:TCP报文格式简介其中比较重要的字段有:(1)序号(sequence number):Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流, 发起方发送数据时对此进行标记。(2)确认号(acknowledgement number):Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1。(3)标志位(Flags):共6个,即URG、ACK、PSH、RST、SYN、FIN等。具体含义如下: URG:...转载 2020-08-29 22:18:22 · 304 阅读 · 0 评论 -
Ethernet以太网作用
物理层:物理层主要是基于电器特性发送高低电平信号,电平即"电压平台",指的是电路中某一点电压的高低状态,在网络信号中高电平用数字"1"表示,低电平用数字"0"表示。电平的高低是个相对概念,3V对于7V是低电平,但对于1V就是高电平。数据链路层:由于单纯的电平信号"0"和"1"没有任何意义,在实际应用中,我们会将电平信号进行分组处理,多少位一组、每组什么意思,这样数据才有具体含义。数据链路层的功能就是定义电平信号的分组方式。1:以太网协议:数据链路层使用以太网协议进行传输,基于M原创 2020-08-29 14:52:01 · 3745 阅读 · 0 评论 -
TCP粘包/拆包
一、TCP粘包/拆包解析 TCP是个“流”协议,所谓流,就是没有界限的一串数据。大家可以想想河里的流水,是连成一片的,其间并没有分界线。TCP底层并不了解上层业务数据的具体含义,它会根据TCP缓冲区的实际情况进行包的划分,所以在业务上认为,一个完整的包可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,这就是所谓的TCP粘包和拆包问题。假设客户端分别发送了两个数据包D1和D2给服务端,由于服务端一次读取到的字节数是不确定的,故可能存在以下4种情况。...转载 2020-08-26 14:55:52 · 219 阅读 · 0 评论 -
Socket-单工、半双工和全双工
单工,就是两者通信单向进行,只能一个主动发信号一个被动去接受,不能角色互换。举例:行人只能接受红绿灯的信号但是不能向红绿灯发信号,红绿灯只能发出信号不能接收信号。半双工,两个事物都可以发信号,但是不能同时进行。举例:类似于踢足球,只能一个传给另一个人,两个人不能同时传球,球只有一个,信道只有一个。全双工,两个事物可以同时发送和接受信息。举例:两个人互相打电话,你可以说也可以听电话。在Java里套接字socket就是全双工的。单工、半双工和全双工根据通信双方的分工和信号传输方向可将.转载 2020-06-03 14:31:20 · 4210 阅读 · 0 评论 -
TCP粘包拆包的产生原因分析及解决思路
在进行Java NIO学习时,发现,如果客户端连续不断的向服务端发送数据包时,服务端接收的数据会出现两个数据包粘在一起的情况,这就是TCP协议中经常会遇到的粘包以及拆包的问题。我们都知道TCP属于传输层的协议,传输层除了有TCP协议外还有UDP协议。那么UDP是否会发生粘包或拆包的现象呢?答案是不会。UDP是基于报文发送的,从UDP的帧结构可以看出,在UDP首部采用了16bit来指示UDP数据报文的长度,因此在应用层能很好的将不同的数据报文区分开,从而避免粘包和拆包的问题。而TCP是基于字节流的,虽然应转载 2020-05-28 15:36:11 · 662 阅读 · 0 评论 -
网络基础:TCP协议-如何保证传输可靠性
TCP协议传输的特点主要就是面向字节流、传输可靠、面向连接。这篇博客,我们就重点讨论一下TCP协议如何确保传输的可靠性的。确保传输可靠性的方式TCP协议保证数据传输可靠性的方式主要有:校验和序列号确认应答超时重传连接管理流量控制拥塞控制校验和计算方式:在数据传输的过程中,将发送的数据段都当做一个16位的整数。将这些整数加起来。并且前面的进位不能丢弃,补在后面,最后取...转载 2020-04-30 17:47:13 · 282 阅读 · 0 评论 -
Http协议与TCP协议简单理解
TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性。Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求。Http会通过TCP建立起一个到服务器的连接通道,当本次请求需要的数据完毕后,Http会立即将TCP连接断开,这个过程是很短的。所以Http连接是一种短连接,是一种无状态的连接。所谓的无状态,是指浏览器每次...原创 2020-04-29 14:19:29 · 588 阅读 · 0 评论 -
TCP 连接的“ 三次握手 ”与“ 四次挥手 ”
客户端与服务器之间数据的发送和返回的过程当中需要创建一个叫TCP connection的东西;由于TCP不存在连接的概念,只存在请求和响应,请求和响应都是数据包,它们之间都是经过由TCP创建的一个从客户端发起,服务器接收的类似连接的通道,这个连接可以一直保持,http请求是在这个连接的基础上发送的;在一个TCP连接上是可以发送多个http请求的,不同的版本这个模式不一样。在HTTP...转载 2020-04-29 14:11:19 · 150 阅读 · 0 评论 -
网络七层模型与TCP/UDP
为了使全球范围内不同的计算机厂家能够相互之间能够比较协调的进行通信,这个时候就有必要建立一种全球范围内的通用协议,以规范各个厂家之间的通信接口,这就是网络七层模型的由来。本文首先会对网络七层模型的功能进行介绍,然后会讲解传输层的两个重要协议:TCP和UDP协议,并且会着重讲解TCP协议中的三次握手和四次挥手的过程。1. 网络七层模型关于网络七层模型,我们首先以一个图例来展示...转载 2019-09-17 15:49:46 · 473 阅读 · 0 评论 -
TCP如何保证可靠性
在TCP的连接中,数据流必须以正确的顺序送达对方。TCP的可靠性是通过顺序编号和确认(ACK)来实现的。TCP在开始传送一个段时,为准备重传而首先将该段插入到发送队列之中,同时启动时钟。其后,如果收到了接受端对该段的ACK信息,就将该段从队列中删去。如果在时钟规定的时间内,ACK未返回,那么就从发送队列中再次送出这个段。TCP在协议中就对数据可靠传输做了保障,握手与断开都需要通讯双方确认,数据传输...转载 2019-03-01 23:46:12 · 600 阅读 · 0 评论 -
http的长连接和短连接(史上最通俗!)以及应用场景
1.以前的误解很久之前就听说过长连接的说法,而且还知道HTTP1.0协议不支持长连接,从HTTP1.1协议以后,连接默认都是长连接。但终究觉得对于长连接一直懵懵懂懂的,有种抓不到关键点的感觉。今天通过一番研究,终于明白了这其中的奥秘。而之前,也看过长连接相关的内容,但一直都是云里雾里的。这次之所以能在这么短的时间里搞清楚,和自己技术的沉淀密不可分。因此,这里借着这个机会,再次强调一下,千万...转载 2019-02-13 16:03:04 · 13232 阅读 · 15 评论 -
SOCKET通信中TCP数据包大小的确定
MSS(maximun segment size) 最大分段大小,TCP有一个最大分段大小,用于通告对端每个分段中能发送的最大TCP数据量。MSS的目的是告诉对端其重组缓冲区大小的实际值,从而避免分片。MSS经常设计成MTU减去IP和TCP首部的固定长度。以太网中使用IPv4MSS值为1460,使用IPv6的MSS值为1440(两者TCP首部都是20字节,但是IPv6首部是40字节...翻译 2018-09-03 19:31:38 · 21007 阅读 · 0 评论 -
网络TCP建立连接为什么需要三次握手而结束要四次
举个打电话的例子: A : 你好我是A,你听得到我在说话吗 B : 听到了,我是B,你听到我在说话吗 A : 嗯,听到了 建立连接,开始聊天!TCP连接的释放(四次挥手)数据传输完毕后,双方都可释放连接。最开始的时候,客户端和服务器都是处于ESTABLISHED状态,然后客户端主动关闭,服务器被动关闭。1:客户端进程发出连接释放报文,并且停止发送数...翻译 2018-08-28 19:11:41 · 654 阅读 · 0 评论 -
简述TCP的三次握手过程
所谓三次握手(Three-Way Handshake)即建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。在socket编程中,这一过程由客户端执行connect来触发,整个流程如下图所示:TCP是传输控制协议。syn是该协议中的一个标志位。如果该位被置为1,则表示这个报文是一个请求建立连接的报文。 ack也是该协议的一个标志位。如果该位...翻译 2018-08-28 11:25:05 · 21529 阅读 · 0 评论 -
TCP四次挥手
三次握手耳熟能详,四次挥手估计就,所谓四次挥手(Four-Way Wavehand)即终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。在socket编程中,这一过程由客户端或服务端任一方执行close来触发,整个流程如下图所示:由于TCP连接时全双工的,因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终...翻译 2018-08-28 18:43:56 · 133 阅读 · 0 评论