传输层协议—网络

这篇具有很好参考价值的文章主要介绍了传输层协议—网络。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.TCP

1.1TCP协议段格式

传输层协议—网络,网络,网络,服务器,运维
TCP:传输的数据的控制,可靠和效率是成反比:越可靠,效率越低,TCP是综合考虑了两者,取的一个均衡,不是保证绝对意义的可靠,也不是绝对意义的效率最高

1.2可靠机制

1.2.1确认应答机制

(1)发送的数据,接收端需要返回确认接收到数据报的应答
传输层协议—网络,网络,网络,服务器,运维

(2)数据会进行编号,并使用32位序号保存
(3)ack的标志位是1,会使用32位确认序号保存
(4)下一个是接受到的数据报连续序号的最大值+1(说明接收端将之前的数据全部接收到了)

1.2.2超时重传机制

(1)发送端超过一定的时限没有接收到ack应答包,就会进行重传
(2)这里的时限是动态变化的,与网络的环境有关,时限是成指数级增长的,重传达到一定的次数就会关闭连接
(3)没有接收到ack应答包,可能是发送数据丢包,也可能是ack应答丢包
(4)重传指的是数据包重新发送
传输层协议—网络,网络,网络,服务器,运维
传输层协议—网络,网络,网络,服务器,运维

1.2.3连接管理机制

  1. 建立连接:三次握手(建立连接本质是双方保存了一个连接状态)
    流程:
    (1)客户端发送syn,申请建立客户端到服务端的连接;
    (2)服务端返回syn+ack,申请建立服务端到客户端的连接,其中ack是对第一个数据包的应答(注意:ack和syn可以合并一起发送,也可以分开发送,合并一起发送就是一个数据包,两个标志位置为1);
    (3)客户端返回ack,对第二个数据包的应答;
    传输层协议—网络,网络,网络,服务器,运维

  2. 断开连接:四次挥手
    流程:
    (1)客户端发送syn到服务端,申请关闭客户端到服务端的连接
    (2)服务端返回ack,服务端的状态置为close_wait
    (3)服务端发送fin到客户端,申请关闭服务端到客户端的连接,客户端的状态置为time_wait
    (4)客户端返回ack,服务端状态置为closed,客户端等待一定的时间将状态置为closed
    传输层协议—网络,网络,网络,服务器,运维

  3. 重点问题:
    (1)双方的连接状态,为什么最后才是closed
    客户端接收到第三个数据报不能马上置为closed,因为第四个数据报可能会发生丢包(服务端无法断开连接),服务端就会根据超时重传机制重新发送第三个数据报,此时如果客户端是closed就无法接收了,双方都要保证可靠的关闭连接,如果是一端关闭,一端还存在就会出现藕断丝连的情况
    (2)第2,3个数据报为什么没有合并
    第二个数据报是系统内核返回的,不需要程序写代码来发送,而第三个数据报是程序调用close方法发送的(服务端在关闭连接前可能还需要做一些其他的工作)
    (3)第2,3个数据报是否可以合并
    将第二个数据报放在缓冲区(可能立即发也可能不是),对应的第三个数据报也是发送到缓冲区,此时,如果第二个数据报还在缓冲区就可能合并发送
    (4)服务端出现大量的close_wait的原因
    服务端没有执行close方法(因为只有执行了close才会发送第三个数据报)
    (5)客户端接收第三个数据报状态是time_wait需要等待多久
    2msl,1msl是单个报文传输的最大时间,需要等待的是第四个返回及可能的重传数据

1.2.4流量控制机制

(1)发送端发送速度如果快于接收端,程序读取速度就可能导致接收缓冲区被打断进而引起系统丢包,重传再次丢包的问题(程序读取指的是程序从缓冲区读取接收的数据)
(2)tcp协议首部:16位窗口大小指的是流量窗口大小
(3)接收端接收能力有限,主动告诉发送端自己的接收能力(接收能力指的是接收端接收缓冲区后剩余的空间大小,返回的ack应答包还会使用窗口大小字段来设置接收能力的大小)

1.2.5拥塞控制机制

