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

成都网站建设推广详简历网站免费

成都网站建设推广详,简历网站免费,河南省建设注册中心网站,通付盾 网站建设参考#xff1a;4.1 TCP 三次握手与四次挥手面试题 | 小林coding TCP 头格式 我们先来看看 TCP 头的格式#xff0c;标注颜色的表示与本文关联比较大的字段#xff0c;其他字段不做详细阐述。 序列号#xff1a;在建立连接时由计算机生成的随机数作为其初始值#xff0c…   参考4.1 TCP 三次握手与四次挥手面试题 | 小林coding TCP 头格式 我们先来看看 TCP 头的格式标注颜色的表示与本文关联比较大的字段其他字段不做详细阐述。 序列号在建立连接时由计算机生成的随机数作为其初始值通过 SYN 包传给接收端主机每发送一次数据就「累加」一次该「数据字节数」的大小。用来解决网络包乱序问题。 确认应答号指下一次「期望」收到的数据的序列号发送端收到这个确认应答以后可以认为在这个序号以前的数据都已经被正常接收。用来解决丢包的问题。 控制位 ACK该位为 1 时「确认应答」的字段变为有效TCP 规定除了最初建立连接时的 SYN 包之外该位必须设置为 1 。RST该位为 1 时表示 TCP 连接中出现异常必须强制断开连接。SYN该位为 1 时表示希望建立连接并在其「序列号」的字段进行序列号初始值的设定。FIN该位为 1 时表示今后不会再有数据发送希望断开连接。当通信结束希望断开连接时通信双方的主机之间就可以相互交换 FIN 位为 1 的 TCP 段 TCP 是一个工作在传输层的可靠数据传输的服务它能确保接收端接收的网络包是无损坏、无间隔、非冗余和按序的。 什么是 TCP TCP 是面向连接的、可靠的、基于字节流的传输层通信协议。 面向连接一定是「一对一」才能连接不能像 UDP 协议可以一个主机同时向多个主机发送消息也就是一对多是无法做到的 可靠的无论的网络链路中出现了怎样的链路变化TCP 都可以保证一个报文一定能够到达接收端 字节流用户消息通过 TCP 协议传输时消息可能会被操作系统「分组」成多个的 TCP 报文如果接收方的程序如果不知道「消息的边界」是无法读出一个有效的用户消息的。并且 TCP 报文是「有序的」当「前一个」TCP 报文没有收到的时候即使它先收到了后面的 TCP 报文那么也不能扔给应用层去处理同时对「重复」的 TCP 报文会自动丢弃 所以我们可以知道建立一个 TCP 连接是需要客户端与服务端达成上述三个信息的共识。 Socket由 IP 地址和端口号组成序列号用来解决乱序问题等窗口大小用来做流量控制 如何唯一确定一个 TCP 连接呢 TCP 四元组可以唯一的确定一个连接四元组包括如下 源地址源端口目的地址目的端口源地址和目的地址的字段32 位是在 IP 头部中作用是通过 IP 协议发送报文给对方主机。 源端口和目的端口的字段16 位是在 TCP 头部中作用是告诉 TCP 协议应该把报文发给哪个进程。 UDP 和 TCP 有什么区别呢分别的应用场景是 UDP 协议真的非常简头部只有 8 个字节64 位UDP 的头部格式如下 目标和源端口主要是告诉 UDP 协议应该把报文发给哪个进程。包长度该字段保存了 UDP 首部的长度跟数据的长度之和。校验和校验和是为了提供可靠的 UDP 首部和数据而设计防止收到在网络传输中受损的 UDP 包。 ***TCP 和 UDP 区别 1. 连接 TCP 是面向连接的传输层协议传输数据前先要建立连接。UDP 是不需要连接即刻传输数据。 2. 服务对象 TCP 是一对一的两点服务即一条连接只有两个端点。UDP 支持一对一、一对多、多对多的交互通信 3. 可靠性 TCP 是可靠交付数据的数据可以无差错、不丢失、不重复、按序到达。UDP 是尽最大努力交付不保证可靠交付数据。但是我们可以基于 UDP 传输协议实现一个可靠的传输协议比如 QUIC 协议具体可以参见这篇文章如何基于 UDP 协议实现可靠传输(opens new window) 4. 拥塞控制、流量控制 TCP 有拥塞控制和流量控制机制保证数据传输的安全性。UDP 则没有即使网络非常拥堵了也不会影响 UDP 的发送速率。 5. 首部开销 TCP 首部长度较长会有一定的开销首部在没有使用「选项」字段时是 20 个字节如果使用了「选项」字段则会变长的。UDP 首部只有 8 个字节并且是固定不变的开销较小。 6. 传输方式 TCP 是流式传输没有边界但保证顺序和可靠。UDP 是一个包一个包的发送是有边界的但可能会丢包和乱序。 7. 分片不同 TCP 的数据大小如果大于 MSS 大小则会在传输层进行分片目标主机收到后也同样在传输层组装 TCP 数据包如果中途丢失了一个分片只需要传输丢失的这个分片。UDP 的数据大小如果大于 MTU 大小则会在 IP 层进行分片目标主机收到后在 IP 层组装完数据接着再传给传输层 TCP 三次握手过程是怎样的 TCP 是面向连接的协议所以使用 TCP 前必须先建立连接而建立连接是通过三次握手来进行的。三次握手的过程如下图 一开始客户端和服务端都处于 CLOSE 状态。先是服务端主动监听某个端口处于 LISTEN 状态客户端会随机初始化序号client_isn将此序号置于 TCP 首部的「序号」字段中同时把 SYN 标志位置为 1表示 SYN 报文。接着把第一个 SYN 报文发送给服务端表示向服务端发起连接该报文不包含应用层数据之后客户端处于 SYN-SENT 状态。服务端收到客户端的 SYN 报文后首先服务端也随机初始化自己的序号server_isn将此序号填入 TCP 首部的「序号」字段中其次把 TCP 首部的「确认应答号」字段填入 client_isn 1, 接着把 SYN 和 ACK 标志位置为 1。最后把该报文发给客户端该报文也不包含应用层数据之后服务端处于 SYN-RCVD 状态。客户端收到服务端报文后还要向服务端回应最后一个应答报文首先该应答报文 TCP 首部 ACK 标志位置为 1 其次「确认应答号」字段填入 server_isn 1 最后把报文发送给服务端这次报文可以携带客户到服务端的数据之后客户端处于 ESTABLISHED 状态。 服务端收到客户端的应答报文后也进入 ESTABLISHED 状态。第三次握手是可以携带数据的前两次握手是不可以携带数据的这也是面试常问的题。 一旦完成三次握手双方都处于 ESTABLISHED 状态此时连接就已建立完成客户端和服务端就可以相互发送数据了 为什么是三次握手不是两次、四次 所以重要的是为什么三次握手才可以初始化 Socket、序列号和窗口大小并建立 TCP 连接。 接下来以三个方面分析三次握手的原因 三次握手才可以阻止重复历史连接的初始化主要原因三次握手才可以同步双方的初始序列号三次握手才可以避免资源浪费 原因一避免历史连接 三次握手的首要原因是为了防止旧的重复连接初始化造成混乱。 如果是两次握手连接就无法阻止历史连接 主要是因为在两次握手的情况下服务端没有中间状态给客户端来阻止历史连接导致服务端可能建立一个历史连接造成资源浪费。 你想想在两次握手的情况下服务端在收到 SYN 报文后就进入 ESTABLISHED 状态意味着这时可以给对方发送数据但是客户端此时还没有进入 ESTABLISHED 状态假设这次是历史连接客户端判断到此次连接为历史连接那么就会回 RST 报文来断开连接而服务端在第一次握手的时候就进入 ESTABLISHED 状态所以它可以发送数据的但是它并不知道这个是历史连接它只有在收到 RST 报文后才会断开连接。 服务端第一次握手就进入ESTABLISHED,那就是第一次握手就可以传输数据。 要解决这种现象最好就是在服务端发送数据前也就是建立连接之前要阻止掉历史连接这样就不会造成资源浪费而要实现这个功能就需要三次握手。 原因二同步双方初始序列号 TCP 协议的通信双方 都必须维护一个「序列号」 序列号是可靠传输的一个关键因素它的作用 接收方可以去除重复的数据接收方可以根据数据包的序列号按序接收可以标识发送出去的数据包中 哪些是已经被对方收到的通过 ACK 报文中的序列号知道 序列号在 TCP 连接中占据着非常重要的作用所以当客户端发送携带「初始序列号」的 SYN 报文的时候需要服务端回一个 ACK 应答报文表示客户端的 SYN 报文已被服务端成功接收那当服务端发送「初始序列号」给客户端的时候依然也要得到客户端的应答回应这样一来一回才能确保双方的初始序列号能被可靠的同步。 既然 IP 层会分片为什么 TCP 层还需要 MSS 呢 我们先来认识下 MTU 和 MSS MTU一个网络包的最大长度以太网中一般为 1500 字节MSS除去 IP 和 TCP 头部之后一个网络包所能容纳的 TCP 数据的最大长度 如果在 TCP 的整个报文头部 数据交给 IP 层进行分片会有什么异常呢 当 IP 层有一个超过 MTU 大小的数据TCP 头部 TCP 数据要发送那么 IP 层就要进行分片把数据分片成若干片保证每一个分片都小于 MTU。把一份 IP 数据报进行分片以后由目标主机的 IP 层来进行重新组装后再交给上一层 TCP 传输层。 这看起来井然有序但这存在隐患的那么当如果一个 IP 分片丢失整个 IP 报文的所有分片都得重传。 因为 IP 层本身没有超时重传机制它由传输层的 TCP 来负责超时和重传。 当某一个 IP 分片丢失后接收方的 IP 层就无法组装成一个完整的 TCP 报文头部 数据也就无法将数据报文送到 TCP 层所以接收方不会响应 ACK 给发送方因为发送方迟迟收不到 ACK 确认报文所以会触发超时重传就会重发「整个 TCP 报文头部 数据」。 因此可以得知由 IP 层进行分片传输是非常没有效率的。 所以为了达到最佳的传输效能 TCP 协议在建立连接的时候通常要协商双方的 MSS 值当 TCP 层发现数据超过 MSS 时则就先会进行分片当然由它形成的 IP 包的长度也就不会大于 MTU 自然也就不用 IP 分片了。 数据超过MSS 先把数据分片再加上TCP头部和IP头部保证其长度不会大于MTU. 经过 TCP 层分片后如果一个 TCP 分片丢失后进行重发时也是以 MSS 为单位而不用重传所有的分片大大增加了重传的效率。
http://www.dnsts.com.cn/news/98893.html

