网络是一个计算机的重要学科,不管是tcp、udp、http还有各类各样的协议,他们都是网络的一部分。给一个地址,是我大三上考试前作的一些笔记,固然还有其余的学习内容。git
在图片中咱们可以看到数据链路层和物理层可以合并成网际接口层。这是由于TCP/IP模型其实存在两种的说法,一个是四层模型,一个是五层模型,而他们的区别也就是在此处。github
其实在现实生活中,咱们基于的网络都是基于TCP/IP模型创建的,可是这个章节咱们主要讨论的是TCP层,你也一样能够叫他传输层。算法
在TCP层中,其实存在两个协议有以下图两种:TCP
和UDP
服务器
这是咱们网络基础中的重中之重 网络
其实知识点不少不少,因此抽出几个重点内容讲解。tcp
握手的实现顺序:ide
从第三次握手开始,咱们就已经能够带上咱们的数据进行传输了。post
采用三次握手不是二次握手缘由:学习
为了防止已失效的链接请求报文段忽然又传送到了服务端,于是产生错误3d
简单的说就是:因网络缘由,客户端重传了请求创建链接报文,当2号请求报文与服务器创建链接并断开后,1号请求链接到达。采用二次握手致使服务器进入链接状态,而客户端处于关闭状态,形成资源的消耗。
其实从另一个角度看,这是一个两军对垒的问题。
图画的有点丑陋,哈哈哈哈哈哈哈!!
讲个故事好了,一天吴军想打魏国,蜀军这天也想打魏国,他们看到对方,都想借对方只手灭了魏国,本身坐收渔翁之利。这个时候,吴军选择先派出使者去发出同盟请求,并以狼烟做为信号 (第一次握手开始) ,可是会途径魏国啊,那可能使者就有掉脑壳或者被偷换的可能了 (数据包丢失或者数据位出错) ,到了蜀军之后,蜀军承认了此次的行动,而后送走了来使 (第一次握手成功,第二次握手开始) ,固然中间又要路过魏国,有可能出现上述状况。最后吴军点了狼烟,就冲去灭魏国了。(完成第二次握手,发出数据,开始第三次握手)
四次挥手就没有这么精彩的故事了,就平淡点讲一下好了。
挥手的实现顺序:
为何要实现4次握手呢?
其实这是为了关闭双方的资源,和三次握手并不同,三次握手的主体是客户端,而四次挥手的主体是二者,由于二者都须要确保本身的资源完成关闭。
这是和UDP
最大的区别,UDP
毕竟是一个容错的传输协议。
看看TCP
的包头结构,几个地方可以引发咱们的注意,那就是检验和,确认号,序号,这确实是他的三个校验的方式。
可是还有问题,若是我发的包中途丢失,那该怎么办呢?,TCP
给出的解决方案就是计时器,还有重传机制。(重传机制在上方的三个校验方式中一样获得了应用)
和TCP
的包头相比就简单了许多,他的校验方式也确实只存在一种检查和的确认。
为何须要这样的协议?
想来这是绝大多数人思考过的问题,其实缘由有下面几个:
UDP
协议。举一个很简单的例子,打语音电话的时候,你会由于别人的一个字缺失而失去对整句话意思的理解吗?更况且,在语音电话的时候,咱们没听清楚的事情是能够,从新再询问一遍的。也就是说咱们的沟通之间是容错的。TCP
协议,那么出现的问题就在于他的流量控制和拥塞控制,他的传输速率会受到网络环境改变的冲击而随之改变。可是UDP
不同,他没有三次握手,四次挥手,它只是一股脑的只管发,这个带宽已经足够大的时代,彻底是可以承受起这样的资源占用的,而效率上也获得了保障。TCP
协议却由于网络波动改变数据流量大小,那人们的体验感会立刻降低,并且数据包到达的速度不理想,能够一个“开”的语音被拆成了“k”,“ai”,瞬间失去语义。而后还要可能“k”到了,“ai”丢了,重传等到了3秒之后,那更完了。其实TCP
协议还有流量控制和拥塞控制的特色,分别基于的是滑动窗口机制还有AIMD的算法。他的变化依据最后都来自于波动的网络中,数据包的来回传递时间、丢包率等等。
另外TCP
和UDP
协议的使用我也说了是考虑使用场景。TCP
协议的应用场景其实更多,咱们上网下载个视频啊,发消息都是使用的TCP
协议,由于这些数据咱们是须要保证数据的完整性的。
以上就是个人学习成果,若是有什么我没有思考到的地方或是文章内存在错误,欢迎与我分享。
相关文章推荐: