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

网站访问统计方案游戏网站开发计划书

网站访问统计方案,游戏网站开发计划书,那些网站可以做条形码,鞋材加工东莞网站建设TCP协议是一个安全的、面向连接的、流式传输协议#xff0c;所谓的面向连接就是三次握手#xff0c;对于程序猿来说只需要在客户端调用connect()函数#xff0c;三次握手就自动进行了。先通过下图看一下TCP协议的格式#xff0c;然后再介绍三次握手的具体流程。 1.tcp协议…TCP协议是一个安全的、面向连接的、流式传输协议所谓的面向连接就是三次握手对于程序猿来说只需要在客户端调用connect()函数三次握手就自动进行了。先通过下图看一下TCP协议的格式然后再介绍三次握手的具体流程。 1.tcp协议介绍 在Tcp协议中比较重要的字段有 源端口表示发送端端口号字段长 16 位2个字节目的端口表示接收端端口号字段长 16 位2个字节序号sequence number字段长 32 位占4个字节序号的范围为 [04284967296]。 由于TCP是面向字节流的在一个TCP连接中传送的字节流中的每一个字节都按顺序编号首部中的序号字段则是指本报文段所发送的数据的第一个字节的序号这是随机生成的。序号是循环使用的当序号增加到最大值时下一个序号就又回到了0确认序号acknowledgement number占32位4字节表示收到的下一个报文段的第一个数据字节的序号如果确认序号为N序号为S则表明到序号N-S为止的所有数据字节都已经被正确地接收到了。8个标志位Flag: CWRCWR 标志与后面的 ECE 标志都用于 IP 首部的 ECN 字段ECE 标志为 1 时则通知对方已将拥塞窗口缩小ECE若其值为 1 则会通知对方从对方到这边的网络有阻塞。在收到数据包的 IP 首部中 ECN 为 1 时将 TCP 首部中的 ECE 设为 1.URG该位设为 1表示包中有需要紧急处理的数据对于需要紧急处理的数据与后面的紧急指针有关ACK该位设为 1确认应答的字段有效TCP规定除了最初建立连接时的 SYN 包之外该位必须设为 1PSH该位设为 1表示需要将收到的数据立刻传给上层应用协议若设为 0则先将数据进行缓存RST该位设为 1表示 TCP 连接出现异常必须强制断开连接SYN用于建立连接该位设为 1表示希望建立连接并在其序列号的字段进行序列号初值设定FIN该位设为 1表示今后不再有数据发送希望断开连接。窗口大小该字段长 16 位表示从确认序号所指位置开始能够接收的数据大小TCP 不允许发送超过该窗口大小的数据。 2.三次握手  Tcp连接是双向连接客户端和服务器需要分别向对方发送连接请求并且建立连接三次握手成功之后二者之间的双向连接也就成功建立了。如果要保证三次握手顺利完成必须要满足以下条件 服务器端已经启动并且启动了监听被动接受连接的一端客户端基于服务器端监听的IP和端口向服务器端发起连接请求主动发起连接的一端 三次握手具体过程如下 第一次握手 客户端客户端向服务器端发起连接请求将报文中的SYN字段置为1生成随机序号xseqx服务器端接收客户端发送的请求数据解析tcp协议校验SYN标志位是否为1并得到序号 x 第二次握手 服务器端给客户端回复数据 1.回复ACK, 将tcp协议ACK对应的标志位设置为1表示同意了客户端建立连接的请求 2.回复了 ackx1, 这是确认序号 x: 客户端生成的随机序号 1: 客户端给服务器发送的数据的量, SYN标志位存储到某一个字节中, 因此按照一个字节计算表示客户端给服务器发送的1个字节服务器收到了。 3.将tcp协议中的SYN对应的标志位设置为 1, 服务器向客户端发起了连接请求 4.服务器端生成了一个随机序号 y, 发送给了客户端 客户端接收回复的数据并解析tcp协议 校验ACK标志位为1表示服务器接收了客户端的连接请求数据校验确认发送给服务器的数据服务器收到了没有计算公式如下发送的数据的量 使用服务器回复的确认序号 - 客户端生成的随机序号 1x1-x校验SYN标志位为1表示服务器请求和客户端建立连接得到服务器生成的随机序号: y 第三次握手 客户端发送数据给服务器 1.将tcp协议中ACK标志位设置为1表示同意了服务器的连接请求         2.给服务器回复了一个确认序号 ack y1 y服务器端生成的随机序号1服务器给客户端发送的数据量服务器给客户端发送了ACK和SYN, 都存储在这一个字节中 3.发送给服务器的序号就是上一次从服务器端收的确认序号因此 seq x1 服务器端接收数据, 并解析tcp协议 查看ACK对应的标志位是否为1, 如果是1代表, 客户端同意了服务器的连接请求数据校验确认发送给客户端的数据客户端收到了没有计算公式如下给客户端发送的数据量 确认序号 - 服务器生成的随机序号 1y1-y得到客户端发送的序号x1 3.tcp四次挥手 四次挥手是断开连接的过程需要双向断开关于由哪一端先断开连接是没有要求的。通信的两端如果想要断开连接就需要调用close()函数当两端都调用了该函数四次挥手也就完成了。 客户端和服务器断开连接 - 单向断开服务器和客户端断开连接 - 单向断开 进行了两次单向断开双向断开就完成了每进行一次单向断开就会完成两次挥手的动作。 第一次挥手:主动断开连接的一方发送断开连接的请求将tcp协议中FIN标志位设置为1表示请求断开连接发送序号x给对端seqx基于这个序号用于客户端数据校验的计算 被动断开连接的一方接收请求数据, 并解析TCP协议 校验FIN标志位是否为1收到了序号 x基于这个数据计算回复的确认序号 ack 的值 第二次挥手: 被动断开连接的一方回复数据 同意了对方断开连接的请求将ACK标志位设置为1回复 ackx1表示成功接受了客户端发送的一个字节数据向客户端发送序号 seqy基于这个序号用于服务器端数据校验的计算 主动断开连接的一方接收回复数据, 并解析TCP协议 校验ACK标志位如果为1表示断开连接的请求对方已经同意了校验 ack确认发送的数据服务器是否收到了发送的数据 ack - x x 1 -x 1 第三次挥手: 被动断开连接的一方将tcp协议中FIN标志位设置为1表示请求断开连接主动断开连接的一方接收请求数据, 并解析TCP协议校验FIN标志位是否为1 第四次挥手: 主动断开连接的一方回复数据 将tcp协议中ACK对应的标志位设置为1表示同意了断开连接的请求acky1表示服务器发送给客户端的一个字节客户端接收到了序号 seqh此时的h应该等于 x1也就是第三次挥手时服务器回复的确认序号ack的值被动断开连接的一方收到回复的ACK, 此时双向连接双向断开, 通信的两端没有任何关系了 4.流量控制 流量控制可以让发送端根据接收端的实际接受能力控制发送的数据量。它的具体操作是接收端主机向发送端主机通知自己可以接收数据的大小于是发送端会发送不会超过该大小的数据该限制大小即为窗口大小即窗口大小由接收端主机决定。 TCP 首部中专门有一个字段来通知窗口大小接收主机将自己可以接收的缓冲区大小放在该字段中通知发送端。当接收端的缓冲区面临数据溢出时窗口大小的值也是随之改变设置为一个更小的值通知发送端从而控制数据的发送量这样达到流量的控制。这个控制流程的窗口也可以称作滑动窗口。 这个图是一个单向的数据发送: 左侧是数据发送端对应的是发送端的写缓冲区(内存)通过一个环形队列进行数据管理 白色格子: 空闲的内存, 可以写数据粉色的格子: 被写入到内存, 但是还没有被发送出去的数据灰色的格子: 代表已经被发送出去的数据 右侧是数据接收端对应的是接收端的读缓冲区存储发送端发送过来的数据 白色格子空闲的内存, 可以继续接收数据, 滑动窗口的值记录的就是白色的格子的大小 随着接收的数据越来越多, 白色格子越来越少, 滑动窗口的值越来越小如果白色格子没有了, 滑动窗口变为0, 这时候, 发送端就被阻塞了粉色格子接收的数据但是这个数据还没有从内核中读走使用read() / recv() 粉色格子变少了, 可用空间就变多了, 滑动窗口的值就变大了如果滑动窗口的值从0变为大于0, 接收端又重新有容量接收数据了, 发送端的阻塞自动解除继续发送数据 基于TCP通信的流程图记录了从三次握手 - 数据通信 - 四次挥手是全过程 # fast sender: 客户端 # slow recerver: 服务器 # win: 滑动窗口大小 # mss: maximum segment size, 单条数据的最大长度 第1步第一次握手发送连接请求SYN到服务器端 0(0)0表示客户端生成的随机序号(0)表示客户端没有额外给服务器发送数据, 因此数据的量为0win4096: 客户端告诉服务器, 能接收的数据(缓存)的最大量为4kmss1460: 客户端可以处理的单条最大字节数是1460字节 第2步第二次握手 ACK: 服务器同意了客户端的连接请求 SYN: 服务器请求和客户端建立连接8000(0)8000是服务器端生成的随机序号(0)表示服务器没有额外给客户端发送数据, 因此数据的量为01: 发送给客户端的确认序号 确认序号 客户端生成的随机序号 客户端给服务器发送的数据量(字节数) 101表示客户端给服务器发送的1个字节服务器收到了win6144: 服务器告诉客户端我能最多缓存 6k数据mss1024: 服务器能处理的单条数据最大长度是 1k 第3步: 第三次握手 ACK: 客户端同意了服务器的连接请求8001: 发送给服务器的确认序号 确认序号 服务器生成的随机序号 服务器给客户端发送的数据量 8001 8000 1客户端告诉服务器, 你给我发送的1个字节的数据我收到了win4096: 告诉服务器客户端能缓存的最大数据量是4k 第4~9步: 客户端给服务器发送数据 1(1024)1 1-0表示之前一共给服务器发送了1个字节(1024)表示这次要发送的数据量为 1k1025(1024)10251025-0表示之前一共给服务器发送了1025个字节(1024)表示这次要发送的数据量为 1k2049(1024)20492049-0表示之前一共给服务器发送了2049个字节(1024)表示这次要发送的数据量为 1k第9步完成之后服务器的滑动窗口变为0接收数据的缓存被写满了发送端阻塞 第10步: ack6145: 服务器给客户端回复数据6145是确认序号, 代表实际接收的字节数服务器实际接收的字节数 确认序号 - 客户端生成的随机序号 6145 6145 - 0win2048服务器告诉客户端我的缓存还有2k也就是还有4k还在缓存中没有被读走 第11步win4096表示滑动窗口变为4k代表还可以接收4k数据还有2k在缓存中 第12步客户端又给服务器发送了1k数据 第13步: 第一次挥手FIN表示客户端主动和服务器断开连接并且发送了1k数据到服务器端 第14步: 第二次挥手回复ACK, 同意断开连接 第15, 16步: 服务器端从读缓冲区中读数据, 第16步数据读完, 滑动窗口变成最大的6k 第17步: FIN: 服务器请求和客户端断开连接8001(0): 服务器一共给客户端发送的字节数 8001 - 8000 1个字节携带的数据量为0FIN不计算在内ack8194: 服务器收到了客户端的多少个字节: 8194 - 0 8194个字节 第18步: 第四次挥手 ACK: 客户端同意了服务器断开连接的请求8002: 确认序号, 可以计算出服务器给客户端发送了多少数据8002 - 8000 2 个字节
http://www.zqtcl.cn/news/336814/

