6 TCP与UDP

TCP:转发数据量较多 对可靠性要求比较高 流(数据无间隔)协议 (顺序控制 重发控制 流量控制 拥塞控制)(http 通信必须使用 tcp)
UDP:高速传输实时性有较高要求的通信或广播/多播通信 细节控制交给应用
udp-lite 校验和错误不希望丢弃所有收到的包,校验和范围可以由应用设定,只针对不允许发生错误的部分(端口号、IP 地址等)进行校验和的检查

端口号 => 识别在传输层上一层的应用层中所要进行处理的具体程序

应用程序 <=> 套接字API(可以设置对端的IP 地址、端口号,并实现数据的发送与接收) <=> TCP

数据链路 => MAC地址(识别同一链路中不同的计算机)
网络层 => IP地址(识别 TCP/IP 网络中互连的主机和路由器
传输层 => 端口号(=程序地址)(识别同一台计算机中进行通信的不同应用程序

TCP/IP UDP/IP 通信常采用 5 个信息来识别一个通信:源 IP 地址、目标 IP 地址、源端口号、目标端口号、协议号(TCP or UDP)

数据到达 IP 层后,会检查 IP 首部的协议号,再传给相应协议的模块(tcp=>tcp 模块,udp=>udp 模块)去做端口号的处理
即使是同一个端口,由于传输协议是各自独立地进行处理,因此互相之间不会受到影响

UDP 简单&高效 用途

  • 包总量较少的通信(dns snmp 简单网络管理协议)
  • 即时通信:视频、音频等多媒体通信
  • 限定于 lan 等特定网络中的应用通信
  • 广播、多播通信

TCP可靠传输

  • 校验和
  • 序列号:初始值并非=0,而是随机数,之后每字节+1
  • 确认应答ACK NACK 丢包
  • 重发控制:RTT=round trip time 报文段的往返时间 收不到确认应答 指数函数延长再次发送 1 2 4 8 16
  • 连接管理:模拟电话对话去理解 3 次握手(syn => ack+syn => ack),4 次挥手(fin => ack, fin => ack)。syn包(请求建立连接),fin包(请求断开连接)
  • 窗口控制:用滑动窗口并行处理 不需要等到上一个确认应答即可发送下一个数据包 增大吞吐量
  • 流控制:发送端根据接收端的实际接收能力控制发送的数据量 窗口探测包=>窗口更新通知 获取最新窗口大小
  • 拥塞控制慢启动算法 拥塞窗口指数增长 超时重发时 设置为当时拥塞窗口的一半(慢启动阈值)tcp 吞吐量的特点就像在逐步占领网络带宽

即使有少部分确认应答丢失也不会进行数据重发 可以通过下一个确认应答进行确认(高速重发控制:比超时机制更快)

  • 延迟确认应答:大可不必为每一个数据段进行一次确认应答 收到数据后延迟一段时间返回确认应答,使客户端接收到较大发送窗口,增加网络利用率。tcp 传输中,绝大多数是每两个数据段返回一次确认应答
  • 捎带应答:同一个 tcp 包中既发送数据又发送确认应答的一种机制。提高网络利用率,计算机负荷减轻。接收数据后,将数据传给应用程序处理生成返回数据以后再进行发送请求为止,必须一直等待确认应答的发送。(前提是有延迟确认应答)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅气呢杰哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值