TCP与UDP

1. 传输控制协议(TCP)

1.1 TCP的主要特点:

  • 支持可靠性的面向连接服务

  • 支持流传输:无报文丢失、重复和失序的正确数据序列

  • 支持全双工服务:支持客户端和服务端同时发送和接收数据

  • 支持可靠服务: 使用确认机制来检查数据是否安全和完整地到达

1.2 TCP协议的可靠性

  • 应用数据将被分割成TCP协议认为最适合发送的数据块. [分段]
  • TCP发送出一个报文段后, 它启动一个定时器, 等待目的端确认收到这个报文段. 如果不能及时收到一个确认,将重发这个报文段. [超时和重传]
  • 当TCP收到发自TCP连接另一端的数据后, 将发送一个ACK确认. [确认]
  • TCP保持头部和数据的校验和, 如果校验和有差错, TCP将丢弃这个报文段, 不予确认. [校验和]
  • TCP需要对接收到数据报进行重新排列,然后将正确的数据传送给应用层. [数据报重排]
  • IP数据报会发生重复, 接受方的TCP需要检查并丢弃重复的数据. [去重]
  • TCP采用可变窗口进行流量控制, 根据对方缓冲区大小来协调发送方的发送速度, 避免缓冲区溢出数据丢失. 同时TCP还进行拥塞控制, 以进一步提高可靠性.[流量控制和拥塞控制]
  • TCP对字节流的内容不作任何解释, 只负责传输字节流, 不存在编码问题.

1.3 TCP流量控制 – 滑动窗口机制1

窗口大小表示发送方未经确认可发送的报文个数

发送方每当接收到一个确认报文, 滑动窗口就向前移动.

1.4 TCP 差错控制

1.4.1 差错检测和纠正:

TCP使用校验和、确认和超时来完成差错检测。纠正方式是简单的丢弃报文,等待新的报文重传。

1.4.2 TCP计时器

  • 重传计时器:

    • 如果在计时器截止时间之前收到了对该报文段的确认,则撤销此计时器
    • 如果在收到确认报文之前计时器截止时间到,则重传报文段并将计时器复位
  • 坚持计时器:

    1. 当接收方发送一个0窗口报文时, 发送发就会停止发送数据,直到接收方再发送一个非0窗口的ACK。

    2. 但是TCP中是不会对ACK进行确认的,如果这个非0窗口ACK丢失了,接收方就会一直等待发送方发送数据,进入死锁。

    3. 坚持计时器的作用就是:在发送方接收到一个0窗口通知报文时,启动一个坚持计时器,等计时器超时后,发送一个1字节的探测报文段, 它有一个序号,但是它的序号不需要确认,计算对其他数据确认时也忽略该序号。

    4. 如果没有收到接收方的响应,则将坚持计时器的值加倍和复位,直到增大到门限值(一般60s)为止,此后发送方就每隔60s发送一个探测保温段,知道窗口重新打开。

  • 保持计时器(激活计时器):

    1. 如果客户端与服务端建立了连接,发送一些数据后就停止了发送(可能是故障)。若计时器超时后服务器还没收到客户端信息,就发送探报文,如果发送了10个探测报文还没有响应(每一个间隔75s),就假定客户出了故障,终止该连接。
    2. 服务端每当接收到数据时,就复位计时器
  • 时间等待器:

    1. 时间等待计时器在连接终止期间使用
    2. 在时间等待期,连接处于一种过渡状态,时间等待计时器通常设置为2倍TTL

1.5 TCP传输连接建立、维护与释放

1.5.1 传输连接建立

  • 主机A发送报文段宣布它愿意建立连接, 报文段包括关于从A到B的通信量的初始化信息。
  • 主机B发送确认报文段确认A的请求。
  • 主机B发送报文段确认A的请求,报文段包含B到A的通信量的初始化信息。
  • 主机A发送确认报文段确认B的请求.
三次握手:
  1. A 发送SYN
  2. B发送 SYN + ACK (将SYN和ACK合并为一个报文段)
  3. A发送ACK (确认SYN+ACK报文段)

1.5.2 传输连接释放 – 四次握手

  1. 如果客户端打算终止连接,客户端发送FIN1报文段
  2. 服务端TCP程序接收到FIN1报文段后,发送ACK1报文段
  3. 服务端仍然可以在服务器到客户端方向继续发送数据,当没有数据需要发送时,服务端TCP程序通知操作系统释放从服务端到客户端的TCP连接,并向客户端发送FIN2报文段
  4. 客户端TCP程序发送ACK2报文段, 切断服务端到客户端的TCP连接

2. 用户数据报协议(UDP)

2.1 UDP协议的主要特点

  • 无连接、不可靠的传输层协议
  • 只提供了有限的差错检验功能

2.2 UDP适用的范围

  • 视频播放应用
  • 简短的交互式应用
  • 多播与广播应用
    • UDP支持1对1、1对多、多对多的交互式通信,这一点TCP协议不支持

  1. http://c.biancheng.net/view/6427.html ↩︎

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

fanqiliang630

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

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

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

打赏作者

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

抵扣说明:

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

余额充值