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

网站建设最好的公司哪家好长沙美容网站建设

网站建设最好的公司哪家好,长沙美容网站建设,免费模板建站,wordpress网站上传服务器目录 前言 一.TCP 1.1 什么是TCP#xff1f; 1.2TCP的连接与释放(确认应答机制#xff09; 1.2.1三次握手 1.2.2四次挥手 1.3TCP滑动窗口#xff08;效率机制#xff09; 1.4流量控制#xff08;安全机制#xff09; 1.5拥塞控制#xff08;安全机制#xff0…目录 前言 一.TCP 1.1 什么是TCP 1.2TCP的连接与释放(确认应答机制 1.2.1三次握手 1.2.2四次挥手 1.3TCP滑动窗口效率机制 1.4流量控制安全机制 1.5拥塞控制安全机制 1.6延迟应答(效率机制 1.7捎带应答(效率机制 1.8心跳机制(安全机制 1.9粘包问题 二.UDP 2.1什么是UDP 2.2UDP的传输数据 2.3UDP的单播、广播、组播   三.TCP和UDP的区别 个人主页tq02的博客_CSDN博客-C语言,Java,Java数据结构领域博主 本文由 tq02 原创首发于 CSDN  本章讲解内容TCP和UDP的详细讲解 学习专栏  C语言         JavaSE       MySQL基础     多线程学习 前言 本文讲解TCP的三次握手和四次挥手TCP的安全机制和效率机制TCP协议段格式的详细数据解析、UDP的讲解、TCP和UDP的区别。 预备知识         网络的吞吐量网络在单位时间内能够传输的数据量。它是衡量网络性能的一个重要指标通常用单位时间内传输的数据位数或字节数来表示。         计算方法吞吐量 数据传输的总字节数 / 传输时间         数据传输的总字节数可以通过网络传输过程中捕获的数据包大小之和来计算传输时间是指从发送方发送数据开始到接收方完全接收数据所经过的时间。 一.TCP 1.1 什么是TCP TCP和TCP/IP是不一样的TCP/IP是一种模型而TCP是传输层的协议是TCP/IP体系中非常复杂的一个协议。 TCP Transmission Control Protocol 传输控制协议传输层协议。 TCP的作用 处理应用层的数据在计算机网络中传输数据。确保数据在发送和接收时不会丢失、损坏或重复。 TCP的特点 有连接 可靠传输 面向字节流 有接收缓冲区也有发送缓冲区 大小不限 确认应答 和  超时重传是 TCP 可靠性中最核心的机制 TCP 协议段格式 源/目的端口号表示数据是从哪个进程来到哪个进程去 32位序号指明本报文段所发送的数据的第一个字节的序号。TCP连接中传送的字节流中的每一个字节都按顺序编号。 32位确认号指明期望收到对方下一个报文段第一个数据字节的序号。若确认号则表明到序号为止的所有数据都已正确收到。 4位TCP 报头长度表示该 TCP 头部有多少个 32 位 bit 有多少个 4 字节所以 TCP 头部最大长度是 15 * 4 60 6位标志位: URG紧急指针是否有效 ACK确认号是否有效 PSH提示接收端应用程序立刻从TCP缓冲区把数据读走 RST对方要求重新建立连接我们把携带RST标识的称为复位报文段 SYN请求建立连接我们把携带SYN标识的称为同步报文段FIN通知对方本端要关闭了我们称携带FIN标识的为结束报文段 16位窗口大小窗口指的是发送本报文段一方的接收窗口。 16 位校验和发送端填充 CRC 校验。接收端校验不通过则认为数据有问题。此处的检验和不光 包含TCP 首部也包含 TCP 数据部分。 16 位紧急指针标识哪部分数据是紧急数据 40 字节头部选项暂时忽略 1.2TCP的连接与释放(确认应答机制 TCP对数据传输提供的管控机制主要体现在安全和效率。在保证安全的前提下尽可能提高传输效率。因此产生了三次握手。而断开连接时则是四次挥手 1.2.1三次握手 三次握手是指客户端与服务器建立连接的方式客户端主动发起建立的应用进程服务器被动等待建立的应用进程。 其中建立连接的重要字段是 序号(sequence number)seq序号占32位用来标识从TCP源端向目的端发送的字节流发起方发送数据时对此进行标记。确认号acknowledgement numberack序号占32位只有ACK标志位为1时确认序号字段才有效ackseq1。标志位Flags共6个即URG、ACK、PSH、RST、SYN、FIN等   具体过程 1.TCP服务器先创建传输控制块用于存储TCP连接的重要信息(例如当前的发送和接收序号、指向发送和接收缓存的指针等)等待接收客户端的TCP客户端的连接请求---监听状态 2.TCP客户端创建传输控制块然后向服务器发送TCP连接请求报文段进入同步已发送状态 TCP 连接请求报文段首部中的同步位SYN被设置为1,表明这是一个tcp连接请求报文段。序号字段seq被设置了一个初始值x作为TCP客户进程所选择的初始序号。 3.TCP服务器进程收到TCP连接请求报文段后如果同意建立连接则向TCP客户进程发送TCP连接请求确认报文段并进入同步已接收状态。 该报文段首部中的同步位SYN和确认位ACK 都设置为1表明这是一个TCP连接请求。序号字段seq被设置了一个初始值y作为TCP服务器进程所选择的初始序号。确认号字段ack的值被设置成了x1这是对TCP客户进程所选择的初始序号seq的确认。 结论TCP规定SYN报文段不能携带数据但要消耗一个序号ACK报文段可以携带数据但如果不携带数据则不消耗序号。并且seq是供对方选择的序号而ack则是对传递过来的seq的确认。ackseq1. 疑问如果传递的过程中信息未传递过去会发生什么呢 答服务器或者客户端会等待一定时间如果未收到信息会重新发送信息 ----超时重传 疑问如果只是重新发送信息之后之前的信息又收到了会发送什么呢 答接收方会根据序号进行去重操作 疑问为什么会是三次握手呢不能是二次或者四次呢  答如果是两次握手客户端发起连接但若未接收到服务端的回应服务端就不知道是否客户端接收到回应而至于四次等多次属于浪费资源三次可以为什么还要四次呢 三次握手的主要用处验证通信路径是否正常双方发送和接收是否正常协商必要参数使服务端和客户端使用相同的参数进行信息传输。 1.2.2四次挥手 四次挥手说明客户端和服务端断开需要四个流程而且断开连接也是需要客户端主动断开。此时涉及到的标志位FIN 具体过程 客户端调用close方法发送一个FIN报文(FIN标记位设置为1给服务端客户端进入FIN-WAIT-1状态。服务端收到FIN报文向客户端发送ACK应答报文以客户端FIN报文的序列号seq1作为ACK应答报文的确认序列号ackseq1.服务器进入CLOSE_WAIT(等待关闭)状态。此时此刻TCP处于半关闭状态客户端收到服务器的ACK应答报文段后进入FIN_WAIT_2状态服务器打算彻底断开连接向客户端发送连接释放(FIN)报文段之后服务器进入LASK_ACK(最后确认)状态等待客户端的确认。客户端收到来自服务器的连续释放报文会向服务器发送一个ACK应答报文让服务器进入关闭状态而客户端会进入TIME_WAIT(时间等待)状态等待2MSL后客户端才进入CLOSE状态。此时此刻连接正式关闭。 总结FIN 段是可以携带数据的但无论是否携带数据都需要消耗一个序列号。 半关闭状态客户端发送 FIN 包以后不能再发送数据给服务端但是还可以接受服务端发送的数据。 疑问为什么TIME_WAIT等待的时间是2MSL 答MSL(Maximum Segment LifeTime)是报文最大生成时间它是任何报文在网络上存在的最长时间超过这个时间的报文将被丢弃。因此如果2MSL内服务器未收到应答报文段则重发FIN报文段如果客户端收到了FIN报文段那么2MSL的时间将会被重置。如果在2MSL时间段内没有收到任何数据报客户端则会进入CLOSE状态。 疑问服务器可以主动断开连接吗 答可以的率先请求关闭的一方才会进入TIME_WAIT(时间等待状态 疑问为什么中间的ACK和FIN不能合并变成三次挥手 答ACK报文则是由系统内核来完成FIN是应用程序通过close()方法执行执行close()方法会触发内核发送FIN报文。什么时候调用close()方法这是由用户态决定的若是服务器还要大量数据需要处理处理完毕才可以调用close()方法。 1.3TCP滑动窗口效率机制 在上述应答机制当中我们可以发现安全性的确高每一个发送的数据段都有一个ACK确认应答收到ACK再发送下一个数据段。但是也有一个明显的缺点性能很差效率低下数据往返时间过长 如上图数据传递服务器每确认应答客户端才能发送下一个数据段耗时过长。 问那么有什么方式可以修改呢让效率提高呢 答我们可以采取一次发送多条数据提高效率这就是滑动窗口 注解 滑动窗口拥有大小而窗口大小指客户端无需等待确认应答而可以继续发送数据的最大值上图窗口大小为4个发送前四个段不需要等待服务器的ACK。客户端收到一个ACK时滑动窗口可以向后移动可以继续发送第五个段的数据。 操作系统内核为了维护这个滑动窗口需要开辟 发送缓冲区 来记录当前还有哪些数据没有应 答只有确认应答过的数据才能从缓冲区删掉 通信双方都有发送缓冲区和接收缓冲区;                 服务器                         发送缓冲区发送缓冲区窗口                         接收缓冲区接收缓冲发窗己                 客户端:                         发送缓冲区发送缓冲区窗口                         接收缓冲区接收缓冲发窗己   疑问如果产生丢包呢客户端发送时丢包又或者服务器传回来的ACK丢包了呢 答分情况考虑看下文 疑问那么我的滑动窗口是不是越大越好呢 答理论上越大越好但是滑动窗口越大越容易导致丢包等反应。 疑问那么滑动窗口应该为多大呢 答我们可以通过流量控制的方法见下文。 情况一数据包已经抵达ACK被丢了。 当ACK丢失了客户端未收到会继续等待而服务器超时重传重新发送 情况二客户端发送的数据包丢死了。 服务器(主机B)会一直发送我需要的是丢失的数据段客户端(主机A)收到三个相同的确认应答时会进行重传再将丢失的数据段发送给服务器。服务器处理之后再发送的ACK则是7001 1.4流量控制安全机制 在滑动窗口中我们说过滑动窗口不是越大越好接收端处理数据段能力是有限的如果发送端发的数据太快导致接收端的缓冲区被打满这个时候发送端进行发送会导致丢包重传等后果。 对于上述情况TCP根据接收端的处理能力决定发送端的发送速度。可称流量控制。 接收端将可接收的缓冲区大小放入 TCP 首部中的 窗口大小 字段通过ACK端通知发送端 接收端一旦发现自己的缓冲区快满了就会将窗口大小设置成一个更小的值通知给发送端 发送端接受到这个窗口之后就会减慢自己的发送速度 如果接收端缓冲区满了就会将窗口置为0这时发送方不再发送数据但是需要定期发送一 个窗口探测数据段使接收端把窗口大小告诉发送端。 1.5拥塞控制安全机制 拥有了滑动窗口TCP高效可靠的发送大量的数据并不会出现什么问题但是思考一下在网络中拥有很多计算机如果它本身的网络状态就已经拥挤了在不知情下贸然发送大量数据数据包将会丢失或延迟导致通信质量下降。 因此产生了拥塞控制拥塞控制的目标是通过调整发送数据的速率以避免网络拥塞的发生。 TCP实现拥塞控制的方法 慢启动在建立连接时发送方将以较小的速率发送数据并以指数级别增长速率直到网络出现拥塞。 拥塞避免慢启动过程结束之后发送方将增长速率变为线性增长 快速恢复当发送方检测到丢失的数据包时通过重传丢失的数据包而不是等待超时从而快速恢复拥塞窗口大小 详细讲解一下慢启动策略 此时此刻我们需要引入一个新的概念词拥塞窗口。 个人而看相当于滑动窗口的大小调节 拥塞窗口解析  发送开始时定义的拥塞窗口大小为1每次收到ACK应答时拥塞窗口加1.而客户端接收的ACK应答数据包时将拥塞窗口和接收的数据包的窗口大小作为对比取最小值。虽然看上去每次拥塞窗口接收应答时只加1但实际上以指数级别增长只是前期较慢后期增长速度贼快。    拥塞窗口的数量详细变化图 讲解 拥塞窗口先是以指数级别增长但是慢启动有一个 阈值 但拥塞窗口超过这个阈值 就会停止指数增长而是以线性增长。也就是说慢启动----拥塞控制。TCP启动时慢启动的阈值等于窗口的最大值而每一次超时重发时阈值会变为原来的一般同时拥塞窗口变为1 注慢启动的目的是在不造成网络拥塞的前提下尽可能地提高TCP连接的传输速率。 少量的丢包我们仅仅是触发超时重传大量的丢包我们就认为网络拥塞。 1.6延迟应答(效率机制 延迟应答也是TCP协议为了提高效率的一种机制从滑动窗口中我们可以知道客户端给服务器一次性发送多个数据而服务器每接收一个正确的数据就会返回一个ACK应答那么如果服务器稍微等待一会是不是可以减少ACK的应答次数呢 延迟应答接收端在接收到数据后并不立即发送ACK报文进行确认而是等待一定时间通常是200ms后再发送ACK报文。 作用将多个ACK报文合并在一起发送减少网络中的报文数量提高网络利用率。 形式图  图解我们可以看见主机B在接收到数据1-1000时不作出应答但是在接收1001-2000时作出应答 提示不是主机A接收一个ACK才可以发送一个数据因为有滑动窗口存在。 疑问所有的数据包都可以延迟应答嘛 答错误有两种限制 数量限制每隔N个包就应答一次 时间限制超过最大延迟时间就应答一次 注窗口越大网络吞吐量就越大传输效率就越高。我们的目标是在保证网络不拥塞的情况 下尽量提高传输效率。 1.7捎带应答(效率机制 在延迟应答的基础上我们可以发现很多情况下客户端和服务器在应用层也是一发一收的那么是否可以在客户端发送信息给服务器时服务器回复信息时ACK应答可以借助信息同时给客户端呢是的可以的。 捎带应答指在发送端发送数据时接收端可以在返回的ACK报文中携带已接收的数据序列号信息以便发送端在收到ACK报文后知道哪些数据已被成功接收。 图解在进行数据传输时同时传输了ACK应答这样发送端就不需要等待接收端的确认ACK报文了从而提高数据传输效率。 1.8心跳机制(安全机制 心跳机制是指在TCP连接建立后为了保持连接的稳定性和可靠性定期发送小型的探测报文心跳包给对方以确保对方处于活跃状态。如果在一定时间内没有收到对方的回复则认为连接已经断开并进行相应的处理如重新建立连接。 1.9粘包问题 什么是粘包问题包是什么为什么会产生粘包如何解决呢 粘包问题            TCP粘包是指发送方发送的若干包数据到接收方接收时粘成一包从接收缓冲区看后一包数据的头紧接着前一包数据的尾。 传输层TCP是一个一个报文过来的。按照序号排好序放在缓冲区中 应用层看到的只是一串连续的字节数据不清楚从哪个部分到哪个部分是一个完整的应用层数据包。 包应用层的数据包。 TCP的协议头没有报文长度所以不清楚完整数据包的长度但是会有一个序号使包按顺序排放在缓冲区中 粘包问题的产生   发送端需要等缓冲区满才发送出去造成粘包接收方不及时接收缓冲区的包造成多个包接收 注UDP有报文长度的字段有明确的数据边界因此不会产生粘包问题。 粘包问题的解决方法         明确两个包之间的边界。在应用层确定数据边界完成字节流解析。 发送固定长度的消息(局限性较大不推荐 把消息的尺寸与消息一块发送 使用特殊标记来区分消息间隔 将第二种和第三种结合起来确定数据边界做字节流解析的方法 双方约定通讯格式为HEAD××数据包其中HEAD为特殊标记用来做消息分割双方要约定数据包不包含消息分隔符HEAD否则会造成数据解析错误) xx为N个字节的数据长度数据包为实际的数据内容。发送方按照该格式做数据封包接受者按照该格式解析数据。HEAD作为特殊标记分割了各个消息之后解析出数据长度后按照该长度解析后面的数据通过数据长度也可以知道本次接收到的消息是不是完整的消息。 二.UDP 2.1什么是UDP UDP User Datagram Protocol用户数据报协议应用程序提供了一种无需建立连接就可以发送封装的 IP数据报的方法。 UDP和TCP都是传输层协议。 UDP的作用 应用于数据量大且精确性要求不高的数据传输传输效率高 例如我们平常在网站上观看视频或者听音乐 UDP的特点 无连接----通过对端的ip和端口直接进行传输不可靠----没有安全机制即使发送失败也不给应用层返回错误面向数据报---应用层交给UDP报文UDP原样发送不拆分不合并只有接收缓冲区没有发送缓冲区大小受限-----最大长度为64k UDP的协议段格式 源端口和目的端口表示数据是从哪个进程来到哪个进程去总长度报文长度校验和核对信息若错误直接丢弃数据区可有可无 从协议段格式我们可以清晰的发现十分简单与TCP差别巨大。 2.2UDP的传输数据 UDP的传输数据相当于寄信只管丢入邮箱不管有没有在中途丢失。 发送时先把数据放到报文写到缓冲区字节数组再传送。接收时从缓冲器数组读取打包到报文。 2.3UDP的单播、广播、组播   单播用于两个主机之间端对端的通信。即一对一客户端与服务器端点到点连接。                    类似于微信私聊 广播用于一个主机对整个局域网上所有主机通信。即一对所有。广播禁止在Internet宽带网上传输广播风暴。         类似于微信的群发功能告知每一个人 组播多播对一组特定的主机进行通信而不是整个局域网上的所有主机。即一对一组         类似于微信群聊 注只有UDP才能有广播、组播的传递方式。而TCP是一对一连接通信。 IP地址的区别 广播主机发送广播消息时需要指定目的IP地址255.255.255.255和接受者的端口号。多播在多播系统中有一个源点一组终点。这是一对多的关系。在这种类型的通信中源地址是一个单播地址而目的地址则是一个组地址。 三.TCP和UDP的区别 特征点TCPUDP传输可靠性可靠不可靠传输方式面向连接非连接传输的数据保证数据顺序拥有数据长度速度慢快系统资源要求多少数据传输模式流模式数据报模式应用场景文件传输通信领域信息传输对象一对一一对一、一对多应用层协议HTTP、HTTPS、SSH、Telent、FTP、SMTPNFC、TFTP、DHCP、BOOTP、DNS 注都是全双工接收端和发送端可以互相通信  问TCP为什么复杂 答因为既要保证可靠性又要提高性能。 可靠性校验和、序列号、确认应答、超时重发、连接管理、流量控制和拥塞控制提高性能滑动窗口、快速重传、延迟应答、捎带应答。 提示本文只是讲解TCP和UDP的协议格式以及作用若需要网络编程编写TCP和UDP可以通过Socket套接字。
http://www.pierceye.com/news/79704/

