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

dede查看网站源码技能培训中心网站建设

dede查看网站源码,技能培训中心网站建设,wordpress 虾米插件,企业信息查询官网系统目录 一、TCP概念 二、TCP的首部格式 三、TCP可靠传输机制 3.1 确认应答机制 3.2 超时重传机制 3.3 连接管理 3.3.1 三次握手 3.3.2 四次挥手 3.4 流量控制 3.5 拥塞控制 四、TCP效率机制 4.1 滑动窗口 4.2 重发控制 4.3 延迟应答 4.4 捎带应答 五、TCP的…目录 一、TCP概念 二、TCP的首部格式 三、TCP可靠传输机制 3.1 确认应答机制 3.2 超时重传机制  3.3 连接管理  3.3.1 三次握手 3.3.2 四次挥手 3.4 流量控制  3.5 拥塞控制 四、TCP效率机制 4.1 滑动窗口  4.2 重发控制  4.3 延迟应答  4.4 捎带应答 五、TCP的异常情况处理  六、TCP协议特点总结 一、TCP概念 TCP(Transmission Control Protocol传输控制协议)是一种面向连接(连接导向)的、可靠的、 基于IP的传输层协议。TCP协议属于OSI七层模型中的传输层。 二、TCP的首部格式 TCP协议段分为首部和用户数据部分TCP协议段结构如图所示 TCP首部不包括选项为固定20字节 源端口号表示发送端端口号字段长16位。目的端口号表示接收端端口号字段长16位。序号表示发送数据的位置每发送一次数据就累加一次该数据字节数的大小。注意序号不会从0或1开始而是在建立连接时由计算机生成的随机数作为其初始值通过SYN包传给接收端主机。然后再将每转发过去的字节数累加到初始值上表示数据的位置。此外在建立连接和断开连接时发送的SYN包和FIN包虽然并不携带数据但是也会作为一个字节增加对应的序号字段长32位。确认序号用于给对方的响应值为收到TCP报文段的序号值加1表示当前的应答报文针对的是哪个消息进行的确认应答发送端收到这个确认序号以后可以认为在这个序号之前的所有数据都已经被正常接收字段长32位。4位首部长度表示TCP首部的长度字段长4位单位为4字节所以该字段能表示的长度范围为[060]字节而不包括选项的首部长度固定为20字节所以该字段真实的取值范围为[515] × 4字节为[2060]字节二进制表示为[01011111]。6个标志位 URG紧急标志位配合16为紧急指针使用。ACK确认应答标志位凡是报文具有应答特性该标志位就会被设置为1。PSH用于提示接收端应用程序立刻从TCP缓冲区将数据取走。RST用于重新建立连接RST为1时TCP必须强制断开连接在重新建立连接。SYN用于建立连接SYN为1时表示希望建立连接。FIN用于断开连接FIN为1时表示今后不会再有数据发送希望断开连接。窗口大小进行流量窗口控制字段长16位。校验和发送端填充CRC校验接收端校验不通过则认为数据有问题此处的检验和不光包含TCP首部也包含TCP数据部分字段长16位。紧急指针标识那部分数据时紧急数据字段长16位。 三、TCP可靠传输机制 3.1 确认应答机制 在TCP中当发送端的数据到达接收主机时接收端主机会返回一个已收到消息的通知这个消息叫做确认应答(ACK)。  TCP通过确认应答(ACK)机制实现可靠的数据传输当发送端将数据发出之后会等待对端的确认应答如果有确认应答则说明数据已经成功达到对端反之则数据大概率丢失。  TCP将每个字节的数据都进行了编号即为序列号(序号) 。 每一个确认应答(ACK)都带有对应的确认序列号意思告诉发送者我已经收到哪些数据下一次你从哪里开始发送。  3.2 超时重传机制  发送端在一定时间内没有收到确认应答发送端就认为数据已经丢失并进行重发。由此即使产生了丢失仍然能够保证数据能够到达对端实现可靠传输这就是超时重传机制。 主机A发送数据给主机B之后可能因为网络拥堵等原因导致数据丢失无法到达主机B。此时如果主机A在一个特定的时间间隔内都未收到主机B发来的确认应答(ACK)则会将该数据进行重发。 未收到确认应答并不意味着数据一定丢失也有可能是确认应答(ACK)丢失这种情况也会导致发送端因没有收到确认应答(ACK)而进行重发。上图中主机A因未收到主机B的确认应答(ACK)而对数据进行了重发主机B其实已经收到了两次1~1000的数据再收到第二次1~1000的数据时主机B会根据序列号来进行去重。(接收的数据会放在操作系统内核的接收缓冲区中接收缓冲区可以视为是一个阻塞队列对于收到的数据TCP会根据序号检查这个数据是不是在缓冲区中已经存在如果存在则丢弃如果不存在则放进去) 3.3 连接管理  在正常情况下TCP要经过三次握手建立连接四次挥手断开连接。  3.3.1 三次握手 过程 客户端向服务器端发送连接请求(SYN)申请建立客户端到服务器端的连接。服务器端返回确认应答(ACK)第一次SYN的应答和连接请求(SYN)申请建立服务器端到客户端的连接。客户端收到数据状态置为ESTABLISHED表示客户端到服务器端连接建立完成并且发送确认应答(ACK)第二次SYN的应答服务器端收到数据状态置为ESTABLISHED表示服务器端到客户端的连接建立完成。 服务器端状态转化 [CLOSED - LISTEN]服务器端调用listen函数后进入监听状态等待客户端连接。[LISTEN - SYN_RCVD]一旦监听到连接请求(SYN)就将该连接放入内核等待队列中并向客户端发送ACKSYN应答并请求建立连接。[SYN_RCVD - ESTABLISHED]服务器端一旦收到客户端的确认应答(ACK)就进入ESTABLISHED状态表示连接建立完成可以进行数据传输。 客户端状态转化 [CLOSE - SYN_SENT]客户端调用connet函数向服务器端发起连接请求(SYN)。[SYN_SENT - ESTABLISHED]收到服务器端的确认应答(ACK)connect函数调用成功进入ESTABLISHED状态表示连接建立完成可以进行数据传输。 3.3.2 四次挥手 过程 客户端发送FIN到服务器端申请关闭客户端到服务器端的连接。服务器端收到FIN状态置为CLOSE_WAIT并返回确认应答(ACK)。(这个动作是系统实现TCP协议栈默认执行的不需要程序来调用代码)服务器端发送FIN到客户端申请关闭服务端到客户端的连接。(程序手动调用close函数)客户端收到FIN返回确认应答(ACK)并进入TIME_WAIT时间等待状态客户端等待一段时间后状态置为CLOSED表示已经关闭连接。服务器端收到确认应答(ACK)后状态置为CLOSED表示已经关闭连接。 服务器端状态转化 [ESTABLISHED - CLOSE_WAIT]当客户端主动关闭连接(调用close)服务器端会收到结束报文段(FIN)服务器返回确认应答(ACK)进入CLOSE_WAIT状态。[CLOSE_WAIT - LAST_ACK]进入CLOSE_WAIT后说明服务器准备关闭连接(需要处理完之前的数据)。当服务器端真正调用close关闭连接时会向客户端发送FIN此时服务器进入LAST_ACK状态等待最后一个ACK到来(这个ACK是客户端确认收到了FIN)。[LAST_ACK - CLOSE]服务器端收到FIN的确认应答(ACK)进入CLOSE状态彻底关闭连接。 客户端状态转化 [ESTABLISHED - FIN_WAIT_1]客户端主动调用close时, 向服务器端发送结束报文段(FIN), 同时进入FIN_WAIT_1;[FIN_WAIT_1 - FIN_WAIT_2]客户端收到服务器对结束报文段的确认应答(ACK), 则进入FIN_WAIT_2开始等待服务器的结束报文段(FIN)。[FIN_WAIT_2 - TIME_WAIT]客户端收到服务器发来的结束报文段(FIN), 进入TIME_WAIT状态向服务器端发送结束报文段(FIN)的确认应答(ACK)。[TIME_WAIT - CLOSED]客户端要等待一个2MSL(Max Segment Life报文最大生存时间)的时间才会进入CLOSED状态此时彻底关闭连接。 常见问题  为什么服务端不将ACK和FIN合并一起发送形成三次挥手呢 答ACK和FIN的发送时机不同ACK是操作系统内核响应的立即执行FIN是需要由用户程序调用close函数才会发送用户调用close函数的时间和内核响应的时间不同。 为什么客户端要等待一段时间状态才置为CLOSED而不直接将状态置为CLOSED 答如果客户端发给服务器端最后一个确认应答(ACK)丢失此时服务器端会重新给客户端发送结束报文段(FIN)如果直接置为CLOSE状态则接收不到客户端重新发送结束报文段(FIN)从而导致无法重发确认应答(ACK)使服务器端无法进入CLOSED状态。 3.4 流量控制  接收端处理数据的速度是有限的如果发送端发的太快导致接收端的缓冲区被打满这个时候如果发送端继续发送就会造成丢包继而引起丢包重传等等一系列连锁反应。 因此TCP支持根据接收端的处理能力来决定发送端的发送速度这个机制就叫做流量控制(Flow Control) 接收端将自己剩余缓冲区大小存入TCP协议段首部中的“16位窗口大小”字段 通过确认应答(ACK)通知发送端窗口大小越大说明接收端的接收能力越强。发送端根据接收到这个窗口的大小控制自己的发送速度。如果接收缓冲区满了就会将窗口大小设置为0这时发送端不再发送数据而是定期的发送一个窗口探测报文只是为了知道窗口的大小让接收端将窗口大小告诉发送端。 3.5 拥塞控制 TCP通过滑动窗口能够高效可靠的发送大量的数据但是如果在刚开始阶段就发送大量的数据可能会引发其他问题一般来说计算机网络都处在一个共享的环境在网络出现拥堵时突然发送一个较大量的数据极有可能导致整个网络的瘫痪。  TCP为了防止该问题的出现引入慢启动机制对发送数据量进行控制。 这里引入拥塞窗口刚开始时拥塞窗口设置为1每收到一个确认应答(ACK)时拥塞窗口加1每次发送数据的时候拥塞窗口和流量窗口的较小的值作为实际发送的窗口即滑动窗口的大小。 拥塞窗口的增长速度是指数级别的增长速度非常的快为了控制增长速度引入了一个叫做慢启动的阈值当拥塞窗口超过这个阈值时不再按照指数方式增长而变为线性增长。 当TCP开始启动的时候, 慢启动阈值等于窗口最大值。在每次超时重发的时候, 慢启动阈值会变成原来的一半, 同时拥塞窗口置回1。 四、TCP效率机制 4.1 滑动窗口  由于TCP的确认应答机制存在导致对每一个发送的数据段都要返回确认应答(ACK)收到确认应答(ACK)后再发送下一个数据段这样的传输方式产生了一个缺点那就是数据往返时间越长通信性能就越低。  为解决这个问题TCP引入了窗口这个概念即使再往返时间较长的情况下它也能够控制网络性能的下降如上图所示确认应答不再是单个数据段进行应答而是以多个数据段进行应答这个多个数据段的值由窗口大小控制图中的窗口大小为4000个字节(四个数据段)发送前四个数据段的时候不需要等待任何确认应答(ACK)直接发送。  滑动窗口存在于发送端的发送缓冲区中属于发送端的发送缓冲区的一部分。 滑动窗口中的数据段因其某种原因已在传输中丢失发送端未收到此数据段的确认应答(ACK)此时滑动窗口保持不变滑动窗口中数据段进行超时重传。滑动窗口以外的左边是已发送且收到应答的数据右边是尚未发送的数据。滑动窗口中的数据段发送后若如期收到确认应答(ACK)滑动窗口将会滑动到确认应答(ACK)中的序列号的位置原先的数据段就可以不用进行重发此时数据段就可以从滑动窗口中清除滑动窗口整体向右滑动。滑动窗口的大小为min(流量窗口的大小拥塞窗口的大小) 滑动窗口本质为指针或数组下标(暂且认为)int win_start、int win_end滑动窗口可以为0吗答可以win_end由确认应答(ACK)中的16为窗口大小决定当接收缓冲区慢的时候窗口大小就会被设置为0此时滑动窗口大小就为0。如果没有收到开始的报文的确认应答而收到中间的影响吗答不影响滑动窗口如果一直向右移动会越界吗答不会发送缓冲区为环形 4.2 重发控制  滑动窗口传输数据过程中出现丢包如何进行重传 情况一数据包已经抵达确认应答(ACK)丢失  这种情况下不是确认应答(ACK)丢失不要紧可以通过后续的确认应答(ACK)进行确认确认应答(ACK)中确认序号的含义为确认序号前的所有序号都已经全部收到。  情况二数据包丢了  当1001~2000这段报文丢失后发送端一直会收到1001这样的确认应答(ACK)。如果发送端主机连续三次收到相同的确认应答(ACK)如1001应答那发送端主机就会重新发送1001~2000数据此时接收端收到1001~2000数据后再次返回的确认应答(ACK)就是7001了因为2001~7000数据都已经接收到了被放到接收端操作系统内核的接收缓冲区中。 这种机制即时不超时也会发生重传称作“ 高速重发控制 ”也叫“ 快重传机制 ”。  4.3 延迟应答  接收数据的主机如果每次都立刻回复确认应答(ACK)的话可能会返回一个较小的流量窗口但是流量窗口越大网络吞吐量越大传输效率就越高所以等待一部分时间待接收端处理完一部分数据 就可以将流量窗口设置为大一点的值这样网咯吞吐量大效率高。 延迟是为了高吞吐量但是也不能无限延迟 数量限制每隔n个包就应答一次时间限制超过最大延迟时间就应答一次 具体的数量和时间不同操作系统有差异一般n取2超时时间取200ms。 4.4 捎带应答 在延迟应答的基础上我们发现很多情况下客户端服务器在应用层也是 一发一收 的这意味着TCP的确认应答(ACK)和回执数据可以通过一个包发送这种方法就是捎带应答通过这种机制可以使收发的数据量减少。需要注意捎带应答需要依赖延迟应答。 五、TCP的异常情况处理  进程终止进程终止会释放文件描述符仍然可以发送FIN和正常关闭没有什么区别。机器重启和进程终止的情况相同机器掉电/网线断开接收端认为连接还在一旦接收端有写入操作接收端发现连接已经不在了就会进行reset即使没有写入操作TCP自己也内置了一个保活定时器会定期询问对方是否还在如果对方不在也会把连接释放。 六、TCP协议特点总结 有连接通过三次握手建立连接后才可接发数据。可靠传输网络数据传输是一跳一跳的经过路途中的设备可能发生数据丢失可靠传输是可能发生数据丢失但有机制保证对方能接收到。面向字节流可以多次的收发数据连接没有关闭时可以多次的接收和发送数据有接收缓冲区和发送缓冲区发送数据时是先写到发送缓冲区再刷新缓冲区flush大小不受限制多次的收发数据每次的数据可以很大
http://www.zqtcl.cn/news/924864/

