hcia--TCP,UDP

TCP--传输控制协议

是一种面向连接的可靠传输协议--面向连接是发生在数据传输之前的连接

什么是面向连接呢?

在数据传输之前,先使用预备的协议(喊话),建立点到点的连接,然后再传输数据的过程

那么TCP又如何保证可靠性呢?

1.确认

2.重传

3.排序

4.流控--滑动窗口机制

那么TCP如何保证面向连接呢?

TCP的三次握手

TCP可以进行流控

TCP可以进行数据分段,也就是当一个数据太大时,可以分段慢慢传

TCP耗费资源比较大,并且传输速度比较慢

应用的场景:适用于效率较低,但是准确性要求较高的场景

协议:6

                                                         TCP协议的数据格式

 TCP建立连接的过程--三次握手

首先我们先要了解TCP的几个标识符

SYN--请求标记位

ACK--同意确认位,ACK一旦为1激活后,那么ACKNO(确认序号)就被激活大小是seq+1

SEQ--代表序号,序号数字随机,只不过要按照顺序

FIN--结束标记位

1.客户端A想要访问服务器B的时候,此时客户端A就要向客户端发送一个SYN请求标记报文

2.B在收到A发送的请求标记位之后,回复A一个ACK同意确认位,到此为止,A指向B的会话建立完成

3.因为TCP会话是一个双向的过程,因此服务器B也要向客户端发送SYN请求标记报文

4.同理A收到B发送的请求标记位之后,回复B一个ACK同意确认位

那么综上所述,将2.3合并就可以得到

 注:ACKNO=x+1的含义:我已经确认受到了序号seq=x,并且请求序号为seq=x+1的序号

TCP断开连接的过程--四次挥手

1.当客户端A想要与服务器B断开连接的时候,客户端A发送FIN结束标记位向B

2.服务器B在收到A发来的结束标记位的时候,将发送ACK同意确认,此时就结束了A指向B的会话

3.因为TCP是双向的,如果B中还有要向A发送的数据,那么B先将数据全部发送完成之后,再向客户端A发送FIN结束标记位

4.A收到了B发来的FIN后,回复一个ACK确认报文

综上所述

那么我们可以发现出一个问题,为什么三次握手的2.3可以合并,四次挥手却不能呢??

因为三次握手的时候,中间是没有数据传输的,A和B可以同时创建,而四次挥手,B要首先判断自己的数据发送完成之后,才可以断开连接,如果A和B的数据一模一样,则也有可能会出现“三次挥手”的情况

UDP--用户数据报协议

是一种非面向连接的不可靠传输协议

UDP是无连接的协议

UDP不可流控

UDP不可用数据分段

UDP耗费资源比较小,传输速度快

应用场景:
适用于效率较高,但是准确性要求较低的场景(即时类通讯软件)

适用于直播,足球直播,讲究实时性的

 协议:17

TCP和UDP的区别?

1.TCP是面向连接的协议,而UDP是无连接的协议

2.TCP协议的传输是可靠的,UDP协议的传输“尽力而为”

3.TCP可以实现流控,但是UDP不行

4.TCP可以实现分段,而UDP不行

5.TCP协议传输效率慢,占用资源大;UDP协议传输效率快,占用资源少

那么如何实现可靠的UDP协议呢?

UDP协议以其简单,传输快的优势,在越来越多的场景下取代了TCP,如实时游戏

1.网速的提升给UDP的稳定性提供了可靠的网络保障,丢包率很低,如果使应用层重传(不是传输层),则能够保证传输的可靠性

2.TCP为了实现网络通信的可靠性,使用了复杂的拥塞控制算法,建立了繁琐的握手过程,由于TCP内置的系统协议栈中,极难对其进行改进。

采用TCP,一旦发生丢包,TCP会将后续的包缓存起来,等前面的包重传并接收后再继续发送,延时会越来越大,基于UDP对实时性要求较为严格的情况下,采用自定义重传机制,将包产生的延迟降到最低,尽量减少网络问题对游戏性造成的影响

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值