【网络协议】网络协议(三)--传输层TCP/UDP协议

一.TCP协议

在这里插入图片描述
以上是TCP的头部信息:

  • 首先是源端口和目的端口

  • 接着是数据包的序号,对各个包编号解决了数据包乱序的问题,也用于丢包重发

  • 然后是数据包的确认号,如果数据包丢失就进行重发,保证了不丢包

  • 接下来是标志位

    URG:紧急,0x20。当URG=1时,表示报文段中有紧急数据,应尽快传送。
    ACK:确认,0x10。当ACK = 1时,代表这是一个确认的TCP包,取值0则不是确认包。
    PSH:推送,0x08。当发送端PSH=1时,接收端尽快的交付给应用进程。
    RST:复位,0x04。当RST=1时,表明TCP连接中出现严重差错,必须释放连接,再重新建立连接。
    SYN:同步,0x02。在建立连接是用来同步序号。SYN=1, ACK=0表示一个连接请求报文段。SYN=1,ACK=1表示同意建立连接。
    

    FIN:终止,0x01。当FIN=1时,表明此报文段的发送端的数据已经发送完毕,并要求释放传输连接。

  • 还有就是窗口,用来控制对方发送的数据量,通知发放已确定的发送窗口上限,简单来说就是控制流量

TCP三次握手

在这里插入图片描述
TCP三次握手是TCP协议的重要内容,它主要解决维护连接的问题。
第一次握手:客户端发送TCP包,置SYN标志位为1,将初始序号X,保存在包头的序列号(Seq)里。
第二次握手:服务端回应确认包,置SYN标志位为1,置ACK为X+1,将初始序列号Y,保存在包头的序列号里。
第三次握手:客户端对服务端的确认包进行确认,置ACK为Y+1。

如果TCP是两次握手,那么客户端在发送给服务端请求连接的请求后,服务端返回确认连接,但可能客户端早早的关闭了连接或者网络存在问题,此时客户端断开了连接,但服务端还保持与客户端的连接,这就造成了资源的浪费,如果这样的连接过多,就造成服务端的崩溃。

TCP四次挥手

在这里插入图片描述

  • 这里主动方A要关闭连接,发送了包含FIN和ACK标志的请求给B
  • B确认了A的请求,返回了ACK的ACK
  • 这是其实连接可以断开了,但可能B还有未完的数据要发送给A,因此B在发送完剩余的数据后也需要主动的关闭连接,这时B发送了包含FIN和ACK标志的请求给A
  • A确认了B的请求,返回了ACK的ACK,最终连接关闭

二.UDP协议

在这里插入图片描述
UDP是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接。简单来说,当一台计算机向另外一台计算机发送数据时,发送端不会确认接收端是否存在,就会发出数据,同样接收端在收到数据时,也不会向发送端反馈是否收到数据。

UDP协议的头部和TCP的头部相比起来少了很多,比如数据包的序号、确认号、表明状态的标志位等等,少了这些因素的UDP表明了UDP协议在数据传输中是不可靠的。

三.TCP和UDP的区别

TCPUDP
是否可靠传输可靠传输不可靠传输
头部开销头部开销大,占20字节头部开销小,占8字节
是否连接面向连接无连接
适用场景要求数据可靠传输的场景,例如文件下载等实时要求高的场景,例如直播、游戏等

总的来说,在数据传输的过程中传输的速度和数据的准确性不可兼得,要根据具体的场景进行选择。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值