计算机网络传输层----UDP、TCP协议(1)

1.UDP协议及特点

用户数据报协议(UDP)只是在IP的数据报服务上增添了一点功能,就是复用和分用的功能以及差错检测的功能,这里说的复用和分用就是指使用端口标识不同的应用层协议。其特点如下:
UDP是无连接的,通信之前没有建立连接跟释放连接,减少不必要的开销。
UDP使用最大努力交付,不保证可靠交付,因此不需要维持复杂的连接状态表。
UDP没有拥塞控制,因此网络中出现的拥塞不会使源主机发送速率降低。因此比较适合用于(IP电话、视频会议等对实时性要求较高的场景)
UDP是面向报文的:发送方的UDP对应用程序发送的报文,添加首部后就向下交付给网络层。
UDP支持一对一、一对多、多对一的交互通信。
在这里插入图片描述 使用Wireshark抓包可以看出UDP协议主要包括源端口、目标端口、用户数据报长度、校验各占两个字节。
在计算校验和时,在UDP数据报前加12字节的伪首部,并不是UDP真正的首部。只是在计算校验和时临时添加在UDP数据报的前面得到的临时数据报,后校验临时数据报。伪首部既不向下传送,也不向上递交,仅仅为了计算校验和。这样,即检查了UDP的数据报,又对IP数据报源IP地址和目标地址进行了校验。
在这里插入图片描述

2.TCP协议

特点:
每一条TCP连接只能有两个端点,只能一对一。
提供可靠交付的服务,传输的数据,无差错、不丢失、不重复且按序发送。
提供全双工服务。
面向字节流:TCP中的“流”指的是流进进制或从进程流出的字节序列。
注意
TCP连接是一条虚连接不是一条真正的物理连接
TCP根据对方给出的窗 口值和当前网络拥塞程度来决定一个报文段包含多少个字节(UDP发送的报文长度是应用进程给出的)
TCP可以把太长的数据块划分短一些再传送
TCP也可以积累有足够长的字节之后再构成报文段发送出去。
套接字(socket):TCP连接的端点叫套接字(IP地址+端口号)

3.TCP可靠传输的两种协议

3.1停止等待协议

在这里插入图片描述
如图(a)所示:A发送数据,当B接收到A发送的数据时,B返回应答给A,代表我已经收到数据,此时A可以继续发送数据给B。图(b)所示代表A发送完数据,该过程产生了差错,B没有返回应答,当A等待一段时间没有接受到B返回的数据,超时之后将重新将数据发送给B。一直到B收到数据返回应答,否则一直重复上述过程。
在这里插入图片描述
图(a)B收到A发送的数据,但是此时返回应答的数据丢失,此时A超时之后也会出现重传。此时B收到重复的报文,他将丢掉一个已经收到的数据。图(b)这种情况是B收到A的数据之后,B返回的应答所走的路径过长,导致超时A又会重新发送。

会产生的问题:上述方式我们发现信道利用率比较低,我们发送一个分组之后呢,要等待确认之后或超时之后才可以进行重发。解决这个问题,我们可以采用流水线发送数据,一次发送多个分组。

3.2连续的ARQ协议和滑动窗口协议

在这里插入图片描述上面我们为了提高信道利用率,可以将数据一次性发多个分组,此时我们看一下上图中的(b)我们一次发送四个分组,收到确认信息后,我们在发送之后的4个分组,以此类推。

TCP协议的报文格式

在这里插入图片描述在这里插入图片描述源端口号:占2个字节,范围是0~65535
序号:每一分段我们都有一个序号值, 例如我们100个字节为一个分组的话,那我们发送下一分组数据时,我们的序列号为1,下一分组的序号为101>>>>>(这是A计算机给B计算机发数据)用于B计算机将数据连接起来。
如果B计算机收到数据后,也可以向A计算机返回TCP首部,这里面的序号是201代表下一个数据分组因该是第201个字节(确认数据包 表示该发那个数据了,这种是B只给A做应答)。当A与B同时发送数据时,B就不会单独发送TCP首部,而是将确认好封装在发送的数据中一块发送给计算机A,见下图:
在这里插入图片描述
数据偏移 占4位,最大可表示15,每个数值代表数据偏移的4个字节,因此最大的偏移是60字节。

紧急URG(URGent):当URG=l时,表明紧急指针字段有效。
确认ACK(ACKnowlegment):仅当ACK=1时确认号字段才有效。
推送PSH:当两个应用进程进行交互式的通信时,有时一端的应用进程希望在键入一个命令后立即就能收到对方的响应。在这种情况下,TCP就可以使用推送(Push)操作。(一般跟URG一起使用)
窗口:前面说TCP可以流量控制,那么窗口就起控制流量的作用。
选项:TCP建立连接协商一些参数,例如:最大报文段等等,在窗口滑动传输中,他可以记录那个数据包丢了。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值