网站建议公司新邵县住房和城乡建设局网站
news/
2025/9/23 21:36:46/
文章来源:
网站建议公司,新邵县住房和城乡建设局网站,电子商务网站的开发方式有哪三种,广告效果图设计TCP协议的报文格式 TCP协议有连接#xff0c;可靠性传输#xff0c;面向字节流#xff0c;全双工。
他的数据格式如图#xff1a; 根据他的数据格式#xff0c;在这里我们只知道 16位源端口号#xff08;表示客户端这里的端口号#xff09;#xff0c;16位目的端口号可靠性传输面向字节流全双工。
他的数据格式如图 根据他的数据格式在这里我们只知道 16位源端口号表示客户端这里的端口号16位目的端口号服务器这边的端口号还有16位校验和这里在UDP中的校验和是一样的。
这里的选项其实就是 “可选” 或 “不选”没有更加深层的含义。
在这里学习之前我们只能了解到这几个在后面介绍10大机制的时候会一一介绍。 TCP的十个核心机制 1 确认应答。 确认应答这种机制其实是为了保障TCP协议可靠传输的这种特性。
那么怎么确认应答的呢 当客户端A发送过来一个数据的时候。服务端B这里不会立马给出响应而是先发送一个ack这样的报文告知A已确认收到。这里的ACK其实就是上面保留位的其中之一。 那么在这里我们就需要考虑一个问题当A一起发送两个数据的时候那么B这边是如何保证发送的ack报文是怎么一一对应的呢 因此在这里我们的TCP协议包含确认序列号当A每次发数据的时候都会进行编号B返回的时候就会根据这个序列号来进行一一对应。 此处的序列号也就是上述TCP报文格式中的32位序列号和32位确认序列号。
如图 2超时重传。 这里我们先考虑一个问题。当我们客户端A发送数据包是经过中间的层层传输还未传给服务端B的时候突然丢包了怎么办此时A就不会收到B这边的应答报文。 这里我们就会触发超时重传。意思就是等了一会没有A还没有收到B这边的ack报文此时A就会再发一遍数据。
如图 还有情况是当B这边返回的ack报文丢包了怎么办考虑超时重传此时A会再次重新发送一次数据这种很明显时很不合理的。
如图 就如上述图中所说的当发生在转账的时候A就会发起两次充值而B只返回一次。此时就是一个非常糟糕的事情。
那么在这里我们怎么解决呢 其实在操作系统中存在一种数据结构 “接收缓冲区” 类似于阻塞队列这种结构。每当B收到A发到的数据之后B的这种数据结构会根据序列号对数据进行排序序列小的在前序列大的在后。
如图 当重传多次还未成功怎么办 如果多次尝试了还未成功此时就会重置连接通过复写报文“RST报文” 来重置连接也是上述保留位的其中之一。 3连接管理。 建立连接的流程三次握手。
断开连接的流程四次挥手。
在握手和挥手的过程中传输的网络数据包不携带任何的业务上的数据。 三次握手 三次握手形象的表现其实就是投石问路传输的数据仅起到的作用就是确保网络传输通畅不携带任何的业务逻辑数据。
建立连接其实就是通信双方各自保存对端的信息。
具体完成上述的过程需要进行三次网路的交互。
如图 其实上图中的流程一共进行了三次的交互只是中间的两次交互ACK和SYN两个和成了一个数据包了。
这里的SYN也是6个标志位的其中之一其实是synchronize 的缩写这里是同步的意思。 那么这里问什么要各自发送syn呢 当客户端A发送数据后服务端B返回给A一个ack报文此时B再给A一个syn确定A的接收能力是否正常。只有这样才能确保通信双方网络通信正常。 三次握手的过程中还需要协商一些重要的参数。 在这里序列号往往不是从一开始的而是通信双方通过协商确定的。 三次握手主要意义三个方面
1.投石问路确定通信双方路径是畅通的。
2.验证双方的发送能力和接收能力。
3.协商必要的参数比如起始序号等。 补充如图 四次挥手 如图 这里的四次挥手不一定是客户端先发出的也可能是服务端。三次握手一定是客户端先发出的的。 那么啥叫断开连接就是通信双方都把各自的信息都给删了。 这里的FIN结束报文其实也是6个标志位之一就是finally的缩写。
这里四次挥手中中间的两次通信是否可以合并
常规情况下是不可以合并的再特殊的情况下可以合并。
那么为什么不能合并呢
三次握手过程中syn和ack都是内核自动控制发送的其实是同一时机因此可以合并。
如图 TCP状态如图 4滑动窗口。 滑动窗口是提高传输速率的机制。
当我们不引入滑动窗口时 如图 引入滑动窗口时如图 如图中所示引入滑动窗口会大大提高传输效率。 当上述A发送的1001-2000的序列号的数据此时B发送这一序列号的报文丢失了怎么办呢 其实这种情况完全不用担心因为此时ack丢包了但是数据已经收到了后面当B返回给A一个序列号位3001的ackA就会默认小于3001 的数据B已经全部收到了。 那么在这里A发送的数据报直接丢失了怎么办例如1000-2000 的数据丢失了。
如图 当丢失了之后此时B会一直返回1001序列号的应答报文一直向A索要等待A发送了之后B就会返回已经接收到的应答报文如图中的7001序列号的报文。
如图B的结构 5流量控制。 这里的流量控制其实就是控制的窗口的大小来控制发送方的速度。 具体是怎么控制的呢
如图 还有就是上述的TCP报文格式中的 “选项” 包含窗口扩展因子可以控制窗口的大小。 6拥塞控制。 这里的拥塞控制是站在接收方的角度来控制发送方的发送速度。
就是当发送方以较慢的速度发送数据时经过中间的链路节点的时候未发生丢包的现象此时A会提升窗口的大小加快速度。相同的道理当丢包严重时A会降低窗口的大小来降低A的发送速度。 7延时应答。 延时应答ack不会立刻返回而是等一段时间。
为什么要延时目的提升传输的效率。
延时就是为了给应用程序腾出来更多的消费时间。
以次来提高窗口的大小提升传输的效率。 8捎带应答。 这是建立在延时应答的基础上来提升速率的机制。
捎带应答在生活中也很常见比如叫室友帮忙带个东西等这种都是。
日常开发中客户端与服务端都是一问一答的情况。
如图 如图上述所示我们就可以把ack和响应合成一次传输来提高传输的效率。 9面向字节流。 在字节流读取数据的时候经常会发生一种问题 “粘包问题” 。就是发送的各种数据包读取的时候分不清结束每个数据包的初始和结束。
此时我们可以次啊用1使用分隔符 2)约定包的长度 来解决以上问题。
如图 10异常情况 1其中某一个进程突然崩溃了。 不论是进程崩溃正常结束操作系统都会回收对应的PCB可以释放里面的文件描述符表也就相当于调用了close。这里的4次挥手也能挥完。 2某个主机关机了正常流程的关机。 这里和第一种情况一样进程结束之后进行4次挥手。 3某个主机电源掉电。 如图例子 B向A发送一个心跳包如果A没挂就会发回一个ack若A挂了发送多次之后仍没有回应此时B就会单方面删除A的信息。 4网线断开。 如图所示 以上的10中机制是面试的重点一定要掌握。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/913961.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!