摘要:比如旗下的简历,推出了物联网通信协议,就是基于协议的。报文头网络传输层中,是面向连接可靠的字节流传输。位标志位作用如下标志表示紧急指针是否有效。我们称携带标识的报文段为确认报文段。标志表示通知对方本端要关闭连接了。
# TCP与UDP
一,分析TCP与UDP报文
TCP与UDP都是位于OSI模型传输层的两个协议
(1)UDP的报文头:
如上图:UDP基本组成包括16位的源端口号和目的端口号+数据
通过源端口号和目的端口号来进行传输;数据部分为保存的具体内容
UDP的特点:
1,沟通简单,不需要处理逻辑、和数据结构;
2,不会建立连接,但是会监听这个地方,谁的数据都接收,也会传输数据给别人;
3,二愣子,传输完数据不管是否丢包,是否会拥塞;
基于UDP实现例子
①直播,直播对实时性的要求比较高,宁可丢包,也不要卡顿的,所以很多直播应用都基于 UDP 实现了自己的视频传输协议。
②实时的游戏,游戏的特点也是实时性比较高,在这种情况下,采用自定义的可靠的 UDP 协议,自定义重传策略,能够把产生的延迟降到最低,减少网络问题对游戏造成的影响。
③物联网。一方面,物联网领域中断资源少,很可能知识个很小的嵌入式系统,而维护 TCP 协议的代价太大了;另一方面,物联网对实时性的要求也特别高。比如 Google 旗下的 Nest 简历 Thread Group,推出了物联网通信协议 Thread,就是基于 UDP 协议的。
(2)TCP报文头
网络传输层中,TCP是面向连接、可靠的、字节流传输。
TCP协议通信双方必须先建立连接,通信双方必须为该连接分配必要的内核资源,以管理连接的状态和连接上数据的传输。TCP是全双工的,即双方的数据读写可通过一个连接进行。完成数据交换之后,通信双方都必须断开连接以释放系统资源。
TCP协议的这种连接是一对一的,它的字节流服务是多对多的,所以基于广播和多播(目标是多个主机地址)的应用程序不能使用TCP服务。而无连接的UDP则十分适合这种广播和多播。
从上往下看报文结构,分析如下:
首先,可以看到16位源端口和目标端口号。和UDP一样
包的序号:解决乱序问题,先来后到
32位确认号(acknowledgement number):用作对另一方发送来的TCP报文段的响应。其值是收到的TCP报文段的序号值加1。
6位标志位作用如下:
URG标志:表示紧急指针(urgent pointer)是否有效。
ACK标志:表示确认号是否有效。我们称携带ACK标识的TCP报文段为确认报文段。
PSH标志:提示接收端应用程序应该立即从TCP接收缓冲区中读走数据,为接收后续数据腾出空间(如果应用程序不将接收
到的数据读走,它们就会一直停留在TCP接收缓冲区中)。
RST标志:表示要求对方重新建立连接。我们称携带RST标志的TCP报文段为复位报文段。
SYN标志:表示请求建立一个连接。我们称携带SYN标志的TCP报文段为同步报文段。
FIN标志:表示通知对方本端要关闭连接了。我们称携带FIN标志的TCP报文段为结束报文段。
状态位,SYN是发起一个链接,ACK是回复,RST是重新连接,FIN是结束连接。
因为TCP是面向连接的,因此需要双方维护连接的状态,不然双方连接状态的变化会直接导致出错;
窗口的大小设置,进行流量控制,标识自己当前的处理能力;它告诉对方本端的TCP接收缓冲区还能容纳多少字节的数据,这样对方就可以控制发送数据的速度。
其次,TCP 的顺序问题,丢包问题,流量控制都是通过滑动窗口来解决的
拥塞控制时也是通过拥塞窗口来解决的。
延伸常谈的一些问题:顺序问题、拥塞控制、丢包问题、连接维护、流量控制
二,TCP 的三次握手
首先建立连接,连接后需要连接维护,同时商量如何顺序发送包,也就是处理好包的序号问题
TCP 的建立连接称为三次握手,简单来说就是邻居之间日常问候,①老张对老李说;吃饭了不;②老李看到老张消息,回复说:吃了没吃饱啊,还要整点夜宵不;③老张收到老李消息:可以啊,走起。
理解来说就是,老张发送了吃饭请求也收到了老力吃了的响应,老李收到了老张请求消息并响应了老张的请求。双方有来有回,和打太极一样。
详解分析具体过程
分析图中的具体字段意思:closed(未连接)、listen(监听)、SYN-SENT(同步发送)、SYN-RCVD(同步收到)、ESTABLISHED(建立连接)
分析过程:
①初始状态,客户端和服务器都处于 CLOSED 状态,然后这时服务端主动监听某个端口,处于 LISTEN 状态。
②客户端主动发起连接 SYN(请求建立连接),之后处于 SYN-SENT 状态,被服务器端监听到。
③服务端接收了客户端发起的连接,并返回 SYN(请求建立连接),并且 ACK ( 确认 ) 客户端的 SYN,然后处于 SYN-SENT 状态。
④客户端接收到服务端发送的 SYN 和 ACK ,确认了服务端的请求即ACK了,进入了ESTABLISHED状态。然后将它确认连接的消息发送给了服务器。
⑤服务器收到了客户端的ACK,也进入ESTABLISHED状态。至此这两兄弟建立友谊连接;
四,TCP与UDP的区别
五,为什么说TCP可以实现可靠连接
(1) 排好队,一个一个来,按部就班的进行,有条不紊; TCP 报文头里面的序号能使 TCP 的数 据按序到达,从而使传输的数据无差错的,不丢失,不重复,且按顺序到达。
(2)谁迟到,谁没来,都要明确;报文头里面的确认序号能保证不丢包,累计确认及超时重传机制
(3)饭量时时管控好,不然肉肉来找抱;报文头的窗口大小,进行流量控制,标识自己当前的处理能力;它告诉对方本端的TCP接收缓冲区还能容纳多少字节的数据,这样对方就可以控制发送数据的速度。
各位道友学习之后有建议可以共同探讨探讨哦
一步两步往上冲~
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/118884.html
摘要:协议族的构成数据链路层网络层传输层应用层和是网络层的协议,但是它所工作的内容是链路层的。。。发送的时候,协议为每个包编号,简称,以便接收的一方按照顺序还原。并没有提供任何机制,表示原始文件的大小,这由应用层的协议来规定。 TCP/IP协议族的构成 * 数据链路层:ARP,RARP * 网络层: IP,ICMP,IGMP * 传输层:TCP ,UDP,UGP * 应用层:Telnet,F...
摘要:该状态会持续最大段生存期,指报文段在网络中生存的时间,超时会被抛弃时间,若该时间段内没有的重发请求的话,就进入状态。 引言 网络协议是每个前端工程师都必须要掌握的知识,TCP/IP 中有两个具有代表性的传输层协议,分别是 TCP 和 UDP,本文将介绍下这两者以及它们之间的区别。 想阅读更多优质文章请猛戳GitHub博客 一、TCP/IP网络模型 计算机与网络设备要相互通信,双方就必须...
摘要:该状态会持续最大段生存期,指报文段在网络中生存的时间,超时会被抛弃时间,若该时间段内没有的重发请求的话,就进入状态。 引言 网络协议是每个前端工程师都必须要掌握的知识,TCP/IP 中有两个具有代表性的传输层协议,分别是 TCP 和 UDP,本文将介绍下这两者以及它们之间的区别。 想阅读更多优质文章请猛戳GitHub博客 一、TCP/IP网络模型 计算机与网络设备要相互通信,双方就必须...
摘要:代表传输控制协议网际协议,指的是一系列协议。,传输控制协议是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。第二是超文本传输协议,信息是明文传输,则是具有安全性的加密传输协议。 IP:网络层协议; TCP和UDP:传输层协议; HTTP:应用层协议; SOCKET:TCP/IP网络的API。 TCP/IP代表传输控制协议/网际协议,指的是一系列协议。 T...
摘要:在网络层有协议协议协议协议和协议。而且,因为有确认机制三次握手机制,这些也导致容易被人利用,实现等攻击。没有的这些机制,较被攻击者利用的漏洞就要少一些。但也是无法避免攻击的,比如攻击缺点不可靠,不稳定。 简介 HTTP协议(超文本传输协议)和 UDP(用户数据包协议),TCP 协议(传输控制协议) TCP/IP是个协议组,可分为四个层次:网络接口层、网络层、传输层和应用层。在网络层有I...
阅读 3265·2021-11-24 09:38
阅读 2147·2021-11-23 09:51
阅读 1736·2021-10-13 09:39
阅读 2608·2021-09-23 11:53
阅读 1393·2021-09-02 15:40
阅读 3647·2019-08-30 15:54
阅读 1121·2019-08-30 13:04
阅读 2550·2019-08-30 11:01