![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络
文章平均质量分 83
smx_dd
这个作者很懒,什么都没留下…
展开
-
IO多路转接之epoll详解
关于对epoll的概念我们可以参考《Linux高性能服务器编程》:epoll是特有的IO复用函数。它在实现上和select、poll有很大差异。首先,epoll使用一组函数来完成任务,而不是单个函数。其次,epoll把用户所关心的文件描述符上的事件放在内核里的一个事件表中,从而无须像select和poll那样每次调用都要重复传入文件描述符集或事件集(轮询)。但epoll需要使用一个额外的文件描述符...原创 2018-12-20 18:23:28 · 377 阅读 · 0 评论 -
HTTP协议
HTTP协议是一种应用层的传输协议,它是基于客户端和服务器的一种数据传输协议:由HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端发送过来的请求,并构建响应信息,将所请求的资源或数据发送给客户端。在详细介绍HTTP之前,我们先来介绍一下URL和URI。通常我们在上网的时候需要在浏览器上输入一个网址,这个我们俗称的网址,就可以说...原创 2018-12-23 17:01:45 · 260 阅读 · 0 评论 -
IP协议
如果我们要在复杂的网络环境中从一台主机发送数据到另一台主机,这个过程中间需要经过多个路由器,在一个复杂的网络中,需要确定一个合适的路径,将数据从一台主机历经多个路由器最终发送到另一台主机,这就是网络层要做的事情——地址管理和路由选择。这篇文章主要介绍网络层中的IP协议。首先我们要了解,主机和路由器的概念,主机配有IP地址,但是不能进行路由控制,而路由器不仅具有IP地址,同时也能进行路由控制。主...原创 2018-12-25 00:54:14 · 216 阅读 · 0 评论 -
以太网以及ARP协议
以太网:以太网是一种局域网技术。当一个数据报到达数据链路层时,会对数据报进行以太网封装,形成以太网帧。目的地址和源地址是6字节48位的mac地址,mac地址是用来识别链路层中相连的节点,也叫网卡的硬件地址,这个地址一般在网卡出厂时就固定了,不能修改(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡⽀持⽤户配置mac地址)。mac地址常用十六进制加冒号表示:08:00:27...原创 2018-12-25 15:35:15 · 1393 阅读 · 0 评论 -
ICMP协议
ICMP(控制报文协议)是网络层的协议。用于在主机、路由器之间传递控制消息,包括网络是否畅通、主机是否可达等。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。确认IP包是否成功到达目标地址.通知在发送过程中IP包被丢弃的原因.ICMP也是基于IP协议⼯作的. 但是它并不是传输层的功能, 因此⼈们仍然把它归结为网络层协议;当IP报头协议类型值为1时,说明这是一个ICMP...原创 2018-12-25 16:18:16 · 445 阅读 · 0 评论 -
TIME_WAIT状态
TIME_WAIT状态是TCP在四次挥手终止连接时,主动关闭连接的一方(客户端或者服务端)在收到对端发送的FIN之后,进入的一种状态。该状态的时间为2个MSL,MSL是指数据包在网络中最大的存活时间,超过这个时间数据包就会消失。为什么要有TIME_WAIT这个状态?1. 保证TCP全双工连接能可靠关闭假设主动关闭的一方(这里假设为客户端)发送的最后一条ACK丢失,由于超时重传机制,服务端...原创 2019-02-21 22:52:34 · 1819 阅读 · 0 评论 -
【Linux】进程控制
进程创建fork()函数创建一个子进程#include <unistd.h>pid_t fork(void);返回值:子进程中返回0,父进程返回子进程id,出错返回-1。进程调用fork函数执行时,控制转移到内核中的fork代码,内核执行以下内容:1. 分配新的内存块和内核数据结构给子进程。2. 将父进程部分数据结构内容拷贝至子进程。3. 添加子进程到系统进程列...原创 2019-02-25 18:34:49 · 198 阅读 · 0 评论 -
【Linux】基础IO
C标准库的文件IO接口FILE * fopen(const char * path,const char * mode);fopen函数为打开一个文件,path是要打开的文件名,mode则是打开文件的方式,返回类型为文件流指针,若打开失败则返回NULLmode的几种形式:r 以只读方式打开文件,该文件必须存在 r+ 以读/写方式打开文件,该文件必须存在 w...原创 2019-02-27 16:49:45 · 154 阅读 · 0 评论 -
【Linux】静态库和动态库
静态库与动态库静态库文件后缀为.a程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态库。动态库文件后缀为.so程序在运行的时候才去链接动态库的代码,多个程序共享使用库的代码。一个与动态库链接的可执行文件仅仅包含它用到的函数入口地址的一个表,而不是外部函数所在目标文件的整个机器码。在可执行文件开始运行以前,外部函数的机器码由操作系统从磁盘上的该动态库中复制到...原创 2019-02-27 22:43:20 · 141 阅读 · 0 评论 -
【Linux】管道
管道是Linux中进程间通信的一种方式,从一个进程连接到另一个进程的一个数据流称为一个管道。管道具有半双工,单向通信的特点。匿名管道#include <unistd.h>功能:创建一匿名管道原型int pipe(int fd[2]);参数fd:文件描述符数组,用于接收函数返回的两个文件描述符。其中fd[0]表示读端, fd[1]表示写端返回值:成功返回0,失败返回...原创 2019-02-28 17:01:48 · 257 阅读 · 0 评论 -
UDP协议
UDP是用户数据报协议,是一种传输层协议。下面是UDP数据报的报头格式其中16位udp长度代表整个udp数据报的长度,包括数据报头加数据。如果校验和出错,udp数据报就会被丢弃。UDP的特点1. 无连接:知道对端的IP和端口号就直接进行传输, 不需要建立连接。2. 不可靠:没有确认机制, 没有重传机制; 如果因为网络故障该段无法发到对方, UDP协议层也不会给应用层返回任何错误信息。...原创 2019-03-05 18:40:38 · 201 阅读 · 0 评论 -
IO多路转接之select函数详解
IO多路转接之select:函数功能:监视描述符集合中的描述符状态变化。程序会在select函数等待,直到有描述符就绪。函数原型:int select(int nfds, fd_set *readfds, fd_set *writefds,fd_set *exceptfds, struct timeval *timeout);参数:nfds:当前描述符集合最大描述符+1read...原创 2018-12-17 18:44:46 · 563 阅读 · 0 评论