网络协议——TCP

传输层

核心功能:完成“端—端的数据传输
传输层协议常用两个UDP和TCP

UDP协议

特点:

1.UDP协议无连接:知道端的IP和端口号直接传输,不需要建立连接
2.UDP协议不可靠传输:没有确认机制,没有重传机制,如果出错,不会给应用层返回任何错误信息
3.UDP协议面向数据报:不能灵活的控制数据的次数和数量,发送多少,接受多少

UDP协议段格式
在这里插入图片描述

16位端口号:范围:0—65535或-32768—32767
16位UDP长度:表示整个数据报(UDP首部+UDP数据)的最大长度,约64KB
检验和:如果数据出错,直接丢弃

UDP缓冲区

UDP没有发送缓冲区,调用sendto会直接交给内核,由内核将数据传给网络层协议
UDP具有接收缓冲区,但不能保证收到UDP报的顺序是否和发送的一致,如果缓冲区满了,未到达的数据就会被丢弃

TCP协议

TCP(Transmission Control Protocol)传输控制协议,对数据传输要进行一个详细的控制
TCP协议段格式
在这里插入图片描述

源/目的端口号:表示数据从哪个进程来,到哪个进程去
4位TCP报头长度:表示TCP头部有多少个32位bit(有多少4个字节),TCP头部最大长度为15*4=60
6位标志位:
URG:紧急指针是否有效
ACK:确认号是否有效
PSH:提示接收端应用程序立刻从TCP缓冲区把数据读走
RST: 对方要求重新建立连接; 我们把携带RST标识的称为复位报文段
SYN: 请求建立连接; 我们把携带SYN标识的称为同步报文段
FIN: 通知对方, 本端要关闭了, 我们称携带FIN标识的为结束报文段

特点:

可连接:数据传输之前需要建立连接
可靠性:有重传机制,确认机制,收到数据会返回应用层信息
面向字节流:以bit(字节)的形式传输数据,可控制大小,数量

确认应答(ACK)机制

每一个ACK都带有确认序号,意思是收到哪些数据,下一次你是从那里开始发送数据(确认应答返回的编号)

在这里插入图片描述

超时重传机制

主机A发送数据到主机B,由于网络阻塞,数据丢包,就会重传
主机A在一定特定时间内没有收到主机B的确认应答,就会重传

在这里插入图片描述

在这里插入图片描述
由于ACK丢失引起的重传,那么主机B将会收到很多重复的数据,这时需要序列号去去重。
那么特定的时间间隔如何确定?

TCP为了保证无论在任何环境下都能比较高性能通信,因此会动态的计算这个最大超时时间
Linux中,超时以500ms为一个单位进行控制,每次判定超时的重发时间是500ms的整数倍
如果重发一次,仍然等不到应答,等待2500ms后在进行重传,如果还没有应答,等待4500ms后进行重传,以指数形式递增
累积到一定次数后,TCP会认为网络或端主机出现异常,强制关闭连接

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值