Linux环境编程
文章平均质量分 65
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。
Mike江
A goal is not always meant to be reached, it often serves simply as something to aim at. ──Bruce Lee
目标不一定是需要达到的,目标往往只是用来帮助你瞄准方向。──李小龙
展开
-
windows安装VMwareWorkstation问题汇总
之前在window10平台下安装VMwareWorkstation,遇到各种问题,在此汇总遇到的一些问题和解决方案。一、蓝屏VMwareWorkstation虚拟机一打开就蓝屏解决方案打开Windows平台的虚拟机平台如重启电脑,再打开虚拟机,出现如下错误:出现如上问题的原因,系统和VMware不兼容导致请安装最新版本的高版本VMware(如果16版本)二、没有开启BIOS虚拟化出现如上问题是,没有开启BIOS虚拟化,请自行百度如何开启BIOS虚拟化,不同电脑打开B原创 2021-09-02 17:10:30 · 2285 阅读 · 1 评论 -
VMwareWorkStation安装和简单使用
以下操作在windows下完成一、安装双击安装包,默认配置安装即可接受许可协议无需检查更新和假如客户体验点击许可证按钮按要求输入许可证请支持正版,请支持正版二、导入安装好的Linux系统解压安装好的Linux系统打开解压后现有的虚拟机开启虚拟机点击 “我已复制该虚拟机”三、简单使用输入登陆用户名密码,进入系统打开终端关机...原创 2021-08-20 11:25:46 · 357 阅读 · 0 评论 -
Linux远程连接工具:finalshell
一、finalshell介绍前面一直使用xshell作为Linux远程连接的工具,教程请看《通过xshell远程连接ubuntu》。但是,xshell是付费软件。于是,找到一个finalshell作为其替换软件。FinalShell是一体化的的服务器,网络管理软件,不仅是ssh客户端,还是功能强大的开发,运维工具,充分满足开发,运维需求.特色功能:云端同步,免费海外服务器远程桌面加速,ssh加速,本地化命令输入框,支持自动补全,命令历史,自定义命令参数更多介绍,请自行百度,或查看官网介绍:http原创 2021-08-19 22:40:25 · 47407 阅读 · 20 评论 -
为什么需要操作系统
1 操作系统的作用对于一个程序而言,它为了保障自己的程序运行流畅,势必就会要求自己分配到的资源越多越好,但是计算机的资源总是有限的,大家都自顾自抢资源的话,要么就是大家一起跑不动,要么就是某几个程序把别的程序的资源都挤占掉。更麻烦的是,由于程序设计者不可能预测到自己的程序会和什么样的别的程序同时在一个电脑中运行,所以很有可能出现某个程序的临时数据恰好和另一个程序关键数据很相似的情况,于...原创 2018-03-13 10:57:39 · 11624 阅读 · 2 评论 -
ubuntu下添加新用户、解决远程登录问题
1 添加新用户1.1 添加新用户sudo useradd go -d /home/go -m#第一个go,指用户名#-d /home/go 指定用户登录系统时的主目录,宿主目录#-m 如果/home/go路径不存在,自动创建1.2 查看新建的用户cat /etc/passwd | grep go1.3 给新用户设置密码sudo pass...原创 2018-01-04 16:22:23 · 26007 阅读 · 8 评论 -
Linux网络编程——绑定( bind )端口需要注意的问题
所谓绑定(bind)是指别人连接我只能通过我所绑定的端口,相当于,我买了一个手机,别人要想联系我,必须要知道我的手机号码,这时候,我需要怎么办呢?我需要给手机插上电话卡,固定一个电话号码,这样别人就能通过这个电话号码联系我。手机插上电话卡,固定一个电话号码,类似于绑定(bind)的过程,绑定(bind)为了固定一个端口号,别的网络程序就可以找到这个端口号,找到这个端口号就能找到这个端口号所对应的网...原创 2015-03-04 16:10:52 · 41875 阅读 · 4 评论 -
Linux网络编程——端口复用(多个套接字绑定同一个端口)
在《绑定( bind )端口需要注意的问题》提到:一个网络应用程序只能绑定一个端口( 一个套接字只能绑定一个端口 )。实际上,默认的情况下,如果一个网络应用程序的一个套接字 绑定了一个端口( 占用了 8000 ),这时候,别的套接字就无法使用这个端口( 8000 )。那如何让sockfd_one, sockfd_two两个套接字都能成功绑定8000端口呢?这时候就需要要到端口复用了。端口复用允许在一个应用程序可以把 n 个套接字绑在一个端口上而不出错。原创 2015-03-04 18:07:02 · 54826 阅读 · 9 评论 -
Linux网络编程——网络协议入门
我们每天使用互联网,你是否想过,它是如何实现的?全世界几十亿台电脑,连接在一起,两两通信。北京的某一块网卡送出信号,深圳的另一块网卡居然就收到了,两者实际上根本不知道对方的物理位置,你不觉得这是很神奇的事情吗?为了使各种不同的计算机之间可以互联,ARPANet指定了一套计算机通信协议,即TCP/IP协议( 族 ),它们对电脑如何连接和组网,做出了详尽的规定。理解了这些协议,就理解了网络的原理。因为...转载 2015-03-13 16:19:35 · 85877 阅读 · 9 评论 -
因特网的IP协议是不可靠无连接的,那为什么当初不直接把它设计为可靠的?
因特网使用的IP协议是无连接的,因此其传输是不可靠的。这样容易使人们感到因特网很不可靠,那为什么当初不直接把它设计为可靠的?先打一个比方。邮局寄送的平信很像无连接的IP数据报。每封平信可能走不同的传送路径,同时平信也不保证不丢失。当我们发现收信人没有收到寄出的平信时,去找邮局索赔是没有用的。邮局会说:“平信不保证不丢失。怕丢失就请你寄挂号信”。但是大家并不会将所有的信件都用挂号方式邮寄,这是因为邮...转载 2015-03-19 12:00:52 · 34464 阅读 · 2 评论 -
Linux网络编程——无连接和面向连接协议的区别
网络编程中最基本的概念就是面向连接(connection-oriented)和无连接(connectionless)协议。尽管本质上来说,两者之间的区别并不难理解,但对那些刚刚开始进行网络编程的人来说,却是个很容易混淆的问题。这个问题与上下文有些关联:很显然,如果两台计算机要进行通信,就必须以某种形式“连接”起来,那“无连接通信”又是什么意思呢?答案是:面向连接和无连接指的都是协议。也就是说,这些...翻译 2015-03-19 15:26:25 · 15773 阅读 · 0 评论 -
Linux网络编程——多播
概述单播用于两个主机之间的端对端通信,广播用于一个主机对整个局域网上所有主机上的数据通信。单播和广播是两个极端,要么对一个主机进行通信,要么对整个局域网上的主机进行通信。实际情况下,经常需要对一组特定的主机进行通信,而不是整个局域网上的所有主机,这就是多播的用途。IP 多播(也称多址广播或组播)技术,是一种允许一台或多台主机(多播源)发送单一数据包到多台主机(一次的,同时的)的 TCP/IP 网络...原创 2015-03-20 20:30:38 · 19210 阅读 · 5 评论 -
如何理解HTTP协议的 “无连接,无状态” 特点?
HTTP 是一个属于应用层的面向对象的协议,HTTP 协议一共有五大特点:1、支持客户/服务器模式;2、简单快速;3、灵活;4、无连接;5、无状态。无连接无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。早期这么做的原因是 HTTP 协议产生于互联网,因此服务器需要处理同时面向全世界数原创 2015-03-23 16:00:28 · 30582 阅读 · 4 评论 -
杀毒软件和防火墙的区别
在许多人的思想中,特别是电脑的初学者,都对防火墙有一种错误的认识。即分不清什么是防火墙以及杀毒软件,认为杀毒软件就可以代替防火墙,所以就掉以轻心,成了网络的受害者。其实杀毒软件和防火墙有很大的不同。虽然两者的共同目标都是保护电脑的安全,都是杀“毒”,(相对于杀毒软件工作范围中的病毒来说,防火墙要把互联网中任何对 PC 有威胁的“毒”程序隔离,这也是一种“毒”),但是在工作区域和在保卫电原创 2015-03-24 16:17:24 · 68484 阅读 · 1 评论 -
Linux网络编程——原始套接字能干什么?
通常情况下程序员接所接触到的套接字(Socket)为两类:(1)流式套接字(SOCK_STREAM):一种面向连接的 Socket,针对于面向连接的TCP 服务应用;(2)数据报式套接字(SOCK_DGRAM):一种无连接的 Socket,对应于无连接的 UDP 服务应用。从用户的角度来看,SOCK_STREAM、SOCK_DGRAM 这两类套接字似乎的确涵盖了 TCP/IP 应用的全部,因为基于...原创 2015-03-26 20:36:04 · 26777 阅读 · 0 评论 -
Linux网络编程——原始套接字编程
原始套接字编程和之前的 UDP 编程差不多,无非就是创建一个套接字后,通过这个套接字接收数据或者发送数据。区别在于,原始套接字可以自行组装数据包(伪装本地 IP,本地 MAC),可以接收本机网卡上所有的数据帧(数据包)。另外,必须在管理员权限下才能使用原始套接字。原始套接字的创建int socket ( int family, int type, int protocol );参数:family:...原创 2015-03-27 17:47:16 · 52581 阅读 · 7 评论 -
Linux网络编程——原始套接字实例:MAC 头部报文分析
通过《Linux网络编程——原始套接字编程》得知,我们可以通过原始套接字以及 recvfrom( ) 可以获取链路层的数据包,那我们接收的链路层数据包到底长什么样的呢?MAC 头部(有线局域网)注意:CRC、PAD 在组包时可以忽略链路层数据包的其中一种情况:unsigned char msg[1024] = { //--------------组MAC--------14------ 0xb...原创 2015-03-30 20:26:48 · 53104 阅读 · 0 评论 -
Linux 网络编程—— libpcap 详解
概述libpcap 是一个网络数据包捕获函数库,功能非常强大,Linux 下著名的 tcpdump 就是以它为基础的。libpcap主要的作用1)捕获各种数据包,列如:网络流量统计。2)过滤网络数据包,列如:过滤掉本地上的一些数据,类似防火墙。3)分析网络数据包,列如:分析网络协议,数据的采集。4)存储网络数据包,列如:保存捕获的数据以为将来进行分析。libpcap 的安装libpcap 的抓包框...原创 2015-04-02 19:32:04 · 65964 阅读 · 2 评论 -
.com 域名三十年回顾:从 1 到 1 亿个,一部互联网的变迁史
摘要第一个 .com 域名诞生的五年后,互联网才成为一个世界范围内的事件。也就是你早就听说过的,在1993 年,麻省理工学院教授蒂姆·伯纳斯·李,利用超文本连接,为互联网做了一个方便提取的目录,万维网诞生了。 .com,从第 1 个到第 1 亿个。 尽管你在 .com 后面按下回车键的动作已经跟吃饭喝水一样平常,你可能并没有想到过这事儿在世界上存在了 30 年。1985原创 2015-04-04 10:02:40 · 3452 阅读 · 0 评论 -
Linux 网络编程——原始套接字实例:MAC 地址扫描器
如果 A (192.168.1.1 )向 B (192.168.1.2 )发送一个数据包,那么需要的条件有 ip、port、使用的协议(TCP/UDP)之外还需要 MAC 地址,因为在以太网数据包中 MAC 地址是必须要有的。那么怎样才能知道对方的 MAC 地址?答案是:它通过 ARP 协议来获取对方的 MAC 地址。ARP(Address Resolution Protocol,地址解析协议),...原创 2015-04-07 19:28:47 · 43778 阅读 · 2 评论 -
Linux 网络编程——原始套接字实例:发送 UDP 数据包
以太网报文格式:详细的说明,请看《MAC 头部报文分析》。IP 报文格式:详细的说明,请看《IP 数据报格式详解》。UDP 报文格式:详细的说明,请看《UDP 数据报格式详解》。校验和函数:/*******************************************************功能: 校验和函数参数: buf: 需要校验数据的首地址 nword: 需要校验数据长度...原创 2015-04-08 16:57:13 · 77602 阅读 · 9 评论 -
Linux 网络编程——IP 数据报格式详解
IP 数据报首部TCP/IP 协议定义了一个在因特网上传输的包,称为 IP 数据报 (IP Datagram)。这是一个与硬件无关的虚拟包,由首部和数据两部分组成。首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。首都中的源地址和目的地址都是 IP 协议地址。IP 数据报首部的固定部分中的各字段:1)版本:占4位,指IP...原创 2015-04-07 20:52:14 · 47422 阅读 · 0 评论 -
Linux 网络编程——TCP 和 UDP 数据报格式详解
TCP 报文格式TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP 报文段的报头有 10 个必需的字段和 1 个可选字段。报头至少为 20 字节。报头后面的数据是可选项。1)源端口(16位)标识发送报文的计算机端口或进程。一个 TCP 报文段必须包括源端口号,使目的主机知道应该向何处发送确认报文。2)目的端...原创 2015-04-08 15:35:15 · 28624 阅读 · 0 评论 -
IP 分片丢失重传
尽管 IP 分片看起来是是透明的,但有一点让人不想使用它:即使只丢失一片数据也要重传整个数据报。为什么会发生这种情况呢?因为 IP 层本身没有超时重传的机制——由更高层来负责超时和重传( TCP 有超时和重传机制,但 UDP 没有。一些 UDP 应用程序本身也执行超时和重传)。当来自 TCP 报文段的某一片丢失后,TCP 在超时后重发整个 TCP 报文段,该报文段对应于一份 IP 数据原创 2015-04-08 16:02:18 · 3775 阅读 · 0 评论 -
Linux 网络编程—— libnet 使用指南
概述通过《原始套接字实例:发送 UDP 数据包》的学习,我们组 UDP 数据包时常考虑字节流顺序、校验和计算等问题,有时候会比较繁琐,那么,有没有一种更简单的方法呢?答案是:借助 libnet 函数库。libnet 是一个小型的接口函数库,主要用 C 语言写成,提供了低层网络数据包的构造、处理和发送功能。libnet 的开发目的是:建立一个简单统一的网络编程接口以屏原创 2015-04-12 20:23:31 · 36251 阅读 · 0 评论 -
libnet 函数列表
libnet提供的接口函数按其作用可分为四类:* 内存管理(分配和释放)函数* 地址解析函数* 数据包构造函数* 数据包发送函数以下分别列出这些接口函数及其功能(其参数含义简单易懂,不再解释):★内存管理函数单数据包内存初始化:int libnet_init_packet(u_short packet_size, u_char **b原创 2015-04-08 19:43:09 · 2479 阅读 · 0 评论 -
Linux 网络编程——网络字节序、地址转换
网络字节序故事的起源“endian”这个词出自《格列佛游记》。小人国的内战就源于吃鸡蛋时是究竟从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开,由此曾发生过六次叛乱,其中一个皇帝送了命,另一个丢了王位。我们一般将“endian”翻译成“字节序”,将 Big-Endian 和 Little-Endian 称作“大端格式”和“小端格式”。字节序字节序是指多字节数据的存储顺...原创 2015-04-14 19:42:51 · 18624 阅读 · 1 评论 -
Linux 网络编程——UDP编程
概述UDP 是 User Datagram Protocol 的简称, 中文名是用户数据报协议,是一个简单的面向数据报的运输层协议,在网络中用于处理数据包,是一种无连接的协议。UDP 不提供可靠性的传输,它只是把应用程序传给 IP 层的数据报发送出去,但是并不能保证它们能到达目的地。由于 UDP 在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。UDP 有如...原创 2015-04-16 20:26:34 · 44682 阅读 · 2 评论 -
Linux 网络编程——套接字的介绍
套接字是一种通信机制(通信的两方的一种约定),凭借这种机制,不同主机之间的进程可以进行通信。我们可以用套接字中的相关函数来完成通信过程。流套接字(SOCK_STREAM):流套接字用于提供面向连接、可靠的数据传输服务。该服务将保证数据能够实现无差错、无重复发送,并按顺序接收。流套接字之所以能够实现可靠的数据服务,原因在于其使用了传输控制协议,即TCP(The Transmission Control Protocol)协议。数据报套接字(SOCK_DGRAM):数据报套接字提供了一种无连接的服务。该原创 2015-04-14 20:45:58 · 9674 阅读 · 0 评论 -
浅谈 C/S 和 B/S 架构
概述在这个信息急剧膨胀的社会,我们不得不说人类正进入一个崭新的时代,那就是信息时代。信息时代的一个主要而显著的特征就是计算机网络的应用。计算机网络从最初的集中式计算,经过了Client/Server阶段(有两层C/S和三层C/S),已发展到目前最流行的 Browser/Server计算模式。其中颇具争论和影响力的是C/S以及B/S架构,C/S是一种历史悠久且技术非常成熟的架构,B/S是新生代架构,...转载 2015-04-15 19:38:07 · 74744 阅读 · 3 评论 -
内网和外网之间的通信
对于初学者而已,我们学习的网络编程(如TCP,UDP编程),我们通常都是在局域网内进行通信测试,有时候我们或者会想,我们现在写的内网网络数据和外网的网络数据有什么不同,我们内网的数据是如何走出外网的呢?再者,我们大多人都是使用宽带上网,结果发现,A 和 B 的局域网 IP 都是192.168.31.11,当他们都访问百度浏览网页时,百度服务器回复数据时,如何区分是给 A 还是给 B 呢原创 2015-04-26 11:46:40 · 67639 阅读 · 6 评论 -
IP 地址介绍
什么是 IP 地址IP 地址(Internet Protocol Address)也称为网间地址、网际地址。IP地址是指互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),是IP Address的缩写。IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。IP 地址原创 2015-04-28 16:35:43 · 13421 阅读 · 2 评论 -
Linux网络编程——广播
概述在生活中广播无处不在,像平时在大街上卖物品的商人,在进行推广产品的时候往往都是使用一个喇叭来进行吆喝:“十块钱买不了吃亏,十块钱买不了上当,走过路过千万不要错过”,这就是广播。那么在网络中的广播又是什么样子的呢?网络上的广播指:由一台主机向该主机所在子网内(同一个局域网)的所有主机发送数据的方式。如下图的 1 号主机广播给 2、3、4、5 号主机发送数据:实现广播,离不开广播地址,同一个子网(...原创 2015-05-08 18:58:16 · 26696 阅读 · 1 评论 -
广播地址介绍
概述广播地址(Broadcast Address)是专门用于同时向网络中(通常指同一子网)所有工作站进行发送的一个地址。在使用TCP/IP 协议的网络中,主机标识段host ID(简称主机 ID) 为全 1 的 IP 地址为广播地址,广播的分组传送给同一个子网的所有计算机。例如,对于10.1.1.0 (255.255.255.0 )网段,其广播地址为10.1.1.255 (255 即为 2转载 2015-05-07 20:54:25 · 36163 阅读 · 2 评论 -
Linux 网络编程——TCP编程
概述TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP 具有以下特点:1)电话系统服务模式的抽象2)每一次完整的数据传输都要经过建立连接、使用连接、终止连接的过程3)可靠、出错重传、且每收到一个数据都要给出相应的确认,保证数据传输的可靠性TCP 编程的 C/S 架构基于 TCP 的网络编程开发分为服务器端和...原创 2015-05-12 12:33:55 · 38975 阅读 · 6 评论 -
TCP网络编程中connect()、listen()和accept()三者之间的关系
基于 TCP 的网络编程开发分为服务器端和客户端两部分,常见的核心步骤和流程如下:connect()函数对于客户端的 connect() 函数,该函数的功能为客户端主动连接服务器,建立连接是通过三次握手,而这个连接的过程是由内核完成,不是这个函数完成的,这个函数的作用仅仅是通知 Linux 内核,让 Linux 内核自动完成 TCP 三次握手连接(三次握手详情,请看《浅谈 TCP 三次握手》),最...原创 2015-05-10 18:34:45 · 118028 阅读 · 21 评论 -
Linux网络编程——浅谈 TCP 三次握手和四次挥手
三次握手在 TCP/IP 协议中,TCP 协议提供可靠的连接服务,采用三次握手建立一个连接。 第一次握手:建立连接时,客户端发送 syn 包(syn=j)到服务器,并进入 SYN_SEND 状态,等待服务器确认; 第二次握手:服务器收到 syn 包,必须确认客户的 SYN(ack=j+1),同时自己也发送一个 SYN 包(syn=k),即 SYN+ACK 包,此时服务器进入 SYN_RECV 状态...原创 2015-05-10 17:27:45 · 54595 阅读 · 9 评论 -
TCP 通信过程中各步骤的状态
对于上面的图 N 多人都知道,它排除和定位网络或系统故障时大有帮助,但是怎样牢牢地将这张图刻在脑中呢?那么你就一定要对这张图的每一个状态,及转换的过程有深刻的认识,不能只停留在一知半解之中。下面对这张图的11种状态详细解析一下,以便加强记忆!不过在这之前,先回顾一下 TCP 建立连接的三次握手过程,以及关闭连接的四次握手过程,详情请看《浅谈 TCP 三次握手和四次挥手》。原创 2015-05-11 19:25:06 · 22040 阅读 · 2 评论 -
Linux 网络编程——并发服务器的三种实现模型
服务器设计技术有很多,按使用的协议来分有 TCP 服务器和 UDP 服务器,按处理方式来分有循环服务器和并发服务器。循环服务器与并发服务器模型在网络程序里面,一般来说都是许多客户对应一个服务器(多对一),为了处理客户的请求,对服务端的程序就提出了特殊的要求。目前最常用的服务器模型有:·循环服务器:服务器在同一时刻只能响应一个客户端的请求·并发服务器:服务器在同一时刻可以响应多个客户端的请求UDP ...原创 2015-05-12 17:40:08 · 94204 阅读 · 9 评论 -
抓包工具 Wireshark 使用介绍
Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark 使用 WinPCAP 作为接口,直接与网卡进行数据报文交换。Wireshark环境搭建1)Windows环境下载一个安装包,默认配置,一路 next 即可完成安装。安装包下载请点此处。原创 2015-05-19 12:46:51 · 43057 阅读 · 1 评论 -
TIME_WAIT状态(2MSL)的作用
主动关闭的Socket端会进入TIME_WAIT状态,并且持续2MSL时间长度,MSL就是maximum segment lifetime(最大分节生命期),这是一个IP数据包能在互联网上生存的最长时间,超过这个时间将在网络中消失。MSL在RFC 1122上建议是2分钟,而源自berkeley的TCP实现传统上使用30秒,因而,TIME_WAIT状态一般维持在1-4分钟。转载 2015-09-23 14:54:25 · 16773 阅读 · 0 评论