有关UDP与TCP

本文对比介绍了UDP和TCP协议的特点,包括UDP的无连接性、尽最大努力交付、面向报文以及TCP的面向连接、可靠传输、全双工通信等。同时,探讨了UDP的缓冲区管理、注意事项以及TCP的滑动窗口、连接管理、流量控制和拥塞控制策略。此外,还提到了TCP如何通过超时重发、快速重传和延迟应答等机制确保数据的可靠性。
摘要由CSDN通过智能技术生成

有关TCP的连接释放问题,请见上一篇文章
https://blog.csdn.net/aaronlanni/article/details/80644709(TCP的三次握手与四次挥手)
一、UDP协议
(一)概述
1、特点
a:UDP是无连接的,减少了开销和发送数据之前的时延。
b:UDP尽最大努力交付
c:UDP面向报文:应用层交给UDP多长的报文,UDP照样发送,即一次发送一个报文,UDP一次交付一个完整的报文。
d:没有拥塞控制:允许在网络拥塞的时候,对数据有一定的丢失,但不允许有太大的时延
e:UDP支持一对一,一对多,多对一,多对多的交互通信
f:首部开销小
g:UDP的socket既能读, 也能写, 这个概念叫做全双工
2、用UDP传输100个字节的数据:如果发送端调用一次sendto, 发送100个字节, 那么接收端也必须调用对应的一次recvfrom, 接收100个字节; 而不能循环调用10次recvfrom, 每次接收10个字节;
(二)报头
这里写图片描述
(三)UDP缓冲区

  • UDP没有真正意义上的发送缓冲区. 调用sendto会直接交给内核, 由内核将数据传给网络层协议进行后续的传输动作;
  • UDP具有接收缓冲区. 但是这个接收缓冲区不能保证收到的UDP报的顺序和发送UDP报的顺序一致; 如果缓冲区满了,再到达的UDP数据就会被丢弃;
    (四)使用UDP的注意事项
    UDP协议首部中有一个16位的最大长度. 也就是说一个UDP能传输的数据最大长度是64K(包含UDP首部).
    然而64K在当今的互联网环境下, 是一个非常小的数字.
    如果我们需要传输的数据超过64K, 就需要在应用层手动的分包, 多次发送, 并在接收端手动拼装;从而导致数据在传送过程中的效率十分的低下。
    二、TCP协议
    (一)特点
  • 面向连接的运输层协议
  • 每一条TCP连接只能有两个端点(点对点,一对一)通信
  • TCP提供可靠交付的服务,通过TCP连接传送的数据无差错,不丢失,不重复,按序到达
  • TCP提供全双工通信,在TCP的两端都设有发送缓冲与接收缓冲,从而用来临时存放双向通信的数据
  • 面向字节流,流是指流入到进程或者从进程流出的字节序列
  • TCP连接是一条虚链接,而不是真正意义上的物理连接
  • TCP报文在传输之时,TCP报文段先要传送到IP层,加上IP的首部后,在传输到数据链路层,加上数据链路层的首部和尾部之后,才能离开主机发送到物理链路上
  • TCP在发送数据多少的时候,是根据窗口值与目前网络的拥塞情况,从而决定一个报文段到底应该包含多少个字节
    (二)报头
    这里写图片描述
    (三)TCP连接
  • TCP连接的端点称之为套接字或插口
  • 套接字 socket=(IP地址:端口号),中间的冒号也可改写为逗号

套接字的区分

  • 允许应用程序访问连网协议的应用编程接口API,即运输层和应用层之间的一种接口,称为socket API,并简称为socket
  • 在socket API中使用的一个函数名也叫做socket
  • 调用socket函数的端点称为socket,例如创建一个数据报socket
  • 调用socket函数时,其返回值称为socket描述符,可简称为socket
  • 在操作系统内核中连网协议的Berkeley实现,称为socket实现
    (四)面向字节流
    一次性读取数据的多少,由上层应用程序决定
    创建一个TCP的socket, 同时在内核中创建一个发送缓冲区和一个接收缓冲区;
  • 调用write时, 数据会先写入发送缓冲区中;
  • 如果发送的字节数太长, 会被拆分成多个TCP的数据包发出;
  • 如果发送的字节数太短, 就会
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值