UNIX网络编程
文章平均质量分 85
程序猿编码
嘿,编译通过了!
展开
-
Linux下C/C++ 网络扫描(主机扫描技术)
主机扫描是在可达状态下检测,局域网下的 ARP 扫描和广域网下的 ICMP Echo 扫描、ICMP Sweep 扫描、ICMP Broadcast 扫描、ICMP Non-Echo 扫描都是基本的扫描技术。如果能收到,则表明目标系统可达,否则表明目标系统已经不可达或发送的包被对方的设备过滤掉。主机扫描是网络扫描的基础,通过对目标网络中主机IP地址的扫描,从一堆主机中扫描出存活的主机,然后以他们为目标进行后续的攻击。我们只需要对目标主机发送特定的数据包,如果目标主机有回应,那么我们就认为该主机是存活的;原创 2023-03-09 22:49:20 · 1224 阅读 · 0 评论 -
Linux C/C++ 多线程TCP/UDP服务器 (监控系统状态)
Linux环境中实现并发TCP/IP服务器。多线程在解决方案中提供了并发性。由于并发性,它允许多个客户端同时连接到服务器并与服务器交互。原创 2023-02-19 22:09:06 · 2353 阅读 · 1 评论 -
Linux下C/C++实现类似netstat命令(列出TCP和UDP连接)
网络连接一般包括最基本的五元组信息(源地址、目标地址、源端口、目标端口、协议号)再加上所属进程信息pid, exe, cmdline等。原创 2022-12-11 22:07:09 · 1408 阅读 · 0 评论 -
Linux C/C++下IPv6 socket详解
IPv4 地址的长度为 32 位,而 IPv6 接口由 128 位地址标识。套接字接口使 IP 地址的大小对应用程序非常可见。IPv6 的地址表示法是一组 8 个 4 位十六进制数字,用“:”分隔。 “::” 代表一串 0 位。 特殊地址是 ::1 用于环回。IPv6地址族和协议族IPv4 和 IPv6 共享本地端口空间。当您获得到 IPv6 套接字的 IPv4 连接或数据包时,其源地址将映射到 v6。sin6_family 始终设置为 AF_INET6;用于区分了原始的 sockad原创 2022-08-25 22:56:04 · 6298 阅读 · 1 评论 -
telnet 会话的客户端与服务器(C/C++代码实现)
telnet 是一种网络虚拟终端协议。是用于在远程主机上运行程序的标准 TCP/IP 协议。术语telnet也指在特定平台或系统上实现此协议的软件(客户端或服务器组件), telnet 在RFC854 中定义。Telnet 的工作原理telnet 是一个终端仿真程序,它是一个命令行界面,用于在远程计算机上发出命令。 运行 telnet 客户端软件的用户可以在运行 telnet 服务或守护程序的远程主机上交互地运行命令行应用程序。 用户在telnet客户端输入信息; 此信息在 telnet 服务器上进行处理,原创 2022-06-19 21:51:17 · 6501 阅读 · 0 评论 -
Linux FTP服务器与客户端(FTP命令 C/C++代码实现)
FTP 是 TCP/IP 提供的标准互联网协议,用于将文件从一台主机传输到另一台主机。它主要用于将网页文件从其创建者传输到充当 Internet 上其他计算机的服务器的计算机。它还用于将文件从其他服务器下载到计算机。为什么需要文件传输协议?文件传输协议 (FTP) 是最古老的 Internet 协议之一。 协议背后的思想是通过命令触发下载和上传。 允许将文件从你自己的设备传输到服务器,反之亦然。在 FTP 连接中,通常打开两个通道。 首先,客户端和服务器使用端口 21 建立命令通道。客户端使用该通道向服务器原创 2022-06-12 22:55:20 · 7807 阅读 · 4 评论 -
二层转发及C/C++代码实现
数据链路层是开放系统互连 (OSI) 模型中的第二层原创 2022-05-22 10:44:00 · 1962 阅读 · 2 评论 -
为什么要使用 TCP keepalive?C/C++代码实现
为了理解 TCP keepalive的作用。我们需要清楚,当TCP的Peer A ,Peer B 两端建立了连接之后,如果一端突然拔掉网线或拔掉电源时,怎么检测到拔掉网线或者拔掉电源、链路不通? 原因是在需要长连接的网络通信程序中,经常需要心跳检测机制,来实现检测对方是否在线或者维持网络连接的需要。什么是 TCP 保活?当你建立一个 TCP 连接时,你关联了一组定时器。其中一些计时器处理保活过程。当保活计时器达到零时,向对等方发送一个保活探测数据包,其中没有数据并且 ACK 标志打开。由于 TCP/I原创 2022-03-27 19:56:42 · 4854 阅读 · 0 评论 -
“字节序”网络中的大小端问题
大小端在计算机业界,endian表示数据在存储器中的存放顺序。“endian”一词来源于乔纳森·斯威夫特的小说格列佛游记。小说中,小人国为水煮蛋该从大的一端(Big-End)剥开还是小的一端(Little-End)剥开而争论,争论的双方分别被称为“大端派”和“小端派”。看到没有,仅仅是剥鸡蛋就能产生这么大的分歧,“大端”和“小端”有这么重要嘛!什么是字节序字节字节(Byte)是存储数据的...原创 2020-05-03 11:32:20 · 1070 阅读 · 1 评论 -
计算机网络知识总结
计算机网络(简称网络)把许多计算机连接在一起,而互联网把许多网络连接在一起,是网络的网络。计算机网络体系结构:各层作用及协议物理层传输数据的单位:比特数据传输系统:源系统(源点、发送器) --> 传输系统 --> 目的系统(接收器、终点)通道:1、单向通道(单工通道):只有一个方向通信,没有反方向交互,如广播。2、双向交替通信(半双工通信):通信双方都可发消息...原创 2020-02-28 16:35:29 · 1198 阅读 · 1 评论 -
网络编程-数据结构与函数详解
在网络编程-一个简单的客户端与服务器程序(0),(看这篇就够了)中已经对程序整体有了宏观的认识。这篇主要对数据结构与函数详解。数据结构与函数详解IPv4相关结构:struct in_addr{ in_addr_t s_addr; //表示32位的IP地址,32位无符号整型}struct sockaddr_in{ uint8_t ...原创 2020-02-25 16:02:51 · 867 阅读 · 0 评论 -
网络编程-一个简单的客户端与服务器程序(0),(看这篇就够了)
写客户端与服务器程序之前,相信都对TCP的三次握手,四次挥手有一定的了解。如果还不了解的朋友可以看这两篇网络编程-从TCP三次握手说起和网络编程-TCP的四次挥手服务器和客户端程序的流程基于TCP/IP协议的服务器和客户端程序的一般流程,如下图所示:1、服务器初始化一一LISTEN(1)调用socket函数创建文件描述符。(2)调用bind函数将当前的文件描述符和ip/port绑定在一...原创 2020-02-23 16:05:21 · 6623 阅读 · 0 评论 -
网络编程-TCP的四次挥手
这篇文章,主要是整理一下 TCP 的四次挥手。在网络编程-从TCP三次握手说起介绍了关于TCP的三次握手。四次挥手四次挥手的流程在网上有很多图解,这里简略介绍一下,其最常见流程如下图所示,先来看看如何建立连接的:其大体流程如下:1、客户端发其结束请求,发送seq=u,处于FIN-WAIT-1状态2、服务端收到结束请求,发送应答ACK=u+1,处于CLOSE_WAIT状态3、客户端收到...原创 2020-02-22 12:00:38 · 817 阅读 · 0 评论 -
网络编程-从TCP三次握手说起
前言网络编程几乎是每一门编程语言都会涉及到的内容,虽然各种语言调用的方式可能不一样,但它们背后的原理支持都是一样的。最近一直在恶补计算机网络方面的知识,之前对TCP的三次握手和四次挥手还是模糊的,对于其中的细节浑然不知。最近看了很多这方面的知识。也在系统的学习计算机网络,加深自己的网络编程功底。本文将从TCP的三次握手说起。根据自己看过的网络方面的书籍上和自己的一些理解进行二次加工组织一下然后交...原创 2020-02-21 17:14:04 · 934 阅读 · 0 评论 -
web性能压力测试工具:Webbench 源码分析
前言Webbench是一个网站压力测试的工具。由Lionbridge公司开发,Webbech的标准测试可以向我们展示服务器的两项内容,分别为每秒钟请求数和每秒钟传输数据量。如果你不清数访问的网站能承受多大的压力,或者对比两个网站的性能可以,考虑使用Webbench或者http_load来测试。源码下载webbench源码一共包含两个源文件:socket.c和webbench.c下载地址:...原创 2020-01-11 21:18:24 · 658 阅读 · 0 评论 -
HTTP服务器的本质及源码Tinyhttpd分析
前言Tinyhttp是一个轻量型Http Server,使用C语言开发,全部代码只500多行。可以帮助我们了解HTTP服务器运行的实质。下面在分析源码之前,先说一下http报文。HTTP 报文结构http 报文有 请求报文 和 响应报文 两种。请求报文一个http请求报文由请求行、请求头部、空行和请求数据4个部分组成。下图是请求报文的一般格式:<request-line><hea...原创 2019-12-29 11:53:42 · 1474 阅读 · 1 评论