当前位置: 首页 > news >正文

凡客网站可以建设会员系统吗产品营销策划方案怎么做

凡客网站可以建设会员系统吗,产品营销策划方案怎么做,wordpress怎么设置水印,wordpress插件 stock目录 TCP和UDP是什么#xff1f; TCP和UDP有什么区别? 三次握手和四次挥手 TCP维护可靠的通信方式 拥塞控制 滑动窗口的原理 什么是粘包以及粘包的原因 粘包的处理方式 TCP和UDP使用场景 TCP和UDP是什么#xff1f; TCP#xff1a; 传输控制协议#xff08;TCP TCP和UDP有什么区别? 三次握手和四次挥手 TCP维护可靠的通信方式 拥塞控制 滑动窗口的原理 什么是粘包以及粘包的原因 粘包的处理方式 TCP和UDP使用场景 TCP和UDP是什么 TCP 传输控制协议TCPTransmission Control Protocol是一种面向连接的、可靠的、基于字节流的传输层通信协议由IETF的RFC 793 定义。 UDP Internet 协议集支持一个无连接的传输协议该协议称为用户数据报协议UDPUser Datagram Protocol。UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法。RFC 768 描述了 UDP。 TCP和UDP有什么区别? TCP面向连接通过三次握手建立连接四次挥手接除连接;UDP是无连接的即发送数据之前不需要建立连接这种方式为UDP带来了高效的传输效率但也导致无法确保数据的发送成功。TCP是可靠的通信方式。通过TCP连接传送的数据TCP通过超时重传、 数据校验等方式来确保数据无差错不丢失不重复且按序到达而UDP由于无需连接的原因将会以最大速度进行传输但不保证可靠交付也就是会出现丢失、重复等等问题。TCP面向字节流实际上是TCP把数据看成一连串无结构的字节流由于连接的问题当网络出现波动时连接可能出现响应问题UDP是面向报文的UDP没有拥塞控制因此网络出现拥塞不会使源主机的发送速率降低。每一条TCP连接只能是点到点的而UDP不建立连接所以可以支持一对一一对多多对一和多对多的交互通信也就是可以同时接受多个人的包。TCP需要建立连接首部开销20字节相比8个字节的UDP显得比较大。TCP的逻辑通信信道是全双工的可靠信道UDP则是不可靠信道。   三次握手和四次挥手 第一次握手客户端给服务器发送一个 SYN 报文。第二次握手服务器收到 SYN 报文之后会应答一个 SYNACK 报文。三次握手客户端收到 SYNACK 报文之后会回应一个 ACK 报文。服务器收到 ACK 报文之后三次握手建立完成。作用是为了确认双方的接收与发送能力是否正常。 第一次挥手客户端发送一个 FIN 报文报文中会指定一个序列号。此时客户端处于FIN_WAIT1状态。第二次握手服务端收到 FIN 之后会发送 ACK 报文且把客户端的序列号值 1 作为 ACK 报文的序列号值表明已经收到客户端的报文了此时服务端处于 CLOSE_WAIT状态。第三次挥手如果服务端也想断开连接了和客户端的第一次挥手一样发给 FIN 报文且指定一个序列号。此时服务端处于 LAST_ACK 的状态。第四次挥手客户端收到 FIN 之后一样发送一个 ACK 报文作为应答且把服务端的序列号值 1 作为自己 ACK 报文的序列号值此时客户端处于 TIME_WAIT 状态。需要过一阵子以确保服务端收到自己的 ACK 报文之后才会进入 CLOSED 状态服务端收到 ACK 报文之后就处于关闭连接了处于 CLOSED 状态。   为什么要进行三次握手 当进行第一次握手网络不好可能会堵塞所以连接的请求并没有到达服务器端 但是tcp连接有超时重传的机制所以再一次发送请求这时候服务器端接收到了你的请求他也会返回一个请求给你这是第二次握手 但是这时候网络环境突然又好了起来那个堵塞的请求到达了服务器端服务器端又给你回了一个请求但是你又不想给服务器发送请求这时候服务器的资源会进行占用等待你的请求为了不使服务器的资源继续占用你又必须发送一个请求给服务器 所以要进行3次握手 为什么不能两次握手能进行连接 现在把三次握手改成仅需要两次握手死锁是可能发生的。作为例子考虑计算机S和C之间的通信假定C给S发送一个连接请求分组S收到了这个分组并发送了确认应答分组。按照两次握手的协定S认为连接已经成功地建立了可以开始发送数据分组。可是C在S的应答分组在传输中被丢失的情况下将不知道S是否已准备好不知道S建立什么样的序列号C甚至怀疑S是否收到自己的连接请求分组。在这种情况下C认为连接还未建立成功将忽略S发来的任何数据分组只等待连接确认应答分组。而S在发出的分组超时后重复发送同样的分组。这样就形成了死锁。   为啥只有三次握手才能确认双方的接受与发送能力是否正常而两次却不可以 第一次握手客户端发送网络包服务端收到了。这样服务端就能得出结论客户端的发送能力、服务端的接收能力是正常的。 第二次握手服务端发包客户端收到了。这样客户端就能得出结论服务端的接收、发送能力客户端的发送能力是正常的。不过此时服务器并不能确认客户端的接收能力是否正常。 第三次握手客户端发包服务端收到了。这样服务端就能得出结论客户端的接收、发送能力正常服务器自己的发送、接收能力也正常。 刚开始客户端处于 closed 的状态服务端处于 listen 状态。然后 1、第一次握手客户端给服务端发一个 SYN 报文并指明客户端的初始化序列号 ISNc。此时客户端处于 SYN_Send 状态。 2、第二次握手服务器收到客户端的 SYN 报文之后会以自己的 SYN 报文作为应答并且也是指定了自己的初始化序列号 ISN(s)同时会把客户端的 ISN 1 作为 ACK 的值表示自己已经收到了客户端的 SYN此时服务器处于 SYN_REVD 的状态。 3、第三次握手客户端收到 SYN 报文之后会发送一个 ACK 报文当然也是一样把服务器的 ISN 1 作为 ACK 的值表示已经收到了服务端的 SYN 报文此时客户端处于 establised 状态。 4、服务器收到 ACK 报文之后也处于 establised 状态此时双方以建立起了链接。 Ps:(1)SYN1 表示该报文不携带数据但消耗一个序号 seqxseqx是客户端的初始化序列号因为tcp是面向字节流的 (2)SYN1 表示该报文不携带数据但消耗一个序号 seqyseqy是服务器的初始化序列号ACK1是一个确认号 ackx1表示服务器下次接收到的序号希望是x1。然后服务器进入到SYN-RCVD等待的状态 (3)ACK1是一个确认号seqx1是上一次服务器回应的序号要求acky1表示客户下一次接收到的序号希望是y1 三次握手的作用 确认双方的接受能力、发送能力是否正常。指定自己的初始化序列号为后面的可靠传送做准备。如果是 https 协议的话三次握手这个过程还会进行数字证书的验证以及加密密钥的生成到。 ISN是固定的吗 三次握手的一个重要功能是客户端和服务端交换ISN(Initial Sequence Number), 以便让对方知道接下来接收数据的时候如何按序列号组装数据。 如果ISN是固定的攻击者很容易猜出后续的确认号因此 ISN 是动态生成的。 什么是半连接队列 服务器第一次收到客户端的 SYN 之后就会处于 SYN_RCVD 状态此时双方还没有完全建立其连接服务器会把此种状态下请求连接放在一个队列里我们把这种队列称之为半连接队列。当然还有一个全连接队列就是已经完成三次握手建立起连接的就会放在全连接队列中。如果队列满了就有可能会出现丢包现象。 这里在补充一点关于SYN-ACK 重传次数的问题 服务器发送完SYNACK包如果未收到客户确认包服务器进行首次重传等待一段时间仍未收到客户确认包进行第二次重传如果重传次数超 过系统规定的最大重传次数系统将该连接信息从半连接队列中删除。注意每次重传等待的时间不一定相同一般会是指数增长例如间隔时间为 1s, 2s, 4s, 8s, … 三次握手过程中可以携带数据吗 可以携带数据的。也就是说第一次、第二次握手不可以携带数据而第三次握手是可以携带数据的。 假如第一次握手可以携带数据的话如果有人要恶意攻击服务器那他每次都在第一次握手中的 SYN 报文中放入大量的数据因为攻击者根本就不理服务器的接收、发送能力是否正常然后疯狂着重复发 SYN 报文的话这会让服务器花费很多时间、内存空间来接收这些报文。也就是说第一次握手可以放数据的话其中一个简单的原因就是会让服务器更加容易受到攻击了。 而对于第三次的话此时客户端已经处于 established 状态也就是说对于客户端来说他已经建立起连接了并且也已经知道服务器的接收、发送能力是正常的了所以能携带数据页没啥毛病。 四次挥手 这里特别需要主要的就是TIME_WAIT这个状态了这个是面试的高频考点就是要理解为什么客户端发送 ACK 之后不直接关闭而是要等一阵子才关闭。这其中的原因就是要确保服务器是否已经收到了我们的 ACK 报文如果没有收到的话服务器会重新发 FIN 报文给客户端客户端再次收到 ACK 报文之后就知道之前的 ACK 报文丢失了然后再次发送 ACK 报文。 至于 TIME_WAIT 持续的时间至少是一个报文的来回时间。一般会设置一个计时如果过了这个计时没有再次收到 FIN 报文则代表对方成功就是 ACK 报文此时处于 CLOSED 状态。 为什么建立连接需要三次释放连接需要四次 TCP建立连接要进行3次握手,而断开连接要进行4次,这是由于TCP的半关闭造成的,因为TCP连接是全双工的(即数据可在两个方向上同时传递)所以进行关闭时每个方向上都要单独进行关闭,这个单方向的关闭就叫半关闭.关闭的方法是一方完成它的数据传输后,就发送一个FIN来向另一方通告将要终止这个方向的连接.当一端收到一个FIN,它必须通知应用层TCP连接已终止了这个方向的数据传送,发送FIN通常是应用层进行关闭的结果。 这是因为服务端的LISTEN状态下的SOCKET当收到SYN报文的建连请求后它可以把ACK和SYNACK起应答作用而SYN起同步作用放在一个报文里来发送。但关闭连接时当收到对方的FIN报文通知时它仅仅表示对方没有数据发送给你了但未必你所有的数据都全部发送给对方了所以你可以未必会马上会关闭SOCKET,也即你可能还需要发送一些数据给对方之后再发送FIN报文给对方来表示你同意现在可以关闭连接了所以它这里的ACK报文和FIN报文多数情况下都是分开发送的。 TCP维护可靠的通信方式 数据分片在发送端对用户数据进行分片在接收端进行重组由TCP确定分片的大小并控制分片和重组到达确认接收端接收到分片数据时根据分片数据序号向发送端发送一个确认包超时重发发送方在发送分片后计时若超时却没有收到相应的确认包将会重发对应的分片滑动窗口TCP连接双方的接收缓冲空间大小都固定接收端只能接受缓冲区能接纳的数据。失序处理TCP的接收端需要重新排序接收到的数据。重复处理如果传输的TCP分片出现重复TCP的接收端需要丢弃重复的数据。数据校验TCP通过保持它首部和数据的检验和来检测数据在传输过程中的任何变化。 拥塞控制 拥塞现象当网络的吞吐量达到一定的限制后会发生拥塞现象那么此时发送的数据包会因为延迟无法到达接收端因为超时重传机制所以发送端会重新发送数据包那么网络带宽中本来就很拥塞那么的话再发数据包就会更加拥塞由此会形成恶性循环如果不加控制的话那么最终网络的有效吞吐量将接近为0. 拥塞控制代价 需要获得网络内部流量分布的信息。在实施拥塞控制之前还需要在结点之间交换信息和各种命令以便选择控制的策略和实施控制。这样就产生了额外的开销。拥塞控制还需要将一些资源分配给各个用户单独使用使得网络资源不能更好地实现共享。 拥塞控制的四种算法慢开始、拥塞避免、快重传和快恢复。 滑动窗口的原理 TCP是全双工通信因此每一方的滑动窗口都包括了接收窗口发送窗口接收窗口负责处理自己接收到的数据发送窗口负责处理自己要发送出去的数据。滑动窗口的本质其实就是维护几个变量通过这些变量将TCP处理的数据分为几类同时在发送出一个报文、接收一个报文对这些变量做一定的处理维护。 什么是粘包以及粘包的原因 粘包多个数据包被连续存储于连续的缓存中在对数据包进行读取时由于无法确定发生方的发送边界而采用某一估测值大小来进行数据读出若双方的size不一致时就会使指发送方发送的若干包数据到接收方接收时粘成一包从接收缓冲区看后一包数据的头紧接着前一包数据的尾。 比如说发送方发送了两个数据接收方一次收了一个半数据接收方可能不清楚一个包有多大 出现粘包现象的原因是多方面的它既可能由发送方造成也可能由接收方造成。 发送方引起的粘包是由TCP协议本身造成的 TCP为提高传输效率发送方往往要收集到足够多的数据后才发送一包数据。若连续几次发送的数据都很少通常TCP会根据优化算法把这些数据合成一包后一次发送出去这样接收方就收到了粘包数据。TCP协议规定有MSS如果数据包过长就会被分开传输。这样接收方就收到了粘包数据。   接收方引起的粘包是由于接收方用户进程不及时接收数据从而导致粘包现象。这是因为接收方先把收到的数据放在系统接收缓冲区用户进程从该缓冲区取数据若下一包数据到达时前一包数据尚未被用户进程取走则下一包数据放到系统接收缓冲区时就接到前一包数据之后而用户进程根据预先设定的缓冲区大小从系统接收缓冲区取数据这样就一次取到了多包数据。 在代码中常见体现 要发送的数据大于TCP发送缓冲区剩余空间大小将会发生拆包。要发送的数据大于MSSTCP在传输前将进行拆包。要发送的数据小于TCP发送缓冲区的大小TCP将多次写入缓冲区的数据一次发送出去将会发生粘包。接收数据端的应用层没有及时读取接收缓冲区中的数据将发生粘包。 粘包的处理方式 发送端给每个数据包添加包首部首部中应该至少包含数据包的长度这样接收端在接收到数据后通过读取包首部的长度字段便知道每一个数据包的实际长度了。发送端将每个数据包封装为固定长度不够的可以通过补0填充这样接收端每次从接收缓冲区中读取固定长度的数据就自然而然的把每个数据包拆分开来。可以在数据包之间设置边界如添加特殊符号这样接收端通过这个边界就可以将不同的数据包拆分开。 TCP和UDP使用场景 1.UDP 使用场景: 因此UDP不提供复杂的控制机制利用IP提供面向无连接的通信服务随时都可以发送数据处理简单且高效。 所以主要使用在以下场景 包总量较小的通信DNS、SNMP视频、音频等多媒体通信即时通信QQ就是使用的UDP协议。广播通信 主要是一切追求速度的场景上 2.TCP 使用场景: TCP 使用场景:相对于 UDPTCP 实现了数据传输过程中的各种控制可以进行丢包时的重发控制还可以对次序乱掉的分包进行顺序控制。在对可靠性要求较高的情况下可以使用 TCP即不考虑 UDP 的时候都可以选择 TCP。 特别是需要可靠连接比如付费、加密数据等等方向都需要依靠TCP
http://www.zqtcl.cn/news/321944/

