![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
计算机网络
文章平均质量分 62
sp_13230409636
这个作者很懒,什么都没留下…
展开
-
246-Linux libevent
1.句柄(Handle)在Windows下是句柄,在Linux下就是文件描述符2.事件多路分发器(EventDemultiplexer)通过IO函数实现的,就是IO函数3.事件处理器和具体事件处理器就是回调函数4.编译的时候要加上-levent5.当程序运行时,摁Ctrl+C就会触发一个信号,就会调用信号的回调函数,就会打印出^Csig=2,程序无法通过Ctrl+C退出,可以通过Ctrl+\来退出信号和时间如果都是永久性事件EV_PERSIST,那么Ctrl+C就一直不终止程序而且每隔5秒原创 2022-03-11 18:05:26 · 182 阅读 · 0 评论 -
245-Linux I/O复用函数的使用
1.selectI/O 复用使得程序能同时监听多个文件描述符,这对于提高程序的性能至关重要。通常,网络程序在下列情况下需要使用 I/O 复用技术:①TCP 服务器同时要处理监听套接字和连接套接字②服务器要同时处理 TCP 请求和 UDP 请求③程序要同时处理多个套接字④客户端程序要同时处理用户输入和网络连接⑤服务器要同时监听多个端口需要指出的是,I/O 复用虽然能同时监听多个文件描述符,但它本身是阻塞的。并且当多个文件描述符同时就绪时,如果不采取额外的措施,程序就只能按顺序依处理其中的每一个文原创 2022-03-11 09:14:23 · 93 阅读 · 0 评论 -
244-Linux epoll
1.epoll和poll相比有什么区别?答案:epoll是Linux平台特有的,select和poll在Linux和Windows平台中都有,epoll的出现是为了解决客户端数量越来越多(描述符多)的场景poll每次循环都需要把收集描述符的数组从用户空间拷贝到用户空间中,当数组大小非常大时,就会浪费资源,而epoll从头到尾只需要拷贝一次select和poll只是知道n个描述符里面有m个描述符有请求,但是不知道具体是哪一个,它只能通过遍历的方式一个一个比对,当随着客户端数量急剧增长的时候,所需要的时间原创 2022-03-10 18:38:56 · 848 阅读 · 0 评论 -
243-Linux poll
1.Linux系统三种IO复用的方法:select、poll、epoll2.epoll是Linux系统特有的3.poll就像是一个加强版的select,有更多的事件类型,可以检测更多的描述符,它们并没有本质上的变化4.运行结果图5.服务器端代码#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/select.h>#include <string.h原创 2022-03-10 17:56:45 · 81 阅读 · 0 评论 -
242-Linux IO复用方法select
1.为什么要有IO复用方法?之前实现tcp服务器的并发是通过多线程或者多进程来实现的,它每增加一个客户端,就会创建一个进程或者线程去处理客户端的请求,当客户端的数量达到成千上万的时候,不可能通过创建成千上万的进程或者线程去处理客户端的请求,它的效率是非常低的,所以有了IO复用方法,来更好的解决上述问题2.IO复用方法可以在单个线程或者单个进程内就可以做到同时处理成千上万个客户端的请求3.当从键盘上输入数据的时候,就会立即打印出输入的数据,如果5秒内没有检测有数据的输入,就会打印出time out4原创 2022-03-10 11:12:05 · 683 阅读 · 0 评论 -
241-Linux 线程的创建与同步
1.线程是进程内部的一条执行序列或执行路径,一个进程可以包含多条线程2.线程的实现方式在操作系统中,线程的实现有以下三种方式:①内核级线程②用户级线程③组合级线程3.Linux中线程的实现Linux 实现线程的机制非常独特。从内核的角度来说,它并没有线程这个概念。Linux 把所有的线程都当做进程来实现。内核并没有准备特别的调度算法或是定义特别的数据结构来表征线程。相反,线程仅仅被视为一个与其他进程共享某些资源的进程。每个线程都拥有唯一隶属于自己的 task_struct,所以在内核中,它看原创 2022-03-09 18:50:47 · 110 阅读 · 0 评论 -
240-Linux HTTP代码实现
1.http协议是应用层协议,默认端口是80,在传输层使用的是tcp协议2.http报文每一行后面都有一个\r\n3.直接运行是不行的,我们需要用管理员身份去运行,只有管理员才能使用1024以内的端口原创 2022-03-09 18:41:28 · 257 阅读 · 0 评论 -
239-Linux TCP协议和UDP协议
1.TCP 协议提供的是:面向连接、可靠的、字节流服务。使用 TCP 协议通信的双方必须先建立连接,然后才能开始数据的读写。双方都必须为该连接分配必要的内核资源,以管理连接的状态和连接上数据的传输。TCP 连接是全双工的,双方的数据可以通过一个连接进行读写。完成数据交换之后,通信双方都必须断开连接以释放系统资源。使用 tcpdump 可以抓包观察 TCP 连接的建立与关闭。该命令需要管理员权限,格式如下(假设两个测试用的主机 IP 地址为 192.168.43.214 和 192.168.43.160 )原创 2022-03-09 12:02:05 · 2365 阅读 · 0 评论 -
238-Linux HTTP协议和Web服务器
1.浏览器与服务器的通信过程浏览器与 web 服务器在应用层通信使用的是 HTTP 协议(超文本传输协议),而 HTTP 协议在传输层使用的是 TCP 协议。那么浏览器需要和 web 服务器三次握手建立连接后,才可以发送 HTTP 请求报文,服务器收到请求报文后,向浏览器回复 HTTP 应答报文。浏览器向服务器发起连接前,需要得到服务器的 IP 及端口。用户在浏览器中通常只输入网址(网站域名),浏览器会通过 DNS 服务查询获取到服务器的 IP 地址。 对于端口来讲,使用 HTTP 协议的程序一般默认使用原创 2022-03-09 11:10:33 · 2257 阅读 · 0 评论 -
237-http和https的区别
1.HTTP与HTTPS的区别①安全性上,HTTPS是安全超文本协议,在HTTP基础上有更强的安全性。简单来说,HTTPS是使用TLS/SSL加密的HTTP协议②申请证书上,HTTPS需要使用ca申请证书③传输协议上,HTTP是超文本传输协议,明文传输;HTTPS是具有安全性的 SSL 加密传输协议④连接方式与端口上,http的连接简单,是无状态的,端口是 80; https 在 http 的基础上使用了ssl协议进行加密传输,端口是 4432.HTTP的工作过程HTTP由请求和响应构成,是一个原创 2022-03-09 10:59:02 · 122 阅读 · 0 评论 -
236-Linux http协议
1.http协议是应用层协议2.使用的端口是知名端口:803.http协议在传输层使用的是tcp协议4.https默认的端口号是4435.http和https的区别?6.http请求方法7.http报文的应答状态码8.当在浏览器中输入www.baidu.com后都发生了什么?答案:计算机不能直接使用域名去找服务器,找服务器只能通过ip地址,所以会通过DNS域名系统来找www.baidu.com对应的服务器的ip地址,DNS是一级一级往上找的,先从低级别的开始找,每上升一个级别,需要搜索的也就原创 2022-03-08 21:56:23 · 464 阅读 · 0 评论 -
235-Linux udp协议
1.tcp和upd的特点tcp特点:面向连接、可靠、流式服务udp特点:无连接、不可靠、数据报服务2.先运行服务器再启动客户端后,重启服务器,客户端再给服务器发送消息,请问,服务器能收到消息吗?答案:udp是无连接的,udp的客户端和服务器端是不建立连接的(严格来说udp没有客户端和服务器端),udp的客户端可以直接给服务器发送数据,发送成功就成功了,发送不成功就不成功,没有应答确认、超时重传等机制,应答确认、超时重传等机制是tcp特有的,以此来保证可靠性,但是udp是没有的,相比之下,udp的效率原创 2022-03-08 21:13:12 · 1964 阅读 · 0 评论 -
234-Linux tcp多线程、进程并发
1.tcp特点:面向连接的可靠的流式服务2.建立连接是通过三次握手完成的,是在客户端connect时开始进行三次握手,关闭连接是通过四次挥手完成的,客户端close的时候开始进行四次挥手3.可靠性的体现:①应答确认②超时重传③乱序重排④去重⑤滑动窗口来进行流量控制4.流式服务send将数据发送到客户端的发送缓冲区中,由tcp报文段发送到服务器的接收缓冲区中,服务器通过recv接收服务器端接收缓冲区的数据,这就是流式服务注意:send()成功只能说明数据成功的到达了客户端的发送缓冲区,不能原创 2022-03-08 13:33:18 · 1161 阅读 · 0 评论 -
230-Linux线程回顾+网络基础概念
1.什么是进程?进程就是一个正在运行的程序2.什么是线程?线程就是进程内部的一条执行路径或者执行序列3.线程从操作系统的角度来看分为三种:用户级线程、内核级线程、组合模型Linux平台线程是一个内核级线程Linux上线程的实现:用户、内核、组合用户级线程:由用户管理和创建,创建开销小,可以创建很多用户级线程,但是无法利用多个处理器的资源用户级线程,内核并不能感知到线程的存在,是我们用户空间线程库中的代码来进行线程的创建、管理、销毁、切换,简单来说就是内核认为我只有一条执行路径,用户空间自己把他原创 2022-03-05 16:46:09 · 769 阅读 · 0 评论 -
217-拥塞控制和流量控制
一、流量控制流量控制:如果发送方把数据发送得过快,接收方可能会来不及接收,这就会造成数据的丢失TCP的流量控制是利用滑动窗口机制实现的,接收方在返回的数据中会包含自己的接收窗口的大小,以控制发送方的数据发送拥塞控制:拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载两者的区别:流量控制是为了预防拥塞。如:在马路上行车,交警跟红绿灯是流量控制,当发生拥塞时,如何进行疏散,是拥塞控制。流量控制指点对点通信量的控制。而拥塞控制是全局性的,涉及到所有的主机和降低网络性能的因素。原创 2022-02-27 11:35:39 · 1176 阅读 · 0 评论 -
82-网络编程监听函数(listen)
函数原型:int listen( int sockfd, int backlog);头文件:#include <sys/socket.h>函数说明:监听来自客户端的tcp socket的连接请求参数说明:sockfd:用于标识一个已捆绑未连接套接口的描述字。backlog:等待连接队列的最大长度。返回值:如无错误发生,listen()返回0,否则的话,返回-1...原创 2021-11-16 11:17:20 · 796 阅读 · 0 评论 -
81-网络编程绑定函数(bind)
函数原型:int bind(SOCKET socket, const struct sockaddr* address, socklen_t address_len);参数说明:socket:是一个套接字描述符address:是一个sockaddr结构指针,该结构中包含了要结合的地址和端口号address_len:确定address缓冲区的长度。返回值:如果函数执行成功,返回值为0,否则为SOCKET_ERROR(-1)。...原创 2021-11-16 11:14:21 · 415 阅读 · 0 评论 -
80-网络编程创建套接字(socket)函数
函数原型:int socket(int domain, int type, int protocol);参数说明:domain:称协议族(family)常用的协议族有AF_INET、AF_INET6、AF_LOCAL(或称AF_UNIX,Unix域Socket)、AF_ROUTE等。协议族决定了socket的地址类型,如AF_INET决定了要用ipv4地址(32位的)与端口号(16位的)的组合、AF_UNIX决定了要用一个绝对路径名作为地址。type:指定socket类型常用的socket类型有S原创 2021-11-16 10:40:04 · 456 阅读 · 0 评论 -
66-***计算机网络知识点
一:计算机网络的各层协议及作用?计算机网络体系可以大致分为一下三种,OSI七层模型、TCP/IP四层模型和五层模型。OSI七层模型:大而全,但是比较复杂、而且是先有了理论模型,没有实际应用。TCP/IP四层模型:是由实际应用发展总结出来的,从实质上讲,TCP/IP只有最上面三层,最下面一层没有什么具体内容,TCP/IP参考模型没有真正描述这一层的实现。五层模型:五层模型只出现在计算机网络教学过程中,这是对七层模型和四层模型的一个折中,既简洁又能将概念阐述清楚。七层网络体系结构各层的主要功能:①转载 2021-11-03 18:38:45 · 145 阅读 · 0 评论