三次握手图片(tcp三次握手)

      最后更新:2024-03-23 01:21:00 手机定位技术交流文章

      Go 语言自我提升 (三次握手 - 四次挥手 - TCP状态图 - udp - 网络文件传输)

      三次握手: 1. 主动发起连接请求端(客户端),发送 SYN 标志位,携带数据包、包号2. 被动接收连接请求端(服务器),接收 SYN,回复 ACK,携带应答序列号。同时,发送SYN标志位,携带数据包、包号3. 主动发起连接请求端(客户端),接收SYN 标志位,回复 ACK。被动端(服务器)接收 ACK —— 标志着 三次握手建立完成( Accept()/Dial() 返回 )四次挥手:1. 主动请求断开连接端(客户端), 发送 FIN标志,携带数据包2. 被动接受断开连接端(服务器), 发送 ACK标志,携带应答序列号。 —— 半关闭完成。3. 被动接受断开连接端(服务器), 发送 FIN标志,携带数据包4. 主动请求断开连接端(客户端), 发送 最后一个 ACK标志,携带应答序列号。—— 发送完成,客户端不会直接退出,等 2MSL时长。等 2MSL待目的:确保服务器 收到最后一个ACK滑动窗口:通知对端本地存储数据的 缓冲区容量。—— write 函数在对端 缓冲区满时,有可能阻塞。TCP状态转换:1. 主动发起连接请求端:CLOSED ——> 发送SYN ——> SYN_SENT(了解) ——> 接收ACK、SYN,回发 ACK ——> ESTABLISHED (数据通信)2. 主动关闭连接请求端:ESTABLISHED ——> 发送FIN ——> FIN_WAIT_1 ——> 接收ACK ——> FIN_WAIT_2 (半关闭、主动端)——> 接收FIN、回复ACK ——> TIME_WAIT (主动端) ——> 等 2MSL 时长 ——> CLOSED3. 被动建立连接请求端:CLOSED ——> LISTEN ——> 接收SYN、发送ACK、SYN ——> SYN_RCVD ——> 接收 ACK ——> ESTABLISHED (数据通信)4. 被动断开连接请求端:ESTABLISHED ——> 接收 FIN、发送 ACK ——> CLOSE_WAIT ——> 发送 FIN ——> LAST_ACK ——> 接收ACK ——> CLOSEDwindows下查看TCP状态转换:netstat -an | findstr  端口号Linux下查看TCP状态转换:netstat -an | grep  端口号TCP和UDP对比:TCP: 面向连接的可靠的数据包传递。 针对不稳定的 网络层,完全弥补。ACKUDP:无连接不可靠的报文传输。 针对不稳定的 网络层,完全不弥补。还原网络真实状态。优点                                                            缺点TCP:可靠、顺序、稳定                                     系统资源消耗大,程序实现繁复、速度慢UDP:系统资源消耗小,程序实现简单、速度快                          不可靠、无序、不稳定使用场景:TCP:大文件、可靠数据传输。 对数据的 稳定性、准确性、一致性要求较高的场合。UDP:应用于对数据时效性要求较高的场合。 网络直播、电话会议、视频直播、网络游戏。UDP-CS-Server实现流程:1.  创建 udp地址结构 ResolveUDPAddr(“协议”, “IP:port”) ——> udpAddr 本质 struct{IP、port}2.  创建用于 数据通信的 socket ListenUDP(“协议”, udpAddr ) ——> udpConn (socket)3.  从客户端读取数据,获取对端的地址 udpConn.ReadFromUDP() ——> 返回:n,clientAddr, err4.  发送数据包给 客户端 udpConn.WriteToUDP("数据", clientAddr)UDP-CS-Client实现流程:1.  创建用于通信的 socket。 net.Dial("udp", "服务器IP:port") ——> udpConn (socket)2.  以后流程参见 TCP客户端实现源码。UDPserver默认就支持并发!------------------------------------命令行参数: 在main函数启动时,向整个程序传参。 【重点】语法: go run xxx.go   argv1 argv2  argv3  argv4 。。。xxx.exe:  第 0 个参数。argv1 :第 1 个参数。argv2 :第 2 个参数。argv3 :第 3 个参数。argv4 :第 4 个参数。使用: list := os.Args  提取所有命令行参数。获取文件属性函数:os.stat(文件访问绝对路径) ——> fileInfo 接口fileInfo 包含 两个接口。Name() 获取文件名。 不带访问路径Size() 获取文件大小。网络文件传输 —— 发送端(客户端)1.  获取命令行参数,得到文件名(带路径)filePathlist := os.Args2.  使用 os.stat() 获取 文件名(不带路径)fileName3.  创建 用于数据传输的 socket  net.Dial("tcp", “服务器IP+port”) —— conn4.  发送文件名(不带路径)  给接收端, conn.write()5.  读取 接收端回发“ok”,判断无误。封装函数 sendFile(filePath, conn) 发送文件内容6.  实现 sendFile(filePath,  conn)1) 只读打开文件 os.Open(filePath)for {2) 从文件中读数据  f.Read(buf)3) 将读到的数据写到socket中  conn.write(buf[:n])4)判断读取文件的 结尾。 io.EOF. 跳出循环}网络文件传输 —— 接收端(服务器)1. 创建用于监听的 socket net.Listen() —— listener2. 借助listener 创建用于 通信的 socket listener.Accpet()  —— conn3. 读取 conn.read() 发送端的 文件名, 保存至本地。4. 回发 “ok”应答 发送端。5. 封装函数,接收文件内容 recvFile(文件路径)1) f = os.Create(带有路径的文件名)for {2)从 socket中读取发送端发送的 文件内容 。 conn.read(buf)3)  将读到的数据 保存至本地文件 f.Write(buf[:n])4)  判断 读取conn 结束, 代表文件传输完成。 n == 0  break}
      Go 语言自我提升 (三次握手 - 四次挥手 - TCP状态图 - udp - 网络文件传输)

      PTP是什么 意思?

      PTP是英语“图片传输协议(picture transfer protocol)”的缩写。PTP是最早由柯达公司与微软协商制定的一种标准,符合这种标准的图像设备在接入Windows XP系统之后可以更好地被系统和应用程序所共享,尤其在网络传输方面,系统可以直接访问这些设备用于建立网络相册时图片的上传、网上聊天时图片的传送等。基本要素:(1)寻址。当一个应用程序希望与另一个应用程序传输数据时,必须指明是与哪个应用程序相连。寻址的方法一般采用定义传输地址。因特网传输地址由IP地址和主机端口号组成。(2)建立连接。在实际的网络应用中,采用三次握手的算法,并增加某些条件以保证建立起可靠的连接。增加的条件是:所发送的报文都要有递增的序列号;对每个报文设立一个计时器,设定一个最大时延,对那些超过最大时延仍没有收到确认信息的报文就认为已经丢失,需要重传。(3)释放连接。也采用三次握手的算法。以上内容参考:百度百科-传输协议
      PTP是主从同步系统,一般采用硬件时间戳,并配合一些对NTP更高精度的延时测量算法。PTP最常用的是直接在 MAC 层进行 PTP 协议包分析 , 这样可以不经过UDP 协议栈 , 减少PTP 在协议栈中驻留时间 , 提高同步的精确度。PTP也可以承载在 UDP 上时 , 软件可以采用 SOCKET 进行收发 UDP包 , 事件消息的 UDP 端口号 319 , 普通消息的组播端口号为 320 ,但其精度就大大降低。PTP的特点:在物理硬件要求主从端都是PTP设备,且网络不能太大,其中间经过的交换机设备也必须支持PTP协议,并且主从时间网络链路唯一,不存在交替的PTP通道。PTPv2 采用相对时间同步机制。一个参与者被选作主时间钟,其将发送同步信息到从站。主站将发送同步报文到网络。所有的从站计算时间延迟。
      1、PTP一般称为P2P。P2P金融又叫P2P信贷,是互联网金融(ITFIN)的一种。意思是:点对点。2、P2P是英文person to person的缩写,意即个人对个人。意思即个人对个人。P2P网络借款,又称点对点网络借款,是一种将小额资金聚集起来借贷给有资金需求人群的一种民间小额借贷模式。扩展资料P2P金融指不同的网络节点之间的小额借贷交易,需要借助电子商务专业网络平台帮助借贷双方确立借贷关系并完成相关交易手续。借款者可自行发布借款信息,包括金额、利息、还款方式和时间,自行决定借出金额实现自助式借款。参考资料百度百科-P2P金融
      1、PTP是英语“图片传输协议(picture transfer protocol)”的缩写。 2、PTP是英语“proton-transfer polymerization ”的缩写。3、PTP:纸带打印机(Paper Tape Printer)4、PTP: Paid To Promote意思是你帮某个站做宣传做广告来提升其知名度,这个站就根据其提供给你的广告页面被有效点击或曝光的次数(即流量)给你付钱,做PTP有多种形式,一般是把PTP链接 (即广告页面网址)加在你的冲浪站做流量交换。不懂的可以看参考资料。5、精确时间同步协议(Precision Time Synchronization Protocol) 6、PTP 强直后增强(post tetanic potentiation) 指反复高频电刺激突出前神经纤维后,引起突出传递易化,使突触后纤维反应增强的现象。
      PTP是什么 意思?

      画图描述tcp三次握手建立连接的过程。

      答:如下图所示。客户端主动发出请求,并令其SYN=1, 并设置S1Q序号值等于X;服务器端接收到请求之后进行响应,发送SYN=1,ACK=1,表示同意建立连接,开始分配服务器资源。同时服务器端发送序号seq=y,服务器期待收到的数据序号ack=x+1;客户端收到服务器的期待以后,并发送序号seq=x+1对应的数据,同时ack=y+1表示期待收到序号为y+1对应的数据;
      画图描述tcp三次握手建立连接的过程。

      运输层为什么要提供TCP和UDP两个协议?

      网络协议是必须要掌握的知识,TCP/IP 中有两个具有代表性的传输层协议,分别是 TCP 和 UDP,本文将介绍下这两者以及它们之间的区别。一、TCP/IP网络模型计算机与网络设备要相互通信,双方就必须基于相同的方法。比如,如何探测到通信目标、由哪一边先发起通信、使用哪种语言进行通信、怎样结束通信等规则都需要事先确定。不同的硬件、操作系统之间的通信,所有的这一切都需要一种规则。而我们就把这种规则称为协议(protocol)。TCP/IP 是互联网相关的各类协议族的总称,比如:TCP,UDP,IP,FTP,HTTP,ICMP,SMTP 等都属于 TCP/IP 族内的协议。TCP/IP模型是互联网的基础,它是一系列网络协议的总称。这些协议可以划分为四层,分别为链路层、网络层、传输层和应用层。链路层:负责封装和解封装IP报文,发送和接受ARP/RARP报文等。网络层:负责路由以及把分组报文发送给目标网络或主机。传输层:负责对报文进行分组和重组,并以TCP或UDP协议格式封装报文。应用层:负责向用户提供应用程序,比如HTTP、FTP、Telnet、DNS、SMTP等。请点击输入图片描述在网络体系结构中网络通信的建立必须是在通信双方的对等层进行,不能交错。 在整个数据传输过程中,数据在发送端时经过各层时都要附加上相应层的协议头和协议尾(仅数据链路层需要封装协议尾)部分,也就是要对数据进行协议封装,以标识对应层所用的通信协议。接下去介绍TCP/IP 中有两个具有代表性的传输层协议----TCP 和 UDP。二、UDPUDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。它有以下几个特点:1. 面向无连接首先 UDP 是不需要和 TCP一样在发送数据前进行三次握手建立连接的,想发数据就可以开始发送了。并且也只是数据报文的搬运工,不会对数据报文进行任何拆分和拼接操作。具体来说就是:在发送端,应用层将数据传递给传输层的 UDP 协议,UDP 只会给数据增加一个 UDP 头标识下是 UDP 协议,然后就传递给网络层了在接收端,网络层将数据传递给传输层,UDP 只去除 IP 报文头就传递给应用层,不会任何拼接操作2. 有单播,多播,广播的功能UDP 不止支持一对一的传输方式,同样支持一对多,多对多,多对一的方式,也就是说 UDP 提供了单播,多播,广播的功能。3. UDP是面向报文的发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。因此,应用程序必须选择合适大小的报文4. 不可靠性首先不可靠性体现在无连接上,通信都不需要建立连接,想发就发,这样的情况肯定不可靠。并且收到什么数据就传递什么数据,并且也不会备份数据,发送数据也不会关心对方是否已经正确接收到数据了。再者网络环境时好时坏,但是 UDP 因为没有拥塞控制,一直会以恒定的速度发送数据。即使网络条件不好,也不会对发送速率进行调整。这样实现的弊端就是在网络条件不好的情况下可能会导致丢包,但是优点也很明显,在某些实时性要求高的场景(比如电话会议)就需要使用 UDP 而不是 TCP。从上面的动态图可以得知,UDP只会把想发的数据报文一股脑的丢给对方,并不在意数据有无安全完整到达。5. 头部开销小,传输数据报文时是很高效的。请点击输入图片描述UDP 头部包含了以下几个数据:两个十六位的端口号,分别为源端口(可选字段)和目标端口整个数据报文的长度整个数据报文的检验和(IPv4 可选 字段),该字段用于发现头部信息和数据中的错误因此 UDP 的头部开销小,只有八字节,相比 TCP 的至少二十字节要少得多,在传输数据报文时是很高效的三、TCP当一台计算机想要与另一台计算机通讯时,两台计算机之间的通信需要畅通且可靠,这样才能保证正确收发数据。例如,当你想查看网页或查看电子邮件时,希望完整且按顺序查看网页,而不丢失任何内容。当你下载文件时,希望获得的是完整的文件,而不仅仅是文件的一部分,因为如果数据丢失或乱序,都不是你希望得到的结果,于是就用到了TCP。TCP协议全称是传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议,由 IETF 的RFC 793定义。TCP 是面向连接的、可靠的流协议。流就是指不间断的数据结构,你可以把它想象成排水管中的水流。1. TCP连接过程如下图所示,可以看到建立一个TCP连接的过程为(三次握手的过程):请点击输入图片描述第一次握手客户端向服务端发送连接请求报文段。该报文段中包含自身的数据通讯初始序号。请求发送后,客户端便进入 SYN-SENT 状态。第二次握手服务端收到连接请求报文段后,如果同意连接,则会发送一个应答,该应答中也会包含自身的数据通讯初始序号,发送完成后便进入 SYN-RECEIVED 状态。第三次握手当客户端收到连接同意的应答后,还要向服务端发送一个确认报文。客户端发完这个报文段后便进入 ESTABLISHED 状态,服务端收到这个应答后也进入 ESTABLISHED 状态,此时连接建立成功。这里可能大家会有个疑惑:为什么 TCP 建立连接需要三次握手,而不是两次?这是因为这是为了防止出现失效的连接请求报文段被服务端接收的情况,从而产生错误。2. TCP断开链接请点击输入图片描述TCP 是全双工的,在断开连接时两端都需要发送 FIN 和 ACK。第一次握手若客户端 A 认为数据发送完成,则它需要向服务端 B 发送连接释放请求。第二次握手B 收到连接释放请求后,会告诉应用层要释放 TCP 链接。然后会发送 ACK 包,并进入 CLOSE_WAIT 状态,此时表明 A 到 B 的连接已经释放,不再接收 A 发的数据了。但是因为 TCP 连接是双向的,所以 B 仍旧可以发送数据给 A。第三次握手B 如果此时还有没发完的数据会继续发送,完毕后会向 A 发送连接释放请求,然后 B 便进入 LAST-ACK 状态。第四次握手A 收到释放请求后,向 B 发送确认应答,此时 A 进入 TIME-WAIT 状态。该状态会持续 2MSL(最大段生存期,指报文段在网络中生存的时间,超时会被抛弃) 时间,若该时间段内没有 B 的重发请求的话,就进入 CLOSED 状态。当 B 收到确认应答后,也便进入 CLOSED 状态。3. TCP协议的特点面向连接面向连接,是指发送数据之前必须在两端建立连接。建立连接的方法是“三次握手”,这样能建立可靠的连接。建立连接,是为数据的可靠传输打下了基础。仅支持单播传输每条TCP传输连接只能有两个端点,只能进行点对点的数据传输,不支持多播和广播传输方式。面向字节流TCP不像UDP一样那样一个个报文独立地传输,而是在不保留报文边界的情况下以字节流方式进行传输。可靠传输对于可靠传输,判断丢包,误码靠的是TCP的段编号以及确认号。TCP为了保证报文传输的可靠,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。提供拥塞控制当网络出现拥塞的时候,TCP能够减小向网络注入数据的速率和数量,缓解拥塞TCP提供全双工通信TCP允许通信双方的应用程序在任何时候都能发送数据,因为TCP连接的两端都设有缓存,用来临时存放双向通信的数据。当然,TCP可以立即发送一个数据段,也可以缓存一段时间以便一次发送更多的数据段(最大的数据段大小取决于MSS)四、TCP和UDP的比较1. 对比UDPTCP是否连接    无连接    面向连接是否可靠    不可靠传输,不使用流量控制和拥塞控制    可靠传输,使用流量控制和拥塞控制连接对象个数    支持一对一,一对多,多对一和多对多交互通信    只能是一对一通信传输方式    面向报文    面向字节流首部开销    首部开销小,仅8字节    首部最小20字节,最大60字节适用场景    适用于实时应用(IP电话、视频会议、直播等)    适用于要求可靠传输的应用,例如文件传输2. 总结TCP向上层提供面向连接的可靠服务 ,UDP向上层提供无连接不可靠服务。虽然 UDP 并没有 TCP 传输来的准确,但是也能在很多实时性要求高的地方有所作为对数据准确性要求高,速度可以相对较慢的,可以选用TCP
      CP是面向连接的传输控制协议,而UDP提供了无连接的数据报服务; TCP具有高可靠性,确保传输数据的正确性,不出现丢失或乱序;UDP在传输数据前不建立连接,不对数据报进行检查与修改,无须等待
      用户数据报协议UDP(User Datagram Protocol) (1)UDP在传送数据之前不需要建立连接,... TCP提供可靠的,提供面向连接的服务
      运输层为什么要提供TCP和UDP两个协议?

      计算机三级网络技术关于Tcp三次握手的问题。标志着握手成功的到底是哪一行,如下图,图一答案给的是8

      个人感觉是7,第三次握手就发送了握手完成的标号
      呃呃
      计算机三级网络技术关于Tcp三次握手的问题。标志着握手成功的到底是哪一行,如下图,图一答案给的是8

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/308198.html

          热门文章

          文章分类