网络
文章平均质量分 81
five丶
上海大学软工研究生,cpp后端方向
展开
-
brpc源码阅读
好久都没有更新了,最近主要在看brpc的源码,确实非常精彩,对于锁、lock-free和wait-free的策略令人拍案叫绝,下面是最近看到的一篇文章,总结的挺好,推荐给大家看看。brpc线程模型和网络模型...转载 2021-07-04 21:41:15 · 294 阅读 · 0 评论 -
epoll 的LT与ET实例
epoll的数据结构与函数epoll需要使用struct epoll_event 来记录需要监听的事件,将需要监听的文件描述符记录在epoll_event.data.fd中,将需要监听的事件记录在epoll_event.events中,常见的监听事件包括:EPOLLIN:读事件;EPOLLOUT:写事件;EPOLLRDHUP:读关闭事件,本端调用shutdown(SHUT_RD)或对端调用shutdown(SHUT_WR);EPOLLHUP:读写关闭事件,本端调用shutdown(SHUT_RD原创 2021-06-03 17:26:27 · 230 阅读 · 0 评论 -
select使用实例
select函数是多路复用的一种,本文我们给出一个select的通信实例,看下select的代码如何组织,先上代码:#include <unistd.h>#include <iostream>#include <string>#include <sys/socket.h>#include <errno.h>#include <cstring>#include <netinet/in.h>#include &l原创 2021-06-02 00:28:31 · 689 阅读 · 3 评论 -
五种网络IO模型
前言网络IO指的是网络通讯时,socket读取的过程,具体包括数据从硬件接口传递到内核态,再从内核态拷贝到用户态。在服务器中存在大量的网络连接,这些网络连接带来了大量的IO消耗,因此了解网络模型对我们编写服务器程序是十分必要的。阻塞式IO模型在TCP(三)中,我们给出了一个利用TCP进行client-server通信的例子,在这个例子中,server调用listen后,将等待client的连接,如果没有client连接,server将一直阻塞。这种阻塞等待IO信号的方式,被称为阻塞式IO,阻塞式IO原创 2021-06-01 00:38:16 · 106 阅读 · 0 评论 -
HTTPS
在TCP/IP网络模型和OSI网络模型中,已经介绍了HTTP相关的内容,但HTTP是明文传输,在网络中很容易被不法分子获取,因此现在广泛使用HTTPS协议代替HTTP协议。HTTPS协议默认监听443端口,而HTTP协议默认监听80端口。此外,HTTPS将HTTP报文进行了加密,HTTPS报文实际上是加密后的HTTP报文,这种加密通过SSL(或TLS,TLS是SSL的正式版本)来完成,即HTTPS=HTTP+SSL。在了解SSL如何加密之前,我们先了解一下有哪些加密方式。对称加密对称加密指通信双方使原创 2021-05-31 00:39:07 · 252 阅读 · 0 评论 -
TCP/IP网络模型和OSI网络模型
网络模型的结构OSI(Open System Interconnection)是由国际标准化组织(ISO)制定的网络模型,该模型定义了不同计算机如何互相连接,是设计和描述计算机网络通信的基本框架。OSI模型将网络通信分为7层:OSI仅是一个理论上的模型,实际使用的是TCP/IP网络模型,TCP/IP模型将OSI模型的应用层,表示层和会话层合并为应用层:由于TCP/IP是实际使用的模型,后续我们就以TCP/IP模型为例进行介绍,OSI也是基本相似的过程。将网络协议分层的原因是,网络是一个非常复杂的原创 2021-05-30 22:58:28 · 773 阅读 · 0 评论 -
TCP(四)
前言tcp大致的知识前面都已经介绍完毕了,本文我们再回答一些tcp的细节问题。client连接server时,如果server未开启,或监听的端口不是client连接的端口,会发生什么事情?我们还是使用TCP(三)中使用的server和client程序,先不启动server,仅启动client,使用wireshark抓包。程序运行失败,error被设置为connection refused,下面我们看看wireshark:从抓包情况来看,client向端口9007发起连接,此时操作系统为cli原创 2021-05-30 19:00:46 · 249 阅读 · 0 评论 -
TCP(三)
TCP server在cs模型中,server只需要等待client的连接,因此server包括下面四个步骤:调用socket(),初始化一个socket实例,调用bind(),将socket绑定到网卡上,调用listen(),等待客户端的连接,与客户端三次握手后,调用accept()。server的代码如下://server.cpp#include <unistd.h>#include <arpa/inet.h>#include <sys/types原创 2021-05-29 23:45:32 · 97 阅读 · 0 评论 -
TCP(二)
前言TCP是面向连接的协议,两个端口希望通过TCP通信时,需要在两个端口间先建立传输链路,这被称为三次握手过程,结束通信时,需要断开端口间的传输链路,这被称为四次挥手过程,本文我们来详细了解这两个过程。三次握手三次握手的过程可以结合下图来了解:在第一次握手之前,client和server都处于close状态,client发起对server的连接时,将发送第一次握手请求。第一次握手请求的内容包括syn标志位的设置和seq序列号的发送,我们在TCP(一)中介绍过,syn标志位的设置意味这这个包是用于原创 2021-05-29 18:04:23 · 144 阅读 · 0 评论 -
TCP(一)
前言TCP协议是传输层的重要协议,TCP协议保证将数据包完整、可靠地送达对端,是网络中最重要的协议之一,本文我们结合TCP的首部格式来了解TCP。TCP的首部格式TCP首部包括20bytes的固定字段和64bytes的可选字段(如下图),16位的源端口号和目的端口号是传输层的基本要求,下面我们通过这些字段来理解TCP的机制。应答TCP为每个数据包添加自增的32位序列号,在接收到数据包时,TCP也需要根据包的序列号向对端发送应答,使用client-server模型,可以通过下图来表达这个过程,其中原创 2021-05-27 21:46:38 · 255 阅读 · 0 评论