网络协议UDP、TCP

本文详细介绍了TCP和UDP这两种传输层协议。TCP提供可靠的、面向连接的服务,通过确认应答、序列号、重传机制保证数据可靠性,而UDP则是简单快速、无连接的协议,适用于实时通信但不保证数据的有序或完整。文章通过三次握手和四次挥手的过程解释了TCP连接的建立与关闭,并探讨了TCP与UDP在流量控制和拥塞控制上的策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一、网络中的标准封层

1、TCP/IP

  • 应用层 : 进程之间进行具体沟通 (具体的信息)
  • 传输层 : 端对端的数据交换; 端: 进程 (进程之间可以通信)
  • 网络层 : WAN 设备和设备之间实现数据交换,跨 LAN 工作 (跨 LAN ,主机间通信)
  • 数据链路层 : 在一个局域网 LAN 内部的相关事宜 (LAN 内部主机之间的通信)
  • 物理层 : 例如两台设备可以直接连接 (直接连通)

补充

  • 发送过程中:应用层–》传输层–〉网络层–》链路层, 每一层都会在数据包中添加自己必要的信息进去(封装)
  • 接受过程中,链路层–〉网络层–》传输层–〉应用层, 每一层都需要负责把这一层的相关信息删除掉(解包)
  • 数据包中每层都应该携带两个重要信息:
    • 如何分割每层添加的数据(长度、边界) 为了解包
    • 具体交给上层的那个协议进行处理,为了分用
    • 同一台主机上,端口只能被一个进程所占用,即使多个进程属于同一个程序.
      • 常用端口
        http :80
        https: 443
        ssh: 22
        mysql: 3306
        redis:6379

只要有端口,一定是传输层以上级别。传输层上又有两个重要的协议:TCP 、UDP; 四元组的基础上 + 协议号 =》五元组

  • 网络编程 : 利用 os 提供的套接字(socket) ,进行网络通信内通的编程;
  • 套接字(socket) : 插口 ,相当于通过 socket 才能真正使用 os 提供的 TCP、UDP 其他网络服务。

2、传输层重要协议: 进程 to 进程

2.1 UDP User Datagram Protocol 用户报文协议

  • 没有任何特点, 和 TCP 对比时: 不可靠、无连接、面向报文
  • UDP 作为一最简单的传输层协议,没有帮助用户处理复杂的网络环境,所以 保留下来了网络不可靠的特性。
  • UDP 报文的头信息(header)
    • 封装的数据(header)
      • 8 字节,定长; 16位 源端口号(发件人), 16位 目的端口号(收件人); 16位 UDP 长度(报文长度), 16位 UDP 检验和 (checksum )
      • checksum 作用: 判断收到的报文(数据)是否出现差错的; 如果校验和出错,就会直接丢弃;没有出错,正常接收数据;
      • checksum 简单工作机制: 利用 hash 函数原理:通过设计一种 hash 函数,达到冲突率很低的一种情况。
    • 数据(有效负荷 payload)
  • UDP 有接收缓冲区(满了以后再到达的UDP数据就会被丢弃),没有发送缓冲区; 造成用户层发送了多少数据,UDP 也直接发送了多少数据;
  • UDP 发送数据无需任何准备,随时随地发送(寄信)。 ,所以也是无连接的 ;
  • 不可靠性: 报文不保证发送给对方;出现丢包之后,发送方也不知道; 报文无法保证有序;
  • 影响结果: 由于底层(物理层+网络层) 都对一次发送的数据有大小限制;如果强行发送大于限制的数据,就会出现数据截断。
  • UDP 的 socket 即能读也能写,叫全双工 (即能发送,也能接收)。
  • UDP 协议 最适用的场景 : 对实时性要求较高,对可靠性要求较低的场景-----实时聊天(语音、视频)。支持广播。

2.2 TCP 协议:Transmission Control Protocol 传输控制协议

  • 工作在传输层。其上是应用层(为应用层提供服务);下面是网络层(依赖网络层来进行工作);TCP 协议栈的外部事件源有两个:来自应用层上的方法调用;来自网络层的数据接收

  • 核心目标:提供进程间的通信;追求可靠性;

  • 以进程为单位传递数据 ; 追求可靠性;

  • 可靠性 : TCP 只能保证尽自己最大的可能,把数据有序的发送给对方(TCP 保证应用层收到的数据有序);但是不能保证一定能发送给对方。即使没有发送成功,也有反馈。

  • 保证对方接受是有序的。保证对方不会受到差错数据。 TCP 会设计一些机制,来尽可能的优化网络,提高对方收到的可能性。

  • **如何做到可靠性?**机制 : 确认应答机制

    • 发送的数据一般被称为:segment(数据段);应答:acknowledge
    • 发送方同时发送多条 segment ,接收方进行了多次应答。发送方如何得知,接收方收到的是哪一次 segment ? 编号机制:发送方为发送的数据做编号
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值