相关文章:

  • 在家做网站wordpress另一更新正在进行
  • 口碑好网站建设多少钱哪些网站可以做视频搬运
  • 香奈儿网站建设策划书小学校园文化设计公司
  • 印刷报价网站源码网站服务器租用价格表
  • gl账号注册网站成都布马网络科技有限公司
  • 网站搭建关键词排名鲅鱼圈做网站网工资页多少钱一个月
  • 深圳做三网合一网站网站上的地图导航怎么做的
  • 百度如何给网站做评价搭建网站找什么公司
  • 做网站挣钱yoast seo教程
  • 做网站显示不同字体wordpress 图库插件
  • php 打开网站什么叫网站建设
  • 河东苏州网站建设怎么开外贸网店
  • 海洋公园网站建设方案seo效果分析
  • 网站制作代理加盟wordpress 汽车模板
  • 网站建设开户行查询手机网站被拦截怎么解除
  • 西安三桥网站建设做网站的回扣
  • 宁津建设局网站手机网站 微信链接
  • 买空间域名做网站代运营是如何骗人的
  • 电子商务网站建设估算成都网站建设网站
  • 网站开发的英文参考文献在手机上怎么赚钱
  • 网站建设报价模板济南优化网站厂家
  • 设备租赁网站建设wordpress 网店主题
  • 怎么样查中企动力做的网站网站免费正能量直接进入老狼
  • 哪个网站能看到医生做的全部手术电脑网站打不开怎么解决
  • 网站要怎么创建建设网站的公司哪家好
  • 做哪个网站好外贸网站测速
  • 网站建设的公司上海个人简历自我介绍简短
  • 县级部门和乡镇不能建网站建设wordpress拓展业务
  • 做药物分析必须知道的网站软件开发培训学校软件开发培训机构
  • 可以做任务看漫画的漫画网站电商网站源码