(1)网络状态不明的情况下,贸然的发送大量的数据报就可能产生网络拥塞
(2)含义:发送端发送数据之前先根据“拥塞窗口”来进行探路(拥塞窗口是动态变化的)
(3)如何变化:从1开始,先指数增长,再线性增长,网络拥塞导致大量丢包后重置为1
传输层协议—网络,网络,网络,服务器,运维

1.3效率机制

1.3.1滑动窗口机制

(1)作用:以并发的方式发送数据报,减少等待时间(通过叠加等待时间),提高数据传输效率
(2)窗口大小指无需等待应答而可以继续发送的数据报最大值
(3)窗口大小确定:窗口大小=min(流量窗口大小,拥塞窗口大小)
(4)滑动窗口的大小决定吞吐率(一定时间网络数据传输数量越大,吞吐率越高)
(5)滑动窗口滑动的方式:可以滑动的位置是下一个序号的最大值减去窗口的起始位置(下一个是x代表接收端在x序号之前的数据报都已接收)
(6)已确认接收的数据都是保存在缓冲区的(发送端保存在发送缓存区(可能需要重传),接收端保存在接收缓冲区(可能需要去重))
(7)发生丢包的情况:
①ack丢包:没有影响,后续的ack也能表示序号前的全部接收
②发送的数据报丢包:接收的ack下一个序号是接收端,接收到的连续序号最大值+1(如果中间有部分没有接收到就相当于不连续);快重传:连续3次接收到下一个是x就表示从x开始的数据报丢包,需要重传
(8)理解缓冲区:把网络数据传输理解为发快递对方返回一个应答传输层协议—网络,网络,网络,服务器,运维

1.3.2延迟应答机制

(1)接收端返回流量窗口代表接收缓冲区的可用空间大小,如果立即返回流量窗口大小就会比较小,不划算(不划算的原因是接收端可能接收速度比较快,读走以后就可以设置的更大)
(2)接收端返回的流量窗口,不是立即返回而是等待一定的时间(等待一定的时间就是延迟应答的由来),这样返回的流量窗口大小就可能更大(流量窗口是滑动窗口大小的决定因素之一,而滑动窗口大小又是网络吞吐量的决定因素之一,所以是效率机制延迟时间应答效率就更高)
(3)延迟的条件是由数量和时间来限制(数量指的是每几个包)(时间指的是不能超过最大延迟时间,超过时间发送端就认为丢包会进行超时重传)

1.3.3捎带应答机制

不管是客户端还是服务端都既可以是发送端也可以是接收端,不管是客户端还是服务端接收到数据后返回的ack应答包(作为接收端),可以和发送的数据报(作为发送端)合并在一起发送给对方

1.4粘包问题(tcp问题,应用层的数据包)

  1. 应用层需要约定统一的协议,明确包与包之间的边界
  2. 没有明确边界就会出现粘包问题
    (1)在传输层,如果基于tcp协议,面向字节流,没有关闭流可以一直收发数据
  3. 解决方案:明确包之间的边界
    (1)固定大小的包:读、写都按照固定大小来发送\接收
    (2)可变大小的包:发送时包含长度的信息,接收时就按照这个信息读取相应大小的数据,也可以使用分隔符
  4. udp协议:因为是面向数据报(发送数据是一整块的发,接收也是一整块的收),固不存在粘包问题

2.UPD和TCP

2.1UPD和TCP的区别

传输层协议—网络,网络,网络,服务器,运维

2.2UDP问题

(1)基于传输层udp协议设计一个可靠的/大小不限的数据传输?
在应用层自己写代码来实现类似tcp的可靠机制:引入tcp类似的字段(序号、确认序号等),引入可靠机制(连接管理机制等)文章来源地址https://www.toymoban.com/news/detail-588583.html