相关文章:

  • 杭州专业网站建设在哪里wordpress主题重置
  • 仿wordpress站赣州专业网站推广
  • 网站开发需要多长时间python链接wordpress
  • 网上交易网邯郸网站seo
  • wordpress图片后加载外链seo服务
  • 婚庆公司网站建设腾讯广告建站工具
  • 焦作建设厅网站wordpress调用视频播放器
  • 网站版面做好江苏省建设工程设计施工图审核中心网站
  • 智能网站平台wordpress同步头条
  • 做采集的网站有流量吗广州建设学校
  • 建设部网站公告外贸网站建设定制
  • 如何搭建 seo网站上海市住房与城乡建设部网站
  • 百度搜不到自己的网站python云服务器网站开发实例
  • 给企业做网站的业务员优书网没了
  • 江门网站建设方案外包洛阳网站设计哪家专业
  • 电暖怎么做网站办公室平面设计图
  • 全屏网站 功能丽水市企业网站建设 微信营销 影视拍摄
  • 天天爱天天做视频网站网站推送
  • 制作企业网站与app有什么不同化工企业网站建设
  • 东莞企业推广网站专门做黄漫的网站
  • 温州网站关键词排名优化win10 电脑做网站服务器
  • 网站设计规划信息技术教案营销模式和营销策略
  • 太仓住房城乡建设网站微信怎么注册
  • 德骏网站建设重庆企业网站如何推广
  • 路由器做内部网站服务器石家庄新闻综合频道在线直播回放
  • 怎么给网站备案亚马逊网站建设与维护方法分析
  • 金华网站建设团队产品网络推广方案范文
  • 拼多多刷单网站开发虚拟机可以做两个网站
  • wordpress安装路径和站点地址的设置信通网站开发中心
  • 柳州公司网站建设网站服务商