网络
文章平均质量分 94
网络基础域套接字编写与高级IO epoll
Naxx Crazy
这个作者很懒,什么都没留下…
展开
-
高级IO之多路转接
因为别忘了struct timeval 这个参数是输入输出的参数,当我们输入5秒后,那么就等待5秒,但是当5秒后还没有等到,那么输出的时候,表示剩余的时间,因为剩余的时间为0,所以 struct timeval 就是0,既然是0,那么我们又没有重新设置这个参数,所以表示下一次等待的时间是0,也就是非阻塞等待,既然是这样,那么就是每次都读取到是没有就绪,那么 select 的返回值就是0,也就表示的是没有文件描述符就绪!李四,如果没有鱼上钩的话,那么就去做自己的事情,然后过一会在检测,这个也就是非阻塞轮询。原创 2024-01-03 07:51:59 · 848 阅读 · 0 评论 -
多路转接之epoll
在前面的高级IO(多路转接)中,我们看了 select 和 poll 但是前面两个多路转接都不是很好:1.select 需要大量的遍历2.select 需要维护第三方数组3.select 还会有大量的拷贝,从内核到用户,从用户到内核4.select 还有上限5.poll 解决了有上限的问题6.poll也不需要维护第三方数组,但是poll 还是会有拷贝,从内核到用户,同时也需要遍历以上就是前面学习的多路转接的缺点的一个小复习!原创 2024-01-03 09:23:25 · 843 阅读 · 1 评论 -
TCP套接字编写
TCP套接字编写相对于UDP较难一些,目前我们还是只认为发送的数据就是字符串。下面我们看一下TCP套接字的编写。我们准备些一个服务器,一个客户端。服务器采用封装方式,客户端还是使用面向过程的方式。我们这次的TCP套接字编程会写几个版本:就是采用单进程的方式,来实现采用多进程的方式来实现采用多线程的方式来实现采用线程池的方式来实现单进程版本到多线程版本都是客户端发什么,服务器返回什么!到了线程池版本,我们可以写其他的一些方案:大小写转换(将小写转大写)英译汉。原创 2023-12-04 09:57:17 · 267 阅读 · 0 评论 -
HTTP协议
http协议就是上层,也就是应用层协议,该协议为超文本传输协议,其中我们经常使用的链接就是 https 协议。原创 2023-12-10 15:34:52 · 60 阅读 · 1 评论 -
序列化与反序列化
我们就先介绍一下,我们今天打算如何写序列化和反序列化:我们打算写一个网络版本的计算器,客户端发送数据,服务器处理好后返回答案即可。所以我们需要一个客户端,还有服务器。客户端只需要做的就是生产数据,然后发送给服务器。服务器就需要接收数据,接收数据后,处理完成后,将处理结果返回。原创 2023-12-15 10:05:17 · 89 阅读 · 0 评论 -
网络层协议
网络层协议也就是我们说的IP协议,我们知道每一层协议都是用来解决问题的,而TCP协议是用来解决数据如何可靠从一台主机到另一台主机的,那么IP协议是解决什么问题的呢?由于网络中发送数据,一定不是之间从这台主机到另一台主机的,而是从一个一个路由器上一跳一跳走的,而IP协议就是解决路径选择的问题的,那么有那么多路由器,我们应该选则去那一台路由器呢?这个就是由IP协议来解决!我们不论学习哪一个协议,我们都是需要解决两个问题的:1.如何封装和解包2.如何向上交付。原创 2023-12-18 08:53:23 · 1099 阅读 · 0 评论 -
数据链路程协议
数据链路层是在网络层的下面,而我们回顾一下其他层分别解决的问题: 1.应用层,解决应用问题 2.传输层,解决传输问题,保证可靠性等... 3.网络层,解决路径定位问题我们已经把数据传输的可靠性解决了,还有就是可以找到目标主机了,但是在实际的路由中,我们并不是由IP层将数据发送出去的,而是IP还需要交付给数据链路层,为什么呢?因为IP解决的是主机的定位我呢提,也就是路径选则的问题,那么在网络中,数据包实际上是从一跳到下一跳路由器走的,那么IP解决如何从这个路由器到下一个路由器了吗?并没有!原创 2023-12-19 20:36:11 · 900 阅读 · 0 评论 -
传输层协议
上面我们学习到了关于TCP报头的知识,其中TCP是传输控制协议,而TCP也是就保证可靠性的。TCP的封装和解包: TCP的报头是 固定长度+子描述字段,固定长度就是20字节,而子描述字段就是4位首部长度。TCP的向上交付: TCP的报头中有源端口号,以及目的端口号,目的端口号就是TCP要交付给那一个进程。TCP的可靠性保证: TCP的报头中有32位序号和32位确认序号,以及16位校验和。原创 2023-12-16 16:17:45 · 144 阅读 · 0 评论 -
https 协议
数据摘要就是对AC证书进行hash有映射,对证书进行hash隐私后,就形成了摘要,然后对摘要再进行AC机构的私钥加密后,然后形成数据签名。原创 2023-12-11 23:32:41 · 301 阅读 · 3 评论 -
网络基础_1
不是因为全世界计算机记忆入网设备这么多,不可能是两台主机通信,如果每两台主机通信就需要一根网线,那么显然是不可能的,所以实际上数据的发送是通过路由器,将所有的局域网连在一起,而局域网的连接时通过路由器,所以距离很远的两台主机时通信很多路由器来数据传输的,所以如果两台主机距离很远的话,还需要通过友一个路由器到下一个路由器,所以还需要解决如何让从这个路由器到下一个正确的路由器。实际上,我们其实不关心物理层,我们只关系上面的几层,其中我们学习系统而TCP/IP就是再系统种实现的,所以我们更关心TCP/IP协议。原创 2023-11-30 22:34:39 · 276 阅读 · 0 评论 -
网络套接字
一般我们使用最多的也就是这三种,但是实际上,我们最多就是会写两种,网络套接字和域间套接字,实际上我们最多还是网络套接字,所以下面我们主要以网络套接字为主,虽然套接字分为三种,但是我们使用网络编程的接口却只有一个,因为在设计的时候为了方便,同时因为这三种套接字如果设计不同的接口,那么差别也仅仅是函数参数有一点差别,实际上并无太大的差别,所以就设计为一种接口,而由于是三种套接字,所以函数参数的差别库函数的设计就是使用类似于C++的继承的方法。当然不是,因为如果是交给对方主机,那么对方主机能怎么做呢?原创 2023-11-30 22:38:59 · 214 阅读 · 0 评论