到了这里,关于传输层协议—网络的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【网络编程】传输层协议——TCP协议

    TCP报头当中各个字段的含义如下 源/目的端口号 :表示数据是从哪个进程来,到发送到对端主机上的哪个进程。 32位序号/32位确认序号 :分别代表TCP报文当中每个字节数据的编号以及对对方的确认,是TCP保证可靠性的重要字段。 4位TCP报头长度 :表示该TCP报头的长度,以4字

    2024年02月17日
    浏览(44)
  • 【网络】传输层TCP协议

    目录 一、概述 2.1 运输层的作用引出 2.2 传输控制协议TCP 简介 2.3 TCP最主要的特点 2.4 TCP连接 二、TCP报文段的首部格式 三、TCP的运输连接管理 3.1 TCP的连接建立(三次握手) 3.2 为什么是三次握手? 3.3 为何两次握手不可以呢? 3.4 TCP的连接释放(四次挥手) 3.5 为什么客户端在TIME

    2024年01月23日
    浏览(28)
  • 【JavaEE】传输层网络协议

    1.1 特点 面向数据报(DatagramSocket) 数据报大小限制为64k 全双工 不可靠传输 有接收缓冲区,无发送缓冲区 UDP的特点,我理解起来就是工人组成的**“人工传送带”**: 面向数据报(DatagramSocket): 工人们能够知道的只有装货物的袋子,并不知道里面装的什么内容,这个麻袋

    2024年02月19日
    浏览(25)
  • 【网络】传输层协议介绍

      TCP (Transmission Control Protocol )传输控制协议: 面向连接网络协议 ,是指通信双方之间在进行通信之前要先建立连接。比如打电话,双方通话前需要先建立连接。   TCP是面向连接的、可靠的进程到进程通信的协议。TCP提供全双工服务,即数据可在同一时间双向传输,每一

    2024年02月06日
    浏览(32)
  • 传输层协议—网络

    TCP:传输的数据的控制,可靠和效率是成反比:越可靠,效率越低,TCP是综合考虑了两者,取的一个均衡,不是保证绝对意义的可靠,也不是绝对意义的效率最高 1.2.1确认应答机制 (1)发送的数据,接收端需要返回确认接收到数据报的应答 (2)数据会进行编号,并使用32位

    2024年02月16日
    浏览(25)
  • 网络原理之传输层与网络层重点协议

    目录 传输层重点协议 TCP协议 TCP协议段格式 TCP原理 确认应答机制(安全机制) 超时重传机制(安全机制) 连接管理机制(安全机制) 滑动窗口(效率机制) 流量控制(安全机制) 拥塞控制(安全机制) 延迟应答(效率机制) 捎带应答(效率机制) 其他特性:面向字节流

    2024年02月11日
    浏览(29)
  • 【计算机网络】传输层协议 -- UDP协议

    传输层是计算机网络中的一个重要层次,位于网络层和应用层之间,它的主要功能是为应用层提供端到端的数据传输服务,负责确保数据可靠传输、流浪控制和拥塞控制等。 传输层的两个主要协议是传输控制协议(TCP)和用户数据报协议(UDP)。它们各自有不同的特点和用途

    2024年02月15日
    浏览(65)
  • 【计算机网络】传输层协议 -- TCP协议

    认识可靠性 现在的计算机大多都是基于冯诺依曼体系结构的 虽然这里的输入设备、输出设备、内存、CPU是在同一个机器上的,但是它们彼此间却是相互独立的。如果它们之间要进行通信,那就必须要用“线”连接起来,其中连接内存和外设之间的“线”叫做IO总线,连接CP

    2024年02月14日
    浏览(39)
  • 【网络原理】应用层协议 与 传输层协议

    ✨个人主页:bit me👇 ✨当前专栏:Java EE初阶👇 我们自己写的应用程序就是在应用层 虽然应用层里面有一些现成的协议,但是在实际工作中也会存在 自定义应用层协议 (发明协议? 协议就是约定,约定好客户端和服务器按照啥样的格式来传输数据 ) 那么应用层协议如何

    2023年04月20日
    浏览(38)
  • 网络安全——传输层安全协议

    作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。   座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录  前言 一.传输层安全协议 二.SSL协议背景 1.SSL协议介绍 2.SSL协议三种安全特性 3.SSL之间通信 三.SSL协议简介 1.SSL两层组成

    2024年02月03日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包