网络7层架构与TCP与UDP |
您所在的位置:网站首页 › trdp协议端口 › 网络7层架构与TCP与UDP |
一、网络的7层架构
TCP(传输控制协议)和UDP(用户数据报协议)是两种常见的传输层协议,用于在计算机网络中传输数据。它们之间存在以下几个主要区别: 连接导向 vs. 无连接: TCP是面向连接的协议,通过建立可靠的连接来传输数据,确保数据的有序性、完整性和可靠性。UDP是无连接的协议,每个数据报都是独立的,没有建立和维护连接的开销,但也不保证数据的可靠性和顺序性。可靠性: TCP提供可靠的数据传输,通过确认机制、超时重传、丢失数据的重传等来确保数据的可靠性。 UDP不提供可靠性保证,数据报可能丢失、重复或乱序,应用程序需要自行处理这些问题。 数据量和效率: TCP在数据传输过程中会进行拥塞控制和流量控制,以适应网络的状况,这使得它在传输大量数据或要求高可靠性的场景下更为适用。 UDP没有拥塞控制和流量控制的机制,传输效率较高,适用于实时性要求较高的应用,如视频流和音频流。 头部开销: TCP的头部开销相对较大,包含序列号、确认号、窗口大小等字段,这些用于实现可靠性的机制增加了额外的开销。 UDP的头部开销相对较小,只包含基本的源端口、目标端口、长度和校验和字段。 综上所述,TCP适用于对数据传输的可靠性和有序性要求较高的场景,如文件传输、网页浏览等。UDP适用于实时性要求较高、对传输可靠性要求不高的场景,如实时游戏、视频通话等。选择使用哪种协议取决于具体应用的需求和对数据传输特性的权衡。 2、拥塞控制 1、拥塞控制的目的和代价拥塞控制目的:防止过多的数据注入到网络中,避免网络中的路由器或链路过载,所要做的就是抑制发送端发送数据的速率,以便使接收端来得及接收。 拥塞控制代价:需要获得网络内部流量分布的信息。在实施拥塞控制之前,还需要在结点之间交换信息和各种命令,以便选择控制的策略和实施控制。这样就产生了额外的开销。 2、拥塞控制的几种方法 慢开始探测式的开始,TCP开始发送报文段时先设置cwnd=1,使得发送方在开始时只发送一个报文段(目的是试探一下网络的拥塞情况),每次翻倍窗口大小 慢开始算法只是在TCP连接建立时和网络出现超时时才使用。 拥塞避免为了防止拥塞窗口cwnd增长过大引起网络拥塞,还需要设置一个慢开始门限ssthresh(Slow Start threshold,慢启动阈值)状态变量(如何设置ssthresh)。慢开始门限ssthresh的用法如下: 当 cwnd < ssthresh 时,使用上述的慢开始算法。 当 cwnd > ssthresh 时,停止使用慢开始算法而改用拥塞避免算法。 当 cwnd = ssthresh 时,既可使用慢开始算法,也可使用拥塞控制避免算法。 “拥塞避免”是说在拥塞避免阶段将拥塞窗口控制为按线性规律增长,使网络比较不容易出现拥塞。 快恢复与慢开始不同之处是现在不执行慢开始算法(即拥塞窗口cwnd现在不设置为1),而是把cwnd值设置为 慢开始门限ssthresh减半后的数值,然后开始执行拥塞避免算法(“加法增大”),使拥塞窗口缓慢地线性增大。这方法叫做快恢复! 快重传快重传算法首先要求接收方每收到一个失序的报文段后就立即发出重复确认(为的是使发送方及早知道有报文段没有到达对方)而不要等到自己发送数据时才进行捎带确认。 2次握手没法确认client端的接收能力。 假如只有2次握手就建立链接 当 Client 发送 SYN(seq=1)给Server(由于网络问题,卡在半路了,没发送到Server)Client一直没收到,觉得丢了包,重新发送SYN(seq=2)给ServerServer收到SYN(seq=2,发送SYN-ACK 给 Client (Server 准备好了)Server和Client建立链接,通信SYN(seq=1) 复活了,不卡了,又发给了Server,Server收到了Server收到SYN(seq=1),发送SYN-ACK 给 Client (Server 准备好了)Server和Client建立链接,不通信(一直空闲着,不发东西,浪费了) 啥是半链接队列?啥是全链接队列? 走完3次握手的,放全连接队列走完2次握手的,放半链接队列。如果一直没收到Client的第三次确认,Server会一直发送SYN-ACK,如果超过SYN-ACK 重传次数,那么会从半链接队列中剔除。 ISN(Initial Sequence Number)是固定的吗不是,如果 ISN 是固定的,攻击者很容易猜出后续的确认号,因此 ISN 是动态生成的。 三次握手可以携带数据吗? 第一次第二次不可以,可以的话,Client 就带大量数据去攻击你这个 Server第三次可以,但是也不建议(TCP协议的设计初衷是在建立连接后再开始数据的传输,这有助于确保连接的稳定性和可靠性。) Sync攻击是什么? SYN攻击就是Client在短时间内伪造大量不存在的IP地址,并向Server不断地发送SYN包,Server则回复确认包,并等待Client确认,由于源地址不存在,因此Server需要不断重发直至超时。这些伪造的SYN包将长时间占用未连接队列,导致正常的SYN请求因为队列满而被丢弃,从而引起网络拥塞甚至系统瘫痪。SYN 攻击是一种典型的 DoS/DDoS 攻击。检测 SYN 攻击非常的方便,当你在服务器上看到大量的半连接状态时,特别是源IP地址是随机的,基本上可以断定这是一次SYN攻击。 在 Linux/Unix 上可以使用系统自带的 netstats 命令来检测 SYN 攻击。 netstat -n -p TCP | grep SYN_RECV常见的防御 SYN 攻击的方法有如下几种: 缩短超时(SYN Timeout)时间增加最大半连接数过滤网关防护SYN cookies技术 4、 TCP 的四次挥手MSL是Maximum Segment Lifetime的英文缩写,可译为“最长报文段寿命”,它是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |