2026/2/6 19:40:20
网站建设
项目流程
雄安新区网站建设,淘宝客网站推广工具,永年做网站,城市网站建设摘要论文1. TCP传输控制协议概述TCP#xff08;传输控制协议#xff09;是一种用于在网络中可靠传输数据的协议。它基于服务器客户端模型工作#xff0c;常见的模型包括#xff1a;CS#xff08;Client-Server#xff09;模型#xff1a;客户端和服务器角色分明#xff0c;客户…1. TCP传输控制协议概述TCP传输控制协议是一种用于在网络中可靠传输数据的协议。它基于服务器客户端模型工作常见的模型包括CSClient-Server模型客户端和服务器角色分明客户端向服务器请求服务。BSBrowser-Server模型浏览器作为通用客户端服务器提供服务。P2PPeer-to-Peer模型节点之间对等通信每个节点既是客户端又是服务器。这些模型的区别如下CS模型使用专用客户端应用层协议可自定义功能相对复杂资源如数据存储在本地。BS模型使用通用客户端浏览器应用层协议固定为HTTP功能相对简单资源由服务器发送给客户端。P2P模型常用于网络下载工具。例如初始下载进度为0%时其他客户端或服务器提供数据当进度达90%时自身也为新客户端上传数据实现同时下载和上传。2. TCP的主要特征有连接通过三次握手建立连接连接建立后保持直到一方断开四次挥手。可靠传输通过应答ACK、超时重传等机制确保数据完整。但实时性较弱网络资源消耗较大。流式套接字数据无边界连续有序。全双工支持双向通信使用双缓存区。发送与接收次数不匹配发送次数和接收次数不需要对应。写阻塞存在64K的缓冲区限制。感知断开一方断开连接时另一方可通过四次挥手感知。可靠传输机制包括应答ACK确认数据接收。超时重传未收到应答时重发数据。实时性弱不适合高实时性应用。资源消耗大相比UDP占用更多网络资源。3. TCP相关函数详解创建套接字socket()用于创建套接字描述符。int socket(int domain, int type, int protocol);功能向内核申请创建套接字描述符。参数domain地址族如PF_INET互联网程序或PF_UNIX单机程序。type套接字类型如SOCK_STREAMTCP流式套接字、SOCK_DGRAMUDP数据报套接字、SOCK_RAW原始套接字。protocol协议设为0表示自动适应应用层协议。返回值成功返回套接字ID失败返回-1。绑定地址bind()用于服务器绑定地址。int bind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen);功能将套接字ID与指定地址关联用于接收数据。参数sockfd套接字ID。my_addr地址结构指针。addrlen地址长度。返回值成功返回0失败返回-1。监听连接listen()用于服务器监听连接请求。int listen(int sockfd, int backlog);功能在套接字ID上监听连接。参数sockfd套接字ID。backlog允许三次握手的排队数。返回值成功返回0失败返回-1。接受连接accept()用于服务器接受客户端连接。int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);功能从监听队列中取出有效客户端连接。参数sockfd套接字ID。addr客户端地址结构指针可设为NULL忽略地址信息。addrlen地址长度指针需设置为sizeof(struct sockaddr)。返回值成功返回新通信套接字ID失败返回-1。接收数据recv()用于接收数据。ssize_t recv(int sockfd, void *buf, size_t len, int flags);功能从套接字接收数据到缓冲区。参数sockfd通信套接字ID服务器为accept()返回的ID客户端为socket()返回的ID。buf存储数据的缓冲区。len要接收的数据长度。flags接收方式0表示阻塞接收。返回值成功返回接收数据长度≤len失败返回-1。发送数据send()用于发送数据。int send(int sockfd, const void *msg, size_t len, int flags);功能从缓冲区发送数据到套接字。参数sockfd通信套接字ID同上。msg要发送的数据指针。len要发送的数据长度。flags发送方式。返回值成功返回发送数据长度失败返回-1。连接服务器connect()用于客户端连接服务器。int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);功能向目标主机发起连接请求。参数sockfd本地套接字ID。addr目标主机地址结构指针。addrlen地址长度。返回值成功返回0失败返回-1。