当前位置: 首页 > news >正文

做兼职在什么网站找比较好网站seo源码

做兼职在什么网站找比较好,网站seo源码,江苏建筑工程信息网站,网站建设公司如何进行工作TCP是一种面向连接、端到端可靠的协议#xff0c;它被设计用于在互联网上传输数据和确保成功传递数据和消息。本节来介绍一下TCP中的三次握手和四次挥手。 文章目录 1 TCP头部格式2 wireshark抓包分析2.1 SEQ和ACK2.2 三次握手2.3 四次挥手 3 程序 1 TCP头部格式 TCP头部占据…TCP是一种面向连接、端到端可靠的协议它被设计用于在互联网上传输数据和确保成功传递数据和消息。本节来介绍一下TCP中的三次握手和四次挥手。 文章目录 1 TCP头部格式2 wireshark抓包分析2.1 SEQ和ACK2.2 三次握手2.3 四次挥手 3 程序 1 TCP头部格式 TCP头部占据TCP段的前20个字节其中包含端到端TCP套接字的参数和状态。如下图所示 下面来逐个解释一下这些字段 源端口(Source port)16位用于标识源端口号(发送方的TCP端口)目标端口(Destination port)16位用于标识目标端口号(接收方的TCP端口)序列号(Sequence number)32位指示在TCP会话期间发送了多少数据。当建立新的TCP连接时初始序列号是一个随机值。确认号(Acknowledgment Number)32位由接收方用于请求下一个TCP段。如果设置了ACK控制位该字段包含段发送方期望接收的下一个序列号的值。一旦建立了连接这个字段总是被发送。数据偏移(Data offset)4位显示头部中32位字的数量也称为头部长度保留数据(Reserved data)6位保留字段始终设置为零控制位标志(Control bit Flags)TCP使用9位控制标志来管理特定情况下的数据流例如建立连接、发送数据和终止连接 URG: 与后面的紧急指针字段相关当设置了此位时数据应被视为优先于其他数据。ACK: 与ACK相关确认字段用于指示已成功接收到的数据量如果设置了此字段说明发送方期望接收方继续发送下一个TCP段PSH: 推送功能表示发送方希望接收方立即传输数据而不必等到整个TCP段的数据都准备好再传输RST: 重置连接仅在存在无法恢复的错误时使用SYN: 同步序列号此标志用于设置初始序列号FIN: 完成位用于结束TCP连接因为TCP是全双工连接所以双方都必须使用FIN位来结束连接 窗口(Window)16位指定接收方愿意接收多少字节校验和(Checksum)16位用于对头部和数据进行错误检查紧急指针(Urgent Pointer)如果设置了URG控制标志该值表示与序列号的偏移指示最后一个紧急数据字节选项(Options)可选长度可为0~320位之间的任意大小 2 wireshark抓包分析 程序流程服务端监听本地环回地址127.0.0.1的12345端口客户端则连接这个端口连接上后服务端发送一个Hello, World!给客户端。 先来了解一下SEQ和ACK的概念 2.1 SEQ和ACK 客户端和服务器之间建立TCP连接时会进行三次握手。先来理解一下SEQ、ACK的概念 序列号(SEQ) 表示发送方发送的数据的起始位置。每发送一个新的数据段序列号就会递增。确认号(ACK) 表示接收方期望下次收到的数据的序列号。当接收方收到数据后它会发送一个带有确认号的ACK告诉发送方它已成功接收到了特定序列号之前的所有数据。下一个期望的ACK 当接收方收到一段数据时ACK表示已成功接收的数据的下一个期望的序列号。因此下一个期望的ACK号通常是上一个ACK号加上接收到的数据的长度。 2.2 三次握手 1、客户端发送SYN给服务端 在wireshark中SEQ使用相对0的值为的是方便分析所以这里是0 从上图中可以看到SYN标识被设置 2.服务端回复带有SEQ和ACK的SYN-ACK数据包 如下图所示 3.客户端向服务器发送一个带有ACK号的数据包确认服务器的序列号 如下图所示 此时双方的SEQ已同步以上就是三次握手的内容。下面客户端和服务器可以独立地发送和接收数据。 4.服务器向客户端发送“Hello, World!” 5.客户端向服务器发送一个ACK号确认服务器的消息 上一个ACK号为1长度为13因此ACK号将为13114。 2.3 四次挥手 接着上面的抓包来看在程序中服务端发送完“Hello, World!”后就关闭了客户端的socket。 1.服务端发送FIN给客户端 如下图所示 2.客户端向服务器发送一个ACK号确认服务器的FIN请求 如下图所示 3.TCP是一种全双工连接因此客户端也向服务器发送一条消息以关闭连接 前面的图中最后一行是红色的RST是我不小心直接关闭了程序下面的图为重新抓的包注意看最后两条即可 如下图所示 4.服务器向客户端发送一个ACK号确认客户端的FIN请求 如下图所示 3 程序 本文的代码使用Windows环境下的网络编程库所以需要在链接库中增加ws2_32。 服务端 // Server.c#include winsock2.h #include ws2tcpip.h #include stdio.hint main() {WSADATA wsaData;SOCKET listenSocket, clientSocket;struct sockaddr_in serverAddr, clientAddr;int addrLen sizeof(clientAddr);char buffer[1024] Hello, World!;// Initialize Winsockif (WSAStartup(MAKEWORD(2, 2), wsaData) ! 0) {fprintf(stderr, WSAStartup failed\n);return 1;}// Create a socketif ((listenSocket socket(AF_INET, SOCK_STREAM, 0)) INVALID_SOCKET) {fprintf(stderr, Socket creation failed\n);WSACleanup();return 1;}// Set up server address informationmemset(serverAddr, 0, sizeof(serverAddr));serverAddr.sin_family AF_INET;serverAddr.sin_addr.s_addr inet_addr(127.0.0.1);serverAddr.sin_port htons(12345);// Bind the socketif (bind(listenSocket, (struct sockaddr*)serverAddr, sizeof(serverAddr)) SOCKET_ERROR) {fprintf(stderr, Bind failed\n);closesocket(listenSocket);WSACleanup();return 1;}// Listen for incoming connectionsif (listen(listenSocket, SOMAXCONN) SOCKET_ERROR) {fprintf(stderr, Listen failed\n);closesocket(listenSocket);WSACleanup();return 1;}printf(Server listening on 127.0.0.1:12345\n);// Accept a connection from a clientif ((clientSocket accept(listenSocket, (struct sockaddr*)clientAddr, addrLen)) INVALID_SOCKET) {fprintf(stderr, Accept failed\n);closesocket(listenSocket);WSACleanup();return 1;}// Send data to the clientsend(clientSocket, buffer, strlen(buffer), 0);printf(Data sent to the client\n);// Clean upclosesocket(clientSocket);closesocket(listenSocket);WSACleanup();return 0; }客户端 // Client.c#include winsock2.h #include ws2tcpip.h #include stdio.hint main() {WSADATA wsaData;SOCKET clientSocket;struct sockaddr_in serverAddr;char buffer[1024];// Initialize Winsockif (WSAStartup(MAKEWORD(2, 2), wsaData) ! 0) {fprintf(stderr, WSAStartup failed\n);return 1;}// Create a socketif ((clientSocket socket(AF_INET, SOCK_STREAM, 0)) INVALID_SOCKET) {fprintf(stderr, Socket creation failed\n);WSACleanup();return 1;}// Set up server address informationmemset(serverAddr, 0, sizeof(serverAddr));serverAddr.sin_family AF_INET;serverAddr.sin_addr.s_addr inet_addr(127.0.0.1);serverAddr.sin_port htons(12345);// Connect to the serverif (connect(clientSocket, (struct sockaddr*)serverAddr, sizeof(serverAddr)) SOCKET_ERROR) {fprintf(stderr, Connection failed\n);closesocket(clientSocket);WSACleanup();return 1;}// Receive data from the serverint bytesRead recv(clientSocket, buffer, sizeof(buffer), 0);if (bytesRead 0) {buffer[bytesRead] \0; // Null-terminate the received dataprintf(Received data from server: %s\n, buffer);} else {fprintf(stderr, Error receiving data\n);}while(1){if(recv(clientSocket, buffer, sizeof(buffer), 0) 0){break;}}// Clean upclosesocket(clientSocket);WSACleanup();return 0; }
http://www.yutouwan.com/news/314135/

相关文章:

  • 教育培训学校网站建设策划国外在线设计平台
  • 闸北区网站建设求个网站或者软件
  • 企业网站建设的目的和意义如何使用win2008iis建设网站
  • 扁平化资讯网站模板wordpress slider插件下载
  • 网站开发经验wordpress 条件查询
  • 新手学做免费网站软件好宣传册设计与制作用什么软件
  • 网站信息内容建设责任制落实情况福建建设执业注册中心网站
  • 南宁网站建设公司怎么赚钱公众号开发者密码多长时间生效
  • 无域名网站 能否被百度微信小程序网站建设方案
  • 长春火车站需要核酸检测报告吗科技型中小企业服务平台
  • 宠物店网站建设方案湘潭做网站价格 d磐石网络
  • 有哪些网站免费做推广创业做网站需要哪些必备条件
  • 网站制作团队英德市网站建设
  • 宁陵县网站seo房地产最新消息三个不低于
  • 广州市住房和城乡建设局网站首页桂林工作网招聘
  • 知识产权网站开发品牌建设完整版
  • 网站用哪些系统做的比较好用wordpress轩小程序
  • 天河网站建设推广创业网站怎么做的
  • 东莞网络网站建设wordpress会员推广
  • 光伏电站建设的行业网站做个外贸网站设计
  • 网站开发的费用申请如何把乱码变成数字
  • 网站开发href使用本地链接excel做网站页面布局
  • 网站开发技术实验教程重庆集团网站建设
  • app网站建设可行性分析青海高端网站建设价格
  • 做阿里巴巴网站多少钱wordpress商城支付宝
  • 乐清网站改版公司企业网站建设难吗
  • 蛋糕 网站 模板如何开自己的网站
  • 龙海市城乡规划建设局网站哈尔滨网页案例分析
  • 佛山三水区有没有网站建设公司手机软件开发培训班
  • html5 jq做电脑网站手机wordpress怎么安装