Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >tcp socket api

tcp socket api

作者头像
changan
发布于 2020-11-04 07:04:04
发布于 2020-11-04 07:04:04
54800
代码可运行
举报
运行总次数:0
代码可运行

socket是网络协议栈的抽象

socket api在tcp中的体现

TCP三次握手后有个accept队列,进到这个队列才能从Listen变成accept,默认backlog 值是50。

如上图所示,这里有两个队列:syns queue(半连接队列);accept queue(全连接队列) 三次握手中,在第一步server收到client的syn后,把相关信息放到半连接队列中,同时回复syn+ack给client,第三步的时候server收到client的ack,如果这时全连接队列没满,那么从半连接队列拿出相关信息放入到全连接队列中。

当接收到3次握手中的ACK分组时,将它们移动到accept队列。 显而易见,accept系统调用只是简单地从完成队列中取出连接。 在这种情况下,listen syscall的backlog参数表示完成队列的大小。

code

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/*
tcpechosvr.c
*/
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <errno.h>
#include <string.h>

#define SRVIP "127.0.0.1"
#define SRVPORT 10005
#define MAX_NUM 1024

int main()
{
   int serverSock = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
    if(serverSock < 0)
    {
        printf("socket creation failed\n");
        exit(-1);
    }
    printf("socket create successfully.\n");

    struct sockaddr_in serverAddr;
    memset(&serverAddr,0,sizeof(serverAddr));
    serverAddr.sin_family=AF_INET;
    serverAddr.sin_port = htons((u_short)SRVPORT);
    serverAddr.sin_addr.s_addr = inet_addr(SRVIP);

    if(bind(serverSock, (struct sockaddr*)&serverAddr, sizeof(struct sockaddr))==-1)
    {
        printf("Bind error.IP[%s], Port[%d]\n", SRVIP, serverAddr.sin_port);
        exit(-1);
    }
    printf("Bind successful.IP[%s], Port[%d]\n", SRVIP, serverAddr.sin_port);

        /*  把sock链接进入监听哈希表listening_hash & 创建半连接队列的实例,初始化全连接队列 */
    if(listen(serverSock,10)==-1)
    {
        printf("Listen error!\n");
    }
    printf("Listening on port[%d]\n", serverAddr.sin_port);

    char recvBuf[MAX_NUM]={0};
    while(1)
    {
        struct sockaddr clientAddr;
        int size = sizeof(clientAddr);

        /* 从全连接队列中取  */
        int clientSock = accept(serverSock, &clientAddr, &size);
        printf("***SYS***    New client touched.\n");
        while(1)
        {
            //一直接收客户端socket的send操作
            if(recv(clientSock, recvBuf, MAX_NUM, 0) == -1)
            {
                printf("read error.\n");
            }
            else
            {
                printf("receiv from client:%s\n",recvBuf);
            }

            // 向客户端发送套接字
            if(send(clientSock, recvBuf , sizeof(recvBuf), MSG_NOSIGNAL) == -1)
            {
                printf("Send error!\n");
            }
            else
            {
                printf("Send to client:%s\n", recvBuf);
            }
            if( strcmp(recvBuf, "bye") == 0)
            {
                break;
            }
            memset(recvBuf, 0, sizeof(recvBuf));
        }
        close(clientSock);
    }
    close(serverSock);
    return 0;
}