相关文章:

  • 找不到网站后台怎么办韩国网站域名分类
  • 建设商务网站作用积极参与网站信息建设工作
  • 网站开发阶段Oss怎么做静态网站
  • 做科学小制作的视频网站怎么才能建立自己的网站啊
  • 跳蚤市场网站开发背景网站优点
  • 长春网站建设方案咨询怎么做自己的网站平台
  • 网站建设谈单技巧做网站建设科技公司
  • 品牌网站建设4a小蝌蚪网页设计分类
  • 域名注册以后会给你一个账户名密码上传做好的网站文化网站建设需要的功能
  • 企业站用wordpress做好吗那些做环保网站的好
  • 天津有哪些有名的网站建设公司商城网站模板免费
  • 安徽省途顺建设工程有限公司网站制作网站公
  • 北京建设职工大学网站成都网站建设比较好的公司
  • 网站建设品牌策wordpress怎么做企业网站
  • 网站正在建设中 html 模板医院网站建设预算表
  • 哪个网站能接施工图来做购物网站黑白
  • 网站开发课设心得企业宣传页模板
  • 中学生怎么做网站ghost 卸载wordpress
  • 网站诊断报告案例用户浏览网站的方式
  • 网站开发流程抚州做网站需要看的书
  • wordpress 禁止目录浏览网站seo推广优化
  • 源代码如何做网站高校门户网站建设需要多少钱
  • 深圳微商城网站制作报价基础网页设计教程
  • wordpress+vps建站大连网站建设运营
  • 第一次开票网站建设怎么开制作网站品牌公司哪家好
  • 医疗机械网站怎么做什么是o2o电商模式
  • 北京微网站建设设计服务营销导向的企业网站建设步骤
  • 网站 301网站设计评价标准
  • 网站页面设计规范大连装修公司哪家好
  • 祁东网站建设微信公众号做的网站