网站首页 > 文章精选 正文
今天跟大家来聊一聊传输层众多协议中的比较重要的TCP传输控制协议。
TCP(传输控制协议)面向连接,配合高层用于程序做数据发送,只提供封装报头的设计,和 SD 端口号信息。
一、TCP端口号
端口号主要用来区分不同的网络服务,大小为16bit,范围是:0-65535 。其中分为知名端口和非知名端口,如下所述:
(1)1-1023为知名端口,一对一精确对应,知名应用和知名端口的映射,telnet 对应 TCP 23 ;
(2)1024-65535为非知名端口,他是随机对应的,不固定的由应用程序和操作系统绝定;
具体的TCP端口号如下图所示:
二、TCP三次握手
当主动方发出 SYN 连接请求后,等待对方回复 SYN+ACK,最终对对方 SYN 执行 ACK 确认,TCP建立连接的过程如下图:
TCP关闭连接如下图:
主机在关闭连接前,要确认收到来敌对方的ack。
三、TCP头部
我们可以看到TCP报头中包含以下内容:
Source port (源端口号) 16 源应用程序时什么程序
Destination port (目的端口号)16 目的应用程序是什么程序
Sequence number(序列号)32 数据分段的时候每个段的号,用于重组,防止乱序
Acknowledge number(确认号)32 确认收到数据,发送方发送最大序列号的值+1,
Header length(首部长度)4
Resv(保留)6 全部为 0
URG :紧急指针 致为 1 表示紧急处理该数据
ACK :确认的意思
PSH
RST :重置
SYN :同步的意思
FIN :结束
Window(窗口)16 想收到的每个 TCP 数据段的大小,可以协商流控。发送端移送一段数据,等,目的段收到一段数据后,发送一个 ACK 给发送端,然后发送段接着发送,没有收到确认,重传。
Checksum(校验和)16 不单单校验头部,数据内容也校验。
Urgent pointer(紧急指针)16 结合 URG 优先处理某个应用,
Options(选项)
Padding(填充)
因为TCP是面向连接的,所以包括 一下功能:
(1) 流量控制:限速,通过窗口字段去协商速率,滑动窗口每次传输前都会协商窗口大小。
(2) 防止乱序:处理延迟、串行化延迟、传输延迟、队列延迟、抖动的问题先发后到或者后发先到 ,通过序列号字段完成,
(3)防止丢包:通过确认号来实现。如:发送 1 2 3 对端回复 ACK 4 给发送端,源就知道
1 2 3 都收到了,我从 4 开始发送,4 5 6 如果 6 丢失,回复 ACK 6 , 源就知道 6 丢失了 ,从 6 开始重传。
(4) 完整性检查,防止数据篡改:通过校验和字段 。
(5) 数据重传:本身就支持。
(6)点到点应用,只支持单播数据发送,不支持组播、广播。
四、TCP传输过程
五、TCP控制流量
猜你喜欢
- 2025-02-03 「ModbusTCP协议详解」内容有点多,但讲得很详细
- 2025-02-03 tcpdump抓udp包示例 及IP、TCP、UDP协议格式
- 2025-02-03 网络隐蔽通道构建关键技术研究综述
- 2025-02-03 为什么TCP要做成流式协议,而非包?
- 2025-02-03 计算机网络中MSS和MTU的区别(mss与mtu区别及对应关系)
- 2025-02-03 存储FC 网络(简述存储网络引入fc后的优点有哪些)
- 2025-02-03 苹果iphone12充电器品牌选择哪个 充电器功率推荐
- 2025-02-03 作为一名架构师,需要掌握的一些基础网络知识
- 2025-02-03 计算机网络参考模型(计算机网络参考模型有哪些)
- 2025-02-03 关于TCP协议的基础知识(关于tcp/ip协议)
- 05-05MyBatis的三种分页方式,你学废了吗?
- 05-05如何写一个简单的分页(最简单的分页)
- 05-05详解如何使用Spring Data JPA进行数据的分页与排序
- 05-05手速太快引发分页翻车?前端竞态陷阱揭秘
- 05-05前端分页机制的具体实现(分页前端需要做什么)
- 05-05一个后勾腿动作,有效疏通血管,改善下肢发麻,促进全身燃脂
- 05-05大型调相机起动及并网研究(什么是调相机,与发电机区别)
- 05-05你们都是托:动态对比度其实是骗你的
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 稳压管的稳压区是工作在什么区 (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)