网络基础相关知识点

张开发
2026/5/12 8:20:13 15 分钟阅读

分享文章

网络基础相关知识点
文章目录1、tcp的三报文握手2、四报文握手3、为什么是3次握手而不是2次握手4、四次挥手5、为什么A在TIME-WAIT状态要等待2MSL6、OSI、TCP\IP、五层协议及其作用和协议7、TCP与UDP8、各协议介绍9、ARP是地址解析协议简单语言解释一下工作原理。10、RARP协议11、交换机和路由器及区别12、网桥的作用13、子网掩码的作用14、一个Http请求的过程15、Http和Https的区别16、HTTP的长连接和短连接?17、Cookie和Session的区别18、ip地址的分类19、各类别常见状态码20、对称加密与非对称加密21、DDos攻击22、XSS攻击23、CSRF跨站请求伪造24、Http1.0、1.1、2.0、3.0的区别25、TCP 黏包是怎么产生的26、TCP/IP协议27、TCP是如何保证可靠性的28、HTTP协议1、tcp的三报文握手注意seqx序号表示本次报文段发送的数据的第一个字节序号为xACK1表示ack确认号有效ACK报文不携带数据不消耗序号ackx1表示 x 个字节已经收到下一次期望收到的第一个字节序号是第x1个SYN1表示这是一个连接请求或者连接接受报文步骤首先一开始客户端和服务端都处于close状态客户端A要请求建立连接A主动打开连接B是被动打开连接B打开连接后会创建TCB传输控制块用于保存连接信息然后B处于listen状态A打开连接也会创建TCB然后在打算建立连接时会发送连接请求报文SYN1seqx的报文TCP规定SYN报文段不携带数据但要消耗一个序号这时客户端进入SYN-SENT同步已发送状态B收到连接请求报文后如果同意建立连接会向A发送确认在确认报文段中将SYN1、ACK1、seqy、ackx1同样SYN报文不携带数据但消耗一个序号这时服务端B进入SYN-RCVD同步收到状态客户端A收到B发送的确认报文段后还要再向B给出确认确认报文段的ACK1、acky1、seqx1这时tcp连接已经建立客户端A进入ESTAB-LISHED已建立连接状态服务端B收到A的确认报文后也进入ESTAB-LISHED状态。2、四报文握手3、为什么是3次握手而不是2次握手为了防止已失效的连接请求报文突然又发送到服务端B从而产生错误。异常情况当客户端A第一次发送的请求连接因为网络原因延迟到达服务端B这是一个本该失效的请求连接但是B却误以为这是A发送的请求连接所以B会回A一个确认报文如果没有第三次握手这时B在回A一个确认报文之后连接就建立了但是A收到B发送的确认报文并不会理睬因为A没有请求建立连接A也不会发送数据这时B就傻傻的在等A发送数据可是并不会建立连接会占用B一定的服务器资源这就导致B的服务器资源被白白浪费了。如果采用三报文握手A在收到B的确认报文后不会回B确认报文B收不到确认就知道A并没有想要建立连接也就解决了上述异常情况。4、四次挥手注意FIN1表示这是一个连接释放报文即使不携带数据也会消耗一个序号MSL报文在网络中存活的最长时间步骤首先客户端A和服务端B都处于已建立连接状态进行数据的传输如果没有数据传输这时A的应用进程发出连接释放报文段并同时发送数据主动关闭连接发送的报文FIN1、sequu表示A已发送的数据的最后一个字节序号1这时A进入FIN-WAIT-1(终止等待1) 状态;B收到A的请求释放连接报文后回了A一个确认报文报文首部ACK1、seqv、acku1B进入CLOSE-WAIT(关闭等待)状态此时tcp服务器进程通知其高层应用进程A-B这个方向的连接已经释放这时的tcp处于(half-close)半关闭状态。A收到B的确认报文后A进入FIN-WAIT-2终止等待2状态等待B发送的请求释放连接报文当B没有事干了就发送释放连接报文给AB进入LAST-ACK最后确认状态报文头部信息FIN1、ACK1、seqw、acku1seqw表示在等待期间B可能发送了数据给A所以序号可能会改变。A收到B的请求释放连接报文后A发送确认报文给BACK1、sequ1、ackw1A进入TIME-WAIT时间等待状态。B收到A的确认报文后进入CLOSE状态A等待2MSL时间后也进入CLOSE状态相应的TCB传输控制块会被撤销就结束了本次连接。5、为什么A在TIME-WAIT状态要等待2MSL为了确保A最后发送的ACK报文能被B接收到。最坏的情况是A发送了ACK报文给B然后过了1MSL报文才到B然后在B没收到报文前还在超时重传FINACK报文最后一个FINACK报文发送给A的最大存活时间是1MSL然后A发送到B的报文的最大存活时间也是1MSl这两个时间加起来恰好是2MSL。等待2MSL时间本次连接的所有报文都会从网络上消失不会出现已失效的连接请求报文段。6、OSI、TCP\IP、五层协议及其作用和协议OSI应用层、表示层、会话层、传输层、网络层、数据链路层、物理层TCP\IP应用层、运输层、网际层、网络接口层五层协议应用层、传输层、网络层、数据链路层、物理层osi模型的作用定义了网络互联的模型解决不同体系结构的网络互联问题推荐所有公司使用这个规范来控制网络这样大家使用相同的规范就互联了。每层的协议物理层RJ45、CLOCK、IEEE802.3 中继器集线器数据链路PPP、FR、HDLC、VLAN、MAC 网桥交换机网络层IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP、 路由器传输层TCP、UDP、SPX会话层NFS、SQL、NETBIOS、RPC表示层JPEG、MPEG、ASII应用层FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS每一层的作用如下物理层实现相邻节点间比特流的透明传输尽可能屏蔽传输介质和通信手段的差异。数据链路层将网络层传下来的ip数据包封装成帧并在相邻的两个节点间无差错的传输以帧为单位的数据网络层负责ip数据包从源到宿的传递和网际互连进行逻辑寻址实现不同网络之间的路径选择传输层向主机进程提供通用的数据传输服务该层主要有以下两种协议TCP和UDP会话层建立、管理和终止应用程序间的会话建立数据传输的通路如服务器验证用户登录便是由会话层完成。表示层主要负责数据格式的转换如加密解密、翻译、压缩解压缩等。应用层为应用程序提供交互服务。应用层的协议有很多如域名系统DNS。支持万维网应用的HTTP协议支持电子邮件的SMTP协议等。应用层业务端到端进程 ↔ 进程给数据传输层通信端到端端口 ↔ 端口负责可靠 / 快速传输加端口头网络层主机 ↔ 主机机器源 -目的加IP头链路层相邻节点 ↔ 相邻节点 加MAC头物理层0/1 信号传输 这边 – 那边7、TCP与UDPTCP传输控制协议是一种可靠的、面向连接的、基于字节流的传输层通信协议。UDP用户数据报协议提供了一种无须建立连接就能发送封装IP数据包进行传输的方法它是不可靠的无需建立连接的、基于数据包的传输层通信协议。区别区别TCPUDP连接面向连接无需建立连接可靠性可靠不可靠有序性有序无序速度慢快拥塞控制和流量控制有无首部大小20字节8字节传输单位面向字节流面向报文应用场景1.FTP文件传输2.HTTP/HTTPS1.DNS、SNMP2.视频音频等多媒体通信3.广播通信8、各协议介绍ICMP协议 因特网控制报文协议。它是TCP/IP协议族的一个子协议用于在IP主机、路由器之间传递控制消息。TFTP协议 是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议提供不复杂、开销不大的文件传输服务。HTTP协议 超文本传输协议是一个属于应用层的面向对象的协议由于其简捷、快速的方式适用于分布式超媒体信息系统。DHCP协议 动态主机配置协议是一种让系统得以连接到网络上并获取所需要的配置参数手段。NAT协议网络地址转换属接入广域网(WAN)技术是一种将私有保留地址转化为合法IP地址的转换技术DHCP协议一个局域网的网络协议使用UDP协议工作用途给内部网络或网络服务供应商自动分配IP地址给用户或者内部网络管理员作为对所有计算机作中央管理的手段。9、ARP是地址解析协议简单语言解释一下工作原理。作用根据ip地址查找物理地址MAC即完成ip地址到硬件地址的映射首先每个主机都会在自己的ARP缓冲区中建立一个ARP列表以表示IP地址和MAC地址之间的对应关系。当源主机要发送数据时首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址如果有则直接发送数据如果没有就向本网段的所有主机发送ARP数据包该数据包包括的内容有源主机的IP地址源主机的MAC地址目的主机的IP 地址。当本网络的所有主机收到该ARP数据包时首先检查数据包中的IP地址是否是自己的IP地址如果不是则忽略该数据包如果是则首先从数据包中取出源主机的IP和MAC地址写入到ARP列表中如果已经存在则覆盖然后将自己的MAC地址写入ARP响应包中告诉源主机自己是它想要找的MAC地址。源主机收到ARP响应包后。将目的主机的IP和MAC地址写入ARP列表并利用此信息发送数据。如果源主机一直没有收到ARP响应数据包表示ARP查询失败。广播发送ARP请求单播发送ARP响应。局域网中获取到mac地址如果ip不是局域网则获取的是默认网关的mac地址通常是路由器。10、RARP协议RARP是逆地址解析协议作用是完成硬件地址到IP地址的映射主要用于无盘工作站因为给无盘工作站配置的IP地址不能保存。工作流程在网络中配置一台RARP服务器里面保存着IP地址和MAC地址的映射关系当无盘工作站启动后就封装一个RARP数据包里面有其MAC地址然后广播到网络上去当服务器收到请求包后就查找对应的MAC地址的IP地址装入响应报文中发回给请求者。因为需要广播请求报文因此RARP只能用于具有广播能力的网络。11、交换机和路由器及区别交换机的作用连接局域网中各台计算机或其它设备使这些计算机或设备组成网络从而实现资源共享的目的。路由器的作用连接两个或多个网络或网段的网络设备对数据进行路由与转发。区别:交换机工作在OSI的数据链路层路由器工作在OSI的网络层交换机根据MAC地址寻址路由器根据IP地址寻址交换机的转发速度较快路由器的转发速度较慢12、网桥的作用网桥是一个局域网和另一个局域网之间建立连接的桥梁。13、子网掩码的作用将ip地址划分为网络地址和主机地址两部分14、一个Http请求的过程比如在浏览器的地址栏输入www.baidu.com然后回车这个过程会发生什么大致分为以下几个过程URL解析解析资源路径、参数DNS查询1.本地DNS服务器 2.根域名服务器 3.顶级域名服务器 4.权威域名服务器 5.找到域名返回ip生成Http报文TCP三次握手如果使用得是http协议则直接请求如果使用得是https协议则需要进行TLS握手应用程序发送数据交给操作系统协议栈处理tcp头部、ip头部、mac头部网卡驱动程序将内核中的数据包信息01复制到网卡缓存区加上起始分界符然后网卡将数字信息转为电信号通过网线发送出去到达交换机然后转发给路由器路由器进行寻址和路由一跳一跳的传递下去知道目标ip对应的服务器找到对应的接收服务器一步一步拆开数据包去除头部信息拿到请求报文。服务器进行处理然后响应数据回去同上边过程一样。请求应用程序拿到相应数据之后渲染页面结束tcp四次挥手查看链接https://blog.csdn.net/zz_jesse/article/details/102383628DNS解析的过程查询浏览器本地缓存是否存在记录不存在则进入第2步查询主机的hosts文件有没有记录不存在则进入第3步浏览器调用解析器进行域名解析解析器就是一段程序它能帮助浏览器调用系统的网络功能相当于DNS的客户端解析器向DNS服务器发送解析请求DNS服务的地址在计算机的网络设置中存在解析器发送的DNS服务器是本地DNS服务器它一般由服务提供商管理比如中国网通电信等本地DNS服务器收到解析请求后会查询自身的缓存中是否存在www.baidu.com的ip地址不存在则进入第7步本地DNS服务器询问根域名服务器关于顶级域名com的ip地址返回顶级域名ip地址本地DNS服务器询问顶级域名服务器关于权威域名baidu.com的服务器地址返回权威域名ip地址本地DNS服务器询问权威域名服务器关于域名www.baidu.com的ip地址返回域名的ip地址本地DNS服务器将ip地址返回给解析器解析器缓存起来后解析将ip地址返回给浏览器浏览器拿着ip地址就可以进行连接建立。15、Http和Https的区别15.1、基本概念HTTP协议以明文方式发送内容不提供任何数据的加密如果攻击者截取了浏览器和服务器之间的传输报文就可以直接读懂其中的信息因此Http不适合传输一些敏感信息。Https可以看做http的安全版即在Http下加入了SSL层Https的安全基础就是SSL。Https协议的作用可以分为两个一种是建立信息安全通道来保证数据传输的安全。另一种就是确认网站的真实性。15.2、Http和Https的主要区别httpshttpssl安全传输协议ca身份认证1Https需要申请证书2Https比Http安全3Http和Https采用完全不同的连接方式端口也不一样前者是80后者是4434Http的连接很简单是无状态的Https是有SSLHttp协议构建的可进行加密传输身份认证的网络协议。15.3、Https的工作原理客户端在使用Https方式与web服务器进行通信时会有以下几个步骤1客户端使用Https的URL访问web服务器要求与web服务器建立SSL连接。2web服务器收到请求后会将网站的证书信息包含公钥发送给客户端。3客户端的浏览器与web服务器开始协商SSL连接的安全等级也就是信息加密的等级4客户端的浏览器根据双方同意的加密等级建立会话密钥然后利用网站的公钥将会话密钥加密并传送给网站。5web服务器根据自己的私钥解密出会话密钥。6web服务器根据会话密钥加密与客户端之间通信。1、客户端发起 HTTPS 请求这个没什么好说的就是用户在浏览器里输入一个 https 网址然后连接到 server 的 443 端口。2、服务端的配置采用 HTTPS 协议的服务器必须要有一套数字证书可以自己制作也可以向组织申请区别就是自己颁发的证书需要客户端验证通过才可以继续访问而使用受信任的公司申请的证书则不会弹出提示页面(startssl 就是个不错的选择有 1 年的免费服务)。这套证书其实就是一对公钥和私钥如果对公钥和私钥不太理解可以想象成一把钥匙和一个锁头只是全世界只有你一个人有这把钥匙你可以把锁头给别人别人可以用这个锁把重要的东西锁起来然后发给你因为只有你一个人有这把钥匙所以只有你才能看到被这把锁锁起来的东西。3、传送证书这个证书其实就是公钥只是包含了很多信息如证书的颁发机构过期时间等等。4、客户端解析证书这部分工作是有客户端的TLS来完成的首先会验证公钥是否有效比如颁发机构过期时间等等如果发现异常则会弹出一个警告框提示证书存在问题。如果证书没有问题那么就生成一个随机值然后用证书对该随机值进行加密就好像上面说的把随机值用锁头锁起来这样除非有钥匙不然看不到被锁住的内容。5、传送加密信息这部分传送的是用证书加密后的随机值目的就是让服务端得到这个随机值以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。6、服务端解密信息服务端用私钥解密后得到了客户端传过来的随机值(私钥)然后把内容通过该值进行对称加密所谓对称加密就是将信息和私钥通过某种算法混合在一起这样除非知道私钥不然无法获取内容而正好客户端和服务端都知道这个私钥所以只要加密算法够彪悍私钥够复杂数据就够安全。7、传输加密后的信息这部分信息是服务段用私钥加密后的信息可以在客户端被还原。8、客户端解密信息客户端用之前生成的私钥解密服务段传过来的信息于是获取了解密后的内容整个过程第三方即使监听到了数据也束手无策。16、HTTP的长连接和短连接?Http的长连接和短连接本质上是tcp的长连接和短连接。本质就是建立的连接是否会被复用。tcp的短连接就是客户端和服务端建立连接后一般只进行一次读写操作连接就断开了下次需要通信时再次建立连接tcp的长连接就是客户端和服务端建立连接后进行读写操作之后连接不会断开后续的读写操作会复用这个连接。在HTTP/1.0中默认使用的是短连接从HTTP/1.1起默认使用长连接用以保持连接特性使用长连接的HTTP协议会在响应头加入这行代码Connection:keep-alive。实现长连接要客户端和服务端都支持长连接。17、Cookie和Session的区别Cookie是客户端会话技术Session是服务端会话技术cookie将数据保存在客户端保存的数据大小有限一般一个cookie保存的数据大小不超过4k一个域名下保存的cookie个数不超过20个session将数据保存在服务器端保存的数据大小数量没有限制受限于服务器的内存cookie只能保存字符串的数据而session没有限制cookie不安全别人可以分析本地存放的cookie进行cookie欺骗session存放在服务器较安全18、ip地址的分类19、各类别常见状态码2xx 3种200 OK表示从客户端发送给服务器的请求被正常处理并返回204 No Content表示客户端发送给客户端的请求得到了成功处理但在返回的响应报文中不含实体的主体部分没有资源可以返回206 Patial Content表示客户端进行了范围请求并且服务器成功执行了这部分的GET请求响应报文中包含由Content-Range指定范围的实体内容。3xx 5种301 Moved Permanently永久性重定向表示请求的资源被分配了新的URL之后应使用更改的URL302 Found临时性重定向表示请求的资源被分配了新的URL希望本次访问使用新的URL301与302的区别前者是永久移动后者是临时移动之后可能还会更改URL303 See Other表示请求的资源被分配了新的URL应使用GET方法定向获取请求的资源302与303的区别后者明确表示客户端应当采用GET方式获取资源304 Not Modified表示客户端发送附带条件是指采用GET方法的请求报文中包含if-Match、If-Modified-Since、If-None-Match、If-Range、If-Unmodified-Since中任一首部的请求时服务器端允许访问资源但是请求为满足条件的情况下返回改状态码请求的资源没有改变可以使用缓存。307 Temporary Redirect临时重定向与303有着相同的含义307会遵照浏览器标准不会从POST变成GET不同浏览器可能会出现不同的情况4xx 4种400 Bad Request表示客户端请求报文中存在语法错误401 Unauthorized未经许可需要通过HTTP认证请求未经授权403 Forbidden服务器收到请求但是拒绝该次访问访问权限出现问题404 Not Found表示服务器上无法找到请求的资源除此之外也可以在服务器拒绝请求但不想给拒绝原因时使用405 客户端发送的请求的请求方式与服务端的请求方式不同。5xx 2种500 Inter Server Error表示服务器在执行请求时发生了错误也有可能是web应用存在的bug或某些临时的错误时503 Server Unavailable表示服务器暂时处于超负载或正在进行停机维护无法处理请求20、对称加密与非对称加密对称密钥加密是指加密和解密使用同一个密钥的方式这种方式存在的最大问题就是密钥发送问题即如何安全地将密钥发给对方而非对称加密是指使用一对非对称密钥即公钥和私钥公钥可以随意发布但私钥只有自己知道。发送密文的一方使用对方的公钥进行加密处理对方接收到加密信息后使用自己的私钥进行解密。常见的对称加密算法有DES、3DES、Blowfish、IDEA、RC4、RC5、RC6和AES。由于非对称加密的方式不需要发送用来解密的私钥所以可以保证安全性但是和对称加密比起来它非常的慢所以我们还是要用对称加密来传送消息但对称加密所使用的密钥我们可以通过非对称加密的方式发送出去。常见的非对称加密算法有RSA、ECC移动设备用、Diffie-Hellman、El Gamal、DSA数字签名用。21、DDos攻击DDos 攻击客户端向服务端发送请求链接数据包服务端向客户端发送确认数据包客户端不向服务端发送确认数据包服务器一直等待来自客户端的确认占用服务器的资源。DDos 预防 ( 没有彻底根治的办法除非不使用TCP )限制同时打开SYN半链接的数目缩短SYN半链接的Time out 时间关闭不必要的服务22、XSS攻击XSS跨站脚本攻击攻击者在网页中注入恶意脚本在用户浏览器上执行从而窃取信息、冒充用户、篡改页面。XSS 产生的根本原因后端 / 前端未对用户输入内容做过滤、转义直接渲染到页面上导致浏览器把恶意代码当成正常脚本执行。XSS 三种类型存储型 XSS恶意代码存到数据库里每次用户访问页面都会触发危害最大、最常见反射型 XSS恶意代码放在URL 参数中诱导用户点链接才触发不存库一次性DOM 型 XSS前端直接把用户输入 / URL 参数插入 DOM不经过后端纯前端漏洞最容易被忽视XSS 能做什么危害窃取 Cookie、Session冒充用户登录监听用户输入、窃取账号密码篡改页面内容、弹窗广告、跳转钓鱼网站获取用户浏览器信息、内网信息预防措施输入校验过滤特殊字符特殊字符转义设置 Cookie HttpOnly禁止 JS 读取 Cookie从根本上防止被盗。使用 CSP内容安全策略限制脚本来源禁止内联脚本、禁止未知资源加载。23、CSRF跨站请求伪造什么是 CSRF攻击者诱导用户在已登录的状态下访问恶意网站恶意网站向目标网站自动发送请求利用浏览器自动携带 Cookie 的机制冒充用户执行操作。CSRF 核心原理1.用户已登录目标网站 A浏览器保存了 A 的 Cookie。2.用户访问恶意网站 B。3.网站 B 自动向 A 发送请求表单 / 链接 / 图片。4.浏览器自动带上 A 的 CookieA 认为是用户本人操作执行请求。CSRF 特点:不窃取 Cookie只是借用 Cookie 发送请求。必须在用户登录状态下才有效。一般无法获取页面数据只能发起 “操作请求”转账、改密、发帖等。CSRF 防御方案:1.使用 CSRF Token后端生成随机 Token存入 Session 或页面。前端请求时带上 Token后端校验。攻击者无法获取 Token请求无效。最常用、最有效。2.验证码关键操作转账、改密增加图形 / 短信验证码强制用户确认。3.Referer / Origin 校验校验请求来源是否为合法域名拒绝非法来源。4.SameSite Cookie设置 Cookie 的 SameSiteStrict/Lax禁止跨站时自动携带 Cookie从源头阻断 CSRF。24、Http1.0、1.1、2.0、3.0的区别HTTP/1.0短连接每次请求都要建连接慢、浪费HTTP/1.1解决 1.0 连接浪费支持长连接、管道化但队头阻塞应用层和TCP层严重HTTP/2解决 1.1 队头阻塞应用层多路复用、二进制分帧、HPACK头部压缩HTTP/3解决 2.0 仍存在的 TCP 队头阻塞基于 QUICUDP0-RTT更快更稳HTTP/1.0特点短连接一次请求就断开 TCP 连接。缺点每次请求都要三次握手连接开销大、效率极低。HTTP/1.1解决 1.0 的问题引入长连接 Keep‑Alive一个 TCP 连接可发送多个请求减少握手开销。支持管道化 pipelining可并发发送请求。新增缓存、断点续传、Host 头。遗留问题队头阻塞严重一个请求阻塞后面全部阻塞浏览器同域名连接数有限头部无压缩。HTTP/2解决 1.1 的问题二进制分帧将数据拆成帧解析更快、更稳定。多路复用一个连接可并行传输多个请求 / 响应解决应用层队头阻塞。HPACK 头部压缩减少头部冗余数据。支持服务端推送 Server Push。遗留问题基于 TCP丢包会导致整个连接阻塞仍存在 TCP 队头阻塞。HTTP/3解决 HTTP/2 的问题底层改用 QUIC 协议基于 UDP。彻底解决队头阻塞流之间相互独立单个流丢包不影响其他流。0‑RTT 握手建连更快。连接迁移切换 Wi‑Fi / 移动网不断线。默认加密安全性、弱网环境表现更好。25、TCP 黏包是怎么产生的发送方产生粘包采用 TCP 协议传输数据的客户端与服务器经常是保持一个长连接的状态一次连接发一次数据不存在粘包双方在连接不断开的情况下可以一直传输数据。但当发送的数据包过于的小时那么 TCP 协议默认的会启用 Nagle 算法将这些较小的数据包进行合并发送缓冲区数据发送是一个堆压的过程这个合并过程就是在发送缓冲区中进行的也就是说数据发送出来它已经是粘包的状态了。接收方产生粘包接收方采用 TCP 协议接收数据时的过程是这样的数据到接收方从网络模型的下方传递至传输层传输层的 TCP 协议处理是将其放置接收缓冲区然后由应用层来主动获取C 语言用 recv、read 等函数这时会出现一个问题就是我们在程序中调用的读取数据函数不能及时的把缓冲区中的数据拿出来而下一个数据又到来并有一部分放入的缓冲区末尾等我们读取数据时就是一个粘包。放数据的速度 应用层拿数据速度如何解决粘包问题分包机制一般有两个通用的解决方法特殊字符控制在包头首都添加数据包的长度。26、TCP/IP协议TCP/IP是一个协议族它定义了电子设备如何接入互联网以及数据如何在他们之间进行传输的标准。最具有代表性的就是TCP和IP协议所以称为TCP/IP协议。它将网络分为五层应用层为应用进程提供网络服务传输层确保数据传输的可靠差错检测和恢复等网络层将数据封装成IP数据包进行路由选择和转发链路层将数据封装成帧物理寻址流量控制物理层通过物理媒介传输二进制的数据27、TCP是如何保证可靠性的TCP主要提供了校验和序列号/确认应答超时重传滑动窗口拥塞控制和流量控制等方法实现可靠性传输。1、号校验和通过检验和的方式接收端可以检测出来数据是否有差错和异常假如有差错就会直接丢弃TCP端重新发送。2、确认应答与序列号TCP传输的过程中每次接收方收到数据后都会对传输方进行应答即发送ack报文这个报文中有对应的确认序列号告诉发送方接收到了哪些数据下次的数据从哪里发。序列号的作用不仅仅是应答的作用有了序列号能够将接收到的数据根据序列号排序并且去掉重复序列号的数据。3、超时重传超时重传是指发送出去的数据包到接收到确认包之间的时间如果超过了这个时间会被认为是丢包了需要重传。最大超时时间是动态计算的。4、连接管理三次握手、四次挥手5、流量控制如果主机A一直向主机B发送数据不考虑主机B的接收能力则可能导致主机B的接收缓冲区满了而无法接收数据从而会导致大量的数据丢包引发重传机制。而在重传的过程中若主机B的接收缓冲区情况仍未好转则会将大量的时间浪费在重传数据上降低传送数据的效率。所以引入流量控制机制主机B通过告诉主机A自己接收缓冲区的大小来使主机A控制发送的数据量。流量控制与TCP协议报文头中的窗口大小有关。6、拥塞控制在数据传输过程中可能由于网络状态的问题造成网络拥堵此时引入拥塞控制机制在保证TCP可靠性的同时提高性能。7、滑动窗口滑动窗口既提高了报文传输的效率也避免了发送方发送过多的数据而导致接收方无法正常处理的异常。28、HTTP协议HTTP是一个超文本传输协议它是基于TCP的应用层协议是无状态的它不会对发送的请求和相应的通信状态进行保存。

更多文章