TCP连接是基于字节流而非报文
TCP是传输控制协议 TCP是以控制字节流来实现的,报文最终也会转换为自己流。

从本质上了解TCP/IP协议族
没有分层的情况下是直接从一端把消息传输至另一端,网络传输无非是从客户端传信息到服务端,或者服务端传信息到客户端,那么在传输过程中是存在网络不稳定的情况,数据丢失了怎么办?其实是这样的,客户端发送消息给服务端,正常情况下服务端会在收到消息后回馈信息给客户端,客户端才知道收到了。假如数据丢失了,客户端假如在一定时间内没收到回馈,那么就重新传输信息。再来看一点,假如我们的数据很大,经过每个中间节点的时间增加了,到最后一个节点的时候数据丢失了,那岂不是要重新传输了,假如频繁发生,用户体验到的感觉就是网络很不稳定。怎么解决呢?把数据分块传输呗。例如:现在数据一大块,把它分成ABCDE...,每次传输顺序是A、B、C...,假如传到C的时候传输失败了,但AB都传输成功了,那就继续传输C,成功后就接着往下一块块传输。把数据分块就要分层了?接着往下看像HTTP这样的就是做网络报文的传输,FTP是做文件的传输,DNS是用来做域名服务的,这都是具体的目标,也就是你有要做的事情,这些要做的事情,就可以用应用层来表示了。那么这些应用层的做的事情要分块传输,而且不单单是HTTP,像DNS和FTP同样也要分块传输。想一下,在Java思想看来,多个类都要做同一种事,是不是要把这件事抽出来做接口。那么就把分块传输当成一个层来看,这一层是拿到应用层的数据后再把它分块传输,传输完到达另一端后再把数据拼接成完成信息后再丢给应用层,这样把数据把应用层数据分块再合并完传给应用层的这一层作为传输层。像TCP和UDP协议都是处于传输层。说到TCP和UDP,两个的传输差别就是TCP一定要保证数据的正确性,简单点来说就是数据从一端到另一端一定是要完整的,而UDP传输过程可能会丢包,导致数据不完整,例如我们看直播的时候,网络突然不好了,直播卡住了,过了一会网络正常了,但现在是直播,所以不会关注那些事情,继续传输当前的数据。那么区别都知道了,相同点是什么?不就是传数据嘛,那是不是抽一层出来,把这些传输层的分块数据通过网络传输到另一端。这就是网络层。网络层只负责对这些数据块进行传输,拿到了就传,没有就不传。而且网络层对数据传成功没不关心,拿到数据就传,至于数据成不成功,取决于传输层是否要再对数据进行传输。IP协议就处于网络层。对于网络层里面的传输还需要靠物理设备来实现。我们现实生活中在物理设备上对网络层的支持一般是以太网,需要通过以太网(或者WIFI)才能实现真正意义上的网络传输。所有又有了一层,数据链路层。以上是对网络模型的本质理解。在传输的时候要事先确定好对方是谁,所以要建立TCP链接,并且这些连接是有状态的(HTTP是无状态的)。这种有状态体现在传输的时候知道对方是对,保持着这种状态进行传数据。建立TCP连接需要三次握手,什么是三次握手?举个例子,假如A要和B链接:1、A发消息跟B说:我要跟你进行链接2、B收到A的消息后,要告知A收到了消息,并回复了:我收到你的消息了3、A也要告诉B收到了B的消息:我也收到了你的消息,可以开始正常交流了其中,1是可以理解的,2是因为B得让A知道A->B是正常的并且B也要发消息,而3是因为A告诉B收到了消息,可以正常通信了。既然有连接就有关闭,为什么要关闭?因为连接时把对方信息保存在自己的本地,关闭是为了释放资源。关闭比连接多了一次。TCP连接的关闭也叫四次挥手,举个例子,假如A要和B断开连接:1、A跟B发消息说:我要跟你断开连接2、B收到后对A说:我知道你没有消息了3、B又发了个消息说:我也没有消息了4、A收到后对B说:我知道你没有消息了,可以断开了之后,TCP就断开了连接。注意,B收到A的消息后只是说告诉A知道A没有消息了,不代表B也没有消息。在网络中,移动网络并不属于Internet,而在运营商的内网,并不具备真正的公网IP。所以移动网络和外界是通过:移动网络到运营商,然后再从运营商再到外界交流,这就是所谓的长连接。那为什么要长连接呢?我们知道TCP连接的关闭是我们主动关闭的,而在长连接中,当某个TCP连接在一段时间不通信之后,网关会处于网络性能考虑而关闭这条TCP连接和公网的连接通道,导致这个TCP端口不再能收到外界通信消息,这就是TCP连接被动断开。在第二次B得到A没有消息发后,为什么不等到B没有没有消息发了再一次告诉A,B也没有消息了?其实真正的事实是:TCP是支持第二次和第三次进行合并的,即把这两条消息合进一条里发送,本质上,TCP的四次挥手只是因为在通信时候出现一方讲完了,另一方还没讲完的情况,所以TCP要给两方都有一个表达自己讲完了的机会,所以本质上TCP的四次挥手其实是一对两次挥手。总结下,这两条消息不是不能合并,而是能不合并,因为会有大量拆开使用的场景,至于合并这个方案,TCP是支持的。

