
【 Linux 网络编程 】
文章平均质量分 97
详细介绍Linux 网络部分
优惠券已抵扣
余额抵扣
还需支付
¥49.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
HarkerYX
学习各类技术优快云博客专家!
热爱日系指弹!
目前就职新能源汽车行业!
展开
-
《Linux网络编程》学习导图
《Linux网络编程》学习导图关于TCP/IP协议的所有理论知识请查看《TCP/IP详解:协议》学习导图一、初级实战篇1、《Linux网络编程》: 网络协议入门2、《Linux网络编程》: 网络字节序、地址转换3、《Linux网络编程》: 套接字的介绍4、《Linux网络编程》: UDP编程...原创 2018-12-25 16:11:14 · 1061 阅读 · 0 评论 -
《Linux网络编程》: TCP实现FTP协议
实现 FTP 客户端上传下载功能下面让我们通过一个例子来对 FTP 客户端有一个深入的了解。本文实现的 FTP 客户端有下列功能:客户端和 FTP 服务器建立 Socket 连接。 向服务器发送 USER、PASS 命令登录 FTP 服务器。 使用 PASV 命令(被动)得到服务器监听的端口号,建立数据连接。 使用 RETR/STOR 命令下载/上传文件。 在下载完毕后断开数据连...原创 2019-01-09 16:35:25 · 1663 阅读 · 0 评论 -
《Linux网络编程》: libnet 函数列表
libnet提供的接口函数按其作用可分为四类:* 内存管理(分配和释放)函数* 地址解析函数* 数据包构造函数* 数据包发送函数以下分别列出这些接口函数及其功能(其参数含义简单易懂,不再解释):1.内存管理函数单数据包内存初始化:int libnet_init_packet(u_short packet_size, u_char **buf);单数据包内存...原创 2019-01-08 11:30:30 · 382 阅读 · 0 评论 -
《Linux网络编程》: libnet 详解
1 .概述通过《Linux网络编程》: 原始套接字发送UDP报文的学习,我们组 UDP 数据包时常考虑字节流顺序、校验和计算等问题,有时候会比较繁琐,那么,有没有一种更简单的方法呢?答案是:借助libnet 函数库。libnet 是一个小型的接口函数库,主要用 C 语言写成,提供了低层网络数据包的构造、处理和发送功能。libnet 的开发目的是:建立一个简单统一的网络编程接口以...原创 2019-01-08 12:00:08 · 1311 阅读 · 0 评论 -
《Linux网络编程》: libpcap 详解
1.概述libpcap (Packet Capture Library)是一个网络数据包捕获函数库,是Unix/Linux平台下的网络数据包捕获函数库。它是一个独立于系统的用户层包捕获的API接口,为底层网络监测提供了一个可移植的框架。功能非常强大,Linux 下著名的 tcpdump 就是以它为基础的。该库提供的C函数接口用于捕获经过指定网络接口(通过将网卡设置为混杂模式,可以捕获所有经过...原创 2019-01-08 11:12:22 · 1561 阅读 · 0 评论 -
《Linux网络编程》: 并发服务器的三种实现模型
循环服务器与并发服务器模型服务器设计技术有很多,按使用的协议来分有 TCP 服务器和 UDP 服务器,按处理方式来分有循环服务器和并发服务器。在网络程序里面,一般来说都是许多客户对应一个服务器(多对一),为了处理客户的请求,对服务端的程序就提出了特殊的要求。目前最常用的服务器模型有:·循环服务器:服务器在同一时刻只能响应一个客户端的请求·并发服务器:服务器在同一时刻可以响...原创 2019-01-07 10:57:56 · 1484 阅读 · 1 评论 -
《Linux网络编程》: 原始套接字发送UDP报文
校验和函数:/*******************************************************功能: 校验和函数参数: buf: 需要校验数据的首地址 nword: 需要校验数据长度的一半返回值: 校验和*******************************************************/unsigned short ...原创 2019-01-07 10:30:08 · 1384 阅读 · 3 评论 -
《Linux网络编程》: 原始套接字MAC头部报文
通过《Linux网络编程》: 原始套接字编程,我们可以通过原始套接字以及recvfrom( ) 可以获取链路层的数据包,那我们接收的链路层数据包到底长什么样的呢?注意:CRC、PAD 在组包时可以忽略链路层数据包的其中一种情况:(IP)unsigned char msg[1024] = { //--------------组MAC--------14------ 0xb8,...原创 2019-01-04 18:15:53 · 427 阅读 · 0 评论 -
《Linux网络编程》: 原始套接字ARP协议报文
如果 A (192.168.1.1 )向 B (192.168.1.2 )发送一个数据包,那么需要的条件有 ip、port、使用的协议(TCP/UDP)之外还需要 MAC 地址,因为在以太网数据包中 MAC 地址是必须要有的。那么怎样才能知道对方的 MAC 地址?答案是:它通过 ARP 协议来获取对方的 MAC 地址。APR协议请看《TCP/IP协议族》:ARP协议一 、《TCP/IP协议族》...原创 2019-01-04 18:15:03 · 591 阅读 · 0 评论 -
《Linux网络编程》: 原始套接字介绍
通常情况下程序员接所接触到的套接字(Socket)为两类(1)流式套接字(SOCK_STREAM):一种面向连接的 Socket,针对于面向连接的TCP 服务应用;(2)数据报式套接字(SOCK_DGRAM):一种无连接的 Socket,对应于无连接的 UDP 服务应用。从用户的角度来看,SOCK_STREAM、SOCK_DGRAM 这两类套接字似乎的确涵盖了 TCP/IP 应用的...原创 2019-01-04 18:13:17 · 473 阅读 · 0 评论 -
《Linux网络编程》: 端口复用(多个套接字绑定同一个端口)
在《绑定( bind )端口需要注意的问题》提到:一个网络应用程序只能绑定一个端口( 一个套接字只能绑定一个端口 )。请查看《Linux网络编程》: 绑定( bind )端口需要注意的问题实际上,默认的情况下,如果一个网络应用程序的一个套接字 绑定了一个端口( 占用了 8000 ),这时候,别的套接字就无法使用这个端口( 8000 ), 验证例子如下:#include <s...原创 2019-01-03 17:11:17 · 1417 阅读 · 0 评论 -
《Linux网络编程》: connect()、listen()和accept()三者之间的关系
基于 TCP 的网络编程开发分为服务器端和客户端两部分,常见的核心步骤和流程如下:connect()函数对于客户端的 connect() 函数,该函数的功能为客户端主动连接服务器,建立连接是通过三次握手,而这个连接的过程是由内核完成,不是这个函数完成的,这个函数的作用仅仅是通知 Linux 内核,让 Linux 内核自动完成 TCP 三次握手连接(三次握手详情,请看《TCP 三...原创 2019-01-03 16:46:05 · 1199 阅读 · 0 评论 -
《Linux网络编程》: TCP编程
TCP编程TCP 编程的 C/S 架构基于 TCP 的网络编程开发分为服务器端和客户端两部分,常见的核心步骤和流程如下:TCP 客户端编程对于 TCP 客户端编程流程,有点类似于打电话过程:找个可以通话的手机(socket())->拨通对方号码并确定对方是自己要找的人(connect())->主动聊天(send()或write())-&...原创 2019-01-03 17:11:54 · 300 阅读 · 0 评论 -
《Linux网络编程》: 绑定( bind )端口需要注意的问题
所谓绑定(bind)是指别人连接我只能通过我所绑定的端口,相当于,我买了一个手机,别人要想联系我,必须要知道我的手机号码,这时候,我需要怎么办呢?我需要给手机插上电话卡,固定一个电话号码,这样别人就能通过这个电话号码联系我。手机插上电话卡,固定一个电话号码,类似于绑定(bind)的过程,绑定(bind)为了固定一个端口号,别的网络程序就可以找到这个端口号,找到这个端口号就能找到这个端口号所对应的网...原创 2019-01-03 11:53:00 · 1314 阅读 · 0 评论 -
《Linux网络编程》: UDP编程
UDP编程1. UDP 编程的 C/S 架构2.UDP 客户端程序ssize_t sendto( int sockfd,const void *buf,size_t nbytes,int flags,const struct sockaddr *to,socklen_t addrlen );功能:向 to 结构体指针中指定的 ip,发送 UDP 数据,可以发送 0 长度...原创 2019-01-03 13:55:52 · 518 阅读 · 0 评论 -
《Linux网络编程》: UDP广播编程
1. 关于广播请参考《TCP/IP协议族》:多播和广播地址《TCP/IP协议族》:单播、广播、多播(组播)2. UDP广播介绍广播只能用 UDP 或原始IP实现,不能用 TCP。UDP 广播特点如下:处于同一子网的所有主机都必须处理数据。 UDP数据包会沿协议栈向上一直到 UDP 层,因为到 UDP 层,端口不匹配的话,数据才会丢弃,如下图,所以,运行...原创 2019-01-03 10:57:06 · 724 阅读 · 0 评论 -
《Linux网络编程》: 套接字的介绍
1. 套接字介绍套接字是一种通信机制(通信的两方的一种约定),凭借这种机制,不同主机之间的进程可以进行通信。我们可以用套接字中的相关函数来完成通信过程。套接字的特性有三个属性确定,它们是:域(domain),类型(type),和协议(protocol)。套接字的域域指定套接字通信中使用的网络介质。最常见的套接字域是 AF_INET,它是指 Internet 网络,许多 Lin...原创 2019-01-03 10:32:11 · 328 阅读 · 0 评论 -
《Linux网络编程》: 网络字节序、地址转换
1.网络字节序故事的起源“endian”这个词出自《格列佛游记》。小人国的内战就源于吃鸡蛋时是究竟从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开,由此曾发生过六次叛乱,其中一个皇帝送了命,另一个丢了王位。我们一般将“endian”翻译成“字节序”,将Big-Endian和 Little-Endian称作“大端格式”和“小端格式”。2.字节...原创 2019-01-03 10:08:18 · 367 阅读 · 0 评论 -
《Linux网络编程》: 原始套接字编程
原始套接字编程和之前的 UDP 编程差不多,无非就是创建一个套接字后,通过这个套接字接收数据或者发送数据。区别在于,原始套接字可以自行组装数据包(伪装本地 IP,本地 MAC),可以接收本机网卡上所有的数据帧(数据包)。另外,必须在管理员权限下才能使用原始套接字。1.原始套接字的创建int socket ( int family, int type, int protocol );...原创 2019-01-02 17:49:52 · 368 阅读 · 0 评论 -
《Linux网络编程》: Linux多播编程(No such device)解决方法
多播的测试代码如下:#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <fcntl.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h&...转载 2019-01-02 17:12:58 · 657 阅读 · 0 评论 -
《Linux网络编程》: UDP多播编程
UDP多播编程关于多播请参考《TCP/IP协议族》:多播和广播地址《TCP/IP协议族》:单播、广播、多播(组播)1. 套接口选项int setsockopt( int sockfd, int level,int optname, const void *optval, socklen_t optlen );成功执行返回0,否则返回-1选项 IP...原创 2019-01-02 17:13:50 · 377 阅读 · 0 评论 -
《Linux网络编程》: 网络协议入门
我们每天使用互联网,你是否想过,它是如何实现的?全世界几十亿台电脑,连接在一起,两两通信。北京的某一块网卡送出信号,深圳的另一块网卡居然就收到了,两者实际上根本不知道对方的物理位置,你不觉得这是很神奇的事情吗?为了使各种不同的计算机之间可以互联,ARPANet指定了一套计算机通信协议,即TCP/IP协议( 族 ),它们对电脑如何连接和组网,做出了详尽的规定。理解了这些协议,就理解了网...原创 2018-12-24 18:31:33 · 518 阅读 · 1 评论