news 2026/4/15 11:52:47

TCP传输控制协议

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
TCP传输控制协议

一、服务器客户端模型

CS,client,server 由功能强大的服务器为多个客户端提供集中服务

BS,browser,server 使用标准化浏览器作为统一客户端来访问服务器上的应用

P2P,peer to peer 网络中的每个节点同时作为客户端和服务端,彼此直接共享资源与服务

2.CS与BS的区别

对比维度CSBS
客户端类型专用客户端通用客户端
使用协议应用层标准协议/自定义协议应用层HTTP/HTTPS协议
功能强弱功能相对复杂,可承载高交互、高性能业务功能相对简单,侧重轻量化
资源存储资源存储在本地客户端资源由服务器发送,本地仅临时存储

3.P2P

在 P2P 网络下载工具中,下载初期自身进度为 0%,数据由其他客户端及服务器传输而来;当下载进度达到 90% 时,自身会向新接入的客户端上传已获取的数据,整个过程中,自身兼具下载者与上传者的双重身份,既是客户端,也是服务器。

二、TCP传输控制的特征

1.有链接 表现为三次握手。

2.可靠传输。

3.流式套接字,数据没有边界。连续的,有顺序的。

4.全双工,双缓存区。

5.发送和接受次数不需要对应。

6.有写阻塞 64k

7.如果对方端口断开连接,另一方端口可以感知 四次挥手

三、三次握手与四次挥手

三次握手:1.客户端向服务器发送SYN 报文,发起连接请求,携带初始序列号。
2. 服务器接收后,回复SYN+ACK 报文,确认客户端请求,同时携带自身初始序列号。
3. 客户端接收服务器的 SYN 报文后,发送ACK 报文确认,连接正式建立。

四次挥手:1.主动关闭方向被动关闭方发送FIN 报文,关闭自身发送通道。
2. 被动关闭方回复ACK 报文,确认收到关闭请求。
3. 被动关闭方数据发送完毕后,向主动关闭方发送FIN 报文,关闭自身发送通道。
4. 主动关闭方回复ACK 报文确认,等待超时后彻底断开连接。

四、TCP相关函数

1.int socket(int domain, int type, int protocol); 功能:程序向内核提出创建一个基于内存的套接字描述符 返回值:成功 返回申请的套接字id 失败 -1;
2、int bind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen); 功能:如果该函数在服务器端调用,则表示将参数1相关的文件描述符文件与参数2 指定的接口地址关联,用于从该接口接受数据
3、 int listen(int sockfd, int backlog); 功能:在参数1所在的套接字id上监听等待链接。 返回值:成功 0 失败 -1
4.int accept(int sockfd, struct sockaddr *addr,socklen_t *addrlen); 功能:从已经监听到的队列中取出有效的客户端链接并接入到当前程序。 返回值:成功 返回一个用于通信的新套接字id; 通信套接字 从该代码之后所有通信都基于该id 失败 -1;
5.ssize_t recv(int sockfd, void *buf, size_t len, int flags); 功能:从指定的sockfd套接字中以flags方式获取长度为len字节的数据到指定的buff内存中。 返回值:成功 表示接受的数据长度,一般小于等于len 失败 -1
int send(int sockfd, const void *msg, size_t len, int flags); 功能:从msg所在的内存中获取长度为len的数据以flags方式写入到sockfd对应的套接字中。 返回值:成功 发送的字符长度 失败 -1;
客户端 自动连接服务器。 int connect(int sockfd, const struct sockaddr *addr,socklen_t addrlen); 功能:该函数固定有客户端使用,表示从当前主机向目标主机发起链接请求。 返回值:成功 0 失败 -1;
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/5 22:43:28

STM32开发入门:Keil与Proteus联合仿真教程

零硬件也能玩转STM32?Keil与Proteus联合仿真实战全解析你是否曾因手头没有开发板,只能对着代码干瞪眼?是否在调试时烧坏了芯片、接错了引脚,心疼又无奈?又或者作为老师或学生,在课堂上想演示一个中断响应过…

作者头像 李华
网站建设 2026/4/12 9:54:02

Full Page Screen Capture:一键解决长网页截图难题的终极方案

你是否曾经面对一篇精彩的长文,却因为网页太长无法完整截图而束手无策?想要保存完整的网页内容却只能截取零散的可见区域?Full Page Screen Capture作为专为Chrome浏览器设计的网页截图工具,通过简单的一键操作就能完整捕获整个网…

作者头像 李华
网站建设 2026/4/10 5:49:28

JLink驱动下载官网指南:调试与烧录入门必看

从零搞懂J-Link驱动:官网下载、安装避坑与调试实战全解析 你有没有遇到过这样的场景? 刚焊好一块STM32板子,兴冲冲插上J-Link准备烧录程序,结果Keil弹出一个红字警告:“Cannot access target.” 设备管理器里还躺着…

作者头像 李华
网站建设 2026/4/11 22:52:58

Applite:彻底改变您的Mac软件管理方式

Applite:彻底改变您的Mac软件管理方式 【免费下载链接】Applite User-friendly GUI macOS application for Homebrew Casks 项目地址: https://gitcode.com/gh_mirrors/ap/Applite 还在为复杂的软件安装流程而困扰吗?Applite这款革命性的图形化Ho…

作者头像 李华
网站建设 2026/4/9 16:36:12

华为光猫配置工具终极操作指南:从解密到实战应用完整手册

华为光猫配置工具终极操作指南:从解密到实战应用完整手册 【免费下载链接】HuaWei-Optical-Network-Terminal-Decoder 项目地址: https://gitcode.com/gh_mirrors/hu/HuaWei-Optical-Network-Terminal-Decoder 还在为华为光猫配置文件无法查看而烦恼吗&…

作者头像 李华
网站建设 2026/4/14 21:43:59

思源宋体能否重塑中文数字排版新标准?

思源宋体能否重塑中文数字排版新标准? 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 当你在深夜调试网页时,是否曾为中文排版效果与英文字体之间的视觉割裂而烦…

作者头像 李华