TCP本质上是什么?是一个编写好的程序?还是一些规定好的规则顺序法则?它存在于网络的哪里?
这是个网络协议好不好 这个协议当然要做成程序安装到网络设备里 一般在网卡里

TCP 与UDP的本质区别是什么?
tcp及传输控制协议,可靠的连接服务 udp及用户数据包协议,不可靠的连接服务举个例子我们都用得qq文件传输 pplive==用的都是 udp协议 原因在于udp可以把数据中的每一桢 划分的更细 这样传输起来不会出现丢桢的现象 俗称 看视频电视 卡 。
TCP保证可靠,面向连接而UDP不保证可靠,非面向连接,UDP的报头长度远远小于TCP的报头长度。

什么是TCP连接
TCP即传输控制协议。TCP连接是互联网连接协议集的一种。TCP通信最重要的特征是:有序和可靠。有序通过将文本流分段并编号实现,可靠通过ACK回复和重复发送实现。TCP连接状态图参考文章:TCP连接过程详解blog.163.com/hlz_2599/blog/static/142378474201151943414397/
TCP/IP(Transmission Control Protocol/Internet Protocol) 即传输控制协议/网间协议,是一个工业标准的协议集,它是为广域网(WAN)设计的。它是由ARPANET网的研究机构发展起来的。 有时我们将TCP/IP描述为互联网协议集"InternetProtocolSuite",TCP和IP是其中的两个协议(后面将会介绍)。由于TCP和IP是大家熟悉的协议,以至于用TCP/IP或IP/TCP这个词代替了整个协议集。这尽管有点奇怪,但没有必要去争论这个习惯。例如,有时我们讨论NFS是基于TCP/IP时,尽管它根本没用到TCP(只用到IP,和另一种交互式 协议UDP而不是TCP)。 TCP/IP的标准在一系列称为RFC的文档中公布。文档由技术专家、特别工作组、或RFC编辑修订。公布一个文档时,该文档被赋予一个RFC编号,如RFC959(FTP的说明文档)、RFC793(TCP的说明文档)、RFC791(IP的说明文档)等。最初的RFC一直保留而从来不会被更新,如果修改了该文档,则该文档又以一个新号码公布。因此,重要的是要确认你拥有了关于某个专题的最新RFC文档。通常在RFC的开头部分,有相关RFC的更新(update)、修改(errata)、作废(obsolete)信息,提示读者信息的时效性。
TCP/IP(Transmission Control Protocol/Internet Protocol) 即传输控制协议/网间协议,是一个工业标准的协议集,它是为广域网(WAN)设计的

本文由 在线网速测试 整理编辑,转载请注明出处。