相关文章:

  • 中国轻工建设公司网站专业网站定制哪家好
  • 长沙网站制作品牌推荐5家
  • 建设机械网站机构辽宁建设工程信息网直接发包工程
  • 电脑做网站教学iis7.5发布网站教程
  • 深圳餐饮网站建设网站设计师工作室
  • 网站定制怎么收费wordpress员工管理系统
  • 做机网站云南网站设计联系方式
  • 做网站需要撑握哪些技术wordpress入门视频教程
  • 免费字体设计 常见网站响应式网站模板下载
  • 河南网站设计网站建设微信端
  • 5173网站源码厦门外贸网站建设公司
  • 个人备案网站做淘宝客可以用吗怎么做百度网页
  • 建设公司网站开发方案linux如何架设网站
  • 网站怎么做付费项目十堰网站建设报价
  • 网站建设推荐华网天下项目经理查询系统
  • 网站建设优化需要懂那些知识网络系统集成结课论文
  • 南京江宁网站建设在线设计名片
  • 杭州市社区建设网站做一个网站一般费用
  • 销售型企业网站建设应遵守的原则凡科互动官网登录入口官方
  • 有网站前端如何做后台做网站的文案
  • 网站列表页怎么做的wordpress 免插件 cdn
  • 网站主题模板下载安装购物电商型网站怎么做
  • 徐州网站平台漳州正规网站建设公司
  • 学院网站建设管理山东省建设教育集团网站
  • 全国二级建造师查询网站外包加工网是不是骗钱的
  • wordpress更改主站点网站建设与管理考题
  • 云南制作网站的公司建设网站的公司兴田德润怎么联系
  • 阿里云网站建设步骤app软件开发软件
  • 宁夏建设厅网站公示wifi域名是什么
  • 设计师自己的网站网站域名迁移公告