相关文章:

  • 网站开发php和c语言区别网站开发教程大全
  • 建设银行通控件网站谷歌推广
  • 我要建网站需要什么付费wordpress
  • 网站收录查询情况wordpress主题仿
  • 网站单页生成器c 网站开发需要学什么
  • 什么网站是免费的免费图片链接生成器
  • 网站建设伍金手指下拉9服务器多少钱
  • 手机网站大全网站收费网站推广
  • 华企立方做网站自己动手做导航网站
  • 如何建设教师网上授课网站重庆建设网站哪家专业
  • 企业网站页头背景图建设三轮摩托车官网
  • 直播网站创做上海idc机房托管
  • 受欢迎自适应网站建设地址c2c二手车交易平台
  • 做个平台网站怎么做房价查询
  • 自学网站建设最快要多久asp.net 手机网站开发
  • 淮安做网站找哪家公司verycloud wordpress
  • 无法连接到wordpress站点网站建设的 几点
  • 网站免费空间购买wordpress支持页面模版
  • 腾讯建设网站视频宁波城乡住房建设厅网站
  • 乐清网站开发公司个人网站建设工作室
  • 网站空间升级通知手机端怎么看世界杯
  • 广西南宁网站推广建设网站视频教程
  • 福州专业网站建设推广费用nas可做网站服务器吗
  • 齐鲁建设网站福建省高速公路建设管理网站
  • 比格设计网站官网收录网站查询
  • 国外做直播网站淘宝电商网站怎么做的
  • 国外私人网站网站由那些组成
  • 网站备案多久通过机械设备网站
  • 企业自建站案例网站基础知识域名5个点
  • 咸宁建设网站海口市网站建设