REF

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-12-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
海洋 CMS 代码审计过程分析
最近在学代码审计,但总是学了忘,所以把思路步骤全写下来,便于后期整理。这次审计的是 seacmsV10.1,但是审完返现 V11 也有同样的漏洞。先放 payload:
信安之路
2020/09/28
2K0
海洋 CMS 代码审计过程分析
SeaCMS v10.1代码审计实战
seacms是一个代码审计入门级的cms,比较适合我这种小白玩家来学习,如果有什么错误欢迎指出。
FB客服
2020/07/15
1.4K0
SeaCMS v10.1代码审计实战
是时候血洗小电影网站了-Seacms SQL注入与RCE分析及实战
海洋cms是为解决站长核心需求而设计的视频内容管理系统,一套程序自适应电脑,手机,平板,APP多个终端入口,无任何加密代码,安全有保障,是您最佳的建站工具。——来自seacms官网(简而言之就是专门建造看片网站的cms) 经历我多年**的经验,很多看小电影的网站都是用的这套cms或者maccms,因此是时候血洗小电影站点了 呵呵,安全有保障??头都给你打爆掉,百度搜索seacms。。突破信息都已经上了回家了。。
天钧
2020/02/18
2.4K0
如何从根本上防止SQL注入
SQL注入是指Web应用程序对用户输入数据的合法性没有判断,前端传入后端的参数是攻击者可控的,并且参数被带入数据库查询,攻击者可以通过构造不同的SQL语句来实现对数据库的任意操作。
博文视点Broadview
2023/09/07
6860
如何从根本上防止SQL注入
最新SQL注入漏洞修复建议
多数CMS都采用过滤危险字符的方式,例如,用正则表达式匹配union、sleep、load_file等关键字。如果匹配到,则退出程序。例如,80sec的防注入代码如下:
Ms08067安全实验室
2023/10/25
7720
最新SQL注入漏洞修复建议
新洞。。。。。
In this blog post, I’m going to share a technical review of Dedecms (or “Chasing a Dream” CMS as translated to English) including its attack surface and how it differs from other applications. Finally, I will finish off with a pre-authenticated remote code execution vulnerability impacting the v5.8.1 pre-release. This is an interesting piece of software because it dates back over 14 years since its initial release and PHP has changed a lot over the years.
用户5878089
2021/10/11
1.1K0
搭建dedecms漏洞靶场练习环境
本文将对dedecms(织梦cms)所存在的漏洞进行分析和复现,因为代码审计较弱,代码这一块的分析借鉴了一些大佬们的思想,在这里对大佬们表示衷心的感谢。
HACK学习
2021/06/24
12.4K1
搭建dedecms漏洞靶场练习环境
Dedecms 中的预认证远程代码执行
在这篇博文中,我将分享对 Dedecms(或翻译成英文的“Chasing a Dream”CMS)的技术评论,包括它的攻击面以及它与其他应用程序的不同之处。最后,我将以一个影响v5.8.1 pre-release的预认证远程代码执行漏洞结束。这是一款有趣的软件,因为它的历史可以追溯到其最初发布以来的 14 年多,而 PHP 在这些年来发生了很大的变化。
Khan安全团队
2022/01/25
4.2K0
seacms修复历程总结
seacms修复历程总结 从6.45版本开始search.php就存在前台getshell的漏洞,到6.54官方对其进行修补,但修复方法是对用户输入的参数进行过滤并限制长度为20个字符,这种修复方法仍然可以通过反复替换模板达到组合绕过补丁。下面来细致分析一下海洋cms爆出的漏洞以及修复历程,并附上自己写的脚本,如有不对欢迎指正。 海洋CMS V6.45 1.search.php function echoSearchPage(){ global $dsql,$cfg_iscache,$mainClassOb
安恒网络空间安全讲武堂
2018/02/06
2K0
seacms修复历程总结
FineCMS V5.0.10 任意文件上传&&任意代码执行&&任意SQL语句执行
目录中的1位用户id,稍微爆破一下即可。 PS:谢谢大佬们提醒,这个uid可以直接在cookie中看到
纯情
2023/04/26
9410
DedeCMS v5.8.1_beta未授权远程命令执行漏洞分析
深信服公众号前几天发了Dedecms未授权RCE的漏洞通告。地址是这个: 【漏洞通告】DedeCMS未授权远程命令执行漏洞
Deen_
2021/11/12
4.4K0
DedeCMS v5.8.1_beta未授权远程命令执行漏洞分析
Pentester之SQL注入过关纪实
web for pentester是国外安全研究者开发的的一款渗透测试平台,通过该平台你可以了解到常见的Web漏洞检测技术,如:XSS跨站脚本攻击、SQL注入、目录遍历、命令注入、代码注入 、XML攻击、LDAP攻击、文件上传。靶场介绍可以查看官方网站[1]靶场环境搭建方法可以参考文章[2],先从SQL注入顺手练练
网络安全自修室
2021/11/25
4300
Pentester之SQL注入过关纪实
2024全网最全面及最新且最为详细的网络安全技巧四 之 sql注入以及mysql绕过技巧 (1)———— 作者:LJS
攻击者利用Web应用程序对用户输入验证上的疏忽,在输入的数据中包含对某些数据库系 统有特殊意义的符号或命令,让攻击者有机会直接对后台数据库系统下达指令,进而实现对后 台数据库乃至整个应用系统的入侵
盛透侧视攻城狮
2024/10/22
2290
2024全网最全面及最新且最为详细的网络安全技巧四 之 sql注入以及mysql绕过技巧 (1)———— 作者:LJS
通达OA v11.10 sql注入漏洞复现
漏洞定位:/general/system/approve_center/flow_data/export_data.php
yulate
2023/05/02
3.1K0
通达OA v11.10 sql注入漏洞复现
重置dedecms管理员后台密码重现及分析
0×00 概述 2018年1月,网上爆出dedecms v5.7 sp2的前台任意用户密码重置和前台任意用户登录漏洞,加上一个管理员前台可修改其后台密码的安全问题,形成漏洞利用链,这招组合拳可以重置管理员后台密码。 先来看看整体利用流程:    重置admin前台密码—>用admin登录前台—>重置admin前后台密码 0×01 前台任意用户密码重置分析 组合拳第一式:重置管理员前台密码 漏洞文件:member\resetpassword.php:75 else if(
奶糖味的代言
2018/04/16
6.8K0
重置dedecms管理员后台密码重现及分析
微擎 CMS:从 SQL 到 RCE
该处的注入漏洞网上没有出现过分析文章,因此本文就来分析一下该处 SQL 注入的利用。
p4nda
2023/01/03
4K0
微擎 CMS:从 SQL 到 RCE
空指针-Base on windows Writeup -- 最新版DZ3.4实战渗透
周末看了一下这次空指针的第三次Web公开赛,稍微研究了下发现这是一份最新版DZ3.4几乎默认配置的环境,我们需要在这样一份几乎真实环境下的DZ中完成Get shell。这一下子提起了我的兴趣,接下来我们就一起梳理下这个渗透过程。
Seebug漏洞平台
2020/05/12
1.9K0
关于typecho的一些样式代码
循环页面、分类、标签 <!--循环显示页面--> <?php $this->widget('Widget_Contents_Page_List')->to($pages); ?>
用户7146828
2021/08/09
1.3K0
easycms 7.7.4 后台sql注入漏洞​复现
环境 windows 11 phpstudy CmsEasy 7.7.4 代码分析 漏洞点:文件lib/admin/database_admin.php中的函数dorestore_action()方法。 //还原数据function dorestore_action() { /* db_dir = explode('_',front::get('db_dir')); if(db_dir[2]!=_VERCODE){ front::flash(lang_admin('
用户5878089
2021/12/01
2.1K0
easycms 7.7.4 后台sql注入漏洞​复现
35c3 POST题目复现
最近有点忙,所以拖了这么久才来复现这个题目,题目官方已经给了wp和docker环境,https://github.com/eboda/35c3/可以本地搭建一下。
用户1879329
2023/02/27
1.5K0
35c3 POST题目复现
相关推荐
海洋 CMS 代码审计过程分析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验