首页 > 其他分享 >传输控制协议TCP

传输控制协议TCP

时间:2022-10-16 11:25:34浏览次数:50  
标签:重传 seq ACK 传输控制协议 报文 TCP 发送

TCP连接有两个端点,不是运输层的协议端口,而是套接字或接口。

套接字socket=(IP地址:端口号)

TCP首部格式:

1.源端口和目的端口。

2.序号,给每一个字节流编号。

3.确认号,是期望收到对方下一个报文段的第一个数据字节的序号。若确认号=n,则n-1为止所有数据都已正确收到。

4.数据偏移,指出数据起始位置有多远,实际上指出首部长度。

 5.保留,有六个控制位。紧急URG,与紧急指针连用,把紧急数据插入最前面。确认ACK,表示建立连接。推送PSH。复位RST,为1时,释放连接,重新建立运输连接。同步SYN。终止FIN,释放连接。

6.窗口,作为接收方让发送方设置发送窗口的依据。明确指出允许对方发送的数据量,窗口值经常动态变化。

7.检验和。

8.选项与填充。

超时重传时间的选择:RTO=RTTs+4×RTTd;新的RTTd=(1-b)×旧的RTTd+b×(RTTs与新的RTT样本之差)b推荐为0.25。若重传了,则扩大二倍。

 TCP流量控制:利用滑动窗口机制让发送方发送速率不要太快。

由接收方的缓存能力来决定发送窗口大小,并告诉发送方。当窗口大小为零时,持续计时器将周期性发送零窗口探测报文段。

TCP拥塞控制

慢开始与拥塞控制:先将发送窗口以2的次方开始指数增长,直到增长到慢开始门限值,再采用拥塞控制,即每次将发送窗口增大1。直到出现超时重传,说明发生了拥塞,再将门限值设为此时窗口值的一半,将窗口值设为1,重复慢开始与拥塞控制。

快重传和快恢复:为了避免某些报文段丢失而直接重新慢开始造成资源浪费,采用快重传,即若发送过程中丢失了报文段,接收方在收到下一个报文段时,回复一个重复确认,若发送方收到三个重复确认,则直接重传丢失的报文段。快恢复是指收到三个重复确认后,将门限值与窗口值都设为原来的一半,再执行拥塞控制。

TCP连接建立:TCP服务器先创建传输控制块,处于监听状态,然后客户发送一个SYN=1,seq=x的报文段,服务器收到后回复SYN=1,ACK=1,seq=y,ack=x+1的报文段,客户再发送一个ACK=1,seq=x+1,ack=y+1的报文段,则连接建立。

TCP连接释放:由客户发出释放报文段(FIN=1,seq=已发送的数据最后一个字节+1),服务器收到后,通知自己的应用进程并回复(ACK=1,seq=v,ack=u+1),客户到服务器的连接就释放了,但服务器发的数据客户还能收到。等到服务器数据传输完毕,发送(FIN=1,ACK=1,seq=w,ack=u+1),客户回复(ACK=1,seq=u+1,ack=w+1),客户进入时间等待状态,服务器收到后就关闭,客户等待两个最长报文段寿命后也关闭,至此连接释放。

 

标签:重传,seq,ACK,传输控制协议,报文,TCP,发送
From: https://www.cnblogs.com/LCAB/p/16794656.html

相关文章

  • 网络抓包工具tcpdump
    ####监控系统状态#抓包工具tcpdump,一般主要看数据的流向,也要关注length长度,有时候会看到一些比较奇怪的数据包,默认很多都是tcp的,有时候会遇到一些udp的包,那么很有可能是被......
  • 计算机网络-OSI七层模型和TCP/IP四层模型
    OSI七层模型:应用层:应用程序表示层:对传输数据加密和转化会话层:负责建立、维护、拆除会话(session缓存)传输层:负责建立可靠端到端连接网络层:负责路由寻址和广播数据链路......
  • Wireshark Lab: TCP v7.0
    0.实验文件地址http://www-net.cs.umass.edu/wireshark-labs/Wireshark_TCP_v7.0.pdf序号(seq):用来标识从TCP发送端向TCP接收端发送的数据字节流。它表示在这个报文段......
  • TCP与UDP的优缺点
    UDP:    特征:是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息。     优点:UDP速度快、操作简单、要求系统资源较少,由于通讯不需要连接,可以实现......
  • 功能资料比较全面的开源Bootloader OpenBLT,支持USB,CAN,232和TCP/IP(2020-07-28)
    官网地址:​​https://www.feaser.com/en/openblt.php​​Wiki使用说明:​​https://www.feaser.com/openblt/doku.php​​Github镜像:​​https://github.com/feaser/openblt......
  • 【RL-TCPnet网络教程】第1章 当前主流的小型嵌入式网络协议栈
    第1章  当前主流的小型嵌入式网络协议栈这几年物联网发展迅猛,各种新产品、新技术也是层出不穷,本章节就为大家介绍当前主流的小型嵌入式网络协议栈。1.1 当前主流的嵌入......
  • 【RL-TCPnet网络教程】第22章 RL-TCPnet之网络协议IP
    第22章     RL-TCPnet之网络协议IP本章节为大家讲解IP(InternetProtocol,网络协议),通过前面章节对TCP和UDP的学习,需要大家对IP也有个基础的认识。(本章的知识点主要整理......
  • 【RL-TCPnet网络教程】第18章 BSD Sockets基础知识
    第18章     BSDSockets基础知识本章节为大家讲解BSDSockets,需要大家对BSDSockets有个基础的认识,方便后面章节Socket实战操作。(本章的知识点主要整理自网络)18.1 ......
  • 【STM32H7】第8章 RL-TCPnet V7.X网络协议栈移植(FreeRTOS)
    ​​​​第8章  RL-TCPnet网络协议栈移植(FreeRTOS)本章教程为大家讲解RL-TCPnet网络协议栈的FreeRTOS版本移植方式。8.1初学者重要提示8.2移植RL-TCPnet协议栈整体说明(......
  • 【STM32F429】第8章 RL-TCPnet V7.X网络协议栈移植(FreeRTOS)
    ​​​​第8章  RL-TCPnet网络协议栈移植(FreeRTOS)本章教程为大家讲解RL-TCPnet网络协议栈的FreeRTOS版本移植方式。8.1初学者重要提示8.2移植RL-TCPnet协议栈整体说明(......