1.TCP、UDP、IP详解版权声明
原创文章目录
@[toc]
一.计算机网络架构
1.1 对应于不同网络层的协议
1.2 系统分层介绍
1.3 数据封装
1.4 协议与上下级关系示意图
二.IP协议
2.1 引言
2.2 概述
2.3 IP分类
2.4 IP 数据报格式
2.5 IP路由选择
2.6 子网寻址
2.7 地址解析协议 ARP
2.8 Internet控制消息协议 ICMP
- Ping
- Traceroute
三.UDP协议
3.1 概述
3.2 UDP首部
3.3 UDP长度
3.4 UDP服务器设计
3.5 UDP的应用
单播, 广播、多播
四.TCP协议
4.1 引言
4.2 TCP的服务
4.3 TCP 首部格式
4.4 TCP 三方握手
4.5 TCP 四挥手。
4.6TCP 可靠传输
4.7 TCP 滑动窗口
4.8 TCP 流量控制
4.9 TCP 拥塞控制 - 缓慢启动和避免拥堵
- 快速重传和快速恢复
五.问题总结
1.TCP和UDP有什么不同?
2.TCP协议如何确保数据不丢失?
3.为什么ICMP将返回数据报告TCP而不是UDP?
4.TCP和UDP每次传输的数据大小?
参考资料
一.计算机网络架构
1.1 对应于不同网络层的协议
1.2 系统分层介绍
五层协议
应用层 :为特定应用程序提供数据传输服务;
Telnet: 远程登录。
FTP 文件传输协议。
SMTP: 简单邮件传输协议。
SNMP 简单网络管理协议。
传输层 为进程提供通用数据传输服务。由于有许多应用层协议,定义公共传输层协议可以支持越来越多的应用层协议。
T C P传输控制协议 (面向流字符的协议 )。
U D P用户数据报协议 。
网络层 :为主机提供数据传输服务。传输层协议为主机中的进程提供数据传输服务。网络层将传输层传送的段或用户数据报封装成分组。
I P协议:Internet协议。
I C M P协议:I n t e r n e t互联网控 消息协议。
I G M P协议:I n t e r n e t组管理协议 。
数据链路层 :网络层仍然针对主机之间的数据传输服务,主机之间可以有许多链接。链路层协议是为同一链路上的主机提供数据传输服务。数据链路层将从网络层向下发送的数据包封装成帧。
物理层 :考虑如何在传输介质上传输数据比特流,而不是参考特定的传输介质。物理层的作用是尽可能屏蔽传输介质和通信手段的差异,使数据链路层不会感受到这些差异。
OSI
表示层 :数据压缩、加密和数据描述,这消除了应用程序对每个主机中数据的内部格式的担忧。
会话层 :建立和管理会话。
prc协议:(远程方法调用协议)
TCP/IP
它只有四层,相当于五层协议中将数据链路层和物理层合并为网络接口层。
TCP/IP 未严格遵守体系结构 OSI 分层概念,应用层可以直接使用 IP 层或网络接口层。
1.3 数据封装
对于元数据的网络传输,需要逐层封装和逐层解析的过程,如下图所示:
在向下过程中,需要添加较低协议所需的报头或尾部,而在向上过程中,报头和尾部被不断地拆卸。
路由器只有以下三层协议,因为路由器位于网络的核心,不需要为进程或应用提供服务,因此不需要传输层和应用层。
1.4 协议与上下级关系示意图
二.IP协议
2.1 引言
IP协议在OSI七层协议位于网络层,在物理层和链路层之上,本文的范围是网络层和应用层之间的上层协议,而下层协议暂不研究。所以只是IP层作为入口点,
网络层是整个互联网的核心,使用 IP 协议,它可以连接异构物理网络,使其在网络层看起来像一个统一的网络。
2.2 概述
I P是T C P / I P协议族中最核心的协议。所有 T C P、U D P、I C M P及I G M P数据都以I P数据 报告格式传输 ;IP数据报传送 服务 不可靠,无连接。
不可靠(u n r e l i a b l e) :表示无法保证。 I P数据报可以成功到达目的地。 I P只提供最好的。 运输服务。如果发生错误(例如路由器暂时耗尽缓冲器), I P有一个简单的错误 处理算法:丢弃数据报并发送 I C M P发送到源的消息。任何所需的可靠性必须由 提供(如T C P)
无连接(c o n n e c t i o n l e s s)该术语表示 I P不维护关于后续数据报的状态信息。 每个数据报的处理彼此独立。这也表明, I P数据报可以按传输顺序接收。如果源 向同一接收器发送两个连续的数据报(第一个 A,然后是B),每个数据报独立路由 选择,可以选择不同的路线,因此 B可能在A在你到达之前到达。
与 IP 协议还使用了三种协议:
地址解析协议 ARP(Address Resolution Protocol)
Internet控制消息协议 ICMP(Internet Control Message Protocol)
Internet组管理协议 IGMP(Internet Group Management Protocol)
2.3 IP分类
I P地址长为32 bit,地址有一定的结构,五个不同的类别 在Internet地址格式下
各类IP地址范围
类型 范 围
A 0.0.0.0到127.255.255.255
B 128.0.0.0到191.255.255.255
C 192.0.0.0到223.255.255.255
D 224.0.0.0到239.255.255.255
E 240.0.0.0到247.255.255.255
有三类I P地址:
单播地址(用于单个主机)
广播地址(目标都是给定网络上的主要地址 机)
多播地址(目标是同一组中的所有主机)
2.4 IP 数据报格式
ip地址长度为32bit,普通的I P首部长为2 0个字节。
8钻头存活时间TTL
T T L(t i m e - t o - l i v e)生存时间字段设置数据报可以通过的最大路由器数。它指定了数据 报告生存时间。T T L的初始值由源主机设置(通常 3 2或6 4)一旦它通过处理它的路由器, 减去其值。 1。当此字段的值为 0数据报被丢弃并发送。 I C M P消息通知源主机。
16手动检查和
用于验证发送数据报和接收数据报之间的差异。首先设置校验和字段 0。 对于第一个 16 bit 二进制逆求和 ,结果存在于校验和字段中。 接收数据报后,计算报头,并设置校验和字段 1,则不同I P只需丢弃收到的 数据报 然而,不会生成错误消息,上层发现丢失的数据报并重新发送。
总长度:已占用16位二进制位,总长度字段指整个IP数据报的长度(报头区域+数据区)
2.5 IP路由选择
当一个IP当分组准备就绪时,IP数据包(或者路由器。)数据包是如何发送到目的地的?它如何选择合适的路径"送货"的呢?
最特殊的情况是,目标主机直接连接到主机,因此主机根本不需要找到路由,可以直接将数据传输到过去。至于如何直接传递,这取决于。ARP协议已经达成,稍后将讨论。
在更一般的情况下,主机会通过几个路由器。(router)以及目标主机。然后路由器将通过ip的程序包信息ip数据包找到合适的目的地进行传送,例如合适的主机或合适的路由。路由器或主机将按以下方式处理某个路由器或主机IP数据包
如果IP数据包的TTL(生命周期)到,然后IP数据包被丢弃。
搜索路由表,如果可以找到匹配的主机并IP具有完全相同地址的目标主机,数据包将发送到目标主机
搜索路由表。如果匹配主机失败,请匹配同一子网的路由器。这需要“子网掩码”(1.3.)“协助。如果找到路由器,数据包将发送到路由器。
搜索路由表,如果匹配失败,则匹配相同的网络号。(第一章是解释。)如果找到路由器,路由器会将数据包发送给路由器。
搜索陆地游览表。如果以上所有操作都失败,请搜索默认路线。如果存在默认路由,则将发布合同。
如果都失败了,扔掉袋子。
这再次证明,ip这个包裹不可靠。因为它不能保证交货。
2.6 子网寻址
IP地址定义为网络编号+主机号。但现在所有主机都需要子网寻址,即将主机号细分为子组
网号+主机号。最后一个IP地址变为 网络号码+子网号+主机号。
下面是一个。B类地址:
B类网络地址 (1 4 0 . 2 5 2),在剩余的16 bit中,8 bit对于子网号,8 bit用于主机号。这是允许的。
2 5 4子网,每个子网可以有2 5 4台主机。 (8位一共有256可能,由于整体0或全1的主机号无效, 所以就有254一种可能性)。
2.7 地址解析协议 ARP
网络层实现主机之间的通信,而链路层实现每个链路之间的通信。所以在通信过程中,IP 数据报的源地址和目标地址始终相同,而 MAC 地址随着链接的改变而改变。
网络层实现主机之间的通信,而链路层实现每个链路之间的通信。所以在通信过程中,IP 数据报的源地址和目标地址始终相同,而 MAC 地址随着链接的改变而改变。
ARP 实现由 IP 地址得到 MAC 地址。
每个主机都有 ARP 缓存,包含此LAN上的主机和路由器 IP 地址到 MAC 地址映射表。
如果主机 A 知道主机 B 的 IP 住址 ARP 缓存没有 IP 地址到 MAC 地址映射,此时主机 A 通过广播发送 ARP 请求分组,主机 B 收到请求后,将发送 ARP 到主机的响应数据包 A 告知其 MAC 地址,后跟主机 A 写入其缓存中的主机 B 的 IP 地址到 MAC 地址的映射。
2.8 Internet控制消息协议 ICMP
I C M P通常被认为是 I P层的一个组件。它传达错误信息和其他需要注意的信息。 I C M P消息通常是I P层或更高层协议( T C P或U D P)使用。一些 I C M P消息返回错误消息 用户进程。
当传送IP数据包错误,如主机无法访问、路由无法访问等,ICMP协议将打包错误信息并将其发送回主机。给主机一个处理错误的机会 这就是为什么它建立在IP出于安全原因,层上的协议是可能的。ICMP数据包由8bit错误类型和8bit的代码和16bit校验和由组成。之前 16bit就组成了ICMP要传输的信息。书中的图表6-3清楚地给出了错误类型和代码组合的含义。
尽管在大多数情况下,错误的数据包传递会导致ICMP消息,但在特殊情况下,不会生成ICMP错误消息的。如下所示 :(所有这些规定旨在防止ICMP定义了消息的无限传播。 )
ICMP不会生成错误消息ICMP错误消息(outIMCP查询消息)(防止IMCP无限生成和传输)
目标地址是广播地地址或多播地址。IP数据报。
作为链路层广播的数据报。
不是IP切片的第一个切片。
源地址不是单个主机的数据报。也就是说,源地址不能是零地址、环回地址、广播地点 地址或多播地址。
ICMP协议大致分为两类,一类是查询消息,另一类是错误消息。查询消息具有以下用途 :
ping查询
网络掩码查询(无盘工作站在初始化自身时用于初始化子网掩码)
时间戳查询(可用于同步时间)。
ICMP 消息分为错误报告消息和查询消息。
- Ping
Ping 是 ICMP 一个重要的应用程序,主要用于测试两个主机之间的连接。
Ping 原则是发送到目标主机。 ICMP Echo 目标主机将在收到请求消息后发送请求消息。 Echo 回答信息。Ping 基于成功响应的时间和数量来估计往返时间和丢包率。
- Traceroute
Traceroute 是 ICMP 另一个用于跟踪数据包从源到目的地的路径的应用程序。
Traceroute 发送的 IP 数据报封装无法传递 UDP 用户数据报,目标主机发送目标不可达错误报告消息。
源主机发送一个系列 IP 数据报。第一个数据报 P1 存活时间 TTL 设置为 1,当 P1 到达路径上的第一个路由器 R1 时,R1 拿着放着 TTL 减 1,此时 TTL 等于 0,R1 就把 P1 并发送 ICMP 时间超过错误报告消息;
然后,源主机发送第二个数据报 P2,并把 TTL 设置为 2。P2 先到达 R1,R1 收下后把 TTL 减 1 再转发给 R2,R2 服用后,我也服用了 TTL 减 1因为此时此刻 TTL 等于 0,R2 就丢弃 P2并发送 ICMP 时间超过错误消息。
继续执行此步骤,直到最后一个数据报刚刚到达目标主机,并且主机不转发数据报或 TTL 值减 1。但是因为数据报封装无法传递 UDP因此,目标主机向源主机发送 ICMP 无法到达终点的错误报告消息。
之后,源主机知道到达目标主机的路由器。 IP 每个路由器的地址和往返时间。
三.UDP协议
3.1 概述
UDP是一个简单的面向数据报的传输层协议:进程的每个输出操作只产生一个 U D P 数据报被组装成要发送的 I P数据报。 这不同于面向字符的流式协议,例如 T C P,应用 程序生成的整体数据与实际发送的单个数据相同。 I P数据报可能几乎没有连接。
用户数据报协议 UDP(User Datagram Protocol)无连接,尽可能多地传递,无拥塞控制,面向消息(对于应用程序发送的消息,它们不合并或拆分,只是添加 UDP 首先),支持1到-1。一对多、多对一和多对多交互通信。
注意: UDP是传输层协议,并且TCP协议处于层次结构中,但具有TCP不同的协议,UDP该协议不提供超时重传、错误重传等功能,也就是说,它是一个不可靠的协议。
3.2 UDP首部
UDP的首部占8字节如下所示:
在ip首部为20字节,因为数据封装是逐层完成的。UDP数据报如下图所示:
UDP端口号
因为需要使用大量软件UDP同意,所以UDP协议必须传递特定的标志,以区分不同程序所需的数据包。这是端口号的函数,例如UDP程序A在系统中注册3000端口,则从外部传输的目标端口号为3000的UDP包裹将交给项目。端口号理论上可以有2^16这么多。因为它的长度是16个bit
UDP检验和
U D P和T C P两者都在包含其标头和数据的标头中有校验和。 U D P测试和是可选的,和。T C P 需要进行测试。 (伪标头的长度为12字节,所以TCP长度必须为20)
UDP检查和覆盖UDP协议头和数据,以及IP测试不同,IP该协议已检查并已覆盖。IP标头不包含所有数据。UDP和TCP两者都包含一个伪标头,该标头是为了计算校验和而拍摄的。伪标头甚至包含IP这样称呼。IP协议中有信息,目的是让UDP检查两次数据是否正确到达目的地。如果发送方未启用校验和选项,而接收方计算校验和并出现错误,则。UDP数据将被悄悄丢弃(没有保证交付),不会出现任何错误消息。
3.3 UDP长度
理论上,I P数据报的最大长度为64K(65535字节)(2的16功率),这取决于I P首部16总比特长度字段 受限制的。去除 2 0字节的IP首部和8个字节的U D P首部,U D P数据报中用户数据的最长长度为 65507字节。然而,当通用网络传输时,它不能传输如此长的协议(涉及MTU问题),我们必须对数据进行切片,当然,这些是正确的UDP例如上级协议的透明度,UDP不必在意IP协议层如何分割数据 。
在以太网上,数据帧的最大长度为 1 5 0 0字节 , 其中1 4 7 假设为数据保留字节 I P首部为2 0字节, 而且U D P首部为8因此,字节数每个切片UDP最大数据为1472个字节
此外,需要解释几个术语: I P数据报参考 I P层端到端传输单元(分段和重组前 之后),分组是指I P在层和链路层之间传输的数据单位。一个数据包可以是一个完整的 I P数据报, 也可以是I P数据报的一个片段。
3.4 UDP服务器设计
UDP该协议的一些特性将影响我们的服务器编程,可总结如下:
关于客户IP和地址:服务器必须根据客户提供IP地址和端口号确定数据包是否合法的能力(这似乎是每个服务器都需要的)
关于目标地址:服务器必须能够过滤广播地址。
关于数据输入:通常服务器系统的每个端口号都会对应一个输入缓冲区,传入的输入会等待服务器按照先到先得的原则进行处理,因此缓冲区溢出不可避免。在这种情况下,UDP在应用服务器程序本身没有意识到问题的情况下,可能会丢弃数据包。
服务器应限制本地IP地址,也就是说,它应该能够将自己绑定到网络接口的端口。
3.5 UDP的应用
三种 I P地址:单播、广播和多播地址 广播和多播仅适用 U D P
单播, 广播、多播
概念:有时主机希望向网络上的所有其他主机发送帧, 这是广播。 ,多播 (multicast) 在单播和广播之间:帧仅传递给属于多播组的帧 多个主机。
广播和多播仅适用 U D P它们对于需要同时向多个收件人发送消息的应用程序非常重要。 ,T C P是一种面向连接的协议,意味着在两个主机上运行( I P地址确定)( 端口号确定)存在连接。
I P多播提供两种类型的服务:
数据传输到多个目标地址。有许多用于向多个接收者传输信息的应用程序:例如,交互式会议系统。 以及向多个收件人分发邮件或新闻。如果不使用多播,则当前使用这些应用程序中的大多数。 T C P来完成 (数据的单独副本被发送到每个目的地地址)。然而,即使使用多播,一些应用程序仍可能继续采用 T C P确保其可靠性。
客户端请求服务器。例如,无盘工作站需要确定启动启动服务器。目前,此服务 通过广播提供,但使用多播减少了负面影响 担。
四.TCP协议
4.1 引言
尽管TCP和UDP两者都使用相同的网络层(I P),TCP然而,它提供了应用层UDP完全不同的服务。 TCP提供面向连接的可靠字节流服务。 所以TCP要比UDP更可靠的是,UDP它是直接发送数据,无论对方是否收到信件,即使是UDP无法交付且无法生产ICMP错误消息(ICMP:2.8小结)。
4.2 TCP的服务
TCP确保可靠性的简单工作原理如下 :
应用程序数据被拆分T C P被认为最适合传输的数据块。这和 U D P完全不同,应用程序生成 数据报长度将保持不变。通过 T C P传递给I P信息单位称为段或段( s e g m e n t)(参见 图1 - 7)。在1 8 . 4我们将看到的部分T C P如何确定线段的长度。
当T C P发送段后,它启动计时器并等待目的地确认接收到段。如果你不能 如果及时收到确认,将重新发送该段。在No。 2 1我们将了解的章节T C P协议中的自适应超时 以及重传策略。
当T C P收到发自T C P连接数据的另一端,它将发送确认。该确认没有立即发送, 通常会延迟几分之一秒 1 9 . 3节讨论。
T C P它将保留其标头和数据校验和。这是一个端到端校验和,目的是检测传输中的数据。 流程中的任何更改。如果接收到的段的检查和错误, T C P将丢弃此段,不确认接收 此段(您希望始发端超时并重新发送)。
既然T C P段I P要传输的数据报,同时 I P数据报可能出现故障,因此 T C P报文段 到达也可能出现故障。如果需要, T C P接收的数据将被重新排序,并且接收的数据将会被重新排序。 正确的顺序传递给应用程序层。
既然I P数据报将被复制,T C P的接收端必须丢弃重复数据。
T C P还可以提供流量控制。 T C P连接的每一侧都有固定大小的缓冲区空间。 T C P仅接收端 允许另一端发送接收器缓冲区可以容纳的数据。这将防止速度较快的主机对速度较慢的主机造成缓冲 区溢出
正如你从这篇文章中看到的,TCP保持可靠性的方法是使重传超时,这是有意义的,尽管TCP您还可以使用多种ICMP消息处理这些,但这不可靠。最可靠的方法是重新发送数据报,只要在另一方确认之前没有确认。
4.3 TCP 首部格式
序号 :用于对字节流进行编号,例如,序列号为 301,表示第一个字节的编号为 301如果携带的数据长度为 100 字节,则下一段的序列号应为 401。
确认号 预期接收的下一段的序列号。例如 B 正确收到 A 用序列号发送的消息段 501,所携带数据的长度为 200 因此,字节数 B 下一段的序列号应为 701,B 发送给 A 的确认消息段中的确认编号为 701。
数据偏移 :是指数据部分从消息段开头的偏移量,实际上是指标头的长度。
确认 ACK :当 ACK=1 确认编号字段有效,否则无效。TCP 规定建立连接后所有传输的消息段必须 ACK 置 1。
同步 SYN 用于在建立连接时同步序列号。什么时候 SYN=1,ACK=0 指示这是一个连接请求段。如果另一方同意建立连接,则响应消息 SYN=1,ACK=1。
终止 FIN :用于在以下情况下释放连接 FIN=1 指示此消息段的发件人的数据已发送,需要释放连接。
窗口 :窗口值作为接收方允许发送方设置其发送窗口的基础。这种限制的原因是接收器的数据缓存空间有限。
4.4 TCP 三方握手
假设 A 对于客户端,B 对于服务器端。
首先 B 处于 LISTEN(侦听)状态,等待客户端的连接请求。
A 向 B 发送连接请求消息,SYN=1,ACK=0,选择初始序列号 x。
B 接收到连接请求消息,如果同意建立连接,则将连接发送到 A 发送连接确认消息,SYN=1,ACK=1,确认编号为 x+1,也选择初始序列号。 y。
A 收到 B 在连接确认消息之后,还可以 B 发出确认,确认编号为 y+1,序号为 x+1。
B 收到 A 确认后,建立连接。
三方握手的原因
第三次握手是为了防止失败的连接请求到达服务器并使服务器错误地打开连接。
如果客户端发送的连接请求卡在网络中,则需要很长时间才能收到服务器发回的连接确认。在客户端等待超时重传周期后,它重新请求连接。但是,这个搁浅的连接请求最终会到达服务器。如果不执行三方握手,服务器将打开两个连接。如果有第三次握手,客户端将忽略服务器向搁浅连接请求发送的连接确认,并且不会执行第三次握,因此不会再次打开连接。
4.5 TCP 四挥手。
以下描述不讨论序列号和确认号,因为序列号和确定号的规则相对简单。不要讨论 ACK,因为 ACK 建立连接后 1。
A 发送连接释放消息,FIN=1。
B 收到后,此时发送确认 TCP 属于半封闭状态,B 能向 A 发送数据 A 不能向 B 发送数据。
当 B 不再需要连接时,发送连接释放消息,FIN=1。
A 收到确认后,输入 TIME-WAIT 状态,等待 2 MSL(最大消息生存期)。
B 收到 A 确认后释放连接。
四次浪潮的原因
客户端已发送 FIN 在连接释放消息之后,服务器接收该消息并输入 CLOSE-WAIT 地位此状态用于服务器发送尚未传输的数据。传输完成后,服务器将发送 FIN 连接释放消息。
TIME_WAIT
客户端接收服务器 FIN 消息进入此状态后,此时不会直接输入。 CLOSED 状态,还需要等待计时器来设置时间 2MSL。这样做有两个原因:
确保最后一条确认消息到达。如果 B 没收到 A 如果发送了确认消息,A 等待一段时间是为了处理这种情况。
等待一段时间是为了使在连接期间生成的所有数据包从网络中消失,以便旧连接请求消息不会出现在下一个新连接中。
4.6TCP 可靠传输
TCP 使用超时重传来实现可靠的传输:如果已发送的消息段在超时时间内没有收到确认,则重传该消息段。
从发送段到接收段到确认段所经过的时间称为往返时间 RTT,加权平均往返时间 RTTs 计算如下:
RTTs=(1−a)∗(RTTs)+a∗RTT RTTs=(1-a)(RTTs)+aRTT
RTTs=(1−a)∗(RTTs)+a∗RTT
超时时间 RTO 应该稍微大一点 RTTs,TCP 使用的超时计算如下:
RTO=RTTs+4∗RTTd RTO=RTTs+4*RTT d
RTO=RTTs+4∗RTTd
其中 RTT d为偏差。
4.7 TCP 滑动窗口
窗口是缓存的一部分,它暂时保存字节流。发送方和接收方各有一个窗口,接收方通过 TCP 消息段中的窗口字段告诉发送方自己的窗口大小,发送方根据该值和其他信息设置自己的窗口尺寸。
允许发送发送窗口中的字节,允许接收接收窗口中的字符。如果发送窗口左侧的字节已发送且已收到确认,则将发送窗口向右滑动一定距离,直到左侧的第一个字节未发送并确认。接收窗口的滑动类似。接收窗口的左侧字节已发送确认并发送给主机,因此将接收窗口向右滑动。
接收窗口仅确认窗口中按顺序到达的最后一个字节。例如,接收窗口接收的字节为 {31, 34, 35},其中 {31} 按顺序到达,而 {34, 35} 它不是,所以只针对字节。 31 证实在发送方收到一个字节的确认后,它知道该字节之前的所有字节都已收到。
4.8 TCP 流量控制
流量控制是控制发送方的发送速率,以确保接收方有时间接收。
接收方发送的确认消息中的窗口字段可用于控制发送方的窗口大小,从而影响发送方的发送速率。设置窗口字段 0,发件人无法发送数据。
4.9 TCP 拥塞控制
如果网络拥塞,数据包将丢失,发送方将继续重新发送,从而导致更高程度的网络拥塞。因此,当发生拥塞时,应控制发送方的速率。这与流量控制类似,但起点不同。流量控制是允许接收器及时接收,而拥塞控制是减少整个网络的拥塞。
TCP 拥塞控制主要通过四种算法执行:慢启动、拥塞避免、快速重传和快速恢复。
发送方需要保持拥塞窗口(cwnd),请注意拥塞窗口和发送方窗口之间的区别:拥塞窗口只是一个状态变量,而发送方窗口实际上决定了发送方可以发送多少数据。
为便于讨论,作出以下假设:
接收器具有足够大的接收缓冲区,因此不会发生流量控制;
虽然 TCP 窗口是基于字节的,但窗口的大小在这里是分段设置的。
- 缓慢启动和避免拥堵
发送的初始执行开始缓慢,因此 cwnd = 1,发件人只能发送 1 段当接收到确认时, cwnd 加倍,因此发送方可以发送的段数为:2、4、8 …
注意,每一轮的缓慢开始将 cwnd 双倍,这将使 cwnd 增长速度非常快,以至于发件人的发送速度增长过快,网络拥塞的可能性更高。设置慢启动阈值 ssthresh,当 cwnd >= ssthresh 当进入拥堵避免区时,每一轮只能。 cwnd 加 1。
如果发生超时, ssthresh = cwnd / 2然后重新执行慢速启动。
- 快速重传和快速恢复
在接收方,要求每次接收到消息段时,应确认最后接收到的有序消息段。例如,它已经收到。 M1 和 M2此时收到。 M4,应发送 M2的确认。
在发送方,如果接收到三个重复的确认,则可以知道下一个段丢失,并且此时,执行快速重传以立即重传下一段。例如,接收三个 M2,则 M3 丢失,立即重新发送 M3。
在这种情况下,只有单个段丢失,而不是网络拥塞。所以要快速恢复,所以。 ssthresh = cwnd / 2 ,cwnd = ssthresh,请注意,这一次直接进入拥塞避免。
缓慢启动和快速恢复的速度是指 cwnd 设定值,而不是 cwnd 增长率。慢速启动 cwnd 设定为 1快速恢复 cwnd 设定为 ssthresh。
五.问题总结
1.TCP和UDP有什么不同?
首先TCP和UDP是传输层协议,其网络层协议是IP协议,而IP协议有两个特点:无连接、不可靠、,UDP(用户数据报协议)保留IP协议的特征,通常用于广播和多播,以及TCP(传输控制协议 (面向流字符的协议))通过三方握手机制,它为客户端和服务器提供全双工服务,还提供超时和重传机制,以确保传输数据不丢失。
2.TCP协议如何确保数据不丢失?
网络层协议还具有ICMP协议,ICMP经常考虑协议IP协议的一部分,到期IP该协议对上层传输层和下层物理链路层是透明的。当发送的数据报被丢弃时,ICMP将反馈错误信息TCP,而UDP没有得到任何返回信息,TCP解析后重新传输数据。由于IP发送数据报可以分段发送,TCP该协议还重新排列数据以向应用程序添加层。
3.为什么ICMP将返回数据报告TCP而不是UDP?
TCP收割台长度20字节,和UDP收割台长度8字节,多个12中有个字节4已保存字节32位的ICMP信息,而ICMP数据包由8bit错误类型和8bit的代码和16bit校验和由组成。
4.TCP和UDP每次传输的数据大小?
UDP没有连接,发送数据报时链路断开,因为32位IP是由4钻头(版本)+4钻头(头部长度)+8位(服务类型)+16位(总长度:标题区域+数据区域),因此最大传输数据为2的16次幂64K,UDP首部8位IP首部20位,所以UDP理论最大传输数据为64K-1bit-20bit-8bit(实际上,由于物理网络的限制,它比这个值小得多) 。
TCP提供全双工服务,因为物理网络层通常限制发送的每个数据帧的最大长度,IP所发送的数据将被分段发送,MTU(网络传输的最大数据包)的最大值为1500bit,所以TCP数据报向上1500-20-20=1460bit(IP首部个TCP首部都是20bit),理想情况下MSS(最大网络传输数据 )等于MTU当然,如果是非本地的IP,这个MSS可能只有536字节,如果中间传输网络的MSS如果该值较小,则该值将变小。
参考资料
计算机网络, 谢希仁
TCPIP详解卷1.机械工业出版社, 2006.
JamesF.Kurose, KeithW.Ross, 库罗斯, 等. 计算机网络: 自顶向下方法 [M]. 机械工业出版社, 2014.
Active vs Passive FTP Mode: Which One is More Secure?
Active and Passive FTP Transfers Defined - KB Article #1138
Traceroute
ping
How DHCP works and DHCP Interview Questions and Answers
What is process of DORA in DHCP?
What is DHCP Server ?
Tackling emissions targets in Tokyo
What does my ISP know when I use Tor?
Technology-Computer Networking[1]-Computer Networks and the Internet
P2P 网络概述.
Circuit Switching (a) Circuit switching. (b) Packet switching.
作者:zpoison
来源:CSDN
原文:https://blog.csdn.net/zpoison/article/details/86528327
版权声明:本文为博主原创文章,转载请附上博客链接!
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除
itfan123


