电脑禁止访问网站设置,网页设计与网站建设的报告,做网站和做系统有什么不同,汕头建设吧百度贴吧目录
UDP协议
UDP协议段格式
UDP缓冲区
TCP协议
TCP协议段格式
确认应答机制
超时重传机制
连接管理机制
连接建立#xff08;三次握手#xff09;
连接关闭#xff08;四次挥手#xff09;
滑动窗口
流量控制
拥塞控制
延迟应答
捎带应答 UDP协议
UDP协议…目录
UDP协议
UDP协议段格式
UDP缓冲区
TCP协议
TCP协议段格式
确认应答机制
超时重传机制
连接管理机制
连接建立三次握手
连接关闭四次挥手
滑动窗口
流量控制
拥塞控制
延迟应答
捎带应答 UDP协议
UDP协议段格式 16位UDP长度UDP数据报的总长度包括头部和数据部分。最小值为8字节仅头部
16位UDP校验和用于检测UDP数据报在传输过程中是否发生错误。如果校验和计算结果为0则表示数据正确 如果校验和出错就会直接丢弃 UDP的特点
无连接知道对端的IP和端口号就直接进行传输不需要建立连接不可靠没有确认机制也没有重传机制若是出错无法发到对方UDP协议层也不会给应用层返回任何错误信息面向数据报不能够灵活的控制读写数据的次数和数量
UDP缓冲区
UDP没有真正意义上的发送缓冲区调用sendto会直接交给内核由内核将数据传给网络层协议进行后续的传输动作
UDP具有接受缓冲区但是这个缓冲区不能保证UDP报的顺序和发送UDP报的顺序一致。如果缓冲区满再到达的UDP数据就会被丢弃
TCP协议
TCP协议段格式 序列号用于标识TCP数据段的顺序。发送方为每个字节分配一个序列号接收方通过序列号来重组数据。
确认序列号接收方期望收到的下一个数据段的序列号。只有在ACK标志位为1时确认号才有效。若接收方收到1000-1999所有字节那么会发送确认号为2000代表期望收到序列号为2000的下一个字节
首部长度表示TCP头部的长度以32位字为单位。最小值为520字节最大值为1560字节。
保留保留字段必须为0。
标志位 URG紧急指针有效如果为1表示紧急指针字段有效。 ACK确认号有效如果为1表示确认号字段有效。 PSH推送如果为1表示接收方应尽快将数据推送给上层应用。 RST重置连接如果为1表示连接出现严重错误需要重置。 SYN同步序列号用于建立连接表示请求建立连接。 FIN结束连接用于关闭连接表示请求关闭连接。
窗口大小接收方的接收窗口大小用于流量控制。表示接收方能够接收的最大字节数。为了防止对方发送超过接收方能够接受的数据大小
校验和用于检测TCP头部和数据部分在传输过程中是否发生错误。
紧急指针指向紧急数据的指针只有在URG标志位为1时才有效。
选项用于扩展TCP的功能提供额外的控制信息。选项字段的长度是可变的通常用于协商连接参数、优化性能或实现其他高级功能。
确认应答机制
TCP的确认应答机制是TCP实现可靠传输的核心机制之一通过确认号和序列号来确保数据的完整性和顺序性。
具体步骤
1发送方发送数据 发送方将数据封装成TCP数据段并为每个字节分配一个序列号。 发送方将数据段发送到网络中。
2接收方接收数据 接收方收到数据段后检查数据段的序列号是否连续。 如果数据段的序列号是连续的接收方将数据段中的数据存储到接收缓冲区中。 如果数据段的序列号不连续接收方会发送一个确认号告诉发送方它期望收到的下一个数据段的序列号。 3接收方发送确认应答 接收方发送一个确认应答报文其中包含确认号。 确认号是接收方期望收到的下一个字节的序列号。
4发送方接收确认应答 发送方收到确认应答后根据确认号判断数据是否被成功接收。 如果确认号表明数据已被成功接收发送方可以继续发送后续的数据段。 如果发送方在超时时间内没有收到确认应答或者确认号表明某些数据段丢失发送方会重新发送丢失的数据段。
超时重传机制
当发送方发送一个数据段后如果在规定的时间内没有收到接收方的确认应答发送方会认为该数据段可能丢失或在网络中延迟过久从而重新发送该数据段。
具体步骤
1发送数据段 发送方发送一个数据段并启动一个定时器等待接收方的确认应答。 超时时间的设定 1. Linux中Unix和Windows超时以500ms为一个单位进行控制每次判定超时重发的超时时间都是500ms的整数倍 2. 如果重发一次后仍然得不到应答等待2*500ms后再进行重传如果仍然得不到应答则 等待4*500ms以指数形式递增 3. 累计到一定的重传次数TCP认为网络或者对端主机出现异常强制关闭连接 2等待确认应答 发送方等待接收方的确认应答。 如果在超时时间内没有收到确认应答发送方认为数据段可能丢失或延迟过久进入下一步。
3重传数据段 发送方重新发送丢失的数据段并重新启动定时器。 每次重传时超时时间会根据一定的策略增加以避免频繁重传对网络造成过大压力。
连接管理机制
在正常情况下TCP要经过三次握手建立连接四次挥手断开连接 连接建立三次握手
1. 第一次握手SYN同步序列号
客户端客户端向服务器发送一个带有SYN标志的数据段表示请求建立。数据段中的序列号字段设置为一个随机值称为初始序列号连接确认号字段为0。
2. 第二次握手SYN-ACK同步序列号 确认号
服务器服务器收到客户端的SYN请求后会发送一个带有SYN和ACK标志的数据段作为响应服务器在响应中设置自己的初始序列号并确认客户端的序列号确认号字段设置为客户端的初始序列号加1。
3. 第三次握手ACK确认号
客户端客户端收到服务器的SYN-ACK响应后发送一个带有ACK标志的数据段确认服务器的序列号确认号字段设置为服务器的初始序列号加1。
此时连接建立完成双方可以开始数据传输
连接关闭四次挥手
1. 第一次挥手FIN结束连接
客户端客户端完成数据发送后发送一个带有FIN标志的数据段表示请求关闭连接。客户端进入FIN_WAIT_1状态等待服务器的确认。
2. 第二次挥手ACK确认号
服务器服务器收到客户端的FIN请求后发送一个带有ACK标志的数据段作为响应确认号字段设置为客户端的序列号加1。服务器进入CLOSE_WAIT状态等待应用程序关闭连接客户端则进入FIN_WAIT_2状态。
3. 第三次挥手FIN结束连接
服务器服务器完成数据发送后发送一个带有FIN标志的数据段表示请求关闭连接。随后进入LAST_ACK状态等待客户端的确认。
4. 第四次挥手ACK确认号
客户端客户端收到服务器的FIN请求后发送一个带有ACK标志的数据段作为响应确认号字段设置为服务器的序列号加1。客户端进入TIME_WAIT状态等待2倍的报文段最大生存时间2MSL以确保最后一个ACK被服务器接收 MSL在RFC1122中规定为两分钟但是各操作系统的实现不同在Centos7上默认配置的值是60s 之后客户端关闭连接
滑动窗口
滑动窗口是一种用于控制数据传输量的机制。它通过一个“窗口”来表示接收方能够接收但尚未确认的数据量。
发送窗口
发送方维护一个窗口表示它可以发送但尚未收到确认的数据量发送窗口的大小决定了发送方可以连续发送多少数据而无需等待确认。
接收窗口
接收方维护一个窗口表示它可以接收但尚未处理的数据量接收窗口的大小由接收方根据其缓冲区的可用空间动态调整并通过确认应答报文中的窗口字段通知发送方。
工作原理
1. 接收方接收方在收到数据后会发送一个确认应答其中包含确认号和窗口大小窗口大小表示接收方当前能够接收的数据量。
2. 发送方发送方根据接收方的ACK中的窗口大小调整自己的发送窗口如果接收方的窗口大小增加发送方可以发送更多的数据如果窗口大小减少发送方需要减少未确认数据的量。
3. 动态调整滑动窗口是动态的随着数据的发送和确认窗口会向前滑动每当发送方收到一个ACK它会根据ACK中的窗口大小调整自己的发送窗口并继续发送数据。 流量控制
流量控制用于确保发送方不会发送超过接收方处理能力的数据量。主要目的是防止接收方缓冲区溢出从而避免数据丢失。
工作原理
1. 接收方接收方将自己可以接收的缓冲区大小放入TCP首部的“窗口大小”字段通过ACK端通知发送端窗口大小字段越大, 说明网络的吞吐量越高。一旦发现自己的缓冲区快满了 就会将窗口大小设置成一个更小的值通知给发送端。
2. 发送方发送方接受到这个窗口之后, 就会减慢自己的发送速度 如果接收端缓冲区满了, 就会将窗口置为0这时发送方不再发送数据但是需要定期发送一个窗口探测数据段, 使接收端把窗口大小告诉发送端 拥塞控制
拥塞控制是用于避免网络拥塞并提高数据传输效率的关键机制。通过动态调整发送方的发送速率确保网络不会因为过多的数据流量而过载。
工作原理
拥塞控制的核心是通过拥塞窗口来控制发送方可以发送的数据量。拥塞窗口的大小会根据网络的拥塞情况动态调整。
1慢启动快速增加发送速率直到检测到网络拥塞 在连接建立初期拥塞窗口以指数速度增长。 当拥塞窗口达到一个阈值ssthresh时进入拥塞避免阶段
2拥塞避免缓慢增加发送速率避免网络拥塞 拥塞窗口以线性速度增长。 每经过一个往返时间RTT拥塞窗口增加1个MSS。
3快速重传快速检测丢包并重传丢失的数据段 如果发送方收到三个重复的ACK即三个相同的确认号它会认为某个数据段可能丢失。 发送方立即重传丢失的数据段。
4快速恢复在重传后调整拥塞窗口恢复发送速率 当发送方触发快速重传后进入快速恢复阶段。 设置阈值ssthresh为当前拥塞窗口的一半。 将拥塞窗口设置为阈值大小并进入拥塞避免阶段。 延迟应答
延迟应答是一种优化机制用于减少确认应答报文的数量从而提高网络效率。
延迟应答允许接收方在一定时间内延迟发送ACK而不是立即对每个接收到的数据段发送确认。这种机制在某些情况下可以显著减少网络流量尤其是在接收方频繁接收数据时。
具体实现
1等待时间 接收方在收到数据段后会等待一个固定的时间通常为200毫秒再发送ACK。 如果在这段时间内接收到更多的数据段接收方可以将多个ACK合并为一个。
2数据量阈值 如果接收方在等待时间内接收到足够多的数据它会立即发送ACK而不是等待固定时间。这种机制确保了即使在高流量情况下ACK也不会延迟过久
3最大延迟时间 为了防止ACK延迟过久TCP协议规定了最大延迟时间通常为500毫秒。 如果接收方在最大延迟时间内没有发送ACK它必须发送一个ACK即使没有收到更多的数据段。
捎带应答
捎带应答是一种优化机制用于减少网络中的报文数量提高通信效率。
捎带应答的核心思想是将确认应答与数据段一起发送而不是单独发送一个ACK报文。这样可以减少网络流量同时提高协议的效率。
工作原理
1. 接收方接收方收到发送方发送的数据段检查数据段的序列号确认数据的完整性和顺序。并准备好发送自己的数据段在发送数据段时在TCP头部中包含一个ACK字段确认之前接收到的数据。
2. 发送方发送方收到接收方发送的数据段检查TCP头部中的ACK字段确认接收方已经收到的数据根据ACK字段更新自己的发送窗口继续发送后续数据。 完