网络原理2——TCP详解

本文详细介绍了TCP协议的基础知识,包括TCP的特点、头部格式、连接建立与断开的三次握手和四次挥手过程,以及TCP的重传机制、滑动窗口、流量控制和拥塞控制。特别讨论了为什么需要三次握手和四次挥手,以及在拥塞控制中慢启动、拥塞避免和快速恢复等算法的原理。通过对TCP的深入理解,有助于更好地掌握网络通信的可靠性与效率。
摘要由CSDN通过智能技术生成

一.TCP基础知识

1.1 TCP的特点

TCP 是⾯向连接的、可靠的、基于字节流的传输层通信协议
面向连接:意味着一对一的连接,不可像udp一对多发送。
可靠:⽆论的⽹络链路中出现了怎样的链路变化,TCP 都可以保证⼀个报⽂⼀定能够到达接收端;
字节流:TCP是一种流协议(stream protocol)。这就意味着数据是以字节流的形式传递给接收者的,没有固有的”报文”或”报文边界”的概念。所以⽆论我们消息有多⼤都可以进⾏传输。它只需要保证其,有序,不重复。

1.2 TCP的重要性

IP 层是「不可靠」的,它不保证⽹络包的交付、不保证⽹络包的按序交付、也不保证⽹络包中的数据的完整性。
如果需要保障⽹络数据包的可靠性,那么就需要由上层(传输层)的 TCP 协议来负责。
因为 TCP 是⼀个⼯作在传输层可靠数据传输的服务,它能确保接收端接收的⽹络包是⽆损坏、⽆间隔、⾮冗余和按序的。

1.3 TCP头部格式:

在这里插入图片描述

序列号(32位):TCP用序列号来解决网络传输中可能会出现的乱序问题,在建⽴连接时由计算机⽣成的随机数作为其初始值,通过 SYN 包传给接收端主机,每发送⼀次数据,就「累加」⼀次该「数据字节数」的⼤⼩。⽤来解决⽹络包乱序问题。

确认应答号(32位):指下⼀次「期望」收到的数据的序列号,发送端收到这个确认应答以后可以认为在这个序号以前的数据都已经被正常接收。⽤来解决不丢包的问题。

控制位 :不同控制位只有一位,其只能为0、1

ACK:当其为1,确认应答字段变为有效字段,由于TCP需要确认应答,可以想象除了建立连接的第一个包以外,所有包的ACK都为1.
SYN:: 当其为1,表示其想建立连接,设置序列号初始值以便开始建立连接。
**FIN:**当其为1,表示发送FIN的一方没有数据发送了,希望断开连接。由此可见TCP断开连接必定需要4次挥手,由于TCP是全双工的,其一次FIN一次ack只能断开一方,所以双方都断开则需要4次。
RST: :当其为1,代表连接异常,必须强制断开连接。

1.4 TCP连接

1.4.1什么是TCP连接?
我们先看什么叫做连接,简单来说就是,⽤于保证可靠性和流量控制维护的某些状态信息,这些信息的组合,包括**Socket(IP+端口号)、序列号和窗⼝⼤⼩(用来做流量控制)**称为连接。

1.4.2如何确定一个TCP连接?
tcp四元组:源地址,目的地址,源端口,目标端口
在这里插入图片描述
源地址和⽬的地址的字段(32位)是在 IP 头部中,作⽤是通过 IP 协议发送报⽂给对⽅主机。
源端⼝和⽬的端⼝的字段(16位)是在 TCP 头部中,作⽤是告诉 TCP 协议应该把报⽂发给哪个进程。

1.4.3一个ip服务器监听某端口,最多可以连接多少TCP连接?
服务器通常固定在某个本地端⼝上监听,等待客户端的连接请求。
最大连接数=客户端IP数*客户端端口数
对于ipv4,最大理论连接数为2^32 *2 ^16,即2 ^48
当然,服务端最⼤并发 TCP 连接数远不能达到理论上限。

二.TCP与UDP

2.1UDP

UDP 不提供复杂的控制机制,利⽤ IP 提供⾯向「⽆连接」的通信服务。
头部只有 8 个字节( 64 位),UDP 的头部格式如下:
在这里插入图片描述

2.2TCP与UDP的区别

1.连接
TCP面向连接,传输数据之前需要先建立连接,而UDP不需要连接
2.服务对象
TCP因为面向一对一的连接,所以只能提供两个端点的服务。
UDP可以支持一对一和一对多以及多对多的交互。
3.可靠性
TCP保证可靠交付,不错不丢不重,
而UDP尽最大努力交付,不保证可靠性
4.拥塞控制以及流量控制
TCP具有拥塞控制以及流量控制机制,以此来保证数据传输的安全性
而UDP没有,即使网络拥堵,其也不会改变发送速率。
5.首部开销
TCP在没有额外添加选项的时候,头部为20字节(4B5行)
UDP则只有8B,(4B
2行)
6.传输方式
TCP是字节流式传输,无边界
UDP是按数据包发送,有边界
7.最大分片问题
TCP如果数据大于MSS,其在传输层就自行分片,且如果丢失了某个分片TCP会重传这个分片。
而UDP如果数据大于MTU,其在下一层IP层分片,如果丢失了某个分片,一般来说就算了,但也有实现可靠传输的UDP,其需要重传所有数据包。
8.应用场景
因为TCP的可靠性,FTP文件传输,HTTP/HTTPS都依赖于TCP。
因为UDP的高效性,其经常应用于包总量少的通信,如DNS,SNMP,视频音频多媒体,广播

9.我们发现TCP和UDP包头部各有一个记录长度的&#x

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值