应用层
文章平均质量分 81
仙八哥
这个作者很懒,什么都没留下…
展开
-
TCP、IP协议原理
1、wireshark抓包工具使用下载wireshark抓包工具Linux下sudo apt-get install wireshark启动wireshark sudo wireshark点击options选择网卡,设置过滤器抓包的过程详细的抓包分析,请参考这篇文章2、eth_ip头原理以太网头ip头3、TCP包头-确认重发机制TCP时一种面向连接的,可靠的数据传输TCP头部1. TCP把所有要发送的数据进行编号(每一个字节用一个号)2.发送时从当前数据位置,发送w原创 2022-04-20 16:10:53 · 1631 阅读 · 0 评论 -
UDP编程
网络编程API扩展及UDP网络发送数据:send()/write()#include<sys/types.h>#include<sys/socket.h>ssize_t send(int sockfd, const void *buf, size_t len, int flags);#include<unistd.h>ssize_t write(int fd, const void *buf, size_t count);send()比write()多原创 2022-04-13 15:39:09 · 1036 阅读 · 0 评论 -
TCP编程
TCP编程API1.socket()函数#include <sys/types.h>#include <sys/socket.h>int socket(int domain, int type, int protocol);1.1 参数: 1.domain: AF_INET IPv4 Internet protocols ip(7) AF_INET6 IPv6 Internet pro原创 2022-04-11 15:17:29 · 3043 阅读 · 0 评论 -
网络编程之网络基础
一、网络采用分层思想:1.每一层实现不同的功能,对上层的数据做透明传输2.每一层向上层提供服务,同时使用下层提供的服务下图为网络分成和各层主要的协议网络层:三层交换机数据链路层:二层交换机二、各层典型的协议:1.网络接口与物理层MAC地址: 48位全球唯一,网络设备的身份标识ARP/RARP:ARP: IP地址----->MAC地址RARP: MAC地址—>IP地址PPP协议: 拨号协议(GPRS/3G/4G)2.网络层IP地址IP: Internet proto原创 2022-04-08 10:54:25 · 577 阅读 · 0 评论 -
消息队列和信号灯
消息队列概念:消息队列是System V IPC对象的一种消息队列的使用:发送端:1 申请Key2打开/创建消息队列 msgget3向消息队列发送消息 msgsnd接收端:1打开/创建消息队列 msgget2从消息队列接收消息 msgrcv3 控制(删除)消息队列 msgctl打开/创建消息队列 #include <sys/ipc.h> #include <sys/msg.h> int msgget(key_t key, int原创 2022-04-07 10:40:54 · 177 阅读 · 0 评论 -
信号机制及实现
信号机制概念:信号是在软件层次上对中断机制的一种模拟,是一种异步通信方式所有信号的产生及处理全部都是由内核完成的信号的产生:1 按键产生2 系统调用函数产生(比如raise, kill)3 硬件异常4 命令行产生 (kill)5 软件条件(比如被0除,访问非法内存等)信号处理方式:1 缺省方式2 忽略信号3 捕捉信号常用信号:信号名含义默认操作SIGHUP该信号在用户终端关闭时产生,通常是发给和该终端关联的会话内的所有进程终止SIGINT该信号在原创 2022-04-06 15:39:32 · 1215 阅读 · 0 评论 -
共享内存的使用
内存映射(常用,重点掌握)概念:使一个磁盘文件与内存中的一个缓冲区相映射,进程可以像访问普通内存一样对文件进行访问,不必再调用read,write。mmap()的优点:实现了用户空间和内核空间的高效交互方式函数定义:void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset); 功能:创建共享内存映射函数返回值:成功返回创建的映射区首地址,失败返回MAP_FAILED( ((void *原创 2022-04-03 16:57:04 · 1099 阅读 · 0 评论 -
有名管道和无名管道
进程间通信(IPC,InterProcess Communication)概念:就是进程和进程之间交换信息。常用通信方式(面试常问点)无名管道(pipe)有名管道 (fifo)信号(signal)共享内存(mmap)套接字(socket)过时的IPC通信方式System V IPC(它也包含一下三种通信方式)共享内存(share memory)消息队列(message queue)信号灯集(semaphore set)无名管道无名管道特点:只能用于具有亲缘关系的进程之间的通信原创 2022-04-03 11:30:07 · 751 阅读 · 0 评论 -
条件变量和线程池
条件变量应用场景:生产者和消费者的问题,是线程同步的一种手段。必要性:为了实现等待某个资源,让线程休眠。提高运行效率int pthread_cond_wait(pthread_cond_t *restrict cond, pthread_mutex_t *restrict mutex);int pthread_cond_timedwait(pthread_cond_t *restrict cond, pthread_mutex_t *restrict m原创 2022-04-01 17:29:29 · 478 阅读 · 0 评论 -
线程的取消和互斥
线程的取消:意义:随时杀掉一个线程int pthread_cancel(pthread_t thread);注意:线程的取消要有取消点才可以,不是说取消就取消,线程的取消点主要是 阻塞的系统调用(阻塞的地方就是取消点)运行段错误调试:可以使用gdb调试使用gdb 运行代码,gdb ./youapp(gdb) run等待出现Thread 1 “pcancel” received signal SIGSEGV, Segmentation fault.输入命令bt(打印调用栈)(gdb) b原创 2022-03-31 15:36:13 · 2089 阅读 · 0 评论 -
进程、线程和进程间通信(线程的创建和回收)
线程的创建 #include <pthread.h> int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*routine)(void *), void *arg);成功返回0,失败时返回错误码thread 线程对象attr 线程属性,NULL代表默认属性routine 线程执行的函数arg 传递给routine的参数 ,参数是void * ,注意传递参数格式,编译错原创 2022-03-30 17:05:06 · 836 阅读 · 0 评论 -
exec函数族和守护进程
exec 函数族背景:fork创建进程之后,子进程和父进程执行相同的代码,但是在实际开发当中,我们希望父子进程执行不同的代码。作用:执行指定的程序(进程调用exec函数族执行某个程序,进程当前内容被指定的程序替换,实现让父子进程执行不同的程序父进程创建子进程,子进程调用exec函数族,父进程不受影响)#include <unistd.h> int execl(const char *path, const char *arg, …); int execlp(const cha原创 2022-03-29 17:15:03 · 1089 阅读 · 0 评论 -
进程、线程和进程间通信(进程的创建和回收)
进程概念程序存放在磁盘上的指令和数据的有序集合(文件)静态的进程执行一个程序所分配的资源的总称进程是程序的一次执行过程动态的,包括创建、调度、执行和消亡进程和程序内容区别进程包含的内容:BSS段:存放程序中未初始化的全局变量数据段:已初始化的全局变量代码段:程序执行代码堆(heap):malloc等函数分配内存栈(stack):局部变量,函数参数,函数的返回值进程控制块(pcb):PID, 进程优先级,文件描述符表下图为面试常问点进程类型交互进程:在shell下启动。原创 2022-03-28 09:52:06 · 792 阅读 · 0 评论 -
目录操作和库的使用
打开目录#include <dirent.h>DIR *opendir(const char *name);DIR *fdopendir(int fd); 使用文件描述符,要配合open函数使用DIR是用来描述一个打开的目录文件的结构体类型成功时返回目录流指针;出错时返回NULL读取目录#include <dirent.h>struct dirent *readdir(DIR *dirp);struct dirent是用来描述目录流中一个目录项的结构体类型原创 2022-03-24 21:02:58 · 1128 阅读 · 0 评论 -
文件I/O
文件IO的概念:什么是文件IO,又称系统IO,系统调用是操作系统提供的API接口函数。POSIX接口 (了解)注意:文件IO不提供缓冲机制文件IO的APIopen close read read文件描述符概念:英文:缩写fd(file descriptor)是0-1023的数字,表示文件。0, 1, 2 的含义 标准输入,标准输出,错误文件IO 打开//openint open(const char *pathname, int flags); //不创建文件int ope原创 2022-03-24 15:33:34 · 1425 阅读 · 0 评论 -
流刷新定位、格式化输入输出
流的刷新 int fflush(FILE *fp);成功时返回0;出错时返回EOF将流缓冲区中的数据写入实际的文件Linux下只能刷新输出缓冲区,输入缓冲区丢弃如果输出到屏幕使用fflush(stdout)加了fflush()函数才能打印出来。流的定位long ftell(FILE *stream);//函数获取一个文件指针的当前位置long fseek(FILE *stream, long offset, int whence);void rewind(FILE *stream)原创 2022-03-23 11:48:43 · 316 阅读 · 0 评论 -
标准IO概述与操作
标准IO介绍标准io(input/output)就是标准接口的意思1、文件的概念和类型(了解)2、如何理解标准IO(了解)3、流(FILE)的含义(了解)4、流的缓冲类型(熟练)缓冲区实验//不输出#include <stdio.h>#include <unistd.h>int main(int argc,char*argv[]){ printf("hello world"); while(1){ sleep(1); }}原创 2022-03-22 16:17:07 · 1977 阅读